ltmain.sh revision 0d590c07
1c76ae52dSmrg# ltmain.sh - Provide generalized library-building support services. 2c76ae52dSmrg# NOTE: Changing this file will not affect anything until you rerun configure. 3c76ae52dSmrg# 40d590c07Smrg# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 50d590c07Smrg# 2007, 2008 Free Software Foundation, Inc. 6c76ae52dSmrg# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 7c76ae52dSmrg# 8c76ae52dSmrg# This program is free software; you can redistribute it and/or modify 9c76ae52dSmrg# it under the terms of the GNU General Public License as published by 10c76ae52dSmrg# the Free Software Foundation; either version 2 of the License, or 11c76ae52dSmrg# (at your option) any later version. 12c76ae52dSmrg# 13c76ae52dSmrg# This program is distributed in the hope that it will be useful, but 14c76ae52dSmrg# WITHOUT ANY WARRANTY; without even the implied warranty of 15c76ae52dSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 16c76ae52dSmrg# General Public License for more details. 17c76ae52dSmrg# 18c76ae52dSmrg# You should have received a copy of the GNU General Public License 19c76ae52dSmrg# along with this program; if not, write to the Free Software 20c76ae52dSmrg# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 21c76ae52dSmrg# 22c76ae52dSmrg# As a special exception to the GNU General Public License, if you 23c76ae52dSmrg# distribute this file as part of a program that contains a 24c76ae52dSmrg# configuration script generated by Autoconf, you may include it under 25c76ae52dSmrg# the same distribution terms that you use for the rest of that program. 26c76ae52dSmrg 27c76ae52dSmrgbasename="s,^.*/,,g" 28c76ae52dSmrg 29c76ae52dSmrg# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh 30c76ae52dSmrg# is ksh but when the shell is invoked as "sh" and the current value of 31c76ae52dSmrg# the _XPG environment variable is not equal to 1 (one), the special 32c76ae52dSmrg# positional parameter $0, within a function call, is the name of the 33c76ae52dSmrg# function. 34c76ae52dSmrgprogpath="$0" 35c76ae52dSmrg 36c76ae52dSmrg# The name of this program: 37c76ae52dSmrgprogname=`echo "$progpath" | $SED $basename` 38c76ae52dSmrgmodename="$progname" 39c76ae52dSmrg 40c76ae52dSmrg# Global variables: 41c76ae52dSmrgEXIT_SUCCESS=0 42c76ae52dSmrgEXIT_FAILURE=1 43c76ae52dSmrg 44c76ae52dSmrgPROGRAM=ltmain.sh 45c76ae52dSmrgPACKAGE=libtool 460d590c07SmrgVERSION=1.5.26 470d590c07SmrgTIMESTAMP=" (1.1220.2.492 2008/01/30 06:40:56)" 480d590c07Smrg 490d590c07Smrg# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE). 500d590c07Smrgif test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then 510d590c07Smrg emulate sh 520d590c07Smrg NULLCMD=: 530d590c07Smrg # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which 540d590c07Smrg # is contrary to our usage. Disable this feature. 550d590c07Smrg alias -g '${1+"$@"}'='"$@"' 56c76ae52dSmrg setopt NO_GLOB_SUBST 570d590c07Smrgelse 580d590c07Smrg case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac 59c76ae52dSmrgfi 600d590c07SmrgBIN_SH=xpg4; export BIN_SH # for Tru64 610d590c07SmrgDUALCASE=1; export DUALCASE # for MKS sh 62c76ae52dSmrg 63c76ae52dSmrg# Check that we have a working $echo. 64c76ae52dSmrgif test "X$1" = X--no-reexec; then 65c76ae52dSmrg # Discard the --no-reexec flag, and continue. 66c76ae52dSmrg shift 67c76ae52dSmrgelif test "X$1" = X--fallback-echo; then 68c76ae52dSmrg # Avoid inline document here, it may be left over 69c76ae52dSmrg : 70c76ae52dSmrgelif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then 71c76ae52dSmrg # Yippee, $echo works! 72c76ae52dSmrg : 73c76ae52dSmrgelse 74c76ae52dSmrg # Restart under the correct shell, and then maybe $echo will work. 75c76ae52dSmrg exec $SHELL "$progpath" --no-reexec ${1+"$@"} 76c76ae52dSmrgfi 77c76ae52dSmrg 78c76ae52dSmrgif test "X$1" = X--fallback-echo; then 79c76ae52dSmrg # used as fallback echo 80c76ae52dSmrg shift 81c76ae52dSmrg cat <<EOF 82c76ae52dSmrg$* 83c76ae52dSmrgEOF 84c76ae52dSmrg exit $EXIT_SUCCESS 85c76ae52dSmrgfi 86c76ae52dSmrg 87c76ae52dSmrgdefault_mode= 88c76ae52dSmrghelp="Try \`$progname --help' for more information." 89c76ae52dSmrgmagic="%%%MAGIC variable%%%" 90c76ae52dSmrgmkdir="mkdir" 91c76ae52dSmrgmv="mv -f" 92c76ae52dSmrgrm="rm -f" 93c76ae52dSmrg 94c76ae52dSmrg# Sed substitution that helps us do robust quoting. It backslashifies 95c76ae52dSmrg# metacharacters that are still active within double-quoted strings. 96c76ae52dSmrgXsed="${SED}"' -e 1s/^X//' 97c76ae52dSmrgsed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g' 98c76ae52dSmrg# test EBCDIC or ASCII 99c76ae52dSmrgcase `echo X|tr X '\101'` in 100c76ae52dSmrg A) # ASCII based system 101c76ae52dSmrg # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr 102c76ae52dSmrg SP2NL='tr \040 \012' 103c76ae52dSmrg NL2SP='tr \015\012 \040\040' 104c76ae52dSmrg ;; 105c76ae52dSmrg *) # EBCDIC based system 106c76ae52dSmrg SP2NL='tr \100 \n' 107c76ae52dSmrg NL2SP='tr \r\n \100\100' 108c76ae52dSmrg ;; 109c76ae52dSmrgesac 110c76ae52dSmrg 111c76ae52dSmrg# NLS nuisances. 112c76ae52dSmrg# Only set LANG and LC_ALL to C if already set. 113c76ae52dSmrg# These must not be set unconditionally because not all systems understand 114c76ae52dSmrg# e.g. LANG=C (notably SCO). 115c76ae52dSmrg# We save the old values to restore during execute mode. 1160d590c07Smrglt_env= 1170d590c07Smrgfor lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 1180d590c07Smrgdo 1190d590c07Smrg eval "if test \"\${$lt_var+set}\" = set; then 1200d590c07Smrg save_$lt_var=\$$lt_var 1210d590c07Smrg lt_env=\"$lt_var=\$$lt_var \$lt_env\" 1220d590c07Smrg $lt_var=C 1230d590c07Smrg export $lt_var 1240d590c07Smrg fi" 1250d590c07Smrgdone 1260d590c07Smrg 1270d590c07Smrgif test -n "$lt_env"; then 1280d590c07Smrg lt_env="env $lt_env" 129c76ae52dSmrgfi 130c76ae52dSmrg 131c76ae52dSmrg# Make sure IFS has a sensible default 132c76ae52dSmrglt_nl=' 133c76ae52dSmrg' 134c76ae52dSmrgIFS=" $lt_nl" 135c76ae52dSmrg 136c76ae52dSmrgif test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then 137c76ae52dSmrg $echo "$modename: not configured to build any kind of library" 1>&2 138c76ae52dSmrg $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 139c76ae52dSmrg exit $EXIT_FAILURE 140c76ae52dSmrgfi 141c76ae52dSmrg 142c76ae52dSmrg# Global variables. 143c76ae52dSmrgmode=$default_mode 144c76ae52dSmrgnonopt= 145c76ae52dSmrgprev= 146c76ae52dSmrgprevopt= 147c76ae52dSmrgrun= 148c76ae52dSmrgshow="$echo" 149c76ae52dSmrgshow_help= 150c76ae52dSmrgexecute_dlfiles= 151c76ae52dSmrgduplicate_deps=no 152c76ae52dSmrgpreserve_args= 153c76ae52dSmrglo2o="s/\\.lo\$/.${objext}/" 154c76ae52dSmrgo2lo="s/\\.${objext}\$/.lo/" 1550d590c07Smrgextracted_archives= 1560d590c07Smrgextracted_serial=0 157c76ae52dSmrg 158c76ae52dSmrg##################################### 159c76ae52dSmrg# Shell function definitions: 160c76ae52dSmrg# This seems to be the best place for them 161c76ae52dSmrg 162c76ae52dSmrg# func_mktempdir [string] 163c76ae52dSmrg# Make a temporary directory that won't clash with other running 164c76ae52dSmrg# libtool processes, and avoids race conditions if possible. If 165c76ae52dSmrg# given, STRING is the basename for that directory. 166c76ae52dSmrgfunc_mktempdir () 167c76ae52dSmrg{ 168c76ae52dSmrg my_template="${TMPDIR-/tmp}/${1-$progname}" 169c76ae52dSmrg 170c76ae52dSmrg if test "$run" = ":"; then 171c76ae52dSmrg # Return a directory name, but don't create it in dry-run mode 172c76ae52dSmrg my_tmpdir="${my_template}-$$" 173c76ae52dSmrg else 174c76ae52dSmrg 175c76ae52dSmrg # If mktemp works, use that first and foremost 176c76ae52dSmrg my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` 177c76ae52dSmrg 178c76ae52dSmrg if test ! -d "$my_tmpdir"; then 179c76ae52dSmrg # Failing that, at least try and use $RANDOM to avoid a race 180c76ae52dSmrg my_tmpdir="${my_template}-${RANDOM-0}$$" 181c76ae52dSmrg 182c76ae52dSmrg save_mktempdir_umask=`umask` 183c76ae52dSmrg umask 0077 184c76ae52dSmrg $mkdir "$my_tmpdir" 185c76ae52dSmrg umask $save_mktempdir_umask 186c76ae52dSmrg fi 187c76ae52dSmrg 188c76ae52dSmrg # If we're not in dry-run mode, bomb out on failure 189c76ae52dSmrg test -d "$my_tmpdir" || { 190c76ae52dSmrg $echo "cannot create temporary directory \`$my_tmpdir'" 1>&2 191c76ae52dSmrg exit $EXIT_FAILURE 192c76ae52dSmrg } 193c76ae52dSmrg fi 194c76ae52dSmrg 195c76ae52dSmrg $echo "X$my_tmpdir" | $Xsed 196c76ae52dSmrg} 197c76ae52dSmrg 198c76ae52dSmrg 199c76ae52dSmrg# func_win32_libid arg 200c76ae52dSmrg# return the library type of file 'arg' 201c76ae52dSmrg# 202c76ae52dSmrg# Need a lot of goo to handle *both* DLLs and import libs 203c76ae52dSmrg# Has to be a shell function in order to 'eat' the argument 204c76ae52dSmrg# that is supplied when $file_magic_command is called. 205c76ae52dSmrgfunc_win32_libid () 206c76ae52dSmrg{ 207c76ae52dSmrg win32_libid_type="unknown" 208c76ae52dSmrg win32_fileres=`file -L $1 2>/dev/null` 209c76ae52dSmrg case $win32_fileres in 210c76ae52dSmrg *ar\ archive\ import\ library*) # definitely import 211c76ae52dSmrg win32_libid_type="x86 archive import" 212c76ae52dSmrg ;; 213c76ae52dSmrg *ar\ archive*) # could be an import, or static 214c76ae52dSmrg if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \ 215c76ae52dSmrg $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then 216c76ae52dSmrg win32_nmres=`eval $NM -f posix -A $1 | \ 2170d590c07Smrg $SED -n -e '1,100{ 2180d590c07Smrg / I /{ 2190d590c07Smrg s,.*,import, 2200d590c07Smrg p 2210d590c07Smrg q 2220d590c07Smrg } 2230d590c07Smrg }'` 224c76ae52dSmrg case $win32_nmres in 225c76ae52dSmrg import*) win32_libid_type="x86 archive import";; 226c76ae52dSmrg *) win32_libid_type="x86 archive static";; 227c76ae52dSmrg esac 228c76ae52dSmrg fi 229c76ae52dSmrg ;; 230c76ae52dSmrg *DLL*) 231c76ae52dSmrg win32_libid_type="x86 DLL" 232c76ae52dSmrg ;; 233c76ae52dSmrg *executable*) # but shell scripts are "executable" too... 234c76ae52dSmrg case $win32_fileres in 235c76ae52dSmrg *MS\ Windows\ PE\ Intel*) 236c76ae52dSmrg win32_libid_type="x86 DLL" 237c76ae52dSmrg ;; 238c76ae52dSmrg esac 239c76ae52dSmrg ;; 240c76ae52dSmrg esac 241c76ae52dSmrg $echo $win32_libid_type 242c76ae52dSmrg} 243c76ae52dSmrg 244c76ae52dSmrg 245c76ae52dSmrg# func_infer_tag arg 246c76ae52dSmrg# Infer tagged configuration to use if any are available and 247c76ae52dSmrg# if one wasn't chosen via the "--tag" command line option. 248c76ae52dSmrg# Only attempt this if the compiler in the base compile 249c76ae52dSmrg# command doesn't match the default compiler. 250c76ae52dSmrg# arg is usually of the form 'gcc ...' 251c76ae52dSmrgfunc_infer_tag () 252c76ae52dSmrg{ 253c76ae52dSmrg if test -n "$available_tags" && test -z "$tagname"; then 254c76ae52dSmrg CC_quoted= 255c76ae52dSmrg for arg in $CC; do 256c76ae52dSmrg case $arg in 257c76ae52dSmrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 258c76ae52dSmrg arg="\"$arg\"" 259c76ae52dSmrg ;; 260c76ae52dSmrg esac 261c76ae52dSmrg CC_quoted="$CC_quoted $arg" 262c76ae52dSmrg done 263c76ae52dSmrg case $@ in 264c76ae52dSmrg # Blanks in the command may have been stripped by the calling shell, 265c76ae52dSmrg # but not from the CC environment variable when configure was run. 266c76ae52dSmrg " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;; 267c76ae52dSmrg # Blanks at the start of $base_compile will cause this to fail 268c76ae52dSmrg # if we don't check for them as well. 269c76ae52dSmrg *) 270c76ae52dSmrg for z in $available_tags; do 271c76ae52dSmrg if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then 272c76ae52dSmrg # Evaluate the configuration. 273c76ae52dSmrg eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" 274c76ae52dSmrg CC_quoted= 275c76ae52dSmrg for arg in $CC; do 276c76ae52dSmrg # Double-quote args containing other shell metacharacters. 277c76ae52dSmrg case $arg in 278c76ae52dSmrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 279c76ae52dSmrg arg="\"$arg\"" 280c76ae52dSmrg ;; 281c76ae52dSmrg esac 282c76ae52dSmrg CC_quoted="$CC_quoted $arg" 283c76ae52dSmrg done 284c76ae52dSmrg case "$@ " in 285c76ae52dSmrg " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) 286c76ae52dSmrg # The compiler in the base compile command matches 287c76ae52dSmrg # the one in the tagged configuration. 288c76ae52dSmrg # Assume this is the tagged configuration we want. 289c76ae52dSmrg tagname=$z 290c76ae52dSmrg break 291c76ae52dSmrg ;; 292c76ae52dSmrg esac 293c76ae52dSmrg fi 294c76ae52dSmrg done 295c76ae52dSmrg # If $tagname still isn't set, then no tagged configuration 296c76ae52dSmrg # was found and let the user know that the "--tag" command 297c76ae52dSmrg # line option must be used. 298c76ae52dSmrg if test -z "$tagname"; then 299c76ae52dSmrg $echo "$modename: unable to infer tagged configuration" 300c76ae52dSmrg $echo "$modename: specify a tag with \`--tag'" 1>&2 301c76ae52dSmrg exit $EXIT_FAILURE 302c76ae52dSmrg# else 303c76ae52dSmrg# $echo "$modename: using $tagname tagged configuration" 304c76ae52dSmrg fi 305c76ae52dSmrg ;; 306c76ae52dSmrg esac 307c76ae52dSmrg fi 308c76ae52dSmrg} 309c76ae52dSmrg 310c76ae52dSmrg 311c76ae52dSmrg# func_extract_an_archive dir oldlib 312c76ae52dSmrgfunc_extract_an_archive () 313c76ae52dSmrg{ 314c76ae52dSmrg f_ex_an_ar_dir="$1"; shift 315c76ae52dSmrg f_ex_an_ar_oldlib="$1" 316c76ae52dSmrg 317c76ae52dSmrg $show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)" 318c76ae52dSmrg $run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" || exit $? 319c76ae52dSmrg if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then 320c76ae52dSmrg : 321c76ae52dSmrg else 322c76ae52dSmrg $echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 1>&2 323c76ae52dSmrg exit $EXIT_FAILURE 324c76ae52dSmrg fi 325c76ae52dSmrg} 326c76ae52dSmrg 327c76ae52dSmrg# func_extract_archives gentop oldlib ... 328c76ae52dSmrgfunc_extract_archives () 329c76ae52dSmrg{ 330c76ae52dSmrg my_gentop="$1"; shift 331c76ae52dSmrg my_oldlibs=${1+"$@"} 332c76ae52dSmrg my_oldobjs="" 333c76ae52dSmrg my_xlib="" 334c76ae52dSmrg my_xabs="" 335c76ae52dSmrg my_xdir="" 336c76ae52dSmrg my_status="" 337c76ae52dSmrg 338c76ae52dSmrg $show "${rm}r $my_gentop" 339c76ae52dSmrg $run ${rm}r "$my_gentop" 340c76ae52dSmrg $show "$mkdir $my_gentop" 341c76ae52dSmrg $run $mkdir "$my_gentop" 342c76ae52dSmrg my_status=$? 343c76ae52dSmrg if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then 344c76ae52dSmrg exit $my_status 345c76ae52dSmrg fi 346c76ae52dSmrg 347c76ae52dSmrg for my_xlib in $my_oldlibs; do 348c76ae52dSmrg # Extract the objects. 349c76ae52dSmrg case $my_xlib in 350c76ae52dSmrg [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; 351c76ae52dSmrg *) my_xabs=`pwd`"/$my_xlib" ;; 352c76ae52dSmrg esac 353c76ae52dSmrg my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'` 3540d590c07Smrg my_xlib_u=$my_xlib 3550d590c07Smrg while :; do 3560d590c07Smrg case " $extracted_archives " in 3570d590c07Smrg *" $my_xlib_u "*) 3580d590c07Smrg extracted_serial=`expr $extracted_serial + 1` 3590d590c07Smrg my_xlib_u=lt$extracted_serial-$my_xlib ;; 3600d590c07Smrg *) break ;; 3610d590c07Smrg esac 3620d590c07Smrg done 3630d590c07Smrg extracted_archives="$extracted_archives $my_xlib_u" 3640d590c07Smrg my_xdir="$my_gentop/$my_xlib_u" 365c76ae52dSmrg 366c76ae52dSmrg $show "${rm}r $my_xdir" 367c76ae52dSmrg $run ${rm}r "$my_xdir" 368c76ae52dSmrg $show "$mkdir $my_xdir" 369c76ae52dSmrg $run $mkdir "$my_xdir" 370c76ae52dSmrg exit_status=$? 371c76ae52dSmrg if test "$exit_status" -ne 0 && test ! -d "$my_xdir"; then 372c76ae52dSmrg exit $exit_status 373c76ae52dSmrg fi 374c76ae52dSmrg case $host in 375c76ae52dSmrg *-darwin*) 376c76ae52dSmrg $show "Extracting $my_xabs" 377c76ae52dSmrg # Do not bother doing anything if just a dry run 378c76ae52dSmrg if test -z "$run"; then 379c76ae52dSmrg darwin_orig_dir=`pwd` 380c76ae52dSmrg cd $my_xdir || exit $? 381c76ae52dSmrg darwin_archive=$my_xabs 382c76ae52dSmrg darwin_curdir=`pwd` 383c76ae52dSmrg darwin_base_archive=`$echo "X$darwin_archive" | $Xsed -e 's%^.*/%%'` 384c76ae52dSmrg darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null` 385c76ae52dSmrg if test -n "$darwin_arches"; then 386c76ae52dSmrg darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'` 387c76ae52dSmrg darwin_arch= 388c76ae52dSmrg $show "$darwin_base_archive has multiple architectures $darwin_arches" 389c76ae52dSmrg for darwin_arch in $darwin_arches ; do 390c76ae52dSmrg mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}" 391c76ae52dSmrg lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" 392c76ae52dSmrg cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" 393c76ae52dSmrg func_extract_an_archive "`pwd`" "${darwin_base_archive}" 394c76ae52dSmrg cd "$darwin_curdir" 395c76ae52dSmrg $rm "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" 396c76ae52dSmrg done # $darwin_arches 397c76ae52dSmrg ## Okay now we have a bunch of thin objects, gotta fatten them up :) 398c76ae52dSmrg darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP` 399c76ae52dSmrg darwin_file= 400c76ae52dSmrg darwin_files= 401c76ae52dSmrg for darwin_file in $darwin_filelist; do 402c76ae52dSmrg darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` 403c76ae52dSmrg lipo -create -output "$darwin_file" $darwin_files 404c76ae52dSmrg done # $darwin_filelist 405c76ae52dSmrg ${rm}r unfat-$$ 406c76ae52dSmrg cd "$darwin_orig_dir" 407c76ae52dSmrg else 408c76ae52dSmrg cd "$darwin_orig_dir" 409c76ae52dSmrg func_extract_an_archive "$my_xdir" "$my_xabs" 410c76ae52dSmrg fi # $darwin_arches 411c76ae52dSmrg fi # $run 412c76ae52dSmrg ;; 413c76ae52dSmrg *) 414c76ae52dSmrg func_extract_an_archive "$my_xdir" "$my_xabs" 415c76ae52dSmrg ;; 416c76ae52dSmrg esac 417c76ae52dSmrg my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` 418c76ae52dSmrg done 419c76ae52dSmrg func_extract_archives_result="$my_oldobjs" 420c76ae52dSmrg} 421c76ae52dSmrg# End of Shell function definitions 422c76ae52dSmrg##################################### 423c76ae52dSmrg 424c76ae52dSmrg# Darwin sucks 425c76ae52dSmrgeval std_shrext=\"$shrext_cmds\" 426c76ae52dSmrg 427c76ae52dSmrgdisable_libs=no 428c76ae52dSmrg 429c76ae52dSmrg# Parse our command line options once, thoroughly. 430c76ae52dSmrgwhile test "$#" -gt 0 431c76ae52dSmrgdo 432c76ae52dSmrg arg="$1" 433c76ae52dSmrg shift 434c76ae52dSmrg 435c76ae52dSmrg case $arg in 436c76ae52dSmrg -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; 437c76ae52dSmrg *) optarg= ;; 438c76ae52dSmrg esac 439c76ae52dSmrg 440c76ae52dSmrg # If the previous option needs an argument, assign it. 441c76ae52dSmrg if test -n "$prev"; then 442c76ae52dSmrg case $prev in 443c76ae52dSmrg execute_dlfiles) 444c76ae52dSmrg execute_dlfiles="$execute_dlfiles $arg" 445c76ae52dSmrg ;; 446c76ae52dSmrg tag) 447c76ae52dSmrg tagname="$arg" 448c76ae52dSmrg preserve_args="${preserve_args}=$arg" 449c76ae52dSmrg 450c76ae52dSmrg # Check whether tagname contains only valid characters 451c76ae52dSmrg case $tagname in 452c76ae52dSmrg *[!-_A-Za-z0-9,/]*) 453c76ae52dSmrg $echo "$progname: invalid tag name: $tagname" 1>&2 454c76ae52dSmrg exit $EXIT_FAILURE 455c76ae52dSmrg ;; 456c76ae52dSmrg esac 457c76ae52dSmrg 458c76ae52dSmrg case $tagname in 459c76ae52dSmrg CC) 460c76ae52dSmrg # Don't test for the "default" C tag, as we know, it's there, but 461c76ae52dSmrg # not specially marked. 462c76ae52dSmrg ;; 463c76ae52dSmrg *) 464c76ae52dSmrg if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then 465c76ae52dSmrg taglist="$taglist $tagname" 466c76ae52dSmrg # Evaluate the configuration. 467c76ae52dSmrg eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`" 468c76ae52dSmrg else 469c76ae52dSmrg $echo "$progname: ignoring unknown tag $tagname" 1>&2 470c76ae52dSmrg fi 471c76ae52dSmrg ;; 472c76ae52dSmrg esac 473c76ae52dSmrg ;; 474c76ae52dSmrg *) 475c76ae52dSmrg eval "$prev=\$arg" 476c76ae52dSmrg ;; 477c76ae52dSmrg esac 478c76ae52dSmrg 479c76ae52dSmrg prev= 480c76ae52dSmrg prevopt= 481c76ae52dSmrg continue 482c76ae52dSmrg fi 483c76ae52dSmrg 484c76ae52dSmrg # Have we seen a non-optional argument yet? 485c76ae52dSmrg case $arg in 486c76ae52dSmrg --help) 487c76ae52dSmrg show_help=yes 488c76ae52dSmrg ;; 489c76ae52dSmrg 490c76ae52dSmrg --version) 4910d590c07Smrg echo "\ 4920d590c07Smrg$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP 4930d590c07Smrg 4940d590c07SmrgCopyright (C) 2008 Free Software Foundation, Inc. 4950d590c07SmrgThis is free software; see the source for copying conditions. There is NO 4960d590c07Smrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 497c76ae52dSmrg exit $? 498c76ae52dSmrg ;; 499c76ae52dSmrg 500c76ae52dSmrg --config) 501c76ae52dSmrg ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath 502c76ae52dSmrg # Now print the configurations for the tags. 503c76ae52dSmrg for tagname in $taglist; do 504c76ae52dSmrg ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath" 505c76ae52dSmrg done 506c76ae52dSmrg exit $? 507c76ae52dSmrg ;; 508c76ae52dSmrg 509c76ae52dSmrg --debug) 510c76ae52dSmrg $echo "$progname: enabling shell trace mode" 511c76ae52dSmrg set -x 512c76ae52dSmrg preserve_args="$preserve_args $arg" 513c76ae52dSmrg ;; 514c76ae52dSmrg 515c76ae52dSmrg --dry-run | -n) 516c76ae52dSmrg run=: 517c76ae52dSmrg ;; 518c76ae52dSmrg 519c76ae52dSmrg --features) 520c76ae52dSmrg $echo "host: $host" 521c76ae52dSmrg if test "$build_libtool_libs" = yes; then 522c76ae52dSmrg $echo "enable shared libraries" 523c76ae52dSmrg else 524c76ae52dSmrg $echo "disable shared libraries" 525c76ae52dSmrg fi 526c76ae52dSmrg if test "$build_old_libs" = yes; then 527c76ae52dSmrg $echo "enable static libraries" 528c76ae52dSmrg else 529c76ae52dSmrg $echo "disable static libraries" 530c76ae52dSmrg fi 531c76ae52dSmrg exit $? 532c76ae52dSmrg ;; 533c76ae52dSmrg 534c76ae52dSmrg --finish) mode="finish" ;; 535c76ae52dSmrg 536c76ae52dSmrg --mode) prevopt="--mode" prev=mode ;; 537c76ae52dSmrg --mode=*) mode="$optarg" ;; 538c76ae52dSmrg 539c76ae52dSmrg --preserve-dup-deps) duplicate_deps="yes" ;; 540c76ae52dSmrg 541c76ae52dSmrg --quiet | --silent) 542c76ae52dSmrg show=: 543c76ae52dSmrg preserve_args="$preserve_args $arg" 544c76ae52dSmrg ;; 545c76ae52dSmrg 546c76ae52dSmrg --tag) 547c76ae52dSmrg prevopt="--tag" 548c76ae52dSmrg prev=tag 549c76ae52dSmrg preserve_args="$preserve_args --tag" 550c76ae52dSmrg ;; 551c76ae52dSmrg --tag=*) 552c76ae52dSmrg set tag "$optarg" ${1+"$@"} 553c76ae52dSmrg shift 554c76ae52dSmrg prev=tag 555c76ae52dSmrg preserve_args="$preserve_args --tag" 556c76ae52dSmrg ;; 557c76ae52dSmrg 558c76ae52dSmrg -dlopen) 559c76ae52dSmrg prevopt="-dlopen" 560c76ae52dSmrg prev=execute_dlfiles 561c76ae52dSmrg ;; 562c76ae52dSmrg 563c76ae52dSmrg -*) 564c76ae52dSmrg $echo "$modename: unrecognized option \`$arg'" 1>&2 565c76ae52dSmrg $echo "$help" 1>&2 566c76ae52dSmrg exit $EXIT_FAILURE 567c76ae52dSmrg ;; 568c76ae52dSmrg 569c76ae52dSmrg *) 570c76ae52dSmrg nonopt="$arg" 571c76ae52dSmrg break 572c76ae52dSmrg ;; 573c76ae52dSmrg esac 574c76ae52dSmrgdone 575c76ae52dSmrg 576c76ae52dSmrgif test -n "$prevopt"; then 577c76ae52dSmrg $echo "$modename: option \`$prevopt' requires an argument" 1>&2 578c76ae52dSmrg $echo "$help" 1>&2 579c76ae52dSmrg exit $EXIT_FAILURE 580c76ae52dSmrgfi 581c76ae52dSmrg 582c76ae52dSmrgcase $disable_libs in 583c76ae52dSmrgno) 584c76ae52dSmrg ;; 585c76ae52dSmrgshared) 586c76ae52dSmrg build_libtool_libs=no 587c76ae52dSmrg build_old_libs=yes 588c76ae52dSmrg ;; 589c76ae52dSmrgstatic) 590c76ae52dSmrg build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` 591c76ae52dSmrg ;; 592c76ae52dSmrgesac 593c76ae52dSmrg 594c76ae52dSmrg# If this variable is set in any of the actions, the command in it 595c76ae52dSmrg# will be execed at the end. This prevents here-documents from being 596c76ae52dSmrg# left over by shells. 597c76ae52dSmrgexec_cmd= 598c76ae52dSmrg 599c76ae52dSmrgif test -z "$show_help"; then 600c76ae52dSmrg 601c76ae52dSmrg # Infer the operation mode. 602c76ae52dSmrg if test -z "$mode"; then 603c76ae52dSmrg $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2 604c76ae52dSmrg $echo "*** Future versions of Libtool will require --mode=MODE be specified." 1>&2 605c76ae52dSmrg case $nonopt in 606c76ae52dSmrg *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*) 607c76ae52dSmrg mode=link 608c76ae52dSmrg for arg 609c76ae52dSmrg do 610c76ae52dSmrg case $arg in 611c76ae52dSmrg -c) 612c76ae52dSmrg mode=compile 613c76ae52dSmrg break 614c76ae52dSmrg ;; 615c76ae52dSmrg esac 616c76ae52dSmrg done 617c76ae52dSmrg ;; 618c76ae52dSmrg *db | *dbx | *strace | *truss) 619c76ae52dSmrg mode=execute 620c76ae52dSmrg ;; 621c76ae52dSmrg *install*|cp|mv) 622c76ae52dSmrg mode=install 623c76ae52dSmrg ;; 624c76ae52dSmrg *rm) 625c76ae52dSmrg mode=uninstall 626c76ae52dSmrg ;; 627c76ae52dSmrg *) 628c76ae52dSmrg # If we have no mode, but dlfiles were specified, then do execute mode. 629c76ae52dSmrg test -n "$execute_dlfiles" && mode=execute 630c76ae52dSmrg 631c76ae52dSmrg # Just use the default operation mode. 632c76ae52dSmrg if test -z "$mode"; then 633c76ae52dSmrg if test -n "$nonopt"; then 634c76ae52dSmrg $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2 635c76ae52dSmrg else 636c76ae52dSmrg $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2 637c76ae52dSmrg fi 638c76ae52dSmrg fi 639c76ae52dSmrg ;; 640c76ae52dSmrg esac 641c76ae52dSmrg fi 642c76ae52dSmrg 643c76ae52dSmrg # Only execute mode is allowed to have -dlopen flags. 644c76ae52dSmrg if test -n "$execute_dlfiles" && test "$mode" != execute; then 645c76ae52dSmrg $echo "$modename: unrecognized option \`-dlopen'" 1>&2 646c76ae52dSmrg $echo "$help" 1>&2 647c76ae52dSmrg exit $EXIT_FAILURE 648c76ae52dSmrg fi 649c76ae52dSmrg 650c76ae52dSmrg # Change the help message to a mode-specific one. 651c76ae52dSmrg generic_help="$help" 652c76ae52dSmrg help="Try \`$modename --help --mode=$mode' for more information." 653c76ae52dSmrg 654c76ae52dSmrg # These modes are in order of execution frequency so that they run quickly. 655c76ae52dSmrg case $mode in 656c76ae52dSmrg # libtool compile mode 657c76ae52dSmrg compile) 658c76ae52dSmrg modename="$modename: compile" 659c76ae52dSmrg # Get the compilation command and the source file. 660c76ae52dSmrg base_compile= 661c76ae52dSmrg srcfile="$nonopt" # always keep a non-empty value in "srcfile" 662c76ae52dSmrg suppress_opt=yes 663c76ae52dSmrg suppress_output= 664c76ae52dSmrg arg_mode=normal 665c76ae52dSmrg libobj= 666c76ae52dSmrg later= 667c76ae52dSmrg 668c76ae52dSmrg for arg 669c76ae52dSmrg do 670c76ae52dSmrg case $arg_mode in 671c76ae52dSmrg arg ) 672c76ae52dSmrg # do not "continue". Instead, add this to base_compile 673c76ae52dSmrg lastarg="$arg" 674c76ae52dSmrg arg_mode=normal 675c76ae52dSmrg ;; 676c76ae52dSmrg 677c76ae52dSmrg target ) 678c76ae52dSmrg libobj="$arg" 679c76ae52dSmrg arg_mode=normal 680c76ae52dSmrg continue 681c76ae52dSmrg ;; 682c76ae52dSmrg 683c76ae52dSmrg normal ) 684c76ae52dSmrg # Accept any command-line options. 685c76ae52dSmrg case $arg in 686c76ae52dSmrg -o) 687c76ae52dSmrg if test -n "$libobj" ; then 688c76ae52dSmrg $echo "$modename: you cannot specify \`-o' more than once" 1>&2 689c76ae52dSmrg exit $EXIT_FAILURE 690c76ae52dSmrg fi 691c76ae52dSmrg arg_mode=target 692c76ae52dSmrg continue 693c76ae52dSmrg ;; 694c76ae52dSmrg 695c76ae52dSmrg -static | -prefer-pic | -prefer-non-pic) 696c76ae52dSmrg later="$later $arg" 697c76ae52dSmrg continue 698c76ae52dSmrg ;; 699c76ae52dSmrg 700c76ae52dSmrg -no-suppress) 701c76ae52dSmrg suppress_opt=no 702c76ae52dSmrg continue 703c76ae52dSmrg ;; 704c76ae52dSmrg 705c76ae52dSmrg -Xcompiler) 706c76ae52dSmrg arg_mode=arg # the next one goes into the "base_compile" arg list 707c76ae52dSmrg continue # The current "srcfile" will either be retained or 708c76ae52dSmrg ;; # replaced later. I would guess that would be a bug. 709c76ae52dSmrg 710c76ae52dSmrg -Wc,*) 711c76ae52dSmrg args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"` 712c76ae52dSmrg lastarg= 713c76ae52dSmrg save_ifs="$IFS"; IFS=',' 714c76ae52dSmrg for arg in $args; do 715c76ae52dSmrg IFS="$save_ifs" 716c76ae52dSmrg 717c76ae52dSmrg # Double-quote args containing other shell metacharacters. 718c76ae52dSmrg # Many Bourne shells cannot handle close brackets correctly 719c76ae52dSmrg # in scan sets, so we specify it separately. 720c76ae52dSmrg case $arg in 721c76ae52dSmrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 722c76ae52dSmrg arg="\"$arg\"" 723c76ae52dSmrg ;; 724c76ae52dSmrg esac 725c76ae52dSmrg lastarg="$lastarg $arg" 726c76ae52dSmrg done 727c76ae52dSmrg IFS="$save_ifs" 728c76ae52dSmrg lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"` 729c76ae52dSmrg 730c76ae52dSmrg # Add the arguments to base_compile. 731c76ae52dSmrg base_compile="$base_compile $lastarg" 732c76ae52dSmrg continue 733c76ae52dSmrg ;; 734c76ae52dSmrg 735c76ae52dSmrg * ) 736c76ae52dSmrg # Accept the current argument as the source file. 737c76ae52dSmrg # The previous "srcfile" becomes the current argument. 738c76ae52dSmrg # 739c76ae52dSmrg lastarg="$srcfile" 740c76ae52dSmrg srcfile="$arg" 741c76ae52dSmrg ;; 742c76ae52dSmrg esac # case $arg 743c76ae52dSmrg ;; 744c76ae52dSmrg esac # case $arg_mode 745c76ae52dSmrg 746c76ae52dSmrg # Aesthetically quote the previous argument. 747c76ae52dSmrg lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` 748c76ae52dSmrg 749c76ae52dSmrg case $lastarg in 750c76ae52dSmrg # Double-quote args containing other shell metacharacters. 751c76ae52dSmrg # Many Bourne shells cannot handle close brackets correctly 752c76ae52dSmrg # in scan sets, and some SunOS ksh mistreat backslash-escaping 753c76ae52dSmrg # in scan sets (worked around with variable expansion), 754c76ae52dSmrg # and furthermore cannot handle '|' '&' '(' ')' in scan sets 755c76ae52dSmrg # at all, so we specify them separately. 756c76ae52dSmrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 757c76ae52dSmrg lastarg="\"$lastarg\"" 758c76ae52dSmrg ;; 759c76ae52dSmrg esac 760c76ae52dSmrg 761c76ae52dSmrg base_compile="$base_compile $lastarg" 762c76ae52dSmrg done # for arg 763c76ae52dSmrg 764c76ae52dSmrg case $arg_mode in 765c76ae52dSmrg arg) 766c76ae52dSmrg $echo "$modename: you must specify an argument for -Xcompile" 767c76ae52dSmrg exit $EXIT_FAILURE 768c76ae52dSmrg ;; 769c76ae52dSmrg target) 770c76ae52dSmrg $echo "$modename: you must specify a target with \`-o'" 1>&2 771c76ae52dSmrg exit $EXIT_FAILURE 772c76ae52dSmrg ;; 773c76ae52dSmrg *) 774c76ae52dSmrg # Get the name of the library object. 775c76ae52dSmrg [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` 776c76ae52dSmrg ;; 777c76ae52dSmrg esac 778c76ae52dSmrg 779c76ae52dSmrg # Recognize several different file suffixes. 780c76ae52dSmrg # If the user specifies -o file.o, it is replaced with file.lo 781c76ae52dSmrg xform='[cCFSifmso]' 782c76ae52dSmrg case $libobj in 783c76ae52dSmrg *.ada) xform=ada ;; 784c76ae52dSmrg *.adb) xform=adb ;; 785c76ae52dSmrg *.ads) xform=ads ;; 786c76ae52dSmrg *.asm) xform=asm ;; 787c76ae52dSmrg *.c++) xform=c++ ;; 788c76ae52dSmrg *.cc) xform=cc ;; 789c76ae52dSmrg *.ii) xform=ii ;; 790c76ae52dSmrg *.class) xform=class ;; 791c76ae52dSmrg *.cpp) xform=cpp ;; 792c76ae52dSmrg *.cxx) xform=cxx ;; 7930d590c07Smrg *.[fF][09]?) xform=[fF][09]. ;; 794c76ae52dSmrg *.for) xform=for ;; 795c76ae52dSmrg *.java) xform=java ;; 7960d590c07Smrg *.obj) xform=obj ;; 7970d590c07Smrg *.sx) xform=sx ;; 798c76ae52dSmrg esac 799c76ae52dSmrg 800c76ae52dSmrg libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` 801c76ae52dSmrg 802c76ae52dSmrg case $libobj in 803c76ae52dSmrg *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; 804c76ae52dSmrg *) 805c76ae52dSmrg $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 806c76ae52dSmrg exit $EXIT_FAILURE 807c76ae52dSmrg ;; 808c76ae52dSmrg esac 809c76ae52dSmrg 810c76ae52dSmrg func_infer_tag $base_compile 811c76ae52dSmrg 812c76ae52dSmrg for arg in $later; do 813c76ae52dSmrg case $arg in 814c76ae52dSmrg -static) 815c76ae52dSmrg build_old_libs=yes 816c76ae52dSmrg continue 817c76ae52dSmrg ;; 818c76ae52dSmrg 819c76ae52dSmrg -prefer-pic) 820c76ae52dSmrg pic_mode=yes 821c76ae52dSmrg continue 822c76ae52dSmrg ;; 823c76ae52dSmrg 824c76ae52dSmrg -prefer-non-pic) 825c76ae52dSmrg pic_mode=no 826c76ae52dSmrg continue 827c76ae52dSmrg ;; 828c76ae52dSmrg esac 829c76ae52dSmrg done 830c76ae52dSmrg 831c76ae52dSmrg qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"` 832c76ae52dSmrg case $qlibobj in 833c76ae52dSmrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 834c76ae52dSmrg qlibobj="\"$qlibobj\"" ;; 835c76ae52dSmrg esac 836c76ae52dSmrg test "X$libobj" != "X$qlibobj" \ 837c76ae52dSmrg && $echo "X$libobj" | grep '[]~#^*{};<>?"'"'"' &()|`$[]' \ 838c76ae52dSmrg && $echo "$modename: libobj name \`$libobj' may not contain shell special characters." 839c76ae52dSmrg objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` 840c76ae52dSmrg xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` 841c76ae52dSmrg if test "X$xdir" = "X$obj"; then 842c76ae52dSmrg xdir= 843c76ae52dSmrg else 844c76ae52dSmrg xdir=$xdir/ 845c76ae52dSmrg fi 846c76ae52dSmrg lobj=${xdir}$objdir/$objname 847c76ae52dSmrg 848c76ae52dSmrg if test -z "$base_compile"; then 849c76ae52dSmrg $echo "$modename: you must specify a compilation command" 1>&2 850c76ae52dSmrg $echo "$help" 1>&2 851c76ae52dSmrg exit $EXIT_FAILURE 852c76ae52dSmrg fi 853c76ae52dSmrg 854c76ae52dSmrg # Delete any leftover library objects. 855c76ae52dSmrg if test "$build_old_libs" = yes; then 856c76ae52dSmrg removelist="$obj $lobj $libobj ${libobj}T" 857c76ae52dSmrg else 858c76ae52dSmrg removelist="$lobj $libobj ${libobj}T" 859c76ae52dSmrg fi 860c76ae52dSmrg 861c76ae52dSmrg $run $rm $removelist 862c76ae52dSmrg trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 863c76ae52dSmrg 864c76ae52dSmrg # On Cygwin there's no "real" PIC flag so we must build both object types 865c76ae52dSmrg case $host_os in 866c76ae52dSmrg cygwin* | mingw* | pw32* | os2*) 867c76ae52dSmrg pic_mode=default 868c76ae52dSmrg ;; 869c76ae52dSmrg esac 870c76ae52dSmrg if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then 871c76ae52dSmrg # non-PIC code in shared libraries is not supported 872c76ae52dSmrg pic_mode=default 873c76ae52dSmrg fi 874c76ae52dSmrg 875c76ae52dSmrg # Calculate the filename of the output object if compiler does 876c76ae52dSmrg # not support -o with -c 877c76ae52dSmrg if test "$compiler_c_o" = no; then 878c76ae52dSmrg output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} 879c76ae52dSmrg lockfile="$output_obj.lock" 880c76ae52dSmrg removelist="$removelist $output_obj $lockfile" 881c76ae52dSmrg trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 882c76ae52dSmrg else 883c76ae52dSmrg output_obj= 884c76ae52dSmrg need_locks=no 885c76ae52dSmrg lockfile= 886c76ae52dSmrg fi 887c76ae52dSmrg 888c76ae52dSmrg # Lock this critical section if it is needed 889c76ae52dSmrg # We use this script file to make the link, it avoids creating a new file 890c76ae52dSmrg if test "$need_locks" = yes; then 891c76ae52dSmrg until $run ln "$progpath" "$lockfile" 2>/dev/null; do 892c76ae52dSmrg $show "Waiting for $lockfile to be removed" 893c76ae52dSmrg sleep 2 894c76ae52dSmrg done 895c76ae52dSmrg elif test "$need_locks" = warn; then 896c76ae52dSmrg if test -f "$lockfile"; then 897c76ae52dSmrg $echo "\ 898c76ae52dSmrg*** ERROR, $lockfile exists and contains: 899c76ae52dSmrg`cat $lockfile 2>/dev/null` 900c76ae52dSmrg 901c76ae52dSmrgThis indicates that another process is trying to use the same 902c76ae52dSmrgtemporary object file, and libtool could not work around it because 903c76ae52dSmrgyour compiler does not support \`-c' and \`-o' together. If you 904c76ae52dSmrgrepeat this compilation, it may succeed, by chance, but you had better 905c76ae52dSmrgavoid parallel builds (make -j) in this platform, or get a better 906c76ae52dSmrgcompiler." 907c76ae52dSmrg 908c76ae52dSmrg $run $rm $removelist 909c76ae52dSmrg exit $EXIT_FAILURE 910c76ae52dSmrg fi 911c76ae52dSmrg $echo "$srcfile" > "$lockfile" 912c76ae52dSmrg fi 913c76ae52dSmrg 914c76ae52dSmrg if test -n "$fix_srcfile_path"; then 915c76ae52dSmrg eval srcfile=\"$fix_srcfile_path\" 916c76ae52dSmrg fi 917c76ae52dSmrg qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"` 918c76ae52dSmrg case $qsrcfile in 919c76ae52dSmrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 920c76ae52dSmrg qsrcfile="\"$qsrcfile\"" ;; 921c76ae52dSmrg esac 922c76ae52dSmrg 923c76ae52dSmrg $run $rm "$libobj" "${libobj}T" 924c76ae52dSmrg 925c76ae52dSmrg # Create a libtool object file (analogous to a ".la" file), 926c76ae52dSmrg # but don't create it if we're doing a dry run. 927c76ae52dSmrg test -z "$run" && cat > ${libobj}T <<EOF 928c76ae52dSmrg# $libobj - a libtool object file 929c76ae52dSmrg# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP 930c76ae52dSmrg# 931c76ae52dSmrg# Please DO NOT delete this file! 932c76ae52dSmrg# It is necessary for linking the library. 933c76ae52dSmrg 934c76ae52dSmrg# Name of the PIC object. 935c76ae52dSmrgEOF 936c76ae52dSmrg 937c76ae52dSmrg # Only build a PIC object if we are building libtool libraries. 938c76ae52dSmrg if test "$build_libtool_libs" = yes; then 939c76ae52dSmrg # Without this assignment, base_compile gets emptied. 940c76ae52dSmrg fbsd_hideous_sh_bug=$base_compile 941c76ae52dSmrg 942c76ae52dSmrg if test "$pic_mode" != no; then 943c76ae52dSmrg command="$base_compile $qsrcfile $pic_flag" 944c76ae52dSmrg else 945c76ae52dSmrg # Don't build PIC code 946c76ae52dSmrg command="$base_compile $qsrcfile" 947c76ae52dSmrg fi 948c76ae52dSmrg 949c76ae52dSmrg if test ! -d "${xdir}$objdir"; then 950c76ae52dSmrg $show "$mkdir ${xdir}$objdir" 951c76ae52dSmrg $run $mkdir ${xdir}$objdir 952c76ae52dSmrg exit_status=$? 953c76ae52dSmrg if test "$exit_status" -ne 0 && test ! -d "${xdir}$objdir"; then 954c76ae52dSmrg exit $exit_status 955c76ae52dSmrg fi 956c76ae52dSmrg fi 957c76ae52dSmrg 958c76ae52dSmrg if test -z "$output_obj"; then 959c76ae52dSmrg # Place PIC objects in $objdir 960c76ae52dSmrg command="$command -o $lobj" 961c76ae52dSmrg fi 962c76ae52dSmrg 963c76ae52dSmrg $run $rm "$lobj" "$output_obj" 964c76ae52dSmrg 965c76ae52dSmrg $show "$command" 9660d590c07Smrg if $run eval $lt_env "$command"; then : 967c76ae52dSmrg else 968c76ae52dSmrg test -n "$output_obj" && $run $rm $removelist 969c76ae52dSmrg exit $EXIT_FAILURE 970c76ae52dSmrg fi 971c76ae52dSmrg 972c76ae52dSmrg if test "$need_locks" = warn && 973c76ae52dSmrg test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 974c76ae52dSmrg $echo "\ 975c76ae52dSmrg*** ERROR, $lockfile contains: 976c76ae52dSmrg`cat $lockfile 2>/dev/null` 977c76ae52dSmrg 978c76ae52dSmrgbut it should contain: 979c76ae52dSmrg$srcfile 980c76ae52dSmrg 981c76ae52dSmrgThis indicates that another process is trying to use the same 982c76ae52dSmrgtemporary object file, and libtool could not work around it because 983c76ae52dSmrgyour compiler does not support \`-c' and \`-o' together. If you 984c76ae52dSmrgrepeat this compilation, it may succeed, by chance, but you had better 985c76ae52dSmrgavoid parallel builds (make -j) in this platform, or get a better 986c76ae52dSmrgcompiler." 987c76ae52dSmrg 988c76ae52dSmrg $run $rm $removelist 989c76ae52dSmrg exit $EXIT_FAILURE 990c76ae52dSmrg fi 991c76ae52dSmrg 992c76ae52dSmrg # Just move the object if needed, then go on to compile the next one 993c76ae52dSmrg if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then 994c76ae52dSmrg $show "$mv $output_obj $lobj" 995c76ae52dSmrg if $run $mv $output_obj $lobj; then : 996c76ae52dSmrg else 997c76ae52dSmrg error=$? 998c76ae52dSmrg $run $rm $removelist 999c76ae52dSmrg exit $error 1000c76ae52dSmrg fi 1001c76ae52dSmrg fi 1002c76ae52dSmrg 1003c76ae52dSmrg # Append the name of the PIC object to the libtool object file. 1004c76ae52dSmrg test -z "$run" && cat >> ${libobj}T <<EOF 1005c76ae52dSmrgpic_object='$objdir/$objname' 1006c76ae52dSmrg 1007c76ae52dSmrgEOF 1008c76ae52dSmrg 1009c76ae52dSmrg # Allow error messages only from the first compilation. 1010c76ae52dSmrg if test "$suppress_opt" = yes; then 1011c76ae52dSmrg suppress_output=' >/dev/null 2>&1' 1012c76ae52dSmrg fi 1013c76ae52dSmrg else 1014c76ae52dSmrg # No PIC object so indicate it doesn't exist in the libtool 1015c76ae52dSmrg # object file. 1016c76ae52dSmrg test -z "$run" && cat >> ${libobj}T <<EOF 1017c76ae52dSmrgpic_object=none 1018c76ae52dSmrg 1019c76ae52dSmrgEOF 1020c76ae52dSmrg fi 1021c76ae52dSmrg 1022c76ae52dSmrg # Only build a position-dependent object if we build old libraries. 1023c76ae52dSmrg if test "$build_old_libs" = yes; then 1024c76ae52dSmrg if test "$pic_mode" != yes; then 1025c76ae52dSmrg # Don't build PIC code 1026c76ae52dSmrg command="$base_compile $qsrcfile" 1027c76ae52dSmrg else 1028c76ae52dSmrg command="$base_compile $qsrcfile $pic_flag" 1029c76ae52dSmrg fi 1030c76ae52dSmrg if test "$compiler_c_o" = yes; then 1031c76ae52dSmrg command="$command -o $obj" 1032c76ae52dSmrg fi 1033c76ae52dSmrg 1034c76ae52dSmrg # Suppress compiler output if we already did a PIC compilation. 1035c76ae52dSmrg command="$command$suppress_output" 1036c76ae52dSmrg $run $rm "$obj" "$output_obj" 1037c76ae52dSmrg $show "$command" 10380d590c07Smrg if $run eval $lt_env "$command"; then : 1039c76ae52dSmrg else 1040c76ae52dSmrg $run $rm $removelist 1041c76ae52dSmrg exit $EXIT_FAILURE 1042c76ae52dSmrg fi 1043c76ae52dSmrg 1044c76ae52dSmrg if test "$need_locks" = warn && 1045c76ae52dSmrg test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 1046c76ae52dSmrg $echo "\ 1047c76ae52dSmrg*** ERROR, $lockfile contains: 1048c76ae52dSmrg`cat $lockfile 2>/dev/null` 1049c76ae52dSmrg 1050c76ae52dSmrgbut it should contain: 1051c76ae52dSmrg$srcfile 1052c76ae52dSmrg 1053c76ae52dSmrgThis indicates that another process is trying to use the same 1054c76ae52dSmrgtemporary object file, and libtool could not work around it because 1055c76ae52dSmrgyour compiler does not support \`-c' and \`-o' together. If you 1056c76ae52dSmrgrepeat this compilation, it may succeed, by chance, but you had better 1057c76ae52dSmrgavoid parallel builds (make -j) in this platform, or get a better 1058c76ae52dSmrgcompiler." 1059c76ae52dSmrg 1060c76ae52dSmrg $run $rm $removelist 1061c76ae52dSmrg exit $EXIT_FAILURE 1062c76ae52dSmrg fi 1063c76ae52dSmrg 1064c76ae52dSmrg # Just move the object if needed 1065c76ae52dSmrg if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then 1066c76ae52dSmrg $show "$mv $output_obj $obj" 1067c76ae52dSmrg if $run $mv $output_obj $obj; then : 1068c76ae52dSmrg else 1069c76ae52dSmrg error=$? 1070c76ae52dSmrg $run $rm $removelist 1071c76ae52dSmrg exit $error 1072c76ae52dSmrg fi 1073c76ae52dSmrg fi 1074c76ae52dSmrg 1075c76ae52dSmrg # Append the name of the non-PIC object the libtool object file. 1076c76ae52dSmrg # Only append if the libtool object file exists. 1077c76ae52dSmrg test -z "$run" && cat >> ${libobj}T <<EOF 1078c76ae52dSmrg# Name of the non-PIC object. 1079c76ae52dSmrgnon_pic_object='$objname' 1080c76ae52dSmrg 1081c76ae52dSmrgEOF 1082c76ae52dSmrg else 1083c76ae52dSmrg # Append the name of the non-PIC object the libtool object file. 1084c76ae52dSmrg # Only append if the libtool object file exists. 1085c76ae52dSmrg test -z "$run" && cat >> ${libobj}T <<EOF 1086c76ae52dSmrg# Name of the non-PIC object. 1087c76ae52dSmrgnon_pic_object=none 1088c76ae52dSmrg 1089c76ae52dSmrgEOF 1090c76ae52dSmrg fi 1091c76ae52dSmrg 1092c76ae52dSmrg $run $mv "${libobj}T" "${libobj}" 1093c76ae52dSmrg 1094c76ae52dSmrg # Unlock the critical section if it was locked 1095c76ae52dSmrg if test "$need_locks" != no; then 1096c76ae52dSmrg $run $rm "$lockfile" 1097c76ae52dSmrg fi 1098c76ae52dSmrg 1099c76ae52dSmrg exit $EXIT_SUCCESS 1100c76ae52dSmrg ;; 1101c76ae52dSmrg 1102c76ae52dSmrg # libtool link mode 1103c76ae52dSmrg link | relink) 1104c76ae52dSmrg modename="$modename: link" 1105c76ae52dSmrg case $host in 1106c76ae52dSmrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) 1107c76ae52dSmrg # It is impossible to link a dll without this setting, and 1108c76ae52dSmrg # we shouldn't force the makefile maintainer to figure out 1109c76ae52dSmrg # which system we are compiling for in order to pass an extra 1110c76ae52dSmrg # flag for every libtool invocation. 1111c76ae52dSmrg # allow_undefined=no 1112c76ae52dSmrg 1113c76ae52dSmrg # FIXME: Unfortunately, there are problems with the above when trying 1114c76ae52dSmrg # to make a dll which has undefined symbols, in which case not 1115c76ae52dSmrg # even a static library is built. For now, we need to specify 1116c76ae52dSmrg # -no-undefined on the libtool link line when we can be certain 1117c76ae52dSmrg # that all symbols are satisfied, otherwise we get a static library. 1118c76ae52dSmrg allow_undefined=yes 1119c76ae52dSmrg ;; 1120c76ae52dSmrg *) 1121c76ae52dSmrg allow_undefined=yes 1122c76ae52dSmrg ;; 1123c76ae52dSmrg esac 1124c76ae52dSmrg libtool_args="$nonopt" 1125c76ae52dSmrg base_compile="$nonopt $@" 1126c76ae52dSmrg compile_command="$nonopt" 1127c76ae52dSmrg finalize_command="$nonopt" 1128c76ae52dSmrg 1129c76ae52dSmrg compile_rpath= 1130c76ae52dSmrg finalize_rpath= 1131c76ae52dSmrg compile_shlibpath= 1132c76ae52dSmrg finalize_shlibpath= 1133c76ae52dSmrg convenience= 1134c76ae52dSmrg old_convenience= 1135c76ae52dSmrg deplibs= 1136c76ae52dSmrg old_deplibs= 1137c76ae52dSmrg compiler_flags= 1138c76ae52dSmrg linker_flags= 1139c76ae52dSmrg dllsearchpath= 1140c76ae52dSmrg lib_search_path=`pwd` 1141c76ae52dSmrg inst_prefix_dir= 1142c76ae52dSmrg 1143c76ae52dSmrg avoid_version=no 1144c76ae52dSmrg dlfiles= 1145c76ae52dSmrg dlprefiles= 1146c76ae52dSmrg dlself=no 1147c76ae52dSmrg export_dynamic=no 1148c76ae52dSmrg export_symbols= 1149c76ae52dSmrg export_symbols_regex= 1150c76ae52dSmrg generated= 1151c76ae52dSmrg libobjs= 1152c76ae52dSmrg ltlibs= 1153c76ae52dSmrg module=no 1154c76ae52dSmrg no_install=no 1155c76ae52dSmrg objs= 1156c76ae52dSmrg non_pic_objects= 1157c76ae52dSmrg notinst_path= # paths that contain not-installed libtool libraries 1158c76ae52dSmrg precious_files_regex= 1159c76ae52dSmrg prefer_static_libs=no 1160c76ae52dSmrg preload=no 1161c76ae52dSmrg prev= 1162c76ae52dSmrg prevarg= 1163c76ae52dSmrg release= 1164c76ae52dSmrg rpath= 1165c76ae52dSmrg xrpath= 1166c76ae52dSmrg perm_rpath= 1167c76ae52dSmrg temp_rpath= 1168c76ae52dSmrg thread_safe=no 1169c76ae52dSmrg vinfo= 1170c76ae52dSmrg vinfo_number=no 11710d590c07Smrg single_module="${wl}-single_module" 1172c76ae52dSmrg 1173c76ae52dSmrg func_infer_tag $base_compile 1174c76ae52dSmrg 1175c76ae52dSmrg # We need to know -static, to get the right output filenames. 1176c76ae52dSmrg for arg 1177c76ae52dSmrg do 1178c76ae52dSmrg case $arg in 11790d590c07Smrg -all-static | -static | -static-libtool-libs) 11800d590c07Smrg case $arg in 11810d590c07Smrg -all-static) 1182c76ae52dSmrg if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then 1183c76ae52dSmrg $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2 1184c76ae52dSmrg fi 1185c76ae52dSmrg if test -n "$link_static_flag"; then 1186c76ae52dSmrg dlopen_self=$dlopen_self_static 1187c76ae52dSmrg fi 1188c76ae52dSmrg prefer_static_libs=yes 11890d590c07Smrg ;; 11900d590c07Smrg -static) 1191c76ae52dSmrg if test -z "$pic_flag" && test -n "$link_static_flag"; then 1192c76ae52dSmrg dlopen_self=$dlopen_self_static 1193c76ae52dSmrg fi 1194c76ae52dSmrg prefer_static_libs=built 11950d590c07Smrg ;; 11960d590c07Smrg -static-libtool-libs) 11970d590c07Smrg if test -z "$pic_flag" && test -n "$link_static_flag"; then 11980d590c07Smrg dlopen_self=$dlopen_self_static 11990d590c07Smrg fi 12000d590c07Smrg prefer_static_libs=yes 12010d590c07Smrg ;; 12020d590c07Smrg esac 1203c76ae52dSmrg build_libtool_libs=no 1204c76ae52dSmrg build_old_libs=yes 1205c76ae52dSmrg break 1206c76ae52dSmrg ;; 1207c76ae52dSmrg esac 1208c76ae52dSmrg done 1209c76ae52dSmrg 1210c76ae52dSmrg # See if our shared archives depend on static archives. 1211c76ae52dSmrg test -n "$old_archive_from_new_cmds" && build_old_libs=yes 1212c76ae52dSmrg 1213c76ae52dSmrg # Go through the arguments, transforming them on the way. 1214c76ae52dSmrg while test "$#" -gt 0; do 1215c76ae52dSmrg arg="$1" 1216c76ae52dSmrg shift 1217c76ae52dSmrg case $arg in 1218c76ae52dSmrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 1219c76ae52dSmrg qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test 1220c76ae52dSmrg ;; 1221c76ae52dSmrg *) qarg=$arg ;; 1222c76ae52dSmrg esac 1223c76ae52dSmrg libtool_args="$libtool_args $qarg" 1224c76ae52dSmrg 1225c76ae52dSmrg # If the previous option needs an argument, assign it. 1226c76ae52dSmrg if test -n "$prev"; then 1227c76ae52dSmrg case $prev in 1228c76ae52dSmrg output) 1229c76ae52dSmrg compile_command="$compile_command @OUTPUT@" 1230c76ae52dSmrg finalize_command="$finalize_command @OUTPUT@" 1231c76ae52dSmrg ;; 1232c76ae52dSmrg esac 1233c76ae52dSmrg 1234c76ae52dSmrg case $prev in 1235c76ae52dSmrg dlfiles|dlprefiles) 1236c76ae52dSmrg if test "$preload" = no; then 1237c76ae52dSmrg # Add the symbol object into the linking commands. 1238c76ae52dSmrg compile_command="$compile_command @SYMFILE@" 1239c76ae52dSmrg finalize_command="$finalize_command @SYMFILE@" 1240c76ae52dSmrg preload=yes 1241c76ae52dSmrg fi 1242c76ae52dSmrg case $arg in 1243c76ae52dSmrg *.la | *.lo) ;; # We handle these cases below. 1244c76ae52dSmrg force) 1245c76ae52dSmrg if test "$dlself" = no; then 1246c76ae52dSmrg dlself=needless 1247c76ae52dSmrg export_dynamic=yes 1248c76ae52dSmrg fi 1249c76ae52dSmrg prev= 1250c76ae52dSmrg continue 1251c76ae52dSmrg ;; 1252c76ae52dSmrg self) 1253c76ae52dSmrg if test "$prev" = dlprefiles; then 1254c76ae52dSmrg dlself=yes 1255c76ae52dSmrg elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then 1256c76ae52dSmrg dlself=yes 1257c76ae52dSmrg else 1258c76ae52dSmrg dlself=needless 1259c76ae52dSmrg export_dynamic=yes 1260c76ae52dSmrg fi 1261c76ae52dSmrg prev= 1262c76ae52dSmrg continue 1263c76ae52dSmrg ;; 1264c76ae52dSmrg *) 1265c76ae52dSmrg if test "$prev" = dlfiles; then 1266c76ae52dSmrg dlfiles="$dlfiles $arg" 1267c76ae52dSmrg else 1268c76ae52dSmrg dlprefiles="$dlprefiles $arg" 1269c76ae52dSmrg fi 1270c76ae52dSmrg prev= 1271c76ae52dSmrg continue 1272c76ae52dSmrg ;; 1273c76ae52dSmrg esac 1274c76ae52dSmrg ;; 1275c76ae52dSmrg expsyms) 1276c76ae52dSmrg export_symbols="$arg" 1277c76ae52dSmrg if test ! -f "$arg"; then 1278c76ae52dSmrg $echo "$modename: symbol file \`$arg' does not exist" 1279c76ae52dSmrg exit $EXIT_FAILURE 1280c76ae52dSmrg fi 1281c76ae52dSmrg prev= 1282c76ae52dSmrg continue 1283c76ae52dSmrg ;; 1284c76ae52dSmrg expsyms_regex) 1285c76ae52dSmrg export_symbols_regex="$arg" 1286c76ae52dSmrg prev= 1287c76ae52dSmrg continue 1288c76ae52dSmrg ;; 1289c76ae52dSmrg inst_prefix) 1290c76ae52dSmrg inst_prefix_dir="$arg" 1291c76ae52dSmrg prev= 1292c76ae52dSmrg continue 1293c76ae52dSmrg ;; 1294c76ae52dSmrg precious_regex) 1295c76ae52dSmrg precious_files_regex="$arg" 1296c76ae52dSmrg prev= 1297c76ae52dSmrg continue 1298c76ae52dSmrg ;; 1299c76ae52dSmrg release) 1300c76ae52dSmrg release="-$arg" 1301c76ae52dSmrg prev= 1302c76ae52dSmrg continue 1303c76ae52dSmrg ;; 1304c76ae52dSmrg objectlist) 1305c76ae52dSmrg if test -f "$arg"; then 1306c76ae52dSmrg save_arg=$arg 1307c76ae52dSmrg moreargs= 1308c76ae52dSmrg for fil in `cat $save_arg` 1309c76ae52dSmrg do 1310c76ae52dSmrg# moreargs="$moreargs $fil" 1311c76ae52dSmrg arg=$fil 1312c76ae52dSmrg # A libtool-controlled object. 1313c76ae52dSmrg 1314c76ae52dSmrg # Check to see that this really is a libtool object. 1315c76ae52dSmrg if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 1316c76ae52dSmrg pic_object= 1317c76ae52dSmrg non_pic_object= 1318c76ae52dSmrg 1319c76ae52dSmrg # Read the .lo file 1320c76ae52dSmrg # If there is no directory component, then add one. 1321c76ae52dSmrg case $arg in 1322c76ae52dSmrg */* | *\\*) . $arg ;; 1323c76ae52dSmrg *) . ./$arg ;; 1324c76ae52dSmrg esac 1325c76ae52dSmrg 1326c76ae52dSmrg if test -z "$pic_object" || \ 1327c76ae52dSmrg test -z "$non_pic_object" || 1328c76ae52dSmrg test "$pic_object" = none && \ 1329c76ae52dSmrg test "$non_pic_object" = none; then 1330c76ae52dSmrg $echo "$modename: cannot find name of object for \`$arg'" 1>&2 1331c76ae52dSmrg exit $EXIT_FAILURE 1332c76ae52dSmrg fi 1333c76ae52dSmrg 1334c76ae52dSmrg # Extract subdirectory from the argument. 1335c76ae52dSmrg xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` 1336c76ae52dSmrg if test "X$xdir" = "X$arg"; then 1337c76ae52dSmrg xdir= 1338c76ae52dSmrg else 1339c76ae52dSmrg xdir="$xdir/" 1340c76ae52dSmrg fi 1341c76ae52dSmrg 1342c76ae52dSmrg if test "$pic_object" != none; then 1343c76ae52dSmrg # Prepend the subdirectory the object is found in. 1344c76ae52dSmrg pic_object="$xdir$pic_object" 1345c76ae52dSmrg 1346c76ae52dSmrg if test "$prev" = dlfiles; then 1347c76ae52dSmrg if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 1348c76ae52dSmrg dlfiles="$dlfiles $pic_object" 1349c76ae52dSmrg prev= 1350c76ae52dSmrg continue 1351c76ae52dSmrg else 1352c76ae52dSmrg # If libtool objects are unsupported, then we need to preload. 1353c76ae52dSmrg prev=dlprefiles 1354c76ae52dSmrg fi 1355c76ae52dSmrg fi 1356c76ae52dSmrg 1357c76ae52dSmrg # CHECK ME: I think I busted this. -Ossama 1358c76ae52dSmrg if test "$prev" = dlprefiles; then 1359c76ae52dSmrg # Preload the old-style object. 1360c76ae52dSmrg dlprefiles="$dlprefiles $pic_object" 1361c76ae52dSmrg prev= 1362c76ae52dSmrg fi 1363c76ae52dSmrg 1364c76ae52dSmrg # A PIC object. 1365c76ae52dSmrg libobjs="$libobjs $pic_object" 1366c76ae52dSmrg arg="$pic_object" 1367c76ae52dSmrg fi 1368c76ae52dSmrg 1369c76ae52dSmrg # Non-PIC object. 1370c76ae52dSmrg if test "$non_pic_object" != none; then 1371c76ae52dSmrg # Prepend the subdirectory the object is found in. 1372c76ae52dSmrg non_pic_object="$xdir$non_pic_object" 1373c76ae52dSmrg 1374c76ae52dSmrg # A standard non-PIC object 1375c76ae52dSmrg non_pic_objects="$non_pic_objects $non_pic_object" 1376c76ae52dSmrg if test -z "$pic_object" || test "$pic_object" = none ; then 1377c76ae52dSmrg arg="$non_pic_object" 1378c76ae52dSmrg fi 1379c76ae52dSmrg else 1380c76ae52dSmrg # If the PIC object exists, use it instead. 1381c76ae52dSmrg # $xdir was prepended to $pic_object above. 1382c76ae52dSmrg non_pic_object="$pic_object" 1383c76ae52dSmrg non_pic_objects="$non_pic_objects $non_pic_object" 1384c76ae52dSmrg fi 1385c76ae52dSmrg else 1386c76ae52dSmrg # Only an error if not doing a dry-run. 1387c76ae52dSmrg if test -z "$run"; then 1388c76ae52dSmrg $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 1389c76ae52dSmrg exit $EXIT_FAILURE 1390c76ae52dSmrg else 1391c76ae52dSmrg # Dry-run case. 1392c76ae52dSmrg 1393c76ae52dSmrg # Extract subdirectory from the argument. 1394c76ae52dSmrg xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` 1395c76ae52dSmrg if test "X$xdir" = "X$arg"; then 1396c76ae52dSmrg xdir= 1397c76ae52dSmrg else 1398c76ae52dSmrg xdir="$xdir/" 1399c76ae52dSmrg fi 1400c76ae52dSmrg 1401c76ae52dSmrg pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` 1402c76ae52dSmrg non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` 1403c76ae52dSmrg libobjs="$libobjs $pic_object" 1404c76ae52dSmrg non_pic_objects="$non_pic_objects $non_pic_object" 1405c76ae52dSmrg fi 1406c76ae52dSmrg fi 1407c76ae52dSmrg done 1408c76ae52dSmrg else 1409c76ae52dSmrg $echo "$modename: link input file \`$save_arg' does not exist" 1410c76ae52dSmrg exit $EXIT_FAILURE 1411c76ae52dSmrg fi 1412c76ae52dSmrg arg=$save_arg 1413c76ae52dSmrg prev= 1414c76ae52dSmrg continue 1415c76ae52dSmrg ;; 1416c76ae52dSmrg rpath | xrpath) 1417c76ae52dSmrg # We need an absolute path. 1418c76ae52dSmrg case $arg in 1419c76ae52dSmrg [\\/]* | [A-Za-z]:[\\/]*) ;; 1420c76ae52dSmrg *) 1421c76ae52dSmrg $echo "$modename: only absolute run-paths are allowed" 1>&2 1422c76ae52dSmrg exit $EXIT_FAILURE 1423c76ae52dSmrg ;; 1424c76ae52dSmrg esac 1425c76ae52dSmrg if test "$prev" = rpath; then 1426c76ae52dSmrg case "$rpath " in 1427c76ae52dSmrg *" $arg "*) ;; 1428c76ae52dSmrg *) rpath="$rpath $arg" ;; 1429c76ae52dSmrg esac 1430c76ae52dSmrg else 1431c76ae52dSmrg case "$xrpath " in 1432c76ae52dSmrg *" $arg "*) ;; 1433c76ae52dSmrg *) xrpath="$xrpath $arg" ;; 1434c76ae52dSmrg esac 1435c76ae52dSmrg fi 1436c76ae52dSmrg prev= 1437c76ae52dSmrg continue 1438c76ae52dSmrg ;; 1439c76ae52dSmrg xcompiler) 1440c76ae52dSmrg compiler_flags="$compiler_flags $qarg" 1441c76ae52dSmrg prev= 1442c76ae52dSmrg compile_command="$compile_command $qarg" 1443c76ae52dSmrg finalize_command="$finalize_command $qarg" 1444c76ae52dSmrg continue 1445c76ae52dSmrg ;; 1446c76ae52dSmrg xlinker) 1447c76ae52dSmrg linker_flags="$linker_flags $qarg" 1448c76ae52dSmrg compiler_flags="$compiler_flags $wl$qarg" 1449c76ae52dSmrg prev= 1450c76ae52dSmrg compile_command="$compile_command $wl$qarg" 1451c76ae52dSmrg finalize_command="$finalize_command $wl$qarg" 1452c76ae52dSmrg continue 1453c76ae52dSmrg ;; 1454c76ae52dSmrg xcclinker) 1455c76ae52dSmrg linker_flags="$linker_flags $qarg" 1456c76ae52dSmrg compiler_flags="$compiler_flags $qarg" 1457c76ae52dSmrg prev= 1458c76ae52dSmrg compile_command="$compile_command $qarg" 1459c76ae52dSmrg finalize_command="$finalize_command $qarg" 1460c76ae52dSmrg continue 1461c76ae52dSmrg ;; 1462c76ae52dSmrg shrext) 1463c76ae52dSmrg shrext_cmds="$arg" 1464c76ae52dSmrg prev= 1465c76ae52dSmrg continue 1466c76ae52dSmrg ;; 1467c76ae52dSmrg darwin_framework|darwin_framework_skip) 1468c76ae52dSmrg test "$prev" = "darwin_framework" && compiler_flags="$compiler_flags $arg" 1469c76ae52dSmrg compile_command="$compile_command $arg" 1470c76ae52dSmrg finalize_command="$finalize_command $arg" 1471c76ae52dSmrg prev= 1472c76ae52dSmrg continue 1473c76ae52dSmrg ;; 1474c76ae52dSmrg *) 1475c76ae52dSmrg eval "$prev=\"\$arg\"" 1476c76ae52dSmrg prev= 1477c76ae52dSmrg continue 1478c76ae52dSmrg ;; 1479c76ae52dSmrg esac 1480c76ae52dSmrg fi # test -n "$prev" 1481c76ae52dSmrg 1482c76ae52dSmrg prevarg="$arg" 1483c76ae52dSmrg 1484c76ae52dSmrg case $arg in 1485c76ae52dSmrg -all-static) 1486c76ae52dSmrg if test -n "$link_static_flag"; then 1487c76ae52dSmrg compile_command="$compile_command $link_static_flag" 1488c76ae52dSmrg finalize_command="$finalize_command $link_static_flag" 1489c76ae52dSmrg fi 1490c76ae52dSmrg continue 1491c76ae52dSmrg ;; 1492c76ae52dSmrg 1493c76ae52dSmrg -allow-undefined) 1494c76ae52dSmrg # FIXME: remove this flag sometime in the future. 1495c76ae52dSmrg $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2 1496c76ae52dSmrg continue 1497c76ae52dSmrg ;; 1498c76ae52dSmrg 1499c76ae52dSmrg -avoid-version) 1500c76ae52dSmrg avoid_version=yes 1501c76ae52dSmrg continue 1502c76ae52dSmrg ;; 1503c76ae52dSmrg 1504c76ae52dSmrg -dlopen) 1505c76ae52dSmrg prev=dlfiles 1506c76ae52dSmrg continue 1507c76ae52dSmrg ;; 1508c76ae52dSmrg 1509c76ae52dSmrg -dlpreopen) 1510c76ae52dSmrg prev=dlprefiles 1511c76ae52dSmrg continue 1512c76ae52dSmrg ;; 1513c76ae52dSmrg 1514c76ae52dSmrg -export-dynamic) 1515c76ae52dSmrg export_dynamic=yes 1516c76ae52dSmrg continue 1517c76ae52dSmrg ;; 1518c76ae52dSmrg 1519c76ae52dSmrg -export-symbols | -export-symbols-regex) 1520c76ae52dSmrg if test -n "$export_symbols" || test -n "$export_symbols_regex"; then 1521c76ae52dSmrg $echo "$modename: more than one -exported-symbols argument is not allowed" 1522c76ae52dSmrg exit $EXIT_FAILURE 1523c76ae52dSmrg fi 1524c76ae52dSmrg if test "X$arg" = "X-export-symbols"; then 1525c76ae52dSmrg prev=expsyms 1526c76ae52dSmrg else 1527c76ae52dSmrg prev=expsyms_regex 1528c76ae52dSmrg fi 1529c76ae52dSmrg continue 1530c76ae52dSmrg ;; 1531c76ae52dSmrg 1532c76ae52dSmrg -framework|-arch|-isysroot) 1533c76ae52dSmrg case " $CC " in 1534c76ae52dSmrg *" ${arg} ${1} "* | *" ${arg} ${1} "*) 1535c76ae52dSmrg prev=darwin_framework_skip ;; 1536c76ae52dSmrg *) compiler_flags="$compiler_flags $arg" 1537c76ae52dSmrg prev=darwin_framework ;; 1538c76ae52dSmrg esac 1539c76ae52dSmrg compile_command="$compile_command $arg" 1540c76ae52dSmrg finalize_command="$finalize_command $arg" 1541c76ae52dSmrg continue 1542c76ae52dSmrg ;; 1543c76ae52dSmrg 1544c76ae52dSmrg -inst-prefix-dir) 1545c76ae52dSmrg prev=inst_prefix 1546c76ae52dSmrg continue 1547c76ae52dSmrg ;; 1548c76ae52dSmrg 1549c76ae52dSmrg # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* 1550c76ae52dSmrg # so, if we see these flags be careful not to treat them like -L 1551c76ae52dSmrg -L[A-Z][A-Z]*:*) 1552c76ae52dSmrg case $with_gcc/$host in 1553c76ae52dSmrg no/*-*-irix* | /*-*-irix*) 1554c76ae52dSmrg compile_command="$compile_command $arg" 1555c76ae52dSmrg finalize_command="$finalize_command $arg" 1556c76ae52dSmrg ;; 1557c76ae52dSmrg esac 1558c76ae52dSmrg continue 1559c76ae52dSmrg ;; 1560c76ae52dSmrg 1561c76ae52dSmrg -L*) 1562c76ae52dSmrg dir=`$echo "X$arg" | $Xsed -e 's/^-L//'` 1563c76ae52dSmrg # We need an absolute path. 1564c76ae52dSmrg case $dir in 1565c76ae52dSmrg [\\/]* | [A-Za-z]:[\\/]*) ;; 1566c76ae52dSmrg *) 1567c76ae52dSmrg absdir=`cd "$dir" && pwd` 1568c76ae52dSmrg if test -z "$absdir"; then 1569c76ae52dSmrg $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2 1570c76ae52dSmrg absdir="$dir" 1571c76ae52dSmrg notinst_path="$notinst_path $dir" 1572c76ae52dSmrg fi 1573c76ae52dSmrg dir="$absdir" 1574c76ae52dSmrg ;; 1575c76ae52dSmrg esac 1576c76ae52dSmrg case "$deplibs " in 1577c76ae52dSmrg *" -L$dir "*) ;; 1578c76ae52dSmrg *) 1579c76ae52dSmrg deplibs="$deplibs -L$dir" 1580c76ae52dSmrg lib_search_path="$lib_search_path $dir" 1581c76ae52dSmrg ;; 1582c76ae52dSmrg esac 1583c76ae52dSmrg case $host in 1584c76ae52dSmrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) 1585c76ae52dSmrg testbindir=`$echo "X$dir" | $Xsed -e 's*/lib$*/bin*'` 1586c76ae52dSmrg case :$dllsearchpath: in 1587c76ae52dSmrg *":$dir:"*) ;; 1588c76ae52dSmrg *) dllsearchpath="$dllsearchpath:$dir";; 1589c76ae52dSmrg esac 1590c76ae52dSmrg case :$dllsearchpath: in 1591c76ae52dSmrg *":$testbindir:"*) ;; 1592c76ae52dSmrg *) dllsearchpath="$dllsearchpath:$testbindir";; 1593c76ae52dSmrg esac 1594c76ae52dSmrg ;; 1595c76ae52dSmrg esac 1596c76ae52dSmrg continue 1597c76ae52dSmrg ;; 1598c76ae52dSmrg 1599c76ae52dSmrg -l*) 1600c76ae52dSmrg if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then 1601c76ae52dSmrg case $host in 1602c76ae52dSmrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos*) 1603c76ae52dSmrg # These systems don't actually have a C or math library (as such) 1604c76ae52dSmrg continue 1605c76ae52dSmrg ;; 1606c76ae52dSmrg *-*-os2*) 1607c76ae52dSmrg # These systems don't actually have a C library (as such) 1608c76ae52dSmrg test "X$arg" = "X-lc" && continue 1609c76ae52dSmrg ;; 1610c76ae52dSmrg *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 1611c76ae52dSmrg # Do not include libc due to us having libc/libc_r. 1612c76ae52dSmrg test "X$arg" = "X-lc" && continue 1613c76ae52dSmrg ;; 1614c76ae52dSmrg *-*-rhapsody* | *-*-darwin1.[012]) 1615c76ae52dSmrg # Rhapsody C and math libraries are in the System framework 1616c76ae52dSmrg deplibs="$deplibs -framework System" 1617c76ae52dSmrg continue 1618c76ae52dSmrg ;; 1619c76ae52dSmrg *-*-sco3.2v5* | *-*-sco5v6*) 1620c76ae52dSmrg # Causes problems with __ctype 1621c76ae52dSmrg test "X$arg" = "X-lc" && continue 1622c76ae52dSmrg ;; 1623c76ae52dSmrg *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 1624c76ae52dSmrg # Compiler inserts libc in the correct place for threads to work 1625c76ae52dSmrg test "X$arg" = "X-lc" && continue 1626c76ae52dSmrg ;; 1627c76ae52dSmrg esac 1628c76ae52dSmrg elif test "X$arg" = "X-lc_r"; then 1629c76ae52dSmrg case $host in 1630c76ae52dSmrg *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 1631c76ae52dSmrg # Do not include libc_r directly, use -pthread flag. 1632c76ae52dSmrg continue 1633c76ae52dSmrg ;; 1634c76ae52dSmrg esac 1635c76ae52dSmrg fi 1636c76ae52dSmrg deplibs="$deplibs $arg" 1637c76ae52dSmrg continue 1638c76ae52dSmrg ;; 1639c76ae52dSmrg 1640c76ae52dSmrg # Tru64 UNIX uses -model [arg] to determine the layout of C++ 1641c76ae52dSmrg # classes, name mangling, and exception handling. 1642c76ae52dSmrg -model) 1643c76ae52dSmrg compile_command="$compile_command $arg" 1644c76ae52dSmrg compiler_flags="$compiler_flags $arg" 1645c76ae52dSmrg finalize_command="$finalize_command $arg" 1646c76ae52dSmrg prev=xcompiler 1647c76ae52dSmrg continue 1648c76ae52dSmrg ;; 1649c76ae52dSmrg 16500d590c07Smrg -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) 1651c76ae52dSmrg compiler_flags="$compiler_flags $arg" 1652c76ae52dSmrg compile_command="$compile_command $arg" 1653c76ae52dSmrg finalize_command="$finalize_command $arg" 1654c76ae52dSmrg continue 1655c76ae52dSmrg ;; 1656c76ae52dSmrg 16570d590c07Smrg -multi_module) 16580d590c07Smrg single_module="${wl}-multi_module" 16590d590c07Smrg continue 16600d590c07Smrg ;; 16610d590c07Smrg 1662c76ae52dSmrg -module) 1663c76ae52dSmrg module=yes 1664c76ae52dSmrg continue 1665c76ae52dSmrg ;; 1666c76ae52dSmrg 1667c76ae52dSmrg # -64, -mips[0-9] enable 64-bit mode on the SGI compiler 1668c76ae52dSmrg # -r[0-9][0-9]* specifies the processor on the SGI compiler 1669c76ae52dSmrg # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler 1670c76ae52dSmrg # +DA*, +DD* enable 64-bit mode on the HP compiler 1671c76ae52dSmrg # -q* pass through compiler args for the IBM compiler 1672c76ae52dSmrg # -m* pass through architecture-specific compiler args for GCC 1673c76ae52dSmrg # -m*, -t[45]*, -txscale* pass through architecture-specific 1674c76ae52dSmrg # compiler args for GCC 16750d590c07Smrg # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC 16760d590c07Smrg # -F/path gives path to uninstalled frameworks, gcc on darwin 1677c76ae52dSmrg # @file GCC response files 16780d590c07Smrg -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ 16790d590c07Smrg -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*) 1680c76ae52dSmrg 1681c76ae52dSmrg # Unknown arguments in both finalize_command and compile_command need 1682c76ae52dSmrg # to be aesthetically quoted because they are evaled later. 1683c76ae52dSmrg arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 1684c76ae52dSmrg case $arg in 1685c76ae52dSmrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 1686c76ae52dSmrg arg="\"$arg\"" 1687c76ae52dSmrg ;; 1688c76ae52dSmrg esac 1689c76ae52dSmrg compile_command="$compile_command $arg" 1690c76ae52dSmrg finalize_command="$finalize_command $arg" 1691c76ae52dSmrg compiler_flags="$compiler_flags $arg" 1692c76ae52dSmrg continue 1693c76ae52dSmrg ;; 1694c76ae52dSmrg 1695c76ae52dSmrg -shrext) 1696c76ae52dSmrg prev=shrext 1697c76ae52dSmrg continue 1698c76ae52dSmrg ;; 1699c76ae52dSmrg 1700c76ae52dSmrg -no-fast-install) 1701c76ae52dSmrg fast_install=no 1702c76ae52dSmrg continue 1703c76ae52dSmrg ;; 1704c76ae52dSmrg 1705c76ae52dSmrg -no-install) 1706c76ae52dSmrg case $host in 17070d590c07Smrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin*) 1708c76ae52dSmrg # The PATH hackery in wrapper scripts is required on Windows 17090d590c07Smrg # and Darwin in order for the loader to find any dlls it needs. 1710c76ae52dSmrg $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2 1711c76ae52dSmrg $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2 1712c76ae52dSmrg fast_install=no 1713c76ae52dSmrg ;; 1714c76ae52dSmrg *) no_install=yes ;; 1715c76ae52dSmrg esac 1716c76ae52dSmrg continue 1717c76ae52dSmrg ;; 1718c76ae52dSmrg 1719c76ae52dSmrg -no-undefined) 1720c76ae52dSmrg allow_undefined=no 1721c76ae52dSmrg continue 1722c76ae52dSmrg ;; 1723c76ae52dSmrg 1724c76ae52dSmrg -objectlist) 1725c76ae52dSmrg prev=objectlist 1726c76ae52dSmrg continue 1727c76ae52dSmrg ;; 1728c76ae52dSmrg 1729c76ae52dSmrg -o) prev=output ;; 1730c76ae52dSmrg 1731c76ae52dSmrg -precious-files-regex) 1732c76ae52dSmrg prev=precious_regex 1733c76ae52dSmrg continue 1734c76ae52dSmrg ;; 1735c76ae52dSmrg 1736c76ae52dSmrg -release) 1737c76ae52dSmrg prev=release 1738c76ae52dSmrg continue 1739c76ae52dSmrg ;; 1740c76ae52dSmrg 1741c76ae52dSmrg -rpath) 1742c76ae52dSmrg prev=rpath 1743c76ae52dSmrg continue 1744c76ae52dSmrg ;; 1745c76ae52dSmrg 1746c76ae52dSmrg -R) 1747c76ae52dSmrg prev=xrpath 1748c76ae52dSmrg continue 1749c76ae52dSmrg ;; 1750c76ae52dSmrg 1751c76ae52dSmrg -R*) 1752c76ae52dSmrg dir=`$echo "X$arg" | $Xsed -e 's/^-R//'` 1753c76ae52dSmrg # We need an absolute path. 1754c76ae52dSmrg case $dir in 1755c76ae52dSmrg [\\/]* | [A-Za-z]:[\\/]*) ;; 1756c76ae52dSmrg *) 1757c76ae52dSmrg $echo "$modename: only absolute run-paths are allowed" 1>&2 1758c76ae52dSmrg exit $EXIT_FAILURE 1759c76ae52dSmrg ;; 1760c76ae52dSmrg esac 1761c76ae52dSmrg case "$xrpath " in 1762c76ae52dSmrg *" $dir "*) ;; 1763c76ae52dSmrg *) xrpath="$xrpath $dir" ;; 1764c76ae52dSmrg esac 1765c76ae52dSmrg continue 1766c76ae52dSmrg ;; 1767c76ae52dSmrg 17680d590c07Smrg -static | -static-libtool-libs) 1769c76ae52dSmrg # The effects of -static are defined in a previous loop. 1770c76ae52dSmrg # We used to do the same as -all-static on platforms that 1771c76ae52dSmrg # didn't have a PIC flag, but the assumption that the effects 1772c76ae52dSmrg # would be equivalent was wrong. It would break on at least 1773c76ae52dSmrg # Digital Unix and AIX. 1774c76ae52dSmrg continue 1775c76ae52dSmrg ;; 1776c76ae52dSmrg 1777c76ae52dSmrg -thread-safe) 1778c76ae52dSmrg thread_safe=yes 1779c76ae52dSmrg continue 1780c76ae52dSmrg ;; 1781c76ae52dSmrg 1782c76ae52dSmrg -version-info) 1783c76ae52dSmrg prev=vinfo 1784c76ae52dSmrg continue 1785c76ae52dSmrg ;; 1786c76ae52dSmrg -version-number) 1787c76ae52dSmrg prev=vinfo 1788c76ae52dSmrg vinfo_number=yes 1789c76ae52dSmrg continue 1790c76ae52dSmrg ;; 1791c76ae52dSmrg 1792c76ae52dSmrg -Wc,*) 1793c76ae52dSmrg args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'` 1794c76ae52dSmrg arg= 1795c76ae52dSmrg save_ifs="$IFS"; IFS=',' 1796c76ae52dSmrg for flag in $args; do 1797c76ae52dSmrg IFS="$save_ifs" 1798c76ae52dSmrg case $flag in 1799c76ae52dSmrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 1800c76ae52dSmrg flag="\"$flag\"" 1801c76ae52dSmrg ;; 1802c76ae52dSmrg esac 1803c76ae52dSmrg arg="$arg $wl$flag" 1804c76ae52dSmrg compiler_flags="$compiler_flags $flag" 1805c76ae52dSmrg done 1806c76ae52dSmrg IFS="$save_ifs" 1807c76ae52dSmrg arg=`$echo "X$arg" | $Xsed -e "s/^ //"` 1808c76ae52dSmrg ;; 1809c76ae52dSmrg 1810c76ae52dSmrg -Wl,*) 1811c76ae52dSmrg args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'` 1812c76ae52dSmrg arg= 1813c76ae52dSmrg save_ifs="$IFS"; IFS=',' 1814c76ae52dSmrg for flag in $args; do 1815c76ae52dSmrg IFS="$save_ifs" 1816c76ae52dSmrg case $flag in 1817c76ae52dSmrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 1818c76ae52dSmrg flag="\"$flag\"" 1819c76ae52dSmrg ;; 1820c76ae52dSmrg esac 1821c76ae52dSmrg arg="$arg $wl$flag" 1822c76ae52dSmrg compiler_flags="$compiler_flags $wl$flag" 1823c76ae52dSmrg linker_flags="$linker_flags $flag" 1824c76ae52dSmrg done 1825c76ae52dSmrg IFS="$save_ifs" 1826c76ae52dSmrg arg=`$echo "X$arg" | $Xsed -e "s/^ //"` 1827c76ae52dSmrg ;; 1828c76ae52dSmrg 1829c76ae52dSmrg -Xcompiler) 1830c76ae52dSmrg prev=xcompiler 1831c76ae52dSmrg continue 1832c76ae52dSmrg ;; 1833c76ae52dSmrg 1834c76ae52dSmrg -Xlinker) 1835c76ae52dSmrg prev=xlinker 1836c76ae52dSmrg continue 1837c76ae52dSmrg ;; 1838c76ae52dSmrg 1839c76ae52dSmrg -XCClinker) 1840c76ae52dSmrg prev=xcclinker 1841c76ae52dSmrg continue 1842c76ae52dSmrg ;; 1843c76ae52dSmrg 1844c76ae52dSmrg # Some other compiler flag. 1845c76ae52dSmrg -* | +*) 1846c76ae52dSmrg # Unknown arguments in both finalize_command and compile_command need 1847c76ae52dSmrg # to be aesthetically quoted because they are evaled later. 1848c76ae52dSmrg arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 1849c76ae52dSmrg case $arg in 1850c76ae52dSmrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 1851c76ae52dSmrg arg="\"$arg\"" 1852c76ae52dSmrg ;; 1853c76ae52dSmrg esac 1854c76ae52dSmrg ;; 1855c76ae52dSmrg 1856c76ae52dSmrg *.$objext) 1857c76ae52dSmrg # A standard object. 1858c76ae52dSmrg objs="$objs $arg" 1859c76ae52dSmrg ;; 1860c76ae52dSmrg 1861c76ae52dSmrg *.lo) 1862c76ae52dSmrg # A libtool-controlled object. 1863c76ae52dSmrg 1864c76ae52dSmrg # Check to see that this really is a libtool object. 1865c76ae52dSmrg if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 1866c76ae52dSmrg pic_object= 1867c76ae52dSmrg non_pic_object= 1868c76ae52dSmrg 1869c76ae52dSmrg # Read the .lo file 1870c76ae52dSmrg # If there is no directory component, then add one. 1871c76ae52dSmrg case $arg in 1872c76ae52dSmrg */* | *\\*) . $arg ;; 1873c76ae52dSmrg *) . ./$arg ;; 1874c76ae52dSmrg esac 1875c76ae52dSmrg 1876c76ae52dSmrg if test -z "$pic_object" || \ 1877c76ae52dSmrg test -z "$non_pic_object" || 1878c76ae52dSmrg test "$pic_object" = none && \ 1879c76ae52dSmrg test "$non_pic_object" = none; then 1880c76ae52dSmrg $echo "$modename: cannot find name of object for \`$arg'" 1>&2 1881c76ae52dSmrg exit $EXIT_FAILURE 1882c76ae52dSmrg fi 1883c76ae52dSmrg 1884c76ae52dSmrg # Extract subdirectory from the argument. 1885c76ae52dSmrg xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` 1886c76ae52dSmrg if test "X$xdir" = "X$arg"; then 1887c76ae52dSmrg xdir= 1888c76ae52dSmrg else 1889c76ae52dSmrg xdir="$xdir/" 1890c76ae52dSmrg fi 1891c76ae52dSmrg 1892c76ae52dSmrg if test "$pic_object" != none; then 1893c76ae52dSmrg # Prepend the subdirectory the object is found in. 1894c76ae52dSmrg pic_object="$xdir$pic_object" 1895c76ae52dSmrg 1896c76ae52dSmrg if test "$prev" = dlfiles; then 1897c76ae52dSmrg if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 1898c76ae52dSmrg dlfiles="$dlfiles $pic_object" 1899c76ae52dSmrg prev= 1900c76ae52dSmrg continue 1901c76ae52dSmrg else 1902c76ae52dSmrg # If libtool objects are unsupported, then we need to preload. 1903c76ae52dSmrg prev=dlprefiles 1904c76ae52dSmrg fi 1905c76ae52dSmrg fi 1906c76ae52dSmrg 1907c76ae52dSmrg # CHECK ME: I think I busted this. -Ossama 1908c76ae52dSmrg if test "$prev" = dlprefiles; then 1909c76ae52dSmrg # Preload the old-style object. 1910c76ae52dSmrg dlprefiles="$dlprefiles $pic_object" 1911c76ae52dSmrg prev= 1912c76ae52dSmrg fi 1913c76ae52dSmrg 1914c76ae52dSmrg # A PIC object. 1915c76ae52dSmrg libobjs="$libobjs $pic_object" 1916c76ae52dSmrg arg="$pic_object" 1917c76ae52dSmrg fi 1918c76ae52dSmrg 1919c76ae52dSmrg # Non-PIC object. 1920c76ae52dSmrg if test "$non_pic_object" != none; then 1921c76ae52dSmrg # Prepend the subdirectory the object is found in. 1922c76ae52dSmrg non_pic_object="$xdir$non_pic_object" 1923c76ae52dSmrg 1924c76ae52dSmrg # A standard non-PIC object 1925c76ae52dSmrg non_pic_objects="$non_pic_objects $non_pic_object" 1926c76ae52dSmrg if test -z "$pic_object" || test "$pic_object" = none ; then 1927c76ae52dSmrg arg="$non_pic_object" 1928c76ae52dSmrg fi 1929c76ae52dSmrg else 1930c76ae52dSmrg # If the PIC object exists, use it instead. 1931c76ae52dSmrg # $xdir was prepended to $pic_object above. 1932c76ae52dSmrg non_pic_object="$pic_object" 1933c76ae52dSmrg non_pic_objects="$non_pic_objects $non_pic_object" 1934c76ae52dSmrg fi 1935c76ae52dSmrg else 1936c76ae52dSmrg # Only an error if not doing a dry-run. 1937c76ae52dSmrg if test -z "$run"; then 1938c76ae52dSmrg $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 1939c76ae52dSmrg exit $EXIT_FAILURE 1940c76ae52dSmrg else 1941c76ae52dSmrg # Dry-run case. 1942c76ae52dSmrg 1943c76ae52dSmrg # Extract subdirectory from the argument. 1944c76ae52dSmrg xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` 1945c76ae52dSmrg if test "X$xdir" = "X$arg"; then 1946c76ae52dSmrg xdir= 1947c76ae52dSmrg else 1948c76ae52dSmrg xdir="$xdir/" 1949c76ae52dSmrg fi 1950c76ae52dSmrg 1951c76ae52dSmrg pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` 1952c76ae52dSmrg non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` 1953c76ae52dSmrg libobjs="$libobjs $pic_object" 1954c76ae52dSmrg non_pic_objects="$non_pic_objects $non_pic_object" 1955c76ae52dSmrg fi 1956c76ae52dSmrg fi 1957c76ae52dSmrg ;; 1958c76ae52dSmrg 1959c76ae52dSmrg *.$libext) 1960c76ae52dSmrg # An archive. 1961c76ae52dSmrg deplibs="$deplibs $arg" 1962c76ae52dSmrg old_deplibs="$old_deplibs $arg" 1963c76ae52dSmrg continue 1964c76ae52dSmrg ;; 1965c76ae52dSmrg 1966c76ae52dSmrg *.la) 1967c76ae52dSmrg # A libtool-controlled library. 1968c76ae52dSmrg 1969c76ae52dSmrg if test "$prev" = dlfiles; then 1970c76ae52dSmrg # This library was specified with -dlopen. 1971c76ae52dSmrg dlfiles="$dlfiles $arg" 1972c76ae52dSmrg prev= 1973c76ae52dSmrg elif test "$prev" = dlprefiles; then 1974c76ae52dSmrg # The library was specified with -dlpreopen. 1975c76ae52dSmrg dlprefiles="$dlprefiles $arg" 1976c76ae52dSmrg prev= 1977c76ae52dSmrg else 1978c76ae52dSmrg deplibs="$deplibs $arg" 1979c76ae52dSmrg fi 1980c76ae52dSmrg continue 1981c76ae52dSmrg ;; 1982c76ae52dSmrg 1983c76ae52dSmrg # Some other compiler argument. 1984c76ae52dSmrg *) 1985c76ae52dSmrg # Unknown arguments in both finalize_command and compile_command need 1986c76ae52dSmrg # to be aesthetically quoted because they are evaled later. 1987c76ae52dSmrg arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 1988c76ae52dSmrg case $arg in 1989c76ae52dSmrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 1990c76ae52dSmrg arg="\"$arg\"" 1991c76ae52dSmrg ;; 1992c76ae52dSmrg esac 1993c76ae52dSmrg ;; 1994c76ae52dSmrg esac # arg 1995c76ae52dSmrg 1996c76ae52dSmrg # Now actually substitute the argument into the commands. 1997c76ae52dSmrg if test -n "$arg"; then 1998c76ae52dSmrg compile_command="$compile_command $arg" 1999c76ae52dSmrg finalize_command="$finalize_command $arg" 2000c76ae52dSmrg fi 2001c76ae52dSmrg done # argument parsing loop 2002c76ae52dSmrg 2003c76ae52dSmrg if test -n "$prev"; then 2004c76ae52dSmrg $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 2005c76ae52dSmrg $echo "$help" 1>&2 2006c76ae52dSmrg exit $EXIT_FAILURE 2007c76ae52dSmrg fi 2008c76ae52dSmrg 2009c76ae52dSmrg if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then 2010c76ae52dSmrg eval arg=\"$export_dynamic_flag_spec\" 2011c76ae52dSmrg compile_command="$compile_command $arg" 2012c76ae52dSmrg finalize_command="$finalize_command $arg" 2013c76ae52dSmrg fi 2014c76ae52dSmrg 2015c76ae52dSmrg oldlibs= 2016c76ae52dSmrg # calculate the name of the file, without its directory 2017c76ae52dSmrg outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'` 2018c76ae52dSmrg libobjs_save="$libobjs" 2019c76ae52dSmrg 2020c76ae52dSmrg if test -n "$shlibpath_var"; then 2021c76ae52dSmrg # get the directories listed in $shlibpath_var 2022c76ae52dSmrg eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` 2023c76ae52dSmrg else 2024c76ae52dSmrg shlib_search_path= 2025c76ae52dSmrg fi 2026c76ae52dSmrg eval sys_lib_search_path=\"$sys_lib_search_path_spec\" 2027c76ae52dSmrg eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" 2028c76ae52dSmrg 2029c76ae52dSmrg output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` 2030c76ae52dSmrg if test "X$output_objdir" = "X$output"; then 2031c76ae52dSmrg output_objdir="$objdir" 2032c76ae52dSmrg else 2033c76ae52dSmrg output_objdir="$output_objdir/$objdir" 2034c76ae52dSmrg fi 2035c76ae52dSmrg # Create the object directory. 2036c76ae52dSmrg if test ! -d "$output_objdir"; then 2037c76ae52dSmrg $show "$mkdir $output_objdir" 2038c76ae52dSmrg $run $mkdir $output_objdir 2039c76ae52dSmrg exit_status=$? 2040c76ae52dSmrg if test "$exit_status" -ne 0 && test ! -d "$output_objdir"; then 2041c76ae52dSmrg exit $exit_status 2042c76ae52dSmrg fi 2043c76ae52dSmrg fi 2044c76ae52dSmrg 2045c76ae52dSmrg # Determine the type of output 2046c76ae52dSmrg case $output in 2047c76ae52dSmrg "") 2048c76ae52dSmrg $echo "$modename: you must specify an output file" 1>&2 2049c76ae52dSmrg $echo "$help" 1>&2 2050c76ae52dSmrg exit $EXIT_FAILURE 2051c76ae52dSmrg ;; 2052c76ae52dSmrg *.$libext) linkmode=oldlib ;; 2053c76ae52dSmrg *.lo | *.$objext) linkmode=obj ;; 2054c76ae52dSmrg *.la) linkmode=lib ;; 2055c76ae52dSmrg *) linkmode=prog ;; # Anything else should be a program. 2056c76ae52dSmrg esac 2057c76ae52dSmrg 2058c76ae52dSmrg case $host in 2059c76ae52dSmrg *cygwin* | *mingw* | *pw32*) 2060c76ae52dSmrg # don't eliminate duplications in $postdeps and $predeps 2061c76ae52dSmrg duplicate_compiler_generated_deps=yes 2062c76ae52dSmrg ;; 2063c76ae52dSmrg *) 2064c76ae52dSmrg duplicate_compiler_generated_deps=$duplicate_deps 2065c76ae52dSmrg ;; 2066c76ae52dSmrg esac 2067c76ae52dSmrg specialdeplibs= 2068c76ae52dSmrg 2069c76ae52dSmrg libs= 2070c76ae52dSmrg # Find all interdependent deplibs by searching for libraries 2071c76ae52dSmrg # that are linked more than once (e.g. -la -lb -la) 2072c76ae52dSmrg for deplib in $deplibs; do 2073c76ae52dSmrg if test "X$duplicate_deps" = "Xyes" ; then 2074c76ae52dSmrg case "$libs " in 2075c76ae52dSmrg *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 2076c76ae52dSmrg esac 2077c76ae52dSmrg fi 2078c76ae52dSmrg libs="$libs $deplib" 2079c76ae52dSmrg done 2080c76ae52dSmrg 2081c76ae52dSmrg if test "$linkmode" = lib; then 2082c76ae52dSmrg libs="$predeps $libs $compiler_lib_search_path $postdeps" 2083c76ae52dSmrg 2084c76ae52dSmrg # Compute libraries that are listed more than once in $predeps 2085c76ae52dSmrg # $postdeps and mark them as special (i.e., whose duplicates are 2086c76ae52dSmrg # not to be eliminated). 2087c76ae52dSmrg pre_post_deps= 2088c76ae52dSmrg if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then 2089c76ae52dSmrg for pre_post_dep in $predeps $postdeps; do 2090c76ae52dSmrg case "$pre_post_deps " in 2091c76ae52dSmrg *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; 2092c76ae52dSmrg esac 2093c76ae52dSmrg pre_post_deps="$pre_post_deps $pre_post_dep" 2094c76ae52dSmrg done 2095c76ae52dSmrg fi 2096c76ae52dSmrg pre_post_deps= 2097c76ae52dSmrg fi 2098c76ae52dSmrg 2099c76ae52dSmrg deplibs= 2100c76ae52dSmrg newdependency_libs= 2101c76ae52dSmrg newlib_search_path= 2102c76ae52dSmrg need_relink=no # whether we're linking any uninstalled libtool libraries 2103c76ae52dSmrg notinst_deplibs= # not-installed libtool libraries 2104c76ae52dSmrg case $linkmode in 2105c76ae52dSmrg lib) 2106c76ae52dSmrg passes="conv link" 2107c76ae52dSmrg for file in $dlfiles $dlprefiles; do 2108c76ae52dSmrg case $file in 2109c76ae52dSmrg *.la) ;; 2110c76ae52dSmrg *) 2111c76ae52dSmrg $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2 2112c76ae52dSmrg exit $EXIT_FAILURE 2113c76ae52dSmrg ;; 2114c76ae52dSmrg esac 2115c76ae52dSmrg done 2116c76ae52dSmrg ;; 2117c76ae52dSmrg prog) 2118c76ae52dSmrg compile_deplibs= 2119c76ae52dSmrg finalize_deplibs= 2120c76ae52dSmrg alldeplibs=no 2121c76ae52dSmrg newdlfiles= 2122c76ae52dSmrg newdlprefiles= 2123c76ae52dSmrg passes="conv scan dlopen dlpreopen link" 2124c76ae52dSmrg ;; 2125c76ae52dSmrg *) passes="conv" 2126c76ae52dSmrg ;; 2127c76ae52dSmrg esac 2128c76ae52dSmrg for pass in $passes; do 2129c76ae52dSmrg if test "$linkmode,$pass" = "lib,link" || 2130c76ae52dSmrg test "$linkmode,$pass" = "prog,scan"; then 2131c76ae52dSmrg libs="$deplibs" 2132c76ae52dSmrg deplibs= 2133c76ae52dSmrg fi 2134c76ae52dSmrg if test "$linkmode" = prog; then 2135c76ae52dSmrg case $pass in 2136c76ae52dSmrg dlopen) libs="$dlfiles" ;; 2137c76ae52dSmrg dlpreopen) libs="$dlprefiles" ;; 21380d590c07Smrg link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; 2139c76ae52dSmrg esac 2140c76ae52dSmrg fi 2141c76ae52dSmrg if test "$pass" = dlopen; then 2142c76ae52dSmrg # Collect dlpreopened libraries 2143c76ae52dSmrg save_deplibs="$deplibs" 2144c76ae52dSmrg deplibs= 2145c76ae52dSmrg fi 2146c76ae52dSmrg for deplib in $libs; do 2147c76ae52dSmrg lib= 2148c76ae52dSmrg found=no 2149c76ae52dSmrg case $deplib in 21500d590c07Smrg -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) 2151c76ae52dSmrg if test "$linkmode,$pass" = "prog,link"; then 2152c76ae52dSmrg compile_deplibs="$deplib $compile_deplibs" 2153c76ae52dSmrg finalize_deplibs="$deplib $finalize_deplibs" 2154c76ae52dSmrg else 2155c76ae52dSmrg compiler_flags="$compiler_flags $deplib" 2156c76ae52dSmrg fi 2157c76ae52dSmrg continue 2158c76ae52dSmrg ;; 2159c76ae52dSmrg -l*) 2160c76ae52dSmrg if test "$linkmode" != lib && test "$linkmode" != prog; then 2161c76ae52dSmrg $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2 2162c76ae52dSmrg continue 2163c76ae52dSmrg fi 2164c76ae52dSmrg name=`$echo "X$deplib" | $Xsed -e 's/^-l//'` 21650d590c07Smrg if test "$linkmode" = lib; then 21660d590c07Smrg searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" 21670d590c07Smrg else 21680d590c07Smrg searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" 21690d590c07Smrg fi 21700d590c07Smrg for searchdir in $searchdirs; do 2171c76ae52dSmrg for search_ext in .la $std_shrext .so .a; do 2172c76ae52dSmrg # Search the libtool library 2173c76ae52dSmrg lib="$searchdir/lib${name}${search_ext}" 2174c76ae52dSmrg if test -f "$lib"; then 2175c76ae52dSmrg if test "$search_ext" = ".la"; then 2176c76ae52dSmrg found=yes 2177c76ae52dSmrg else 2178c76ae52dSmrg found=no 2179c76ae52dSmrg fi 2180c76ae52dSmrg break 2 2181c76ae52dSmrg fi 2182c76ae52dSmrg done 2183c76ae52dSmrg done 2184c76ae52dSmrg if test "$found" != yes; then 2185c76ae52dSmrg # deplib doesn't seem to be a libtool library 2186c76ae52dSmrg if test "$linkmode,$pass" = "prog,link"; then 2187c76ae52dSmrg compile_deplibs="$deplib $compile_deplibs" 2188c76ae52dSmrg finalize_deplibs="$deplib $finalize_deplibs" 2189c76ae52dSmrg else 2190c76ae52dSmrg deplibs="$deplib $deplibs" 2191c76ae52dSmrg test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 2192c76ae52dSmrg fi 2193c76ae52dSmrg continue 2194c76ae52dSmrg else # deplib is a libtool library 2195c76ae52dSmrg # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, 2196c76ae52dSmrg # We need to do some special things here, and not later. 2197c76ae52dSmrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 2198c76ae52dSmrg case " $predeps $postdeps " in 2199c76ae52dSmrg *" $deplib "*) 2200c76ae52dSmrg if (${SED} -e '2q' $lib | 2201c76ae52dSmrg grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 2202c76ae52dSmrg library_names= 2203c76ae52dSmrg old_library= 2204c76ae52dSmrg case $lib in 2205c76ae52dSmrg */* | *\\*) . $lib ;; 2206c76ae52dSmrg *) . ./$lib ;; 2207c76ae52dSmrg esac 2208c76ae52dSmrg for l in $old_library $library_names; do 2209c76ae52dSmrg ll="$l" 2210c76ae52dSmrg done 2211c76ae52dSmrg if test "X$ll" = "X$old_library" ; then # only static version available 2212c76ae52dSmrg found=no 2213c76ae52dSmrg ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` 2214c76ae52dSmrg test "X$ladir" = "X$lib" && ladir="." 2215c76ae52dSmrg lib=$ladir/$old_library 2216c76ae52dSmrg if test "$linkmode,$pass" = "prog,link"; then 2217c76ae52dSmrg compile_deplibs="$deplib $compile_deplibs" 2218c76ae52dSmrg finalize_deplibs="$deplib $finalize_deplibs" 2219c76ae52dSmrg else 2220c76ae52dSmrg deplibs="$deplib $deplibs" 2221c76ae52dSmrg test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 2222c76ae52dSmrg fi 2223c76ae52dSmrg continue 2224c76ae52dSmrg fi 2225c76ae52dSmrg fi 2226c76ae52dSmrg ;; 2227c76ae52dSmrg *) ;; 2228c76ae52dSmrg esac 2229c76ae52dSmrg fi 2230c76ae52dSmrg fi 2231c76ae52dSmrg ;; # -l 2232c76ae52dSmrg -L*) 2233c76ae52dSmrg case $linkmode in 2234c76ae52dSmrg lib) 2235c76ae52dSmrg deplibs="$deplib $deplibs" 2236c76ae52dSmrg test "$pass" = conv && continue 2237c76ae52dSmrg newdependency_libs="$deplib $newdependency_libs" 2238c76ae52dSmrg newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` 2239c76ae52dSmrg ;; 2240c76ae52dSmrg prog) 2241c76ae52dSmrg if test "$pass" = conv; then 2242c76ae52dSmrg deplibs="$deplib $deplibs" 2243c76ae52dSmrg continue 2244c76ae52dSmrg fi 2245c76ae52dSmrg if test "$pass" = scan; then 2246c76ae52dSmrg deplibs="$deplib $deplibs" 2247c76ae52dSmrg else 2248c76ae52dSmrg compile_deplibs="$deplib $compile_deplibs" 2249c76ae52dSmrg finalize_deplibs="$deplib $finalize_deplibs" 2250c76ae52dSmrg fi 2251c76ae52dSmrg newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` 2252c76ae52dSmrg ;; 2253c76ae52dSmrg *) 2254c76ae52dSmrg $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2 2255c76ae52dSmrg ;; 2256c76ae52dSmrg esac # linkmode 2257c76ae52dSmrg continue 2258c76ae52dSmrg ;; # -L 2259c76ae52dSmrg -R*) 2260c76ae52dSmrg if test "$pass" = link; then 2261c76ae52dSmrg dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'` 2262c76ae52dSmrg # Make sure the xrpath contains only unique directories. 2263c76ae52dSmrg case "$xrpath " in 2264c76ae52dSmrg *" $dir "*) ;; 2265c76ae52dSmrg *) xrpath="$xrpath $dir" ;; 2266c76ae52dSmrg esac 2267c76ae52dSmrg fi 2268c76ae52dSmrg deplibs="$deplib $deplibs" 2269c76ae52dSmrg continue 2270c76ae52dSmrg ;; 2271c76ae52dSmrg *.la) lib="$deplib" ;; 2272c76ae52dSmrg *.$libext) 2273c76ae52dSmrg if test "$pass" = conv; then 2274c76ae52dSmrg deplibs="$deplib $deplibs" 2275c76ae52dSmrg continue 2276c76ae52dSmrg fi 2277c76ae52dSmrg case $linkmode in 2278c76ae52dSmrg lib) 2279c76ae52dSmrg valid_a_lib=no 2280c76ae52dSmrg case $deplibs_check_method in 2281c76ae52dSmrg match_pattern*) 2282c76ae52dSmrg set dummy $deplibs_check_method 2283c76ae52dSmrg match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` 2284c76ae52dSmrg if eval $echo \"$deplib\" 2>/dev/null \ 2285c76ae52dSmrg | $SED 10q \ 2286c76ae52dSmrg | $EGREP "$match_pattern_regex" > /dev/null; then 2287c76ae52dSmrg valid_a_lib=yes 2288c76ae52dSmrg fi 2289c76ae52dSmrg ;; 2290c76ae52dSmrg pass_all) 2291c76ae52dSmrg valid_a_lib=yes 2292c76ae52dSmrg ;; 2293c76ae52dSmrg esac 2294c76ae52dSmrg if test "$valid_a_lib" != yes; then 2295c76ae52dSmrg $echo 2296c76ae52dSmrg $echo "*** Warning: Trying to link with static lib archive $deplib." 2297c76ae52dSmrg $echo "*** I have the capability to make that library automatically link in when" 2298c76ae52dSmrg $echo "*** you link to this library. But I can only do this if you have a" 2299c76ae52dSmrg $echo "*** shared version of the library, which you do not appear to have" 2300c76ae52dSmrg $echo "*** because the file extensions .$libext of this argument makes me believe" 2301c76ae52dSmrg $echo "*** that it is just a static archive that I should not used here." 2302c76ae52dSmrg else 2303c76ae52dSmrg $echo 2304c76ae52dSmrg $echo "*** Warning: Linking the shared library $output against the" 2305c76ae52dSmrg $echo "*** static library $deplib is not portable!" 2306c76ae52dSmrg deplibs="$deplib $deplibs" 2307c76ae52dSmrg fi 2308c76ae52dSmrg continue 2309c76ae52dSmrg ;; 2310c76ae52dSmrg prog) 2311c76ae52dSmrg if test "$pass" != link; then 2312c76ae52dSmrg deplibs="$deplib $deplibs" 2313c76ae52dSmrg else 2314c76ae52dSmrg compile_deplibs="$deplib $compile_deplibs" 2315c76ae52dSmrg finalize_deplibs="$deplib $finalize_deplibs" 2316c76ae52dSmrg fi 2317c76ae52dSmrg continue 2318c76ae52dSmrg ;; 2319c76ae52dSmrg esac # linkmode 2320c76ae52dSmrg ;; # *.$libext 2321c76ae52dSmrg *.lo | *.$objext) 2322c76ae52dSmrg if test "$pass" = conv; then 2323c76ae52dSmrg deplibs="$deplib $deplibs" 2324c76ae52dSmrg elif test "$linkmode" = prog; then 2325c76ae52dSmrg if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then 2326c76ae52dSmrg # If there is no dlopen support or we're linking statically, 2327c76ae52dSmrg # we need to preload. 2328c76ae52dSmrg newdlprefiles="$newdlprefiles $deplib" 2329c76ae52dSmrg compile_deplibs="$deplib $compile_deplibs" 2330c76ae52dSmrg finalize_deplibs="$deplib $finalize_deplibs" 2331c76ae52dSmrg else 2332c76ae52dSmrg newdlfiles="$newdlfiles $deplib" 2333c76ae52dSmrg fi 2334c76ae52dSmrg fi 2335c76ae52dSmrg continue 2336c76ae52dSmrg ;; 2337c76ae52dSmrg %DEPLIBS%) 2338c76ae52dSmrg alldeplibs=yes 2339c76ae52dSmrg continue 2340c76ae52dSmrg ;; 2341c76ae52dSmrg esac # case $deplib 2342c76ae52dSmrg if test "$found" = yes || test -f "$lib"; then : 2343c76ae52dSmrg else 2344c76ae52dSmrg $echo "$modename: cannot find the library \`$lib' or unhandled argument \`$deplib'" 1>&2 2345c76ae52dSmrg exit $EXIT_FAILURE 2346c76ae52dSmrg fi 2347c76ae52dSmrg 2348c76ae52dSmrg # Check to see that this really is a libtool archive. 2349c76ae52dSmrg if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : 2350c76ae52dSmrg else 2351c76ae52dSmrg $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 2352c76ae52dSmrg exit $EXIT_FAILURE 2353c76ae52dSmrg fi 2354c76ae52dSmrg 2355c76ae52dSmrg ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` 2356c76ae52dSmrg test "X$ladir" = "X$lib" && ladir="." 2357c76ae52dSmrg 2358c76ae52dSmrg dlname= 2359c76ae52dSmrg dlopen= 2360c76ae52dSmrg dlpreopen= 2361c76ae52dSmrg libdir= 2362c76ae52dSmrg library_names= 2363c76ae52dSmrg old_library= 2364c76ae52dSmrg # If the library was installed with an old release of libtool, 2365c76ae52dSmrg # it will not redefine variables installed, or shouldnotlink 2366c76ae52dSmrg installed=yes 2367c76ae52dSmrg shouldnotlink=no 2368c76ae52dSmrg avoidtemprpath= 2369c76ae52dSmrg 2370c76ae52dSmrg 2371c76ae52dSmrg # Read the .la file 2372c76ae52dSmrg case $lib in 2373c76ae52dSmrg */* | *\\*) . $lib ;; 2374c76ae52dSmrg *) . ./$lib ;; 2375c76ae52dSmrg esac 2376c76ae52dSmrg 2377c76ae52dSmrg if test "$linkmode,$pass" = "lib,link" || 2378c76ae52dSmrg test "$linkmode,$pass" = "prog,scan" || 2379c76ae52dSmrg { test "$linkmode" != prog && test "$linkmode" != lib; }; then 2380c76ae52dSmrg test -n "$dlopen" && dlfiles="$dlfiles $dlopen" 2381c76ae52dSmrg test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" 2382c76ae52dSmrg fi 2383c76ae52dSmrg 2384c76ae52dSmrg if test "$pass" = conv; then 2385c76ae52dSmrg # Only check for convenience libraries 2386c76ae52dSmrg deplibs="$lib $deplibs" 2387c76ae52dSmrg if test -z "$libdir"; then 2388c76ae52dSmrg if test -z "$old_library"; then 2389c76ae52dSmrg $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 2390c76ae52dSmrg exit $EXIT_FAILURE 2391c76ae52dSmrg fi 2392c76ae52dSmrg # It is a libtool convenience library, so add in its objects. 2393c76ae52dSmrg convenience="$convenience $ladir/$objdir/$old_library" 2394c76ae52dSmrg old_convenience="$old_convenience $ladir/$objdir/$old_library" 2395c76ae52dSmrg tmp_libs= 2396c76ae52dSmrg for deplib in $dependency_libs; do 2397c76ae52dSmrg deplibs="$deplib $deplibs" 2398c76ae52dSmrg if test "X$duplicate_deps" = "Xyes" ; then 2399c76ae52dSmrg case "$tmp_libs " in 2400c76ae52dSmrg *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 2401c76ae52dSmrg esac 2402c76ae52dSmrg fi 2403c76ae52dSmrg tmp_libs="$tmp_libs $deplib" 2404c76ae52dSmrg done 2405c76ae52dSmrg elif test "$linkmode" != prog && test "$linkmode" != lib; then 2406c76ae52dSmrg $echo "$modename: \`$lib' is not a convenience library" 1>&2 2407c76ae52dSmrg exit $EXIT_FAILURE 2408c76ae52dSmrg fi 2409c76ae52dSmrg continue 2410c76ae52dSmrg fi # $pass = conv 2411c76ae52dSmrg 2412c76ae52dSmrg 2413c76ae52dSmrg # Get the name of the library we link against. 2414c76ae52dSmrg linklib= 2415c76ae52dSmrg for l in $old_library $library_names; do 2416c76ae52dSmrg linklib="$l" 2417c76ae52dSmrg done 2418c76ae52dSmrg if test -z "$linklib"; then 2419c76ae52dSmrg $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 2420c76ae52dSmrg exit $EXIT_FAILURE 2421c76ae52dSmrg fi 2422c76ae52dSmrg 2423c76ae52dSmrg # This library was specified with -dlopen. 2424c76ae52dSmrg if test "$pass" = dlopen; then 2425c76ae52dSmrg if test -z "$libdir"; then 2426c76ae52dSmrg $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2 2427c76ae52dSmrg exit $EXIT_FAILURE 2428c76ae52dSmrg fi 2429c76ae52dSmrg if test -z "$dlname" || 2430c76ae52dSmrg test "$dlopen_support" != yes || 2431c76ae52dSmrg test "$build_libtool_libs" = no; then 2432c76ae52dSmrg # If there is no dlname, no dlopen support or we're linking 2433c76ae52dSmrg # statically, we need to preload. We also need to preload any 2434c76ae52dSmrg # dependent libraries so libltdl's deplib preloader doesn't 2435c76ae52dSmrg # bomb out in the load deplibs phase. 2436c76ae52dSmrg dlprefiles="$dlprefiles $lib $dependency_libs" 2437c76ae52dSmrg else 2438c76ae52dSmrg newdlfiles="$newdlfiles $lib" 2439c76ae52dSmrg fi 2440c76ae52dSmrg continue 2441c76ae52dSmrg fi # $pass = dlopen 2442c76ae52dSmrg 2443c76ae52dSmrg # We need an absolute path. 2444c76ae52dSmrg case $ladir in 2445c76ae52dSmrg [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; 2446c76ae52dSmrg *) 2447c76ae52dSmrg abs_ladir=`cd "$ladir" && pwd` 2448c76ae52dSmrg if test -z "$abs_ladir"; then 2449c76ae52dSmrg $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2 2450c76ae52dSmrg $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 2451c76ae52dSmrg abs_ladir="$ladir" 2452c76ae52dSmrg fi 2453c76ae52dSmrg ;; 2454c76ae52dSmrg esac 2455c76ae52dSmrg laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` 2456c76ae52dSmrg 2457c76ae52dSmrg # Find the relevant object directory and library name. 2458c76ae52dSmrg if test "X$installed" = Xyes; then 2459c76ae52dSmrg if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then 2460c76ae52dSmrg $echo "$modename: warning: library \`$lib' was moved." 1>&2 2461c76ae52dSmrg dir="$ladir" 2462c76ae52dSmrg absdir="$abs_ladir" 2463c76ae52dSmrg libdir="$abs_ladir" 2464c76ae52dSmrg else 2465c76ae52dSmrg dir="$libdir" 2466c76ae52dSmrg absdir="$libdir" 2467c76ae52dSmrg fi 2468c76ae52dSmrg test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes 2469c76ae52dSmrg else 2470c76ae52dSmrg if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then 2471c76ae52dSmrg dir="$ladir" 2472c76ae52dSmrg absdir="$abs_ladir" 2473c76ae52dSmrg # Remove this search path later 2474c76ae52dSmrg notinst_path="$notinst_path $abs_ladir" 2475c76ae52dSmrg else 2476c76ae52dSmrg dir="$ladir/$objdir" 2477c76ae52dSmrg absdir="$abs_ladir/$objdir" 2478c76ae52dSmrg # Remove this search path later 2479c76ae52dSmrg notinst_path="$notinst_path $abs_ladir" 2480c76ae52dSmrg fi 2481c76ae52dSmrg fi # $installed = yes 2482c76ae52dSmrg name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` 2483c76ae52dSmrg 2484c76ae52dSmrg # This library was specified with -dlpreopen. 2485c76ae52dSmrg if test "$pass" = dlpreopen; then 2486c76ae52dSmrg if test -z "$libdir"; then 2487c76ae52dSmrg $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2 2488c76ae52dSmrg exit $EXIT_FAILURE 2489c76ae52dSmrg fi 2490c76ae52dSmrg # Prefer using a static library (so that no silly _DYNAMIC symbols 2491c76ae52dSmrg # are required to link). 2492c76ae52dSmrg if test -n "$old_library"; then 2493c76ae52dSmrg newdlprefiles="$newdlprefiles $dir/$old_library" 2494c76ae52dSmrg # Otherwise, use the dlname, so that lt_dlopen finds it. 2495c76ae52dSmrg elif test -n "$dlname"; then 2496c76ae52dSmrg newdlprefiles="$newdlprefiles $dir/$dlname" 2497c76ae52dSmrg else 2498c76ae52dSmrg newdlprefiles="$newdlprefiles $dir/$linklib" 2499c76ae52dSmrg fi 2500c76ae52dSmrg fi # $pass = dlpreopen 2501c76ae52dSmrg 2502c76ae52dSmrg if test -z "$libdir"; then 2503c76ae52dSmrg # Link the convenience library 2504c76ae52dSmrg if test "$linkmode" = lib; then 2505c76ae52dSmrg deplibs="$dir/$old_library $deplibs" 2506c76ae52dSmrg elif test "$linkmode,$pass" = "prog,link"; then 2507c76ae52dSmrg compile_deplibs="$dir/$old_library $compile_deplibs" 2508c76ae52dSmrg finalize_deplibs="$dir/$old_library $finalize_deplibs" 2509c76ae52dSmrg else 2510c76ae52dSmrg deplibs="$lib $deplibs" # used for prog,scan pass 2511c76ae52dSmrg fi 2512c76ae52dSmrg continue 2513c76ae52dSmrg fi 2514c76ae52dSmrg 2515c76ae52dSmrg 2516c76ae52dSmrg if test "$linkmode" = prog && test "$pass" != link; then 2517c76ae52dSmrg newlib_search_path="$newlib_search_path $ladir" 2518c76ae52dSmrg deplibs="$lib $deplibs" 2519c76ae52dSmrg 2520c76ae52dSmrg linkalldeplibs=no 2521c76ae52dSmrg if test "$link_all_deplibs" != no || test -z "$library_names" || 2522c76ae52dSmrg test "$build_libtool_libs" = no; then 2523c76ae52dSmrg linkalldeplibs=yes 2524c76ae52dSmrg fi 2525c76ae52dSmrg 2526c76ae52dSmrg tmp_libs= 2527c76ae52dSmrg for deplib in $dependency_libs; do 2528c76ae52dSmrg case $deplib in 2529c76ae52dSmrg -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test 2530c76ae52dSmrg esac 2531c76ae52dSmrg # Need to link against all dependency_libs? 2532c76ae52dSmrg if test "$linkalldeplibs" = yes; then 2533c76ae52dSmrg deplibs="$deplib $deplibs" 2534c76ae52dSmrg else 2535c76ae52dSmrg # Need to hardcode shared library paths 2536c76ae52dSmrg # or/and link against static libraries 2537c76ae52dSmrg newdependency_libs="$deplib $newdependency_libs" 2538c76ae52dSmrg fi 2539c76ae52dSmrg if test "X$duplicate_deps" = "Xyes" ; then 2540c76ae52dSmrg case "$tmp_libs " in 2541c76ae52dSmrg *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 2542c76ae52dSmrg esac 2543c76ae52dSmrg fi 2544c76ae52dSmrg tmp_libs="$tmp_libs $deplib" 2545c76ae52dSmrg done # for deplib 2546c76ae52dSmrg continue 2547c76ae52dSmrg fi # $linkmode = prog... 2548c76ae52dSmrg 2549c76ae52dSmrg if test "$linkmode,$pass" = "prog,link"; then 2550c76ae52dSmrg if test -n "$library_names" && 25510d590c07Smrg { { test "$prefer_static_libs" = no || 25520d590c07Smrg test "$prefer_static_libs,$installed" = "built,yes"; } || 25530d590c07Smrg test -z "$old_library"; }; then 2554c76ae52dSmrg # We need to hardcode the library path 2555c76ae52dSmrg if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then 2556c76ae52dSmrg # Make sure the rpath contains only unique directories. 2557c76ae52dSmrg case "$temp_rpath " in 2558c76ae52dSmrg *" $dir "*) ;; 2559c76ae52dSmrg *" $absdir "*) ;; 2560c76ae52dSmrg *) temp_rpath="$temp_rpath $absdir" ;; 2561c76ae52dSmrg esac 2562c76ae52dSmrg fi 2563c76ae52dSmrg 2564c76ae52dSmrg # Hardcode the library path. 2565c76ae52dSmrg # Skip directories that are in the system default run-time 2566c76ae52dSmrg # search path. 2567c76ae52dSmrg case " $sys_lib_dlsearch_path " in 2568c76ae52dSmrg *" $absdir "*) ;; 2569c76ae52dSmrg *) 2570c76ae52dSmrg case "$compile_rpath " in 2571c76ae52dSmrg *" $absdir "*) ;; 2572c76ae52dSmrg *) compile_rpath="$compile_rpath $absdir" 2573c76ae52dSmrg esac 2574c76ae52dSmrg ;; 2575c76ae52dSmrg esac 2576c76ae52dSmrg case " $sys_lib_dlsearch_path " in 2577c76ae52dSmrg *" $libdir "*) ;; 2578c76ae52dSmrg *) 2579c76ae52dSmrg case "$finalize_rpath " in 2580c76ae52dSmrg *" $libdir "*) ;; 2581c76ae52dSmrg *) finalize_rpath="$finalize_rpath $libdir" 2582c76ae52dSmrg esac 2583c76ae52dSmrg ;; 2584c76ae52dSmrg esac 2585c76ae52dSmrg fi # $linkmode,$pass = prog,link... 2586c76ae52dSmrg 2587c76ae52dSmrg if test "$alldeplibs" = yes && 2588c76ae52dSmrg { test "$deplibs_check_method" = pass_all || 2589c76ae52dSmrg { test "$build_libtool_libs" = yes && 2590c76ae52dSmrg test -n "$library_names"; }; }; then 2591c76ae52dSmrg # We only need to search for static libraries 2592c76ae52dSmrg continue 2593c76ae52dSmrg fi 2594c76ae52dSmrg fi 2595c76ae52dSmrg 2596c76ae52dSmrg link_static=no # Whether the deplib will be linked statically 2597c76ae52dSmrg use_static_libs=$prefer_static_libs 2598c76ae52dSmrg if test "$use_static_libs" = built && test "$installed" = yes ; then 2599c76ae52dSmrg use_static_libs=no 2600c76ae52dSmrg fi 2601c76ae52dSmrg if test -n "$library_names" && 2602c76ae52dSmrg { test "$use_static_libs" = no || test -z "$old_library"; }; then 2603c76ae52dSmrg if test "$installed" = no; then 2604c76ae52dSmrg notinst_deplibs="$notinst_deplibs $lib" 2605c76ae52dSmrg need_relink=yes 2606c76ae52dSmrg fi 2607c76ae52dSmrg # This is a shared library 2608c76ae52dSmrg 2609c76ae52dSmrg # Warn about portability, can't link against -module's on 2610c76ae52dSmrg # some systems (darwin) 2611c76ae52dSmrg if test "$shouldnotlink" = yes && test "$pass" = link ; then 2612c76ae52dSmrg $echo 2613c76ae52dSmrg if test "$linkmode" = prog; then 2614c76ae52dSmrg $echo "*** Warning: Linking the executable $output against the loadable module" 2615c76ae52dSmrg else 2616c76ae52dSmrg $echo "*** Warning: Linking the shared library $output against the loadable module" 2617c76ae52dSmrg fi 2618c76ae52dSmrg $echo "*** $linklib is not portable!" 2619c76ae52dSmrg fi 2620c76ae52dSmrg if test "$linkmode" = lib && 2621c76ae52dSmrg test "$hardcode_into_libs" = yes; then 2622c76ae52dSmrg # Hardcode the library path. 2623c76ae52dSmrg # Skip directories that are in the system default run-time 2624c76ae52dSmrg # search path. 2625c76ae52dSmrg case " $sys_lib_dlsearch_path " in 2626c76ae52dSmrg *" $absdir "*) ;; 2627c76ae52dSmrg *) 2628c76ae52dSmrg case "$compile_rpath " in 2629c76ae52dSmrg *" $absdir "*) ;; 2630c76ae52dSmrg *) compile_rpath="$compile_rpath $absdir" 2631c76ae52dSmrg esac 2632c76ae52dSmrg ;; 2633c76ae52dSmrg esac 2634c76ae52dSmrg case " $sys_lib_dlsearch_path " in 2635c76ae52dSmrg *" $libdir "*) ;; 2636c76ae52dSmrg *) 2637c76ae52dSmrg case "$finalize_rpath " in 2638c76ae52dSmrg *" $libdir "*) ;; 2639c76ae52dSmrg *) finalize_rpath="$finalize_rpath $libdir" 2640c76ae52dSmrg esac 2641c76ae52dSmrg ;; 2642c76ae52dSmrg esac 2643c76ae52dSmrg fi 2644c76ae52dSmrg 2645c76ae52dSmrg if test -n "$old_archive_from_expsyms_cmds"; then 2646c76ae52dSmrg # figure out the soname 2647c76ae52dSmrg set dummy $library_names 2648c76ae52dSmrg realname="$2" 2649c76ae52dSmrg shift; shift 2650c76ae52dSmrg libname=`eval \\$echo \"$libname_spec\"` 2651c76ae52dSmrg # use dlname if we got it. it's perfectly good, no? 2652c76ae52dSmrg if test -n "$dlname"; then 2653c76ae52dSmrg soname="$dlname" 2654c76ae52dSmrg elif test -n "$soname_spec"; then 2655c76ae52dSmrg # bleh windows 2656c76ae52dSmrg case $host in 2657c76ae52dSmrg *cygwin* | mingw*) 2658c76ae52dSmrg major=`expr $current - $age` 2659c76ae52dSmrg versuffix="-$major" 2660c76ae52dSmrg ;; 2661c76ae52dSmrg esac 2662c76ae52dSmrg eval soname=\"$soname_spec\" 2663c76ae52dSmrg else 2664c76ae52dSmrg soname="$realname" 2665c76ae52dSmrg fi 2666c76ae52dSmrg 2667c76ae52dSmrg # Make a new name for the extract_expsyms_cmds to use 2668c76ae52dSmrg soroot="$soname" 2669c76ae52dSmrg soname=`$echo $soroot | ${SED} -e 's/^.*\///'` 2670c76ae52dSmrg newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a" 2671c76ae52dSmrg 2672c76ae52dSmrg # If the library has no export list, then create one now 2673c76ae52dSmrg if test -f "$output_objdir/$soname-def"; then : 2674c76ae52dSmrg else 2675c76ae52dSmrg $show "extracting exported symbol list from \`$soname'" 2676c76ae52dSmrg save_ifs="$IFS"; IFS='~' 2677c76ae52dSmrg cmds=$extract_expsyms_cmds 2678c76ae52dSmrg for cmd in $cmds; do 2679c76ae52dSmrg IFS="$save_ifs" 2680c76ae52dSmrg eval cmd=\"$cmd\" 2681c76ae52dSmrg $show "$cmd" 2682c76ae52dSmrg $run eval "$cmd" || exit $? 2683c76ae52dSmrg done 2684c76ae52dSmrg IFS="$save_ifs" 2685c76ae52dSmrg fi 2686c76ae52dSmrg 2687c76ae52dSmrg # Create $newlib 2688c76ae52dSmrg if test -f "$output_objdir/$newlib"; then :; else 2689c76ae52dSmrg $show "generating import library for \`$soname'" 2690c76ae52dSmrg save_ifs="$IFS"; IFS='~' 2691c76ae52dSmrg cmds=$old_archive_from_expsyms_cmds 2692c76ae52dSmrg for cmd in $cmds; do 2693c76ae52dSmrg IFS="$save_ifs" 2694c76ae52dSmrg eval cmd=\"$cmd\" 2695c76ae52dSmrg $show "$cmd" 2696c76ae52dSmrg $run eval "$cmd" || exit $? 2697c76ae52dSmrg done 2698c76ae52dSmrg IFS="$save_ifs" 2699c76ae52dSmrg fi 2700c76ae52dSmrg # make sure the library variables are pointing to the new library 2701c76ae52dSmrg dir=$output_objdir 2702c76ae52dSmrg linklib=$newlib 2703c76ae52dSmrg fi # test -n "$old_archive_from_expsyms_cmds" 2704c76ae52dSmrg 2705c76ae52dSmrg if test "$linkmode" = prog || test "$mode" != relink; then 2706c76ae52dSmrg add_shlibpath= 2707c76ae52dSmrg add_dir= 2708c76ae52dSmrg add= 2709c76ae52dSmrg lib_linked=yes 2710c76ae52dSmrg case $hardcode_action in 2711c76ae52dSmrg immediate | unsupported) 2712c76ae52dSmrg if test "$hardcode_direct" = no; then 2713c76ae52dSmrg add="$dir/$linklib" 2714c76ae52dSmrg case $host in 2715c76ae52dSmrg *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; 2716c76ae52dSmrg *-*-sysv4*uw2*) add_dir="-L$dir" ;; 2717c76ae52dSmrg *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ 2718c76ae52dSmrg *-*-unixware7*) add_dir="-L$dir" ;; 2719c76ae52dSmrg *-*-darwin* ) 2720c76ae52dSmrg # if the lib is a module then we can not link against 2721c76ae52dSmrg # it, someone is ignoring the new warnings I added 2722c76ae52dSmrg if /usr/bin/file -L $add 2> /dev/null | 2723c76ae52dSmrg $EGREP ": [^:]* bundle" >/dev/null ; then 2724c76ae52dSmrg $echo "** Warning, lib $linklib is a module, not a shared library" 2725c76ae52dSmrg if test -z "$old_library" ; then 2726c76ae52dSmrg $echo 2727c76ae52dSmrg $echo "** And there doesn't seem to be a static archive available" 2728c76ae52dSmrg $echo "** The link will probably fail, sorry" 2729c76ae52dSmrg else 2730c76ae52dSmrg add="$dir/$old_library" 2731c76ae52dSmrg fi 2732c76ae52dSmrg fi 2733c76ae52dSmrg esac 2734c76ae52dSmrg elif test "$hardcode_minus_L" = no; then 2735c76ae52dSmrg case $host in 2736c76ae52dSmrg *-*-sunos*) add_shlibpath="$dir" ;; 2737c76ae52dSmrg esac 2738c76ae52dSmrg add_dir="-L$dir" 2739c76ae52dSmrg add="-l$name" 2740c76ae52dSmrg elif test "$hardcode_shlibpath_var" = no; then 2741c76ae52dSmrg add_shlibpath="$dir" 2742c76ae52dSmrg add="-l$name" 2743c76ae52dSmrg else 2744c76ae52dSmrg lib_linked=no 2745c76ae52dSmrg fi 2746c76ae52dSmrg ;; 2747c76ae52dSmrg relink) 2748c76ae52dSmrg if test "$hardcode_direct" = yes; then 2749c76ae52dSmrg add="$dir/$linklib" 2750c76ae52dSmrg elif test "$hardcode_minus_L" = yes; then 2751c76ae52dSmrg add_dir="-L$dir" 2752c76ae52dSmrg # Try looking first in the location we're being installed to. 2753c76ae52dSmrg if test -n "$inst_prefix_dir"; then 2754c76ae52dSmrg case $libdir in 2755c76ae52dSmrg [\\/]*) 2756c76ae52dSmrg add_dir="$add_dir -L$inst_prefix_dir$libdir" 2757c76ae52dSmrg ;; 2758c76ae52dSmrg esac 2759c76ae52dSmrg fi 2760c76ae52dSmrg add="-l$name" 2761c76ae52dSmrg elif test "$hardcode_shlibpath_var" = yes; then 2762c76ae52dSmrg add_shlibpath="$dir" 2763c76ae52dSmrg add="-l$name" 2764c76ae52dSmrg else 2765c76ae52dSmrg lib_linked=no 2766c76ae52dSmrg fi 2767c76ae52dSmrg ;; 2768c76ae52dSmrg *) lib_linked=no ;; 2769c76ae52dSmrg esac 2770c76ae52dSmrg 2771c76ae52dSmrg if test "$lib_linked" != yes; then 2772c76ae52dSmrg $echo "$modename: configuration error: unsupported hardcode properties" 2773c76ae52dSmrg exit $EXIT_FAILURE 2774c76ae52dSmrg fi 2775c76ae52dSmrg 2776c76ae52dSmrg if test -n "$add_shlibpath"; then 2777c76ae52dSmrg case :$compile_shlibpath: in 2778c76ae52dSmrg *":$add_shlibpath:"*) ;; 2779c76ae52dSmrg *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; 2780c76ae52dSmrg esac 2781c76ae52dSmrg fi 2782c76ae52dSmrg if test "$linkmode" = prog; then 2783c76ae52dSmrg test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" 2784c76ae52dSmrg test -n "$add" && compile_deplibs="$add $compile_deplibs" 2785c76ae52dSmrg else 2786c76ae52dSmrg test -n "$add_dir" && deplibs="$add_dir $deplibs" 2787c76ae52dSmrg test -n "$add" && deplibs="$add $deplibs" 2788c76ae52dSmrg if test "$hardcode_direct" != yes && \ 2789c76ae52dSmrg test "$hardcode_minus_L" != yes && \ 2790c76ae52dSmrg test "$hardcode_shlibpath_var" = yes; then 2791c76ae52dSmrg case :$finalize_shlibpath: in 2792c76ae52dSmrg *":$libdir:"*) ;; 2793c76ae52dSmrg *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; 2794c76ae52dSmrg esac 2795c76ae52dSmrg fi 2796c76ae52dSmrg fi 2797c76ae52dSmrg fi 2798c76ae52dSmrg 2799c76ae52dSmrg if test "$linkmode" = prog || test "$mode" = relink; then 2800c76ae52dSmrg add_shlibpath= 2801c76ae52dSmrg add_dir= 2802c76ae52dSmrg add= 2803c76ae52dSmrg # Finalize command for both is simple: just hardcode it. 2804c76ae52dSmrg if test "$hardcode_direct" = yes; then 2805c76ae52dSmrg add="$libdir/$linklib" 2806c76ae52dSmrg elif test "$hardcode_minus_L" = yes; then 2807c76ae52dSmrg add_dir="-L$libdir" 2808c76ae52dSmrg add="-l$name" 2809c76ae52dSmrg elif test "$hardcode_shlibpath_var" = yes; then 2810c76ae52dSmrg case :$finalize_shlibpath: in 2811c76ae52dSmrg *":$libdir:"*) ;; 2812c76ae52dSmrg *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; 2813c76ae52dSmrg esac 2814c76ae52dSmrg add="-l$name" 2815c76ae52dSmrg elif test "$hardcode_automatic" = yes; then 2816c76ae52dSmrg if test -n "$inst_prefix_dir" && 2817c76ae52dSmrg test -f "$inst_prefix_dir$libdir/$linklib" ; then 2818c76ae52dSmrg add="$inst_prefix_dir$libdir/$linklib" 2819c76ae52dSmrg else 2820c76ae52dSmrg add="$libdir/$linklib" 2821c76ae52dSmrg fi 2822c76ae52dSmrg else 2823c76ae52dSmrg # We cannot seem to hardcode it, guess we'll fake it. 2824c76ae52dSmrg add_dir="-L$libdir" 2825c76ae52dSmrg # Try looking first in the location we're being installed to. 2826c76ae52dSmrg if test -n "$inst_prefix_dir"; then 2827c76ae52dSmrg case $libdir in 2828c76ae52dSmrg [\\/]*) 2829c76ae52dSmrg add_dir="$add_dir -L$inst_prefix_dir$libdir" 2830c76ae52dSmrg ;; 2831c76ae52dSmrg esac 2832c76ae52dSmrg fi 2833c76ae52dSmrg add="-l$name" 2834c76ae52dSmrg fi 2835c76ae52dSmrg 2836c76ae52dSmrg if test "$linkmode" = prog; then 2837c76ae52dSmrg test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" 2838c76ae52dSmrg test -n "$add" && finalize_deplibs="$add $finalize_deplibs" 2839c76ae52dSmrg else 2840c76ae52dSmrg test -n "$add_dir" && deplibs="$add_dir $deplibs" 2841c76ae52dSmrg test -n "$add" && deplibs="$add $deplibs" 2842c76ae52dSmrg fi 2843c76ae52dSmrg fi 2844c76ae52dSmrg elif test "$linkmode" = prog; then 2845c76ae52dSmrg # Here we assume that one of hardcode_direct or hardcode_minus_L 2846c76ae52dSmrg # is not unsupported. This is valid on all known static and 2847c76ae52dSmrg # shared platforms. 2848c76ae52dSmrg if test "$hardcode_direct" != unsupported; then 2849c76ae52dSmrg test -n "$old_library" && linklib="$old_library" 2850c76ae52dSmrg compile_deplibs="$dir/$linklib $compile_deplibs" 2851c76ae52dSmrg finalize_deplibs="$dir/$linklib $finalize_deplibs" 2852c76ae52dSmrg else 2853c76ae52dSmrg compile_deplibs="-l$name -L$dir $compile_deplibs" 2854c76ae52dSmrg finalize_deplibs="-l$name -L$dir $finalize_deplibs" 2855c76ae52dSmrg fi 2856c76ae52dSmrg elif test "$build_libtool_libs" = yes; then 2857c76ae52dSmrg # Not a shared library 2858c76ae52dSmrg if test "$deplibs_check_method" != pass_all; then 2859c76ae52dSmrg # We're trying link a shared library against a static one 2860c76ae52dSmrg # but the system doesn't support it. 2861c76ae52dSmrg 2862c76ae52dSmrg # Just print a warning and add the library to dependency_libs so 2863c76ae52dSmrg # that the program can be linked against the static library. 2864c76ae52dSmrg $echo 2865c76ae52dSmrg $echo "*** Warning: This system can not link to static lib archive $lib." 2866c76ae52dSmrg $echo "*** I have the capability to make that library automatically link in when" 2867c76ae52dSmrg $echo "*** you link to this library. But I can only do this if you have a" 2868c76ae52dSmrg $echo "*** shared version of the library, which you do not appear to have." 2869c76ae52dSmrg if test "$module" = yes; then 2870c76ae52dSmrg $echo "*** But as you try to build a module library, libtool will still create " 2871c76ae52dSmrg $echo "*** a static module, that should work as long as the dlopening application" 2872c76ae52dSmrg $echo "*** is linked with the -dlopen flag to resolve symbols at runtime." 2873c76ae52dSmrg if test -z "$global_symbol_pipe"; then 2874c76ae52dSmrg $echo 2875c76ae52dSmrg $echo "*** However, this would only work if libtool was able to extract symbol" 2876c76ae52dSmrg $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" 2877c76ae52dSmrg $echo "*** not find such a program. So, this module is probably useless." 2878c76ae52dSmrg $echo "*** \`nm' from GNU binutils and a full rebuild may help." 2879c76ae52dSmrg fi 2880c76ae52dSmrg if test "$build_old_libs" = no; then 2881c76ae52dSmrg build_libtool_libs=module 2882c76ae52dSmrg build_old_libs=yes 2883c76ae52dSmrg else 2884c76ae52dSmrg build_libtool_libs=no 2885c76ae52dSmrg fi 2886c76ae52dSmrg fi 2887c76ae52dSmrg else 2888c76ae52dSmrg deplibs="$dir/$old_library $deplibs" 2889c76ae52dSmrg link_static=yes 2890c76ae52dSmrg fi 2891c76ae52dSmrg fi # link shared/static library? 2892c76ae52dSmrg 2893c76ae52dSmrg if test "$linkmode" = lib; then 2894c76ae52dSmrg if test -n "$dependency_libs" && 2895c76ae52dSmrg { test "$hardcode_into_libs" != yes || 2896c76ae52dSmrg test "$build_old_libs" = yes || 2897c76ae52dSmrg test "$link_static" = yes; }; then 2898c76ae52dSmrg # Extract -R from dependency_libs 2899c76ae52dSmrg temp_deplibs= 2900c76ae52dSmrg for libdir in $dependency_libs; do 2901c76ae52dSmrg case $libdir in 2902c76ae52dSmrg -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'` 2903c76ae52dSmrg case " $xrpath " in 2904c76ae52dSmrg *" $temp_xrpath "*) ;; 2905c76ae52dSmrg *) xrpath="$xrpath $temp_xrpath";; 2906c76ae52dSmrg esac;; 2907c76ae52dSmrg *) temp_deplibs="$temp_deplibs $libdir";; 2908c76ae52dSmrg esac 2909c76ae52dSmrg done 2910c76ae52dSmrg dependency_libs="$temp_deplibs" 2911c76ae52dSmrg fi 2912c76ae52dSmrg 2913c76ae52dSmrg newlib_search_path="$newlib_search_path $absdir" 2914c76ae52dSmrg # Link against this library 2915c76ae52dSmrg test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" 2916c76ae52dSmrg # ... and its dependency_libs 2917c76ae52dSmrg tmp_libs= 2918c76ae52dSmrg for deplib in $dependency_libs; do 2919c76ae52dSmrg newdependency_libs="$deplib $newdependency_libs" 2920c76ae52dSmrg if test "X$duplicate_deps" = "Xyes" ; then 2921c76ae52dSmrg case "$tmp_libs " in 2922c76ae52dSmrg *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 2923c76ae52dSmrg esac 2924c76ae52dSmrg fi 2925c76ae52dSmrg tmp_libs="$tmp_libs $deplib" 2926c76ae52dSmrg done 2927c76ae52dSmrg 2928c76ae52dSmrg if test "$link_all_deplibs" != no; then 2929c76ae52dSmrg # Add the search paths of all dependency libraries 2930c76ae52dSmrg for deplib in $dependency_libs; do 2931c76ae52dSmrg case $deplib in 2932c76ae52dSmrg -L*) path="$deplib" ;; 2933c76ae52dSmrg *.la) 2934c76ae52dSmrg dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'` 2935c76ae52dSmrg test "X$dir" = "X$deplib" && dir="." 2936c76ae52dSmrg # We need an absolute path. 2937c76ae52dSmrg case $dir in 2938c76ae52dSmrg [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; 2939c76ae52dSmrg *) 2940c76ae52dSmrg absdir=`cd "$dir" && pwd` 2941c76ae52dSmrg if test -z "$absdir"; then 2942c76ae52dSmrg $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 2943c76ae52dSmrg absdir="$dir" 2944c76ae52dSmrg fi 2945c76ae52dSmrg ;; 2946c76ae52dSmrg esac 2947c76ae52dSmrg if grep "^installed=no" $deplib > /dev/null; then 2948c76ae52dSmrg path="$absdir/$objdir" 2949c76ae52dSmrg else 2950c76ae52dSmrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 2951c76ae52dSmrg if test -z "$libdir"; then 2952c76ae52dSmrg $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 2953c76ae52dSmrg exit $EXIT_FAILURE 2954c76ae52dSmrg fi 2955c76ae52dSmrg if test "$absdir" != "$libdir"; then 2956c76ae52dSmrg $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2 2957c76ae52dSmrg fi 2958c76ae52dSmrg path="$absdir" 2959c76ae52dSmrg fi 2960c76ae52dSmrg depdepl= 2961c76ae52dSmrg case $host in 2962c76ae52dSmrg *-*-darwin*) 2963c76ae52dSmrg # we do not want to link against static libs, 2964c76ae52dSmrg # but need to link against shared 2965c76ae52dSmrg eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` 29660d590c07Smrg eval deplibdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 2967c76ae52dSmrg if test -n "$deplibrary_names" ; then 2968c76ae52dSmrg for tmp in $deplibrary_names ; do 2969c76ae52dSmrg depdepl=$tmp 2970c76ae52dSmrg done 29710d590c07Smrg if test -f "$deplibdir/$depdepl" ; then 29720d590c07Smrg depdepl="$deplibdir/$depdepl" 29730d590c07Smrg elif test -f "$path/$depdepl" ; then 2974c76ae52dSmrg depdepl="$path/$depdepl" 29750d590c07Smrg else 29760d590c07Smrg # Can't find it, oh well... 29770d590c07Smrg depdepl= 2978c76ae52dSmrg fi 2979c76ae52dSmrg # do not add paths which are already there 2980c76ae52dSmrg case " $newlib_search_path " in 2981c76ae52dSmrg *" $path "*) ;; 2982c76ae52dSmrg *) newlib_search_path="$newlib_search_path $path";; 2983c76ae52dSmrg esac 2984c76ae52dSmrg fi 2985c76ae52dSmrg path="" 2986c76ae52dSmrg ;; 2987c76ae52dSmrg *) 2988c76ae52dSmrg path="-L$path" 2989c76ae52dSmrg ;; 2990c76ae52dSmrg esac 2991c76ae52dSmrg ;; 2992c76ae52dSmrg -l*) 2993c76ae52dSmrg case $host in 2994c76ae52dSmrg *-*-darwin*) 2995c76ae52dSmrg # Again, we only want to link against shared libraries 2996c76ae52dSmrg eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"` 2997c76ae52dSmrg for tmp in $newlib_search_path ; do 2998c76ae52dSmrg if test -f "$tmp/lib$tmp_libs.dylib" ; then 2999c76ae52dSmrg eval depdepl="$tmp/lib$tmp_libs.dylib" 3000c76ae52dSmrg break 3001c76ae52dSmrg fi 3002c76ae52dSmrg done 3003c76ae52dSmrg path="" 3004c76ae52dSmrg ;; 3005c76ae52dSmrg *) continue ;; 3006c76ae52dSmrg esac 3007c76ae52dSmrg ;; 3008c76ae52dSmrg *) continue ;; 3009c76ae52dSmrg esac 3010c76ae52dSmrg case " $deplibs " in 3011c76ae52dSmrg *" $path "*) ;; 3012c76ae52dSmrg *) deplibs="$path $deplibs" ;; 3013c76ae52dSmrg esac 3014c76ae52dSmrg case " $deplibs " in 3015c76ae52dSmrg *" $depdepl "*) ;; 3016c76ae52dSmrg *) deplibs="$depdepl $deplibs" ;; 3017c76ae52dSmrg esac 3018c76ae52dSmrg done 3019c76ae52dSmrg fi # link_all_deplibs != no 3020c76ae52dSmrg fi # linkmode = lib 3021c76ae52dSmrg done # for deplib in $libs 3022c76ae52dSmrg dependency_libs="$newdependency_libs" 3023c76ae52dSmrg if test "$pass" = dlpreopen; then 3024c76ae52dSmrg # Link the dlpreopened libraries before other libraries 3025c76ae52dSmrg for deplib in $save_deplibs; do 3026c76ae52dSmrg deplibs="$deplib $deplibs" 3027c76ae52dSmrg done 3028c76ae52dSmrg fi 3029c76ae52dSmrg if test "$pass" != dlopen; then 3030c76ae52dSmrg if test "$pass" != conv; then 3031c76ae52dSmrg # Make sure lib_search_path contains only unique directories. 3032c76ae52dSmrg lib_search_path= 3033c76ae52dSmrg for dir in $newlib_search_path; do 3034c76ae52dSmrg case "$lib_search_path " in 3035c76ae52dSmrg *" $dir "*) ;; 3036c76ae52dSmrg *) lib_search_path="$lib_search_path $dir" ;; 3037c76ae52dSmrg esac 3038c76ae52dSmrg done 3039c76ae52dSmrg newlib_search_path= 3040c76ae52dSmrg fi 3041c76ae52dSmrg 3042c76ae52dSmrg if test "$linkmode,$pass" != "prog,link"; then 3043c76ae52dSmrg vars="deplibs" 3044c76ae52dSmrg else 3045c76ae52dSmrg vars="compile_deplibs finalize_deplibs" 3046c76ae52dSmrg fi 3047c76ae52dSmrg for var in $vars dependency_libs; do 3048c76ae52dSmrg # Add libraries to $var in reverse order 3049c76ae52dSmrg eval tmp_libs=\"\$$var\" 3050c76ae52dSmrg new_libs= 3051c76ae52dSmrg for deplib in $tmp_libs; do 3052c76ae52dSmrg # FIXME: Pedantically, this is the right thing to do, so 3053c76ae52dSmrg # that some nasty dependency loop isn't accidentally 3054c76ae52dSmrg # broken: 3055c76ae52dSmrg #new_libs="$deplib $new_libs" 3056c76ae52dSmrg # Pragmatically, this seems to cause very few problems in 3057c76ae52dSmrg # practice: 3058c76ae52dSmrg case $deplib in 3059c76ae52dSmrg -L*) new_libs="$deplib $new_libs" ;; 3060c76ae52dSmrg -R*) ;; 3061c76ae52dSmrg *) 3062c76ae52dSmrg # And here is the reason: when a library appears more 3063c76ae52dSmrg # than once as an explicit dependence of a library, or 3064c76ae52dSmrg # is implicitly linked in more than once by the 3065c76ae52dSmrg # compiler, it is considered special, and multiple 3066c76ae52dSmrg # occurrences thereof are not removed. Compare this 3067c76ae52dSmrg # with having the same library being listed as a 3068c76ae52dSmrg # dependency of multiple other libraries: in this case, 3069c76ae52dSmrg # we know (pedantically, we assume) the library does not 3070c76ae52dSmrg # need to be listed more than once, so we keep only the 3071c76ae52dSmrg # last copy. This is not always right, but it is rare 3072c76ae52dSmrg # enough that we require users that really mean to play 3073c76ae52dSmrg # such unportable linking tricks to link the library 3074c76ae52dSmrg # using -Wl,-lname, so that libtool does not consider it 3075c76ae52dSmrg # for duplicate removal. 3076c76ae52dSmrg case " $specialdeplibs " in 3077c76ae52dSmrg *" $deplib "*) new_libs="$deplib $new_libs" ;; 3078c76ae52dSmrg *) 3079c76ae52dSmrg case " $new_libs " in 3080c76ae52dSmrg *" $deplib "*) ;; 3081c76ae52dSmrg *) new_libs="$deplib $new_libs" ;; 3082c76ae52dSmrg esac 3083c76ae52dSmrg ;; 3084c76ae52dSmrg esac 3085c76ae52dSmrg ;; 3086c76ae52dSmrg esac 3087c76ae52dSmrg done 3088c76ae52dSmrg tmp_libs= 3089c76ae52dSmrg for deplib in $new_libs; do 3090c76ae52dSmrg case $deplib in 3091c76ae52dSmrg -L*) 3092c76ae52dSmrg case " $tmp_libs " in 3093c76ae52dSmrg *" $deplib "*) ;; 3094c76ae52dSmrg *) tmp_libs="$tmp_libs $deplib" ;; 3095c76ae52dSmrg esac 3096c76ae52dSmrg ;; 3097c76ae52dSmrg *) tmp_libs="$tmp_libs $deplib" ;; 3098c76ae52dSmrg esac 3099c76ae52dSmrg done 3100c76ae52dSmrg eval $var=\"$tmp_libs\" 3101c76ae52dSmrg done # for var 3102c76ae52dSmrg fi 3103c76ae52dSmrg # Last step: remove runtime libs from dependency_libs 3104c76ae52dSmrg # (they stay in deplibs) 3105c76ae52dSmrg tmp_libs= 3106c76ae52dSmrg for i in $dependency_libs ; do 3107c76ae52dSmrg case " $predeps $postdeps $compiler_lib_search_path " in 3108c76ae52dSmrg *" $i "*) 3109c76ae52dSmrg i="" 3110c76ae52dSmrg ;; 3111c76ae52dSmrg esac 3112c76ae52dSmrg if test -n "$i" ; then 3113c76ae52dSmrg tmp_libs="$tmp_libs $i" 3114c76ae52dSmrg fi 3115c76ae52dSmrg done 3116c76ae52dSmrg dependency_libs=$tmp_libs 3117c76ae52dSmrg done # for pass 3118c76ae52dSmrg if test "$linkmode" = prog; then 3119c76ae52dSmrg dlfiles="$newdlfiles" 3120c76ae52dSmrg dlprefiles="$newdlprefiles" 3121c76ae52dSmrg fi 3122c76ae52dSmrg 3123c76ae52dSmrg case $linkmode in 3124c76ae52dSmrg oldlib) 31250d590c07Smrg case " $deplibs" in 31260d590c07Smrg *\ -l* | *\ -L*) 31270d590c07Smrg $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 ;; 31280d590c07Smrg esac 3129c76ae52dSmrg 3130c76ae52dSmrg if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 3131c76ae52dSmrg $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2 3132c76ae52dSmrg fi 3133c76ae52dSmrg 3134c76ae52dSmrg if test -n "$rpath"; then 3135c76ae52dSmrg $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2 3136c76ae52dSmrg fi 3137c76ae52dSmrg 3138c76ae52dSmrg if test -n "$xrpath"; then 3139c76ae52dSmrg $echo "$modename: warning: \`-R' is ignored for archives" 1>&2 3140c76ae52dSmrg fi 3141c76ae52dSmrg 3142c76ae52dSmrg if test -n "$vinfo"; then 3143c76ae52dSmrg $echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2 3144c76ae52dSmrg fi 3145c76ae52dSmrg 3146c76ae52dSmrg if test -n "$release"; then 3147c76ae52dSmrg $echo "$modename: warning: \`-release' is ignored for archives" 1>&2 3148c76ae52dSmrg fi 3149c76ae52dSmrg 3150c76ae52dSmrg if test -n "$export_symbols" || test -n "$export_symbols_regex"; then 3151c76ae52dSmrg $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2 3152c76ae52dSmrg fi 3153c76ae52dSmrg 3154c76ae52dSmrg # Now set the variables for building old libraries. 3155c76ae52dSmrg build_libtool_libs=no 3156c76ae52dSmrg oldlibs="$output" 3157c76ae52dSmrg objs="$objs$old_deplibs" 3158c76ae52dSmrg ;; 3159c76ae52dSmrg 3160c76ae52dSmrg lib) 3161c76ae52dSmrg # Make sure we only generate libraries of the form `libNAME.la'. 3162c76ae52dSmrg case $outputname in 3163c76ae52dSmrg lib*) 3164c76ae52dSmrg name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` 3165c76ae52dSmrg eval shared_ext=\"$shrext_cmds\" 3166c76ae52dSmrg eval libname=\"$libname_spec\" 3167c76ae52dSmrg ;; 3168c76ae52dSmrg *) 3169c76ae52dSmrg if test "$module" = no; then 3170c76ae52dSmrg $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2 3171c76ae52dSmrg $echo "$help" 1>&2 3172c76ae52dSmrg exit $EXIT_FAILURE 3173c76ae52dSmrg fi 3174c76ae52dSmrg if test "$need_lib_prefix" != no; then 3175c76ae52dSmrg # Add the "lib" prefix for modules if required 3176c76ae52dSmrg name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` 3177c76ae52dSmrg eval shared_ext=\"$shrext_cmds\" 3178c76ae52dSmrg eval libname=\"$libname_spec\" 3179c76ae52dSmrg else 3180c76ae52dSmrg libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` 3181c76ae52dSmrg fi 3182c76ae52dSmrg ;; 3183c76ae52dSmrg esac 3184c76ae52dSmrg 3185c76ae52dSmrg if test -n "$objs"; then 3186c76ae52dSmrg if test "$deplibs_check_method" != pass_all; then 3187c76ae52dSmrg $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1 3188c76ae52dSmrg exit $EXIT_FAILURE 3189c76ae52dSmrg else 3190c76ae52dSmrg $echo 3191c76ae52dSmrg $echo "*** Warning: Linking the shared library $output against the non-libtool" 3192c76ae52dSmrg $echo "*** objects $objs is not portable!" 3193c76ae52dSmrg libobjs="$libobjs $objs" 3194c76ae52dSmrg fi 3195c76ae52dSmrg fi 3196c76ae52dSmrg 3197c76ae52dSmrg if test "$dlself" != no; then 3198c76ae52dSmrg $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2 3199c76ae52dSmrg fi 3200c76ae52dSmrg 3201c76ae52dSmrg set dummy $rpath 3202c76ae52dSmrg if test "$#" -gt 2; then 3203c76ae52dSmrg $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2 3204c76ae52dSmrg fi 3205c76ae52dSmrg install_libdir="$2" 3206c76ae52dSmrg 3207c76ae52dSmrg oldlibs= 3208c76ae52dSmrg if test -z "$rpath"; then 3209c76ae52dSmrg if test "$build_libtool_libs" = yes; then 3210c76ae52dSmrg # Building a libtool convenience library. 3211c76ae52dSmrg # Some compilers have problems with a `.al' extension so 3212c76ae52dSmrg # convenience libraries should have the same extension an 3213c76ae52dSmrg # archive normally would. 3214c76ae52dSmrg oldlibs="$output_objdir/$libname.$libext $oldlibs" 3215c76ae52dSmrg build_libtool_libs=convenience 3216c76ae52dSmrg build_old_libs=yes 3217c76ae52dSmrg fi 3218c76ae52dSmrg 3219c76ae52dSmrg if test -n "$vinfo"; then 3220c76ae52dSmrg $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2 3221c76ae52dSmrg fi 3222c76ae52dSmrg 3223c76ae52dSmrg if test -n "$release"; then 3224c76ae52dSmrg $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2 3225c76ae52dSmrg fi 3226c76ae52dSmrg else 3227c76ae52dSmrg 3228c76ae52dSmrg # Parse the version information argument. 3229c76ae52dSmrg save_ifs="$IFS"; IFS=':' 3230c76ae52dSmrg set dummy $vinfo 0 0 0 3231c76ae52dSmrg IFS="$save_ifs" 3232c76ae52dSmrg 3233c76ae52dSmrg if test -n "$8"; then 3234c76ae52dSmrg $echo "$modename: too many parameters to \`-version-info'" 1>&2 3235c76ae52dSmrg $echo "$help" 1>&2 3236c76ae52dSmrg exit $EXIT_FAILURE 3237c76ae52dSmrg fi 3238c76ae52dSmrg 3239c76ae52dSmrg # convert absolute version numbers to libtool ages 3240c76ae52dSmrg # this retains compatibility with .la files and attempts 3241c76ae52dSmrg # to make the code below a bit more comprehensible 3242c76ae52dSmrg 3243c76ae52dSmrg case $vinfo_number in 3244c76ae52dSmrg yes) 3245c76ae52dSmrg number_major="$2" 3246c76ae52dSmrg number_minor="$3" 3247c76ae52dSmrg number_revision="$4" 3248c76ae52dSmrg # 3249c76ae52dSmrg # There are really only two kinds -- those that 3250c76ae52dSmrg # use the current revision as the major version 3251c76ae52dSmrg # and those that subtract age and use age as 3252c76ae52dSmrg # a minor version. But, then there is irix 3253c76ae52dSmrg # which has an extra 1 added just for fun 3254c76ae52dSmrg # 3255c76ae52dSmrg case $version_type in 32560d590c07Smrg darwin|linux|osf|windows|none) 3257c76ae52dSmrg current=`expr $number_major + $number_minor` 3258c76ae52dSmrg age="$number_minor" 3259c76ae52dSmrg revision="$number_revision" 3260c76ae52dSmrg ;; 3261c76ae52dSmrg freebsd-aout|freebsd-elf|sunos) 3262c76ae52dSmrg current="$number_major" 3263c76ae52dSmrg revision="$number_minor" 3264c76ae52dSmrg age="0" 3265c76ae52dSmrg ;; 3266c76ae52dSmrg irix|nonstopux) 32670d590c07Smrg current=`expr $number_major + $number_minor` 3268c76ae52dSmrg age="$number_minor" 3269c76ae52dSmrg revision="$number_minor" 32700d590c07Smrg lt_irix_increment=no 3271c76ae52dSmrg ;; 3272c76ae52dSmrg esac 3273c76ae52dSmrg ;; 3274c76ae52dSmrg no) 3275c76ae52dSmrg current="$2" 3276c76ae52dSmrg revision="$3" 3277c76ae52dSmrg age="$4" 3278c76ae52dSmrg ;; 3279c76ae52dSmrg esac 3280c76ae52dSmrg 3281c76ae52dSmrg # Check that each of the things are valid numbers. 3282c76ae52dSmrg case $current in 3283c76ae52dSmrg 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]) ;; 3284c76ae52dSmrg *) 3285c76ae52dSmrg $echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2 3286c76ae52dSmrg $echo "$modename: \`$vinfo' is not valid version information" 1>&2 3287c76ae52dSmrg exit $EXIT_FAILURE 3288c76ae52dSmrg ;; 3289c76ae52dSmrg esac 3290c76ae52dSmrg 3291c76ae52dSmrg case $revision in 3292c76ae52dSmrg 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]) ;; 3293c76ae52dSmrg *) 3294c76ae52dSmrg $echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2 3295c76ae52dSmrg $echo "$modename: \`$vinfo' is not valid version information" 1>&2 3296c76ae52dSmrg exit $EXIT_FAILURE 3297c76ae52dSmrg ;; 3298c76ae52dSmrg esac 3299c76ae52dSmrg 3300c76ae52dSmrg case $age in 3301c76ae52dSmrg 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]) ;; 3302c76ae52dSmrg *) 3303c76ae52dSmrg $echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2 3304c76ae52dSmrg $echo "$modename: \`$vinfo' is not valid version information" 1>&2 3305c76ae52dSmrg exit $EXIT_FAILURE 3306c76ae52dSmrg ;; 3307c76ae52dSmrg esac 3308c76ae52dSmrg 3309c76ae52dSmrg if test "$age" -gt "$current"; then 3310c76ae52dSmrg $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 3311c76ae52dSmrg $echo "$modename: \`$vinfo' is not valid version information" 1>&2 3312c76ae52dSmrg exit $EXIT_FAILURE 3313c76ae52dSmrg fi 3314c76ae52dSmrg 3315c76ae52dSmrg # Calculate the version variables. 3316c76ae52dSmrg major= 3317c76ae52dSmrg versuffix= 3318c76ae52dSmrg verstring= 3319c76ae52dSmrg case $version_type in 3320c76ae52dSmrg none) ;; 3321c76ae52dSmrg 3322c76ae52dSmrg darwin) 3323c76ae52dSmrg # Like Linux, but with the current version available in 3324c76ae52dSmrg # verstring for coding it into the library header 3325c76ae52dSmrg major=.`expr $current - $age` 3326c76ae52dSmrg versuffix="$major.$age.$revision" 3327c76ae52dSmrg # Darwin ld doesn't like 0 for these options... 3328c76ae52dSmrg minor_current=`expr $current + 1` 33290d590c07Smrg xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" 33300d590c07Smrg verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" 3331c76ae52dSmrg ;; 3332c76ae52dSmrg 3333c76ae52dSmrg freebsd-aout) 3334c76ae52dSmrg major=".$current" 3335c76ae52dSmrg versuffix=".$current.$revision"; 3336c76ae52dSmrg ;; 3337c76ae52dSmrg 3338c76ae52dSmrg freebsd-elf) 3339c76ae52dSmrg major=".$current" 3340c76ae52dSmrg versuffix=".$current"; 3341c76ae52dSmrg ;; 3342c76ae52dSmrg 3343c76ae52dSmrg irix | nonstopux) 33440d590c07Smrg if test "X$lt_irix_increment" = "Xno"; then 33450d590c07Smrg major=`expr $current - $age` 33460d590c07Smrg else 33470d590c07Smrg major=`expr $current - $age + 1` 33480d590c07Smrg fi 3349c76ae52dSmrg case $version_type in 3350c76ae52dSmrg nonstopux) verstring_prefix=nonstopux ;; 3351c76ae52dSmrg *) verstring_prefix=sgi ;; 3352c76ae52dSmrg esac 3353c76ae52dSmrg verstring="$verstring_prefix$major.$revision" 3354c76ae52dSmrg 3355c76ae52dSmrg # Add in all the interfaces that we are compatible with. 3356c76ae52dSmrg loop=$revision 3357c76ae52dSmrg while test "$loop" -ne 0; do 3358c76ae52dSmrg iface=`expr $revision - $loop` 3359c76ae52dSmrg loop=`expr $loop - 1` 3360c76ae52dSmrg verstring="$verstring_prefix$major.$iface:$verstring" 3361c76ae52dSmrg done 3362c76ae52dSmrg 3363c76ae52dSmrg # Before this point, $major must not contain `.'. 3364c76ae52dSmrg major=.$major 3365c76ae52dSmrg versuffix="$major.$revision" 3366c76ae52dSmrg ;; 3367c76ae52dSmrg 3368c76ae52dSmrg linux) 3369c76ae52dSmrg major=.`expr $current - $age` 3370c76ae52dSmrg versuffix="$major.$age.$revision" 3371c76ae52dSmrg ;; 3372c76ae52dSmrg 3373c76ae52dSmrg osf) 3374c76ae52dSmrg major=.`expr $current - $age` 3375c76ae52dSmrg versuffix=".$current.$age.$revision" 3376c76ae52dSmrg verstring="$current.$age.$revision" 3377c76ae52dSmrg 3378c76ae52dSmrg # Add in all the interfaces that we are compatible with. 3379c76ae52dSmrg loop=$age 3380c76ae52dSmrg while test "$loop" -ne 0; do 3381c76ae52dSmrg iface=`expr $current - $loop` 3382c76ae52dSmrg loop=`expr $loop - 1` 3383c76ae52dSmrg verstring="$verstring:${iface}.0" 3384c76ae52dSmrg done 3385c76ae52dSmrg 3386c76ae52dSmrg # Make executables depend on our current version. 3387c76ae52dSmrg verstring="$verstring:${current}.0" 3388c76ae52dSmrg ;; 3389c76ae52dSmrg 3390c76ae52dSmrg sunos) 3391c76ae52dSmrg major=".$current" 3392c76ae52dSmrg versuffix=".$current.$revision" 3393c76ae52dSmrg ;; 3394c76ae52dSmrg 3395c76ae52dSmrg windows) 3396c76ae52dSmrg # Use '-' rather than '.', since we only want one 3397c76ae52dSmrg # extension on DOS 8.3 filesystems. 3398c76ae52dSmrg major=`expr $current - $age` 3399c76ae52dSmrg versuffix="-$major" 3400c76ae52dSmrg ;; 3401c76ae52dSmrg 3402c76ae52dSmrg *) 3403c76ae52dSmrg $echo "$modename: unknown library version type \`$version_type'" 1>&2 3404c76ae52dSmrg $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 3405c76ae52dSmrg exit $EXIT_FAILURE 3406c76ae52dSmrg ;; 3407c76ae52dSmrg esac 3408c76ae52dSmrg 3409c76ae52dSmrg # Clear the version info if we defaulted, and they specified a release. 3410c76ae52dSmrg if test -z "$vinfo" && test -n "$release"; then 3411c76ae52dSmrg major= 3412c76ae52dSmrg case $version_type in 3413c76ae52dSmrg darwin) 3414c76ae52dSmrg # we can't check for "0.0" in archive_cmds due to quoting 3415c76ae52dSmrg # problems, so we reset it completely 3416c76ae52dSmrg verstring= 3417c76ae52dSmrg ;; 3418c76ae52dSmrg *) 3419c76ae52dSmrg verstring="0.0" 3420c76ae52dSmrg ;; 3421c76ae52dSmrg esac 3422c76ae52dSmrg if test "$need_version" = no; then 3423c76ae52dSmrg versuffix= 3424c76ae52dSmrg else 3425c76ae52dSmrg versuffix=".0.0" 3426c76ae52dSmrg fi 3427c76ae52dSmrg fi 3428c76ae52dSmrg 3429c76ae52dSmrg # Remove version info from name if versioning should be avoided 3430c76ae52dSmrg if test "$avoid_version" = yes && test "$need_version" = no; then 3431c76ae52dSmrg major= 3432c76ae52dSmrg versuffix= 3433c76ae52dSmrg verstring="" 3434c76ae52dSmrg fi 3435c76ae52dSmrg 3436c76ae52dSmrg # Check to see if the archive will have undefined symbols. 3437c76ae52dSmrg if test "$allow_undefined" = yes; then 3438c76ae52dSmrg if test "$allow_undefined_flag" = unsupported; then 3439c76ae52dSmrg $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2 3440c76ae52dSmrg build_libtool_libs=no 3441c76ae52dSmrg build_old_libs=yes 3442c76ae52dSmrg fi 3443c76ae52dSmrg else 3444c76ae52dSmrg # Don't allow undefined symbols. 3445c76ae52dSmrg allow_undefined_flag="$no_undefined_flag" 3446c76ae52dSmrg fi 3447c76ae52dSmrg fi 3448c76ae52dSmrg 3449c76ae52dSmrg if test "$mode" != relink; then 3450c76ae52dSmrg # Remove our outputs, but don't remove object files since they 3451c76ae52dSmrg # may have been created when compiling PIC objects. 3452c76ae52dSmrg removelist= 3453c76ae52dSmrg tempremovelist=`$echo "$output_objdir/*"` 3454c76ae52dSmrg for p in $tempremovelist; do 3455c76ae52dSmrg case $p in 3456c76ae52dSmrg *.$objext) 3457c76ae52dSmrg ;; 3458c76ae52dSmrg $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) 3459c76ae52dSmrg if test "X$precious_files_regex" != "X"; then 3460c76ae52dSmrg if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 3461c76ae52dSmrg then 3462c76ae52dSmrg continue 3463c76ae52dSmrg fi 3464c76ae52dSmrg fi 3465c76ae52dSmrg removelist="$removelist $p" 3466c76ae52dSmrg ;; 3467c76ae52dSmrg *) ;; 3468c76ae52dSmrg esac 3469c76ae52dSmrg done 3470c76ae52dSmrg if test -n "$removelist"; then 3471c76ae52dSmrg $show "${rm}r $removelist" 3472c76ae52dSmrg $run ${rm}r $removelist 3473c76ae52dSmrg fi 3474c76ae52dSmrg fi 3475c76ae52dSmrg 3476c76ae52dSmrg # Now set the variables for building old libraries. 3477c76ae52dSmrg if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then 3478c76ae52dSmrg oldlibs="$oldlibs $output_objdir/$libname.$libext" 3479c76ae52dSmrg 3480c76ae52dSmrg # Transform .lo files to .o files. 3481c76ae52dSmrg oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` 3482c76ae52dSmrg fi 3483c76ae52dSmrg 3484c76ae52dSmrg # Eliminate all temporary directories. 34850d590c07Smrg #for path in $notinst_path; do 34860d590c07Smrg # lib_search_path=`$echo "$lib_search_path " | ${SED} -e "s% $path % %g"` 34870d590c07Smrg # deplibs=`$echo "$deplibs " | ${SED} -e "s% -L$path % %g"` 34880d590c07Smrg # dependency_libs=`$echo "$dependency_libs " | ${SED} -e "s% -L$path % %g"` 34890d590c07Smrg #done 3490c76ae52dSmrg 3491c76ae52dSmrg if test -n "$xrpath"; then 3492c76ae52dSmrg # If the user specified any rpath flags, then add them. 3493c76ae52dSmrg temp_xrpath= 3494c76ae52dSmrg for libdir in $xrpath; do 3495c76ae52dSmrg temp_xrpath="$temp_xrpath -R$libdir" 3496c76ae52dSmrg case "$finalize_rpath " in 3497c76ae52dSmrg *" $libdir "*) ;; 3498c76ae52dSmrg *) finalize_rpath="$finalize_rpath $libdir" ;; 3499c76ae52dSmrg esac 3500c76ae52dSmrg done 3501c76ae52dSmrg if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then 3502c76ae52dSmrg dependency_libs="$temp_xrpath $dependency_libs" 3503c76ae52dSmrg fi 3504c76ae52dSmrg fi 3505c76ae52dSmrg 3506c76ae52dSmrg # Make sure dlfiles contains only unique files that won't be dlpreopened 3507c76ae52dSmrg old_dlfiles="$dlfiles" 3508c76ae52dSmrg dlfiles= 3509c76ae52dSmrg for lib in $old_dlfiles; do 3510c76ae52dSmrg case " $dlprefiles $dlfiles " in 3511c76ae52dSmrg *" $lib "*) ;; 3512c76ae52dSmrg *) dlfiles="$dlfiles $lib" ;; 3513c76ae52dSmrg esac 3514c76ae52dSmrg done 3515c76ae52dSmrg 3516c76ae52dSmrg # Make sure dlprefiles contains only unique files 3517c76ae52dSmrg old_dlprefiles="$dlprefiles" 3518c76ae52dSmrg dlprefiles= 3519c76ae52dSmrg for lib in $old_dlprefiles; do 3520c76ae52dSmrg case "$dlprefiles " in 3521c76ae52dSmrg *" $lib "*) ;; 3522c76ae52dSmrg *) dlprefiles="$dlprefiles $lib" ;; 3523c76ae52dSmrg esac 3524c76ae52dSmrg done 3525c76ae52dSmrg 3526c76ae52dSmrg if test "$build_libtool_libs" = yes; then 3527c76ae52dSmrg if test -n "$rpath"; then 3528c76ae52dSmrg case $host in 3529c76ae52dSmrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*) 3530c76ae52dSmrg # these systems don't actually have a c library (as such)! 3531c76ae52dSmrg ;; 3532c76ae52dSmrg *-*-rhapsody* | *-*-darwin1.[012]) 3533c76ae52dSmrg # Rhapsody C library is in the System framework 3534c76ae52dSmrg deplibs="$deplibs -framework System" 3535c76ae52dSmrg ;; 3536c76ae52dSmrg *-*-netbsd*) 3537c76ae52dSmrg # Don't link with libc until the a.out ld.so is fixed. 3538c76ae52dSmrg ;; 3539c76ae52dSmrg *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 3540c76ae52dSmrg # Do not include libc due to us having libc/libc_r. 3541c76ae52dSmrg ;; 3542c76ae52dSmrg *-*-sco3.2v5* | *-*-sco5v6*) 3543c76ae52dSmrg # Causes problems with __ctype 3544c76ae52dSmrg ;; 3545c76ae52dSmrg *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 3546c76ae52dSmrg # Compiler inserts libc in the correct place for threads to work 3547c76ae52dSmrg ;; 3548c76ae52dSmrg *) 3549c76ae52dSmrg # Add libc to deplibs on all other systems if necessary. 3550c76ae52dSmrg if test "$build_libtool_need_lc" = "yes"; then 3551c76ae52dSmrg deplibs="$deplibs -lc" 3552c76ae52dSmrg fi 3553c76ae52dSmrg ;; 3554c76ae52dSmrg esac 3555c76ae52dSmrg fi 3556c76ae52dSmrg 3557c76ae52dSmrg # Transform deplibs into only deplibs that can be linked in shared. 3558c76ae52dSmrg name_save=$name 3559c76ae52dSmrg libname_save=$libname 3560c76ae52dSmrg release_save=$release 3561c76ae52dSmrg versuffix_save=$versuffix 3562c76ae52dSmrg major_save=$major 3563c76ae52dSmrg # I'm not sure if I'm treating the release correctly. I think 3564c76ae52dSmrg # release should show up in the -l (ie -lgmp5) so we don't want to 3565c76ae52dSmrg # add it in twice. Is that correct? 3566c76ae52dSmrg release="" 3567c76ae52dSmrg versuffix="" 3568c76ae52dSmrg major="" 3569c76ae52dSmrg newdeplibs= 3570c76ae52dSmrg droppeddeps=no 3571c76ae52dSmrg case $deplibs_check_method in 3572c76ae52dSmrg pass_all) 3573c76ae52dSmrg # Don't check for shared/static. Everything works. 3574c76ae52dSmrg # This might be a little naive. We might want to check 3575c76ae52dSmrg # whether the library exists or not. But this is on 3576c76ae52dSmrg # osf3 & osf4 and I'm not really sure... Just 3577c76ae52dSmrg # implementing what was already the behavior. 3578c76ae52dSmrg newdeplibs=$deplibs 3579c76ae52dSmrg ;; 3580c76ae52dSmrg test_compile) 3581c76ae52dSmrg # This code stresses the "libraries are programs" paradigm to its 3582c76ae52dSmrg # limits. Maybe even breaks it. We compile a program, linking it 3583c76ae52dSmrg # against the deplibs as a proxy for the library. Then we can check 3584c76ae52dSmrg # whether they linked in statically or dynamically with ldd. 3585c76ae52dSmrg $rm conftest.c 3586c76ae52dSmrg cat > conftest.c <<EOF 3587c76ae52dSmrg int main() { return 0; } 3588c76ae52dSmrgEOF 3589c76ae52dSmrg $rm conftest 35900d590c07Smrg if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then 3591c76ae52dSmrg ldd_output=`ldd conftest` 3592c76ae52dSmrg for i in $deplibs; do 3593c76ae52dSmrg name=`expr $i : '-l\(.*\)'` 3594c76ae52dSmrg # If $name is empty we are operating on a -L argument. 35950d590c07Smrg if test "$name" != "" && test "$name" != "0"; then 3596c76ae52dSmrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 3597c76ae52dSmrg case " $predeps $postdeps " in 3598c76ae52dSmrg *" $i "*) 3599c76ae52dSmrg newdeplibs="$newdeplibs $i" 3600c76ae52dSmrg i="" 3601c76ae52dSmrg ;; 3602c76ae52dSmrg esac 3603c76ae52dSmrg fi 3604c76ae52dSmrg if test -n "$i" ; then 3605c76ae52dSmrg libname=`eval \\$echo \"$libname_spec\"` 3606c76ae52dSmrg deplib_matches=`eval \\$echo \"$library_names_spec\"` 3607c76ae52dSmrg set dummy $deplib_matches 3608c76ae52dSmrg deplib_match=$2 3609c76ae52dSmrg if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 3610c76ae52dSmrg newdeplibs="$newdeplibs $i" 3611c76ae52dSmrg else 3612c76ae52dSmrg droppeddeps=yes 3613c76ae52dSmrg $echo 3614c76ae52dSmrg $echo "*** Warning: dynamic linker does not accept needed library $i." 3615c76ae52dSmrg $echo "*** I have the capability to make that library automatically link in when" 3616c76ae52dSmrg $echo "*** you link to this library. But I can only do this if you have a" 3617c76ae52dSmrg $echo "*** shared version of the library, which I believe you do not have" 3618c76ae52dSmrg $echo "*** because a test_compile did reveal that the linker did not use it for" 3619c76ae52dSmrg $echo "*** its dynamic dependency list that programs get resolved with at runtime." 3620c76ae52dSmrg fi 3621c76ae52dSmrg fi 3622c76ae52dSmrg else 3623c76ae52dSmrg newdeplibs="$newdeplibs $i" 3624c76ae52dSmrg fi 3625c76ae52dSmrg done 3626c76ae52dSmrg else 3627c76ae52dSmrg # Error occurred in the first compile. Let's try to salvage 3628c76ae52dSmrg # the situation: Compile a separate program for each library. 3629c76ae52dSmrg for i in $deplibs; do 3630c76ae52dSmrg name=`expr $i : '-l\(.*\)'` 3631c76ae52dSmrg # If $name is empty we are operating on a -L argument. 3632c76ae52dSmrg if test "$name" != "" && test "$name" != "0"; then 3633c76ae52dSmrg $rm conftest 36340d590c07Smrg if $LTCC $LTCFLAGS -o conftest conftest.c $i; then 3635c76ae52dSmrg ldd_output=`ldd conftest` 3636c76ae52dSmrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 3637c76ae52dSmrg case " $predeps $postdeps " in 3638c76ae52dSmrg *" $i "*) 3639c76ae52dSmrg newdeplibs="$newdeplibs $i" 3640c76ae52dSmrg i="" 3641c76ae52dSmrg ;; 3642c76ae52dSmrg esac 3643c76ae52dSmrg fi 3644c76ae52dSmrg if test -n "$i" ; then 3645c76ae52dSmrg libname=`eval \\$echo \"$libname_spec\"` 3646c76ae52dSmrg deplib_matches=`eval \\$echo \"$library_names_spec\"` 3647c76ae52dSmrg set dummy $deplib_matches 3648c76ae52dSmrg deplib_match=$2 3649c76ae52dSmrg if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 3650c76ae52dSmrg newdeplibs="$newdeplibs $i" 3651c76ae52dSmrg else 3652c76ae52dSmrg droppeddeps=yes 3653c76ae52dSmrg $echo 3654c76ae52dSmrg $echo "*** Warning: dynamic linker does not accept needed library $i." 3655c76ae52dSmrg $echo "*** I have the capability to make that library automatically link in when" 3656c76ae52dSmrg $echo "*** you link to this library. But I can only do this if you have a" 3657c76ae52dSmrg $echo "*** shared version of the library, which you do not appear to have" 3658c76ae52dSmrg $echo "*** because a test_compile did reveal that the linker did not use this one" 3659c76ae52dSmrg $echo "*** as a dynamic dependency that programs can get resolved with at runtime." 3660c76ae52dSmrg fi 3661c76ae52dSmrg fi 3662c76ae52dSmrg else 3663c76ae52dSmrg droppeddeps=yes 3664c76ae52dSmrg $echo 3665c76ae52dSmrg $echo "*** Warning! Library $i is needed by this library but I was not able to" 36660d590c07Smrg $echo "*** make it link in! You will probably need to install it or some" 3667c76ae52dSmrg $echo "*** library that it depends on before this library will be fully" 3668c76ae52dSmrg $echo "*** functional. Installing it before continuing would be even better." 3669c76ae52dSmrg fi 3670c76ae52dSmrg else 3671c76ae52dSmrg newdeplibs="$newdeplibs $i" 3672c76ae52dSmrg fi 3673c76ae52dSmrg done 3674c76ae52dSmrg fi 3675c76ae52dSmrg ;; 3676c76ae52dSmrg file_magic*) 3677c76ae52dSmrg set dummy $deplibs_check_method 3678c76ae52dSmrg file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` 3679c76ae52dSmrg for a_deplib in $deplibs; do 3680c76ae52dSmrg name=`expr $a_deplib : '-l\(.*\)'` 3681c76ae52dSmrg # If $name is empty we are operating on a -L argument. 3682c76ae52dSmrg if test "$name" != "" && test "$name" != "0"; then 3683c76ae52dSmrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 3684c76ae52dSmrg case " $predeps $postdeps " in 3685c76ae52dSmrg *" $a_deplib "*) 3686c76ae52dSmrg newdeplibs="$newdeplibs $a_deplib" 3687c76ae52dSmrg a_deplib="" 3688c76ae52dSmrg ;; 3689c76ae52dSmrg esac 3690c76ae52dSmrg fi 3691c76ae52dSmrg if test -n "$a_deplib" ; then 3692c76ae52dSmrg libname=`eval \\$echo \"$libname_spec\"` 3693c76ae52dSmrg for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 3694c76ae52dSmrg potential_libs=`ls $i/$libname[.-]* 2>/dev/null` 3695c76ae52dSmrg for potent_lib in $potential_libs; do 3696c76ae52dSmrg # Follow soft links. 3697c76ae52dSmrg if ls -lLd "$potent_lib" 2>/dev/null \ 3698c76ae52dSmrg | grep " -> " >/dev/null; then 3699c76ae52dSmrg continue 3700c76ae52dSmrg fi 3701c76ae52dSmrg # The statement above tries to avoid entering an 3702c76ae52dSmrg # endless loop below, in case of cyclic links. 3703c76ae52dSmrg # We might still enter an endless loop, since a link 3704c76ae52dSmrg # loop can be closed while we follow links, 3705c76ae52dSmrg # but so what? 3706c76ae52dSmrg potlib="$potent_lib" 3707c76ae52dSmrg while test -h "$potlib" 2>/dev/null; do 3708c76ae52dSmrg potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` 3709c76ae52dSmrg case $potliblink in 3710c76ae52dSmrg [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; 3711c76ae52dSmrg *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; 3712c76ae52dSmrg esac 3713c76ae52dSmrg done 3714c76ae52dSmrg if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \ 3715c76ae52dSmrg | ${SED} 10q \ 3716c76ae52dSmrg | $EGREP "$file_magic_regex" > /dev/null; then 3717c76ae52dSmrg newdeplibs="$newdeplibs $a_deplib" 3718c76ae52dSmrg a_deplib="" 3719c76ae52dSmrg break 2 3720c76ae52dSmrg fi 3721c76ae52dSmrg done 3722c76ae52dSmrg done 3723c76ae52dSmrg fi 3724c76ae52dSmrg if test -n "$a_deplib" ; then 3725c76ae52dSmrg droppeddeps=yes 3726c76ae52dSmrg $echo 3727c76ae52dSmrg $echo "*** Warning: linker path does not have real file for library $a_deplib." 3728c76ae52dSmrg $echo "*** I have the capability to make that library automatically link in when" 3729c76ae52dSmrg $echo "*** you link to this library. But I can only do this if you have a" 3730c76ae52dSmrg $echo "*** shared version of the library, which you do not appear to have" 3731c76ae52dSmrg $echo "*** because I did check the linker path looking for a file starting" 3732c76ae52dSmrg if test -z "$potlib" ; then 3733c76ae52dSmrg $echo "*** with $libname but no candidates were found. (...for file magic test)" 3734c76ae52dSmrg else 3735c76ae52dSmrg $echo "*** with $libname and none of the candidates passed a file format test" 3736c76ae52dSmrg $echo "*** using a file magic. Last file checked: $potlib" 3737c76ae52dSmrg fi 3738c76ae52dSmrg fi 3739c76ae52dSmrg else 3740c76ae52dSmrg # Add a -L argument. 3741c76ae52dSmrg newdeplibs="$newdeplibs $a_deplib" 3742c76ae52dSmrg fi 3743c76ae52dSmrg done # Gone through all deplibs. 3744c76ae52dSmrg ;; 3745c76ae52dSmrg match_pattern*) 3746c76ae52dSmrg set dummy $deplibs_check_method 3747c76ae52dSmrg match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` 3748c76ae52dSmrg for a_deplib in $deplibs; do 3749c76ae52dSmrg name=`expr $a_deplib : '-l\(.*\)'` 3750c76ae52dSmrg # If $name is empty we are operating on a -L argument. 3751c76ae52dSmrg if test -n "$name" && test "$name" != "0"; then 3752c76ae52dSmrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 3753c76ae52dSmrg case " $predeps $postdeps " in 3754c76ae52dSmrg *" $a_deplib "*) 3755c76ae52dSmrg newdeplibs="$newdeplibs $a_deplib" 3756c76ae52dSmrg a_deplib="" 3757c76ae52dSmrg ;; 3758c76ae52dSmrg esac 3759c76ae52dSmrg fi 3760c76ae52dSmrg if test -n "$a_deplib" ; then 3761c76ae52dSmrg libname=`eval \\$echo \"$libname_spec\"` 3762c76ae52dSmrg for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 3763c76ae52dSmrg potential_libs=`ls $i/$libname[.-]* 2>/dev/null` 3764c76ae52dSmrg for potent_lib in $potential_libs; do 3765c76ae52dSmrg potlib="$potent_lib" # see symlink-check above in file_magic test 3766c76ae52dSmrg if eval $echo \"$potent_lib\" 2>/dev/null \ 3767c76ae52dSmrg | ${SED} 10q \ 3768c76ae52dSmrg | $EGREP "$match_pattern_regex" > /dev/null; then 3769c76ae52dSmrg newdeplibs="$newdeplibs $a_deplib" 3770c76ae52dSmrg a_deplib="" 3771c76ae52dSmrg break 2 3772c76ae52dSmrg fi 3773c76ae52dSmrg done 3774c76ae52dSmrg done 3775c76ae52dSmrg fi 3776c76ae52dSmrg if test -n "$a_deplib" ; then 3777c76ae52dSmrg droppeddeps=yes 3778c76ae52dSmrg $echo 3779c76ae52dSmrg $echo "*** Warning: linker path does not have real file for library $a_deplib." 3780c76ae52dSmrg $echo "*** I have the capability to make that library automatically link in when" 3781c76ae52dSmrg $echo "*** you link to this library. But I can only do this if you have a" 3782c76ae52dSmrg $echo "*** shared version of the library, which you do not appear to have" 3783c76ae52dSmrg $echo "*** because I did check the linker path looking for a file starting" 3784c76ae52dSmrg if test -z "$potlib" ; then 3785c76ae52dSmrg $echo "*** with $libname but no candidates were found. (...for regex pattern test)" 3786c76ae52dSmrg else 3787c76ae52dSmrg $echo "*** with $libname and none of the candidates passed a file format test" 3788c76ae52dSmrg $echo "*** using a regex pattern. Last file checked: $potlib" 3789c76ae52dSmrg fi 3790c76ae52dSmrg fi 3791c76ae52dSmrg else 3792c76ae52dSmrg # Add a -L argument. 3793c76ae52dSmrg newdeplibs="$newdeplibs $a_deplib" 3794c76ae52dSmrg fi 3795c76ae52dSmrg done # Gone through all deplibs. 3796c76ae52dSmrg ;; 3797c76ae52dSmrg none | unknown | *) 3798c76ae52dSmrg newdeplibs="" 3799c76ae52dSmrg tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ 3800c76ae52dSmrg -e 's/ -[LR][^ ]*//g'` 3801c76ae52dSmrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 3802c76ae52dSmrg for i in $predeps $postdeps ; do 3803c76ae52dSmrg # can't use Xsed below, because $i might contain '/' 3804c76ae52dSmrg tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"` 3805c76ae52dSmrg done 3806c76ae52dSmrg fi 3807c76ae52dSmrg if $echo "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' \ 3808c76ae52dSmrg | grep . >/dev/null; then 3809c76ae52dSmrg $echo 3810c76ae52dSmrg if test "X$deplibs_check_method" = "Xnone"; then 3811c76ae52dSmrg $echo "*** Warning: inter-library dependencies are not supported in this platform." 3812c76ae52dSmrg else 3813c76ae52dSmrg $echo "*** Warning: inter-library dependencies are not known to be supported." 3814c76ae52dSmrg fi 3815c76ae52dSmrg $echo "*** All declared inter-library dependencies are being dropped." 3816c76ae52dSmrg droppeddeps=yes 3817c76ae52dSmrg fi 3818c76ae52dSmrg ;; 3819c76ae52dSmrg esac 3820c76ae52dSmrg versuffix=$versuffix_save 3821c76ae52dSmrg major=$major_save 3822c76ae52dSmrg release=$release_save 3823c76ae52dSmrg libname=$libname_save 3824c76ae52dSmrg name=$name_save 3825c76ae52dSmrg 3826c76ae52dSmrg case $host in 3827c76ae52dSmrg *-*-rhapsody* | *-*-darwin1.[012]) 3828c76ae52dSmrg # On Rhapsody replace the C library is the System framework 3829c76ae52dSmrg newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'` 3830c76ae52dSmrg ;; 3831c76ae52dSmrg esac 3832c76ae52dSmrg 3833c76ae52dSmrg if test "$droppeddeps" = yes; then 3834c76ae52dSmrg if test "$module" = yes; then 3835c76ae52dSmrg $echo 3836c76ae52dSmrg $echo "*** Warning: libtool could not satisfy all declared inter-library" 3837c76ae52dSmrg $echo "*** dependencies of module $libname. Therefore, libtool will create" 3838c76ae52dSmrg $echo "*** a static module, that should work as long as the dlopening" 3839c76ae52dSmrg $echo "*** application is linked with the -dlopen flag." 3840c76ae52dSmrg if test -z "$global_symbol_pipe"; then 3841c76ae52dSmrg $echo 3842c76ae52dSmrg $echo "*** However, this would only work if libtool was able to extract symbol" 3843c76ae52dSmrg $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" 3844c76ae52dSmrg $echo "*** not find such a program. So, this module is probably useless." 3845c76ae52dSmrg $echo "*** \`nm' from GNU binutils and a full rebuild may help." 3846c76ae52dSmrg fi 3847c76ae52dSmrg if test "$build_old_libs" = no; then 3848c76ae52dSmrg oldlibs="$output_objdir/$libname.$libext" 3849c76ae52dSmrg build_libtool_libs=module 3850c76ae52dSmrg build_old_libs=yes 3851c76ae52dSmrg else 3852c76ae52dSmrg build_libtool_libs=no 3853c76ae52dSmrg fi 3854c76ae52dSmrg else 3855c76ae52dSmrg $echo "*** The inter-library dependencies that have been dropped here will be" 3856c76ae52dSmrg $echo "*** automatically added whenever a program is linked with this library" 3857c76ae52dSmrg $echo "*** or is declared to -dlopen it." 3858c76ae52dSmrg 3859c76ae52dSmrg if test "$allow_undefined" = no; then 3860c76ae52dSmrg $echo 3861c76ae52dSmrg $echo "*** Since this library must not contain undefined symbols," 3862c76ae52dSmrg $echo "*** because either the platform does not support them or" 3863c76ae52dSmrg $echo "*** it was explicitly requested with -no-undefined," 3864c76ae52dSmrg $echo "*** libtool will only create a static version of it." 3865c76ae52dSmrg if test "$build_old_libs" = no; then 3866c76ae52dSmrg oldlibs="$output_objdir/$libname.$libext" 3867c76ae52dSmrg build_libtool_libs=module 3868c76ae52dSmrg build_old_libs=yes 3869c76ae52dSmrg else 3870c76ae52dSmrg build_libtool_libs=no 3871c76ae52dSmrg fi 3872c76ae52dSmrg fi 3873c76ae52dSmrg fi 3874c76ae52dSmrg fi 3875c76ae52dSmrg # Done checking deplibs! 3876c76ae52dSmrg deplibs=$newdeplibs 3877c76ae52dSmrg fi 3878c76ae52dSmrg 3879c76ae52dSmrg 3880c76ae52dSmrg # move library search paths that coincide with paths to not yet 3881c76ae52dSmrg # installed libraries to the beginning of the library search list 3882c76ae52dSmrg new_libs= 3883c76ae52dSmrg for path in $notinst_path; do 3884c76ae52dSmrg case " $new_libs " in 3885c76ae52dSmrg *" -L$path/$objdir "*) ;; 3886c76ae52dSmrg *) 3887c76ae52dSmrg case " $deplibs " in 3888c76ae52dSmrg *" -L$path/$objdir "*) 3889c76ae52dSmrg new_libs="$new_libs -L$path/$objdir" ;; 3890c76ae52dSmrg esac 3891c76ae52dSmrg ;; 3892c76ae52dSmrg esac 3893c76ae52dSmrg done 3894c76ae52dSmrg for deplib in $deplibs; do 3895c76ae52dSmrg case $deplib in 3896c76ae52dSmrg -L*) 3897c76ae52dSmrg case " $new_libs " in 3898c76ae52dSmrg *" $deplib "*) ;; 3899c76ae52dSmrg *) new_libs="$new_libs $deplib" ;; 3900c76ae52dSmrg esac 3901c76ae52dSmrg ;; 3902c76ae52dSmrg *) new_libs="$new_libs $deplib" ;; 3903c76ae52dSmrg esac 3904c76ae52dSmrg done 3905c76ae52dSmrg deplibs="$new_libs" 3906c76ae52dSmrg 3907c76ae52dSmrg 3908c76ae52dSmrg # All the library-specific variables (install_libdir is set above). 3909c76ae52dSmrg library_names= 3910c76ae52dSmrg old_library= 3911c76ae52dSmrg dlname= 3912c76ae52dSmrg 3913c76ae52dSmrg # Test again, we may have decided not to build it any more 3914c76ae52dSmrg if test "$build_libtool_libs" = yes; then 3915c76ae52dSmrg if test "$hardcode_into_libs" = yes; then 3916c76ae52dSmrg # Hardcode the library paths 3917c76ae52dSmrg hardcode_libdirs= 3918c76ae52dSmrg dep_rpath= 3919c76ae52dSmrg rpath="$finalize_rpath" 3920c76ae52dSmrg test "$mode" != relink && rpath="$compile_rpath$rpath" 3921c76ae52dSmrg for libdir in $rpath; do 3922c76ae52dSmrg if test -n "$hardcode_libdir_flag_spec"; then 3923c76ae52dSmrg if test -n "$hardcode_libdir_separator"; then 3924c76ae52dSmrg if test -z "$hardcode_libdirs"; then 3925c76ae52dSmrg hardcode_libdirs="$libdir" 3926c76ae52dSmrg else 3927c76ae52dSmrg # Just accumulate the unique libdirs. 3928c76ae52dSmrg case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 3929c76ae52dSmrg *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 3930c76ae52dSmrg ;; 3931c76ae52dSmrg *) 3932c76ae52dSmrg hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 3933c76ae52dSmrg ;; 3934c76ae52dSmrg esac 3935c76ae52dSmrg fi 3936c76ae52dSmrg else 3937c76ae52dSmrg eval flag=\"$hardcode_libdir_flag_spec\" 3938c76ae52dSmrg dep_rpath="$dep_rpath $flag" 3939c76ae52dSmrg fi 3940c76ae52dSmrg elif test -n "$runpath_var"; then 3941c76ae52dSmrg case "$perm_rpath " in 3942c76ae52dSmrg *" $libdir "*) ;; 3943c76ae52dSmrg *) perm_rpath="$perm_rpath $libdir" ;; 3944c76ae52dSmrg esac 3945c76ae52dSmrg fi 3946c76ae52dSmrg done 3947c76ae52dSmrg # Substitute the hardcoded libdirs into the rpath. 3948c76ae52dSmrg if test -n "$hardcode_libdir_separator" && 3949c76ae52dSmrg test -n "$hardcode_libdirs"; then 3950c76ae52dSmrg libdir="$hardcode_libdirs" 3951c76ae52dSmrg if test -n "$hardcode_libdir_flag_spec_ld"; then 39520d590c07Smrg case $archive_cmds in 39530d590c07Smrg *\$LD*) eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" ;; 39540d590c07Smrg *) eval dep_rpath=\"$hardcode_libdir_flag_spec\" ;; 39550d590c07Smrg esac 3956c76ae52dSmrg else 3957c76ae52dSmrg eval dep_rpath=\"$hardcode_libdir_flag_spec\" 3958c76ae52dSmrg fi 3959c76ae52dSmrg fi 3960c76ae52dSmrg if test -n "$runpath_var" && test -n "$perm_rpath"; then 3961c76ae52dSmrg # We should set the runpath_var. 3962c76ae52dSmrg rpath= 3963c76ae52dSmrg for dir in $perm_rpath; do 3964c76ae52dSmrg rpath="$rpath$dir:" 3965c76ae52dSmrg done 3966c76ae52dSmrg eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" 3967c76ae52dSmrg fi 3968c76ae52dSmrg test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" 3969c76ae52dSmrg fi 3970c76ae52dSmrg 3971c76ae52dSmrg shlibpath="$finalize_shlibpath" 3972c76ae52dSmrg test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" 3973c76ae52dSmrg if test -n "$shlibpath"; then 3974c76ae52dSmrg eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" 3975c76ae52dSmrg fi 3976c76ae52dSmrg 3977c76ae52dSmrg # Get the real and link names of the library. 3978c76ae52dSmrg eval shared_ext=\"$shrext_cmds\" 3979c76ae52dSmrg eval library_names=\"$library_names_spec\" 3980c76ae52dSmrg set dummy $library_names 3981c76ae52dSmrg realname="$2" 3982c76ae52dSmrg shift; shift 3983c76ae52dSmrg 3984c76ae52dSmrg if test -n "$soname_spec"; then 3985c76ae52dSmrg eval soname=\"$soname_spec\" 3986c76ae52dSmrg else 3987c76ae52dSmrg soname="$realname" 3988c76ae52dSmrg fi 3989c76ae52dSmrg if test -z "$dlname"; then 3990c76ae52dSmrg dlname=$soname 3991c76ae52dSmrg fi 3992c76ae52dSmrg 3993c76ae52dSmrg lib="$output_objdir/$realname" 3994c76ae52dSmrg linknames= 3995c76ae52dSmrg for link 3996c76ae52dSmrg do 3997c76ae52dSmrg linknames="$linknames $link" 3998c76ae52dSmrg done 3999c76ae52dSmrg 4000c76ae52dSmrg # Use standard objects if they are pic 4001c76ae52dSmrg test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 4002c76ae52dSmrg 4003c76ae52dSmrg # Prepare the list of exported symbols 4004c76ae52dSmrg if test -z "$export_symbols"; then 4005c76ae52dSmrg if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then 4006c76ae52dSmrg $show "generating symbol list for \`$libname.la'" 4007c76ae52dSmrg export_symbols="$output_objdir/$libname.exp" 4008c76ae52dSmrg $run $rm $export_symbols 4009c76ae52dSmrg cmds=$export_symbols_cmds 4010c76ae52dSmrg save_ifs="$IFS"; IFS='~' 4011c76ae52dSmrg for cmd in $cmds; do 4012c76ae52dSmrg IFS="$save_ifs" 4013c76ae52dSmrg eval cmd=\"$cmd\" 4014c76ae52dSmrg if len=`expr "X$cmd" : ".*"` && 4015c76ae52dSmrg test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then 4016c76ae52dSmrg $show "$cmd" 4017c76ae52dSmrg $run eval "$cmd" || exit $? 4018c76ae52dSmrg skipped_export=false 4019c76ae52dSmrg else 4020c76ae52dSmrg # The command line is too long to execute in one step. 4021c76ae52dSmrg $show "using reloadable object file for export list..." 4022c76ae52dSmrg skipped_export=: 4023c76ae52dSmrg # Break out early, otherwise skipped_export may be 4024c76ae52dSmrg # set to false by a later but shorter cmd. 4025c76ae52dSmrg break 4026c76ae52dSmrg fi 4027c76ae52dSmrg done 4028c76ae52dSmrg IFS="$save_ifs" 4029c76ae52dSmrg if test -n "$export_symbols_regex"; then 4030c76ae52dSmrg $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\"" 4031c76ae52dSmrg $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' 4032c76ae52dSmrg $show "$mv \"${export_symbols}T\" \"$export_symbols\"" 4033c76ae52dSmrg $run eval '$mv "${export_symbols}T" "$export_symbols"' 4034c76ae52dSmrg fi 4035c76ae52dSmrg fi 4036c76ae52dSmrg fi 4037c76ae52dSmrg 4038c76ae52dSmrg if test -n "$export_symbols" && test -n "$include_expsyms"; then 4039c76ae52dSmrg $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"' 4040c76ae52dSmrg fi 4041c76ae52dSmrg 4042c76ae52dSmrg tmp_deplibs= 4043c76ae52dSmrg for test_deplib in $deplibs; do 4044c76ae52dSmrg case " $convenience " in 4045c76ae52dSmrg *" $test_deplib "*) ;; 4046c76ae52dSmrg *) 4047c76ae52dSmrg tmp_deplibs="$tmp_deplibs $test_deplib" 4048c76ae52dSmrg ;; 4049c76ae52dSmrg esac 4050c76ae52dSmrg done 4051c76ae52dSmrg deplibs="$tmp_deplibs" 4052c76ae52dSmrg 4053c76ae52dSmrg if test -n "$convenience"; then 4054c76ae52dSmrg if test -n "$whole_archive_flag_spec"; then 4055c76ae52dSmrg save_libobjs=$libobjs 4056c76ae52dSmrg eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 4057c76ae52dSmrg else 4058c76ae52dSmrg gentop="$output_objdir/${outputname}x" 4059c76ae52dSmrg generated="$generated $gentop" 4060c76ae52dSmrg 4061c76ae52dSmrg func_extract_archives $gentop $convenience 4062c76ae52dSmrg libobjs="$libobjs $func_extract_archives_result" 4063c76ae52dSmrg fi 4064c76ae52dSmrg fi 4065c76ae52dSmrg 4066c76ae52dSmrg if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then 4067c76ae52dSmrg eval flag=\"$thread_safe_flag_spec\" 4068c76ae52dSmrg linker_flags="$linker_flags $flag" 4069c76ae52dSmrg fi 4070c76ae52dSmrg 4071c76ae52dSmrg # Make a backup of the uninstalled library when relinking 4072c76ae52dSmrg if test "$mode" = relink; then 4073c76ae52dSmrg $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $? 4074c76ae52dSmrg fi 4075c76ae52dSmrg 4076c76ae52dSmrg # Do each of the archive commands. 4077c76ae52dSmrg if test "$module" = yes && test -n "$module_cmds" ; then 4078c76ae52dSmrg if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 4079c76ae52dSmrg eval test_cmds=\"$module_expsym_cmds\" 4080c76ae52dSmrg cmds=$module_expsym_cmds 4081c76ae52dSmrg else 4082c76ae52dSmrg eval test_cmds=\"$module_cmds\" 4083c76ae52dSmrg cmds=$module_cmds 4084c76ae52dSmrg fi 4085c76ae52dSmrg else 4086c76ae52dSmrg if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 4087c76ae52dSmrg eval test_cmds=\"$archive_expsym_cmds\" 4088c76ae52dSmrg cmds=$archive_expsym_cmds 4089c76ae52dSmrg else 4090c76ae52dSmrg eval test_cmds=\"$archive_cmds\" 4091c76ae52dSmrg cmds=$archive_cmds 4092c76ae52dSmrg fi 4093c76ae52dSmrg fi 4094c76ae52dSmrg 4095c76ae52dSmrg if test "X$skipped_export" != "X:" && 4096c76ae52dSmrg len=`expr "X$test_cmds" : ".*" 2>/dev/null` && 4097c76ae52dSmrg test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then 4098c76ae52dSmrg : 4099c76ae52dSmrg else 4100c76ae52dSmrg # The command line is too long to link in one step, link piecewise. 4101c76ae52dSmrg $echo "creating reloadable object files..." 4102c76ae52dSmrg 4103c76ae52dSmrg # Save the value of $output and $libobjs because we want to 4104c76ae52dSmrg # use them later. If we have whole_archive_flag_spec, we 4105c76ae52dSmrg # want to use save_libobjs as it was before 4106c76ae52dSmrg # whole_archive_flag_spec was expanded, because we can't 4107c76ae52dSmrg # assume the linker understands whole_archive_flag_spec. 4108c76ae52dSmrg # This may have to be revisited, in case too many 4109c76ae52dSmrg # convenience libraries get linked in and end up exceeding 4110c76ae52dSmrg # the spec. 4111c76ae52dSmrg if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then 4112c76ae52dSmrg save_libobjs=$libobjs 4113c76ae52dSmrg fi 4114c76ae52dSmrg save_output=$output 4115c76ae52dSmrg output_la=`$echo "X$output" | $Xsed -e "$basename"` 4116c76ae52dSmrg 4117c76ae52dSmrg # Clear the reloadable object creation command queue and 4118c76ae52dSmrg # initialize k to one. 4119c76ae52dSmrg test_cmds= 4120c76ae52dSmrg concat_cmds= 4121c76ae52dSmrg objlist= 4122c76ae52dSmrg delfiles= 4123c76ae52dSmrg last_robj= 4124c76ae52dSmrg k=1 4125c76ae52dSmrg output=$output_objdir/$output_la-${k}.$objext 4126c76ae52dSmrg # Loop over the list of objects to be linked. 4127c76ae52dSmrg for obj in $save_libobjs 4128c76ae52dSmrg do 4129c76ae52dSmrg eval test_cmds=\"$reload_cmds $objlist $last_robj\" 4130c76ae52dSmrg if test "X$objlist" = X || 4131c76ae52dSmrg { len=`expr "X$test_cmds" : ".*" 2>/dev/null` && 4132c76ae52dSmrg test "$len" -le "$max_cmd_len"; }; then 4133c76ae52dSmrg objlist="$objlist $obj" 4134c76ae52dSmrg else 4135c76ae52dSmrg # The command $test_cmds is almost too long, add a 4136c76ae52dSmrg # command to the queue. 4137c76ae52dSmrg if test "$k" -eq 1 ; then 4138c76ae52dSmrg # The first file doesn't have a previous command to add. 4139c76ae52dSmrg eval concat_cmds=\"$reload_cmds $objlist $last_robj\" 4140c76ae52dSmrg else 4141c76ae52dSmrg # All subsequent reloadable object files will link in 4142c76ae52dSmrg # the last one created. 4143c76ae52dSmrg eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\" 4144c76ae52dSmrg fi 4145c76ae52dSmrg last_robj=$output_objdir/$output_la-${k}.$objext 4146c76ae52dSmrg k=`expr $k + 1` 4147c76ae52dSmrg output=$output_objdir/$output_la-${k}.$objext 4148c76ae52dSmrg objlist=$obj 4149c76ae52dSmrg len=1 4150c76ae52dSmrg fi 4151c76ae52dSmrg done 4152c76ae52dSmrg # Handle the remaining objects by creating one last 4153c76ae52dSmrg # reloadable object file. All subsequent reloadable object 4154c76ae52dSmrg # files will link in the last one created. 4155c76ae52dSmrg test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 4156c76ae52dSmrg eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" 4157c76ae52dSmrg 4158c76ae52dSmrg if ${skipped_export-false}; then 4159c76ae52dSmrg $show "generating symbol list for \`$libname.la'" 4160c76ae52dSmrg export_symbols="$output_objdir/$libname.exp" 4161c76ae52dSmrg $run $rm $export_symbols 4162c76ae52dSmrg libobjs=$output 4163c76ae52dSmrg # Append the command to create the export file. 4164c76ae52dSmrg eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\" 4165c76ae52dSmrg fi 4166c76ae52dSmrg 4167c76ae52dSmrg # Set up a command to remove the reloadable object files 4168c76ae52dSmrg # after they are used. 4169c76ae52dSmrg i=0 4170c76ae52dSmrg while test "$i" -lt "$k" 4171c76ae52dSmrg do 4172c76ae52dSmrg i=`expr $i + 1` 4173c76ae52dSmrg delfiles="$delfiles $output_objdir/$output_la-${i}.$objext" 4174c76ae52dSmrg done 4175c76ae52dSmrg 4176c76ae52dSmrg $echo "creating a temporary reloadable object file: $output" 4177c76ae52dSmrg 4178c76ae52dSmrg # Loop through the commands generated above and execute them. 4179c76ae52dSmrg save_ifs="$IFS"; IFS='~' 4180c76ae52dSmrg for cmd in $concat_cmds; do 4181c76ae52dSmrg IFS="$save_ifs" 4182c76ae52dSmrg $show "$cmd" 4183c76ae52dSmrg $run eval "$cmd" || exit $? 4184c76ae52dSmrg done 4185c76ae52dSmrg IFS="$save_ifs" 4186c76ae52dSmrg 4187c76ae52dSmrg libobjs=$output 4188c76ae52dSmrg # Restore the value of output. 4189c76ae52dSmrg output=$save_output 4190c76ae52dSmrg 4191c76ae52dSmrg if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then 4192c76ae52dSmrg eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 4193c76ae52dSmrg fi 4194c76ae52dSmrg # Expand the library linking commands again to reset the 4195c76ae52dSmrg # value of $libobjs for piecewise linking. 4196c76ae52dSmrg 4197c76ae52dSmrg # Do each of the archive commands. 4198c76ae52dSmrg if test "$module" = yes && test -n "$module_cmds" ; then 4199c76ae52dSmrg if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 4200c76ae52dSmrg cmds=$module_expsym_cmds 4201c76ae52dSmrg else 4202c76ae52dSmrg cmds=$module_cmds 4203c76ae52dSmrg fi 4204c76ae52dSmrg else 4205c76ae52dSmrg if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 4206c76ae52dSmrg cmds=$archive_expsym_cmds 4207c76ae52dSmrg else 4208c76ae52dSmrg cmds=$archive_cmds 4209c76ae52dSmrg fi 4210c76ae52dSmrg fi 4211c76ae52dSmrg 4212c76ae52dSmrg # Append the command to remove the reloadable object files 4213c76ae52dSmrg # to the just-reset $cmds. 4214c76ae52dSmrg eval cmds=\"\$cmds~\$rm $delfiles\" 4215c76ae52dSmrg fi 4216c76ae52dSmrg save_ifs="$IFS"; IFS='~' 4217c76ae52dSmrg for cmd in $cmds; do 4218c76ae52dSmrg IFS="$save_ifs" 4219c76ae52dSmrg eval cmd=\"$cmd\" 4220c76ae52dSmrg $show "$cmd" 4221c76ae52dSmrg $run eval "$cmd" || { 4222c76ae52dSmrg lt_exit=$? 4223c76ae52dSmrg 4224c76ae52dSmrg # Restore the uninstalled library and exit 4225c76ae52dSmrg if test "$mode" = relink; then 4226c76ae52dSmrg $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)' 4227c76ae52dSmrg fi 4228c76ae52dSmrg 4229c76ae52dSmrg exit $lt_exit 4230c76ae52dSmrg } 4231c76ae52dSmrg done 4232c76ae52dSmrg IFS="$save_ifs" 4233c76ae52dSmrg 4234c76ae52dSmrg # Restore the uninstalled library and exit 4235c76ae52dSmrg if test "$mode" = relink; then 4236c76ae52dSmrg $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $? 4237c76ae52dSmrg 4238c76ae52dSmrg if test -n "$convenience"; then 4239c76ae52dSmrg if test -z "$whole_archive_flag_spec"; then 4240c76ae52dSmrg $show "${rm}r $gentop" 4241c76ae52dSmrg $run ${rm}r "$gentop" 4242c76ae52dSmrg fi 4243c76ae52dSmrg fi 4244c76ae52dSmrg 4245c76ae52dSmrg exit $EXIT_SUCCESS 4246c76ae52dSmrg fi 4247c76ae52dSmrg 4248c76ae52dSmrg # Create links to the real library. 4249c76ae52dSmrg for linkname in $linknames; do 4250c76ae52dSmrg if test "$realname" != "$linkname"; then 4251c76ae52dSmrg $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)" 4252c76ae52dSmrg $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $? 4253c76ae52dSmrg fi 4254c76ae52dSmrg done 4255c76ae52dSmrg 4256c76ae52dSmrg # If -module or -export-dynamic was specified, set the dlname. 4257c76ae52dSmrg if test "$module" = yes || test "$export_dynamic" = yes; then 4258c76ae52dSmrg # On all known operating systems, these are identical. 4259c76ae52dSmrg dlname="$soname" 4260c76ae52dSmrg fi 4261c76ae52dSmrg fi 4262c76ae52dSmrg ;; 4263c76ae52dSmrg 4264c76ae52dSmrg obj) 42650d590c07Smrg case " $deplibs" in 42660d590c07Smrg *\ -l* | *\ -L*) 42670d590c07Smrg $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 ;; 42680d590c07Smrg esac 4269c76ae52dSmrg 4270c76ae52dSmrg if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 4271c76ae52dSmrg $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2 4272c76ae52dSmrg fi 4273c76ae52dSmrg 4274c76ae52dSmrg if test -n "$rpath"; then 4275c76ae52dSmrg $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2 4276c76ae52dSmrg fi 4277c76ae52dSmrg 4278c76ae52dSmrg if test -n "$xrpath"; then 4279c76ae52dSmrg $echo "$modename: warning: \`-R' is ignored for objects" 1>&2 4280c76ae52dSmrg fi 4281c76ae52dSmrg 4282c76ae52dSmrg if test -n "$vinfo"; then 4283c76ae52dSmrg $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2 4284c76ae52dSmrg fi 4285c76ae52dSmrg 4286c76ae52dSmrg if test -n "$release"; then 4287c76ae52dSmrg $echo "$modename: warning: \`-release' is ignored for objects" 1>&2 4288c76ae52dSmrg fi 4289c76ae52dSmrg 4290c76ae52dSmrg case $output in 4291c76ae52dSmrg *.lo) 4292c76ae52dSmrg if test -n "$objs$old_deplibs"; then 4293c76ae52dSmrg $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 4294c76ae52dSmrg exit $EXIT_FAILURE 4295c76ae52dSmrg fi 4296c76ae52dSmrg libobj="$output" 4297c76ae52dSmrg obj=`$echo "X$output" | $Xsed -e "$lo2o"` 4298c76ae52dSmrg ;; 4299c76ae52dSmrg *) 4300c76ae52dSmrg libobj= 4301c76ae52dSmrg obj="$output" 4302c76ae52dSmrg ;; 4303c76ae52dSmrg esac 4304c76ae52dSmrg 4305c76ae52dSmrg # Delete the old objects. 4306c76ae52dSmrg $run $rm $obj $libobj 4307c76ae52dSmrg 4308c76ae52dSmrg # Objects from convenience libraries. This assumes 4309c76ae52dSmrg # single-version convenience libraries. Whenever we create 4310c76ae52dSmrg # different ones for PIC/non-PIC, this we'll have to duplicate 4311c76ae52dSmrg # the extraction. 4312c76ae52dSmrg reload_conv_objs= 4313c76ae52dSmrg gentop= 4314c76ae52dSmrg # reload_cmds runs $LD directly, so let us get rid of 43150d590c07Smrg # -Wl from whole_archive_flag_spec and hope we can get by with 43160d590c07Smrg # turning comma into space.. 4317c76ae52dSmrg wl= 4318c76ae52dSmrg 4319c76ae52dSmrg if test -n "$convenience"; then 4320c76ae52dSmrg if test -n "$whole_archive_flag_spec"; then 43210d590c07Smrg eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" 43220d590c07Smrg reload_conv_objs=$reload_objs\ `$echo "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'` 4323c76ae52dSmrg else 4324c76ae52dSmrg gentop="$output_objdir/${obj}x" 4325c76ae52dSmrg generated="$generated $gentop" 4326c76ae52dSmrg 4327c76ae52dSmrg func_extract_archives $gentop $convenience 4328c76ae52dSmrg reload_conv_objs="$reload_objs $func_extract_archives_result" 4329c76ae52dSmrg fi 4330c76ae52dSmrg fi 4331c76ae52dSmrg 4332c76ae52dSmrg # Create the old-style object. 4333c76ae52dSmrg 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 4334c76ae52dSmrg 4335c76ae52dSmrg output="$obj" 4336c76ae52dSmrg cmds=$reload_cmds 4337c76ae52dSmrg save_ifs="$IFS"; IFS='~' 4338c76ae52dSmrg for cmd in $cmds; do 4339c76ae52dSmrg IFS="$save_ifs" 4340c76ae52dSmrg eval cmd=\"$cmd\" 4341c76ae52dSmrg $show "$cmd" 4342c76ae52dSmrg $run eval "$cmd" || exit $? 4343c76ae52dSmrg done 4344c76ae52dSmrg IFS="$save_ifs" 4345c76ae52dSmrg 4346c76ae52dSmrg # Exit if we aren't doing a library object file. 4347c76ae52dSmrg if test -z "$libobj"; then 4348c76ae52dSmrg if test -n "$gentop"; then 4349c76ae52dSmrg $show "${rm}r $gentop" 4350c76ae52dSmrg $run ${rm}r $gentop 4351c76ae52dSmrg fi 4352c76ae52dSmrg 4353c76ae52dSmrg exit $EXIT_SUCCESS 4354c76ae52dSmrg fi 4355c76ae52dSmrg 4356c76ae52dSmrg if test "$build_libtool_libs" != yes; then 4357c76ae52dSmrg if test -n "$gentop"; then 4358c76ae52dSmrg $show "${rm}r $gentop" 4359c76ae52dSmrg $run ${rm}r $gentop 4360c76ae52dSmrg fi 4361c76ae52dSmrg 4362c76ae52dSmrg # Create an invalid libtool object if no PIC, so that we don't 4363c76ae52dSmrg # accidentally link it into a program. 4364c76ae52dSmrg # $show "echo timestamp > $libobj" 4365c76ae52dSmrg # $run eval "echo timestamp > $libobj" || exit $? 4366c76ae52dSmrg exit $EXIT_SUCCESS 4367c76ae52dSmrg fi 4368c76ae52dSmrg 4369c76ae52dSmrg if test -n "$pic_flag" || test "$pic_mode" != default; then 4370c76ae52dSmrg # Only do commands if we really have different PIC objects. 4371c76ae52dSmrg reload_objs="$libobjs $reload_conv_objs" 4372c76ae52dSmrg output="$libobj" 4373c76ae52dSmrg cmds=$reload_cmds 4374c76ae52dSmrg save_ifs="$IFS"; IFS='~' 4375c76ae52dSmrg for cmd in $cmds; do 4376c76ae52dSmrg IFS="$save_ifs" 4377c76ae52dSmrg eval cmd=\"$cmd\" 4378c76ae52dSmrg $show "$cmd" 4379c76ae52dSmrg $run eval "$cmd" || exit $? 4380c76ae52dSmrg done 4381c76ae52dSmrg IFS="$save_ifs" 4382c76ae52dSmrg fi 4383c76ae52dSmrg 4384c76ae52dSmrg if test -n "$gentop"; then 4385c76ae52dSmrg $show "${rm}r $gentop" 4386c76ae52dSmrg $run ${rm}r $gentop 4387c76ae52dSmrg fi 4388c76ae52dSmrg 4389c76ae52dSmrg exit $EXIT_SUCCESS 4390c76ae52dSmrg ;; 4391c76ae52dSmrg 4392c76ae52dSmrg prog) 4393c76ae52dSmrg case $host in 4394c76ae52dSmrg *cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;; 4395c76ae52dSmrg esac 4396c76ae52dSmrg if test -n "$vinfo"; then 4397c76ae52dSmrg $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2 4398c76ae52dSmrg fi 4399c76ae52dSmrg 4400c76ae52dSmrg if test -n "$release"; then 4401c76ae52dSmrg $echo "$modename: warning: \`-release' is ignored for programs" 1>&2 4402c76ae52dSmrg fi 4403c76ae52dSmrg 4404c76ae52dSmrg if test "$preload" = yes; then 4405c76ae52dSmrg if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown && 4406c76ae52dSmrg test "$dlopen_self_static" = unknown; then 4407c76ae52dSmrg $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support." 4408c76ae52dSmrg fi 4409c76ae52dSmrg fi 4410c76ae52dSmrg 4411c76ae52dSmrg case $host in 4412c76ae52dSmrg *-*-rhapsody* | *-*-darwin1.[012]) 4413c76ae52dSmrg # On Rhapsody replace the C library is the System framework 4414c76ae52dSmrg compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'` 4415c76ae52dSmrg finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'` 4416c76ae52dSmrg ;; 4417c76ae52dSmrg esac 4418c76ae52dSmrg 4419c76ae52dSmrg case $host in 4420c76ae52dSmrg *darwin*) 4421c76ae52dSmrg # Don't allow lazy linking, it breaks C++ global constructors 4422c76ae52dSmrg if test "$tagname" = CXX ; then 4423c76ae52dSmrg compile_command="$compile_command ${wl}-bind_at_load" 4424c76ae52dSmrg finalize_command="$finalize_command ${wl}-bind_at_load" 4425c76ae52dSmrg fi 4426c76ae52dSmrg ;; 4427c76ae52dSmrg esac 4428c76ae52dSmrg 4429c76ae52dSmrg 4430c76ae52dSmrg # move library search paths that coincide with paths to not yet 4431c76ae52dSmrg # installed libraries to the beginning of the library search list 4432c76ae52dSmrg new_libs= 4433c76ae52dSmrg for path in $notinst_path; do 4434c76ae52dSmrg case " $new_libs " in 4435c76ae52dSmrg *" -L$path/$objdir "*) ;; 4436c76ae52dSmrg *) 4437c76ae52dSmrg case " $compile_deplibs " in 4438c76ae52dSmrg *" -L$path/$objdir "*) 4439c76ae52dSmrg new_libs="$new_libs -L$path/$objdir" ;; 4440c76ae52dSmrg esac 4441c76ae52dSmrg ;; 4442c76ae52dSmrg esac 4443c76ae52dSmrg done 4444c76ae52dSmrg for deplib in $compile_deplibs; do 4445c76ae52dSmrg case $deplib in 4446c76ae52dSmrg -L*) 4447c76ae52dSmrg case " $new_libs " in 4448c76ae52dSmrg *" $deplib "*) ;; 4449c76ae52dSmrg *) new_libs="$new_libs $deplib" ;; 4450c76ae52dSmrg esac 4451c76ae52dSmrg ;; 4452c76ae52dSmrg *) new_libs="$new_libs $deplib" ;; 4453c76ae52dSmrg esac 4454c76ae52dSmrg done 4455c76ae52dSmrg compile_deplibs="$new_libs" 4456c76ae52dSmrg 4457c76ae52dSmrg 4458c76ae52dSmrg compile_command="$compile_command $compile_deplibs" 4459c76ae52dSmrg finalize_command="$finalize_command $finalize_deplibs" 4460c76ae52dSmrg 4461c76ae52dSmrg if test -n "$rpath$xrpath"; then 4462c76ae52dSmrg # If the user specified any rpath flags, then add them. 4463c76ae52dSmrg for libdir in $rpath $xrpath; do 4464c76ae52dSmrg # This is the magic to use -rpath. 4465c76ae52dSmrg case "$finalize_rpath " in 4466c76ae52dSmrg *" $libdir "*) ;; 4467c76ae52dSmrg *) finalize_rpath="$finalize_rpath $libdir" ;; 4468c76ae52dSmrg esac 4469c76ae52dSmrg done 4470c76ae52dSmrg fi 4471c76ae52dSmrg 4472c76ae52dSmrg # Now hardcode the library paths 4473c76ae52dSmrg rpath= 4474c76ae52dSmrg hardcode_libdirs= 4475c76ae52dSmrg for libdir in $compile_rpath $finalize_rpath; do 4476c76ae52dSmrg if test -n "$hardcode_libdir_flag_spec"; then 4477c76ae52dSmrg if test -n "$hardcode_libdir_separator"; then 4478c76ae52dSmrg if test -z "$hardcode_libdirs"; then 4479c76ae52dSmrg hardcode_libdirs="$libdir" 4480c76ae52dSmrg else 4481c76ae52dSmrg # Just accumulate the unique libdirs. 4482c76ae52dSmrg case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 4483c76ae52dSmrg *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 4484c76ae52dSmrg ;; 4485c76ae52dSmrg *) 4486c76ae52dSmrg hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 4487c76ae52dSmrg ;; 4488c76ae52dSmrg esac 4489c76ae52dSmrg fi 4490c76ae52dSmrg else 4491c76ae52dSmrg eval flag=\"$hardcode_libdir_flag_spec\" 4492c76ae52dSmrg rpath="$rpath $flag" 4493c76ae52dSmrg fi 4494c76ae52dSmrg elif test -n "$runpath_var"; then 4495c76ae52dSmrg case "$perm_rpath " in 4496c76ae52dSmrg *" $libdir "*) ;; 4497c76ae52dSmrg *) perm_rpath="$perm_rpath $libdir" ;; 4498c76ae52dSmrg esac 4499c76ae52dSmrg fi 4500c76ae52dSmrg case $host in 4501c76ae52dSmrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) 4502c76ae52dSmrg testbindir=`$echo "X$libdir" | $Xsed -e 's*/lib$*/bin*'` 4503c76ae52dSmrg case :$dllsearchpath: in 4504c76ae52dSmrg *":$libdir:"*) ;; 4505c76ae52dSmrg *) dllsearchpath="$dllsearchpath:$libdir";; 4506c76ae52dSmrg esac 4507c76ae52dSmrg case :$dllsearchpath: in 4508c76ae52dSmrg *":$testbindir:"*) ;; 4509c76ae52dSmrg *) dllsearchpath="$dllsearchpath:$testbindir";; 4510c76ae52dSmrg esac 4511c76ae52dSmrg ;; 4512c76ae52dSmrg esac 4513c76ae52dSmrg done 4514c76ae52dSmrg # Substitute the hardcoded libdirs into the rpath. 4515c76ae52dSmrg if test -n "$hardcode_libdir_separator" && 4516c76ae52dSmrg test -n "$hardcode_libdirs"; then 4517c76ae52dSmrg libdir="$hardcode_libdirs" 4518c76ae52dSmrg eval rpath=\" $hardcode_libdir_flag_spec\" 4519c76ae52dSmrg fi 4520c76ae52dSmrg compile_rpath="$rpath" 4521c76ae52dSmrg 4522c76ae52dSmrg rpath= 4523c76ae52dSmrg hardcode_libdirs= 4524c76ae52dSmrg for libdir in $finalize_rpath; do 4525c76ae52dSmrg if test -n "$hardcode_libdir_flag_spec"; then 4526c76ae52dSmrg if test -n "$hardcode_libdir_separator"; then 4527c76ae52dSmrg if test -z "$hardcode_libdirs"; then 4528c76ae52dSmrg hardcode_libdirs="$libdir" 4529c76ae52dSmrg else 4530c76ae52dSmrg # Just accumulate the unique libdirs. 4531c76ae52dSmrg case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 4532c76ae52dSmrg *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 4533c76ae52dSmrg ;; 4534c76ae52dSmrg *) 4535c76ae52dSmrg hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 4536c76ae52dSmrg ;; 4537c76ae52dSmrg esac 4538c76ae52dSmrg fi 4539c76ae52dSmrg else 4540c76ae52dSmrg eval flag=\"$hardcode_libdir_flag_spec\" 4541c76ae52dSmrg rpath="$rpath $flag" 4542c76ae52dSmrg fi 4543c76ae52dSmrg elif test -n "$runpath_var"; then 4544c76ae52dSmrg case "$finalize_perm_rpath " in 4545c76ae52dSmrg *" $libdir "*) ;; 4546c76ae52dSmrg *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; 4547c76ae52dSmrg esac 4548c76ae52dSmrg fi 4549c76ae52dSmrg done 4550c76ae52dSmrg # Substitute the hardcoded libdirs into the rpath. 4551c76ae52dSmrg if test -n "$hardcode_libdir_separator" && 4552c76ae52dSmrg test -n "$hardcode_libdirs"; then 4553c76ae52dSmrg libdir="$hardcode_libdirs" 4554c76ae52dSmrg eval rpath=\" $hardcode_libdir_flag_spec\" 4555c76ae52dSmrg fi 4556c76ae52dSmrg finalize_rpath="$rpath" 4557c76ae52dSmrg 4558c76ae52dSmrg if test -n "$libobjs" && test "$build_old_libs" = yes; then 4559c76ae52dSmrg # Transform all the library objects into standard objects. 4560c76ae52dSmrg compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 4561c76ae52dSmrg finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 4562c76ae52dSmrg fi 4563c76ae52dSmrg 4564c76ae52dSmrg dlsyms= 4565c76ae52dSmrg if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 4566c76ae52dSmrg if test -n "$NM" && test -n "$global_symbol_pipe"; then 4567c76ae52dSmrg dlsyms="${outputname}S.c" 4568c76ae52dSmrg else 4569c76ae52dSmrg $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2 4570c76ae52dSmrg fi 4571c76ae52dSmrg fi 4572c76ae52dSmrg 4573c76ae52dSmrg if test -n "$dlsyms"; then 4574c76ae52dSmrg case $dlsyms in 4575c76ae52dSmrg "") ;; 4576c76ae52dSmrg *.c) 4577c76ae52dSmrg # Discover the nlist of each of the dlfiles. 4578c76ae52dSmrg nlist="$output_objdir/${outputname}.nm" 4579c76ae52dSmrg 4580c76ae52dSmrg $show "$rm $nlist ${nlist}S ${nlist}T" 4581c76ae52dSmrg $run $rm "$nlist" "${nlist}S" "${nlist}T" 4582c76ae52dSmrg 4583c76ae52dSmrg # Parse the name list into a source file. 4584c76ae52dSmrg $show "creating $output_objdir/$dlsyms" 4585c76ae52dSmrg 4586c76ae52dSmrg test -z "$run" && $echo > "$output_objdir/$dlsyms" "\ 4587c76ae52dSmrg/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */ 4588c76ae52dSmrg/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */ 4589c76ae52dSmrg 4590c76ae52dSmrg#ifdef __cplusplus 4591c76ae52dSmrgextern \"C\" { 4592c76ae52dSmrg#endif 4593c76ae52dSmrg 4594c76ae52dSmrg/* Prevent the only kind of declaration conflicts we can make. */ 4595c76ae52dSmrg#define lt_preloaded_symbols some_other_symbol 4596c76ae52dSmrg 4597c76ae52dSmrg/* External symbol declarations for the compiler. */\ 4598c76ae52dSmrg" 4599c76ae52dSmrg 4600c76ae52dSmrg if test "$dlself" = yes; then 4601c76ae52dSmrg $show "generating symbol list for \`$output'" 4602c76ae52dSmrg 4603c76ae52dSmrg test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist" 4604c76ae52dSmrg 4605c76ae52dSmrg # Add our own program objects to the symbol list. 4606c76ae52dSmrg progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 4607c76ae52dSmrg for arg in $progfiles; do 4608c76ae52dSmrg $show "extracting global C symbols from \`$arg'" 4609c76ae52dSmrg $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" 4610c76ae52dSmrg done 4611c76ae52dSmrg 4612c76ae52dSmrg if test -n "$exclude_expsyms"; then 4613c76ae52dSmrg $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' 4614c76ae52dSmrg $run eval '$mv "$nlist"T "$nlist"' 4615c76ae52dSmrg fi 4616c76ae52dSmrg 4617c76ae52dSmrg if test -n "$export_symbols_regex"; then 4618c76ae52dSmrg $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' 4619c76ae52dSmrg $run eval '$mv "$nlist"T "$nlist"' 4620c76ae52dSmrg fi 4621c76ae52dSmrg 4622c76ae52dSmrg # Prepare the list of exported symbols 4623c76ae52dSmrg if test -z "$export_symbols"; then 4624c76ae52dSmrg export_symbols="$output_objdir/$outputname.exp" 4625c76ae52dSmrg $run $rm $export_symbols 4626c76ae52dSmrg $run eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' 4627c76ae52dSmrg case $host in 4628c76ae52dSmrg *cygwin* | *mingw* ) 4629c76ae52dSmrg $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 4630c76ae52dSmrg $run eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' 4631c76ae52dSmrg ;; 4632c76ae52dSmrg esac 4633c76ae52dSmrg else 4634c76ae52dSmrg $run eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' 4635c76ae52dSmrg $run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' 4636c76ae52dSmrg $run eval 'mv "$nlist"T "$nlist"' 4637c76ae52dSmrg case $host in 4638c76ae52dSmrg *cygwin* | *mingw* ) 4639c76ae52dSmrg $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 4640c76ae52dSmrg $run eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' 4641c76ae52dSmrg ;; 4642c76ae52dSmrg esac 4643c76ae52dSmrg fi 4644c76ae52dSmrg fi 4645c76ae52dSmrg 4646c76ae52dSmrg for arg in $dlprefiles; do 4647c76ae52dSmrg $show "extracting global C symbols from \`$arg'" 4648c76ae52dSmrg name=`$echo "$arg" | ${SED} -e 's%^.*/%%'` 4649c76ae52dSmrg $run eval '$echo ": $name " >> "$nlist"' 4650c76ae52dSmrg $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" 4651c76ae52dSmrg done 4652c76ae52dSmrg 4653c76ae52dSmrg if test -z "$run"; then 4654c76ae52dSmrg # Make sure we have at least an empty file. 4655c76ae52dSmrg test -f "$nlist" || : > "$nlist" 4656c76ae52dSmrg 4657c76ae52dSmrg if test -n "$exclude_expsyms"; then 4658c76ae52dSmrg $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T 4659c76ae52dSmrg $mv "$nlist"T "$nlist" 4660c76ae52dSmrg fi 4661c76ae52dSmrg 4662c76ae52dSmrg # Try sorting and uniquifying the output. 4663c76ae52dSmrg if grep -v "^: " < "$nlist" | 4664c76ae52dSmrg if sort -k 3 </dev/null >/dev/null 2>&1; then 4665c76ae52dSmrg sort -k 3 4666c76ae52dSmrg else 4667c76ae52dSmrg sort +2 4668c76ae52dSmrg fi | 4669c76ae52dSmrg uniq > "$nlist"S; then 4670c76ae52dSmrg : 4671c76ae52dSmrg else 4672c76ae52dSmrg grep -v "^: " < "$nlist" > "$nlist"S 4673c76ae52dSmrg fi 4674c76ae52dSmrg 4675c76ae52dSmrg if test -f "$nlist"S; then 4676c76ae52dSmrg eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"' 4677c76ae52dSmrg else 4678c76ae52dSmrg $echo '/* NONE */' >> "$output_objdir/$dlsyms" 4679c76ae52dSmrg fi 4680c76ae52dSmrg 4681c76ae52dSmrg $echo >> "$output_objdir/$dlsyms" "\ 4682c76ae52dSmrg 4683c76ae52dSmrg#undef lt_preloaded_symbols 4684c76ae52dSmrg 4685c76ae52dSmrg#if defined (__STDC__) && __STDC__ 4686c76ae52dSmrg# define lt_ptr void * 4687c76ae52dSmrg#else 4688c76ae52dSmrg# define lt_ptr char * 4689c76ae52dSmrg# define const 4690c76ae52dSmrg#endif 4691c76ae52dSmrg 4692c76ae52dSmrg/* The mapping between symbol names and symbols. */ 4693c76ae52dSmrg" 4694c76ae52dSmrg 4695c76ae52dSmrg case $host in 4696c76ae52dSmrg *cygwin* | *mingw* ) 4697c76ae52dSmrg $echo >> "$output_objdir/$dlsyms" "\ 4698c76ae52dSmrg/* DATA imports from DLLs on WIN32 can't be const, because 4699c76ae52dSmrg runtime relocations are performed -- see ld's documentation 4700c76ae52dSmrg on pseudo-relocs */ 4701c76ae52dSmrgstruct { 4702c76ae52dSmrg" 4703c76ae52dSmrg ;; 4704c76ae52dSmrg * ) 4705c76ae52dSmrg $echo >> "$output_objdir/$dlsyms" "\ 4706c76ae52dSmrgconst struct { 4707c76ae52dSmrg" 4708c76ae52dSmrg ;; 4709c76ae52dSmrg esac 4710c76ae52dSmrg 4711c76ae52dSmrg 4712c76ae52dSmrg $echo >> "$output_objdir/$dlsyms" "\ 4713c76ae52dSmrg const char *name; 4714c76ae52dSmrg lt_ptr address; 4715c76ae52dSmrg} 4716c76ae52dSmrglt_preloaded_symbols[] = 4717c76ae52dSmrg{\ 4718c76ae52dSmrg" 4719c76ae52dSmrg 4720c76ae52dSmrg eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms" 4721c76ae52dSmrg 4722c76ae52dSmrg $echo >> "$output_objdir/$dlsyms" "\ 4723c76ae52dSmrg {0, (lt_ptr) 0} 4724c76ae52dSmrg}; 4725c76ae52dSmrg 4726c76ae52dSmrg/* This works around a problem in FreeBSD linker */ 4727c76ae52dSmrg#ifdef FREEBSD_WORKAROUND 4728c76ae52dSmrgstatic const void *lt_preloaded_setup() { 4729c76ae52dSmrg return lt_preloaded_symbols; 4730c76ae52dSmrg} 4731c76ae52dSmrg#endif 4732c76ae52dSmrg 4733c76ae52dSmrg#ifdef __cplusplus 4734c76ae52dSmrg} 4735c76ae52dSmrg#endif\ 4736c76ae52dSmrg" 4737c76ae52dSmrg fi 4738c76ae52dSmrg 4739c76ae52dSmrg pic_flag_for_symtable= 4740c76ae52dSmrg case $host in 4741c76ae52dSmrg # compiling the symbol table file with pic_flag works around 4742c76ae52dSmrg # a FreeBSD bug that causes programs to crash when -lm is 4743c76ae52dSmrg # linked before any other PIC object. But we must not use 4744c76ae52dSmrg # pic_flag when linking with -static. The problem exists in 4745c76ae52dSmrg # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. 4746c76ae52dSmrg *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) 4747c76ae52dSmrg case "$compile_command " in 4748c76ae52dSmrg *" -static "*) ;; 4749c76ae52dSmrg *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";; 4750c76ae52dSmrg esac;; 4751c76ae52dSmrg *-*-hpux*) 4752c76ae52dSmrg case "$compile_command " in 4753c76ae52dSmrg *" -static "*) ;; 4754c76ae52dSmrg *) pic_flag_for_symtable=" $pic_flag";; 4755c76ae52dSmrg esac 4756c76ae52dSmrg esac 4757c76ae52dSmrg 4758c76ae52dSmrg # Now compile the dynamic symbol file. 4759c76ae52dSmrg $show "(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" 4760c76ae52dSmrg $run eval '(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? 4761c76ae52dSmrg 4762c76ae52dSmrg # Clean up the generated files. 4763c76ae52dSmrg $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T" 4764c76ae52dSmrg $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T" 4765c76ae52dSmrg 4766c76ae52dSmrg # Transform the symbol file into the correct name. 4767c76ae52dSmrg case $host in 4768c76ae52dSmrg *cygwin* | *mingw* ) 4769c76ae52dSmrg if test -f "$output_objdir/${outputname}.def" ; then 47700d590c07Smrg compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP` 47710d590c07Smrg finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP` 4772c76ae52dSmrg else 47730d590c07Smrg compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` 47740d590c07Smrg finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` 4775c76ae52dSmrg fi 4776c76ae52dSmrg ;; 4777c76ae52dSmrg * ) 47780d590c07Smrg compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` 47790d590c07Smrg finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` 4780c76ae52dSmrg ;; 4781c76ae52dSmrg esac 4782c76ae52dSmrg ;; 4783c76ae52dSmrg *) 4784c76ae52dSmrg $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 4785c76ae52dSmrg exit $EXIT_FAILURE 4786c76ae52dSmrg ;; 4787c76ae52dSmrg esac 4788c76ae52dSmrg else 4789c76ae52dSmrg # We keep going just in case the user didn't refer to 4790c76ae52dSmrg # lt_preloaded_symbols. The linker will fail if global_symbol_pipe 4791c76ae52dSmrg # really was required. 4792c76ae52dSmrg 4793c76ae52dSmrg # Nullify the symbol file. 47940d590c07Smrg compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP` 47950d590c07Smrg finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP` 4796c76ae52dSmrg fi 4797c76ae52dSmrg 4798c76ae52dSmrg if test "$need_relink" = no || test "$build_libtool_libs" != yes; then 4799c76ae52dSmrg # Replace the output file specification. 48000d590c07Smrg compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$output"'%g' | $NL2SP` 4801c76ae52dSmrg link_command="$compile_command$compile_rpath" 4802c76ae52dSmrg 4803c76ae52dSmrg # We have no uninstalled library dependencies, so finalize right now. 4804c76ae52dSmrg $show "$link_command" 4805c76ae52dSmrg $run eval "$link_command" 4806c76ae52dSmrg exit_status=$? 4807c76ae52dSmrg 4808c76ae52dSmrg # Delete the generated files. 4809c76ae52dSmrg if test -n "$dlsyms"; then 4810c76ae52dSmrg $show "$rm $output_objdir/${outputname}S.${objext}" 4811c76ae52dSmrg $run $rm "$output_objdir/${outputname}S.${objext}" 4812c76ae52dSmrg fi 4813c76ae52dSmrg 4814c76ae52dSmrg exit $exit_status 4815c76ae52dSmrg fi 4816c76ae52dSmrg 4817c76ae52dSmrg if test -n "$shlibpath_var"; then 4818c76ae52dSmrg # We should set the shlibpath_var 4819c76ae52dSmrg rpath= 4820c76ae52dSmrg for dir in $temp_rpath; do 4821c76ae52dSmrg case $dir in 4822c76ae52dSmrg [\\/]* | [A-Za-z]:[\\/]*) 4823c76ae52dSmrg # Absolute path. 4824c76ae52dSmrg rpath="$rpath$dir:" 4825c76ae52dSmrg ;; 4826c76ae52dSmrg *) 4827c76ae52dSmrg # Relative path: add a thisdir entry. 4828c76ae52dSmrg rpath="$rpath\$thisdir/$dir:" 4829c76ae52dSmrg ;; 4830c76ae52dSmrg esac 4831c76ae52dSmrg done 4832c76ae52dSmrg temp_rpath="$rpath" 4833c76ae52dSmrg fi 4834c76ae52dSmrg 4835c76ae52dSmrg if test -n "$compile_shlibpath$finalize_shlibpath"; then 4836c76ae52dSmrg compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" 4837c76ae52dSmrg fi 4838c76ae52dSmrg if test -n "$finalize_shlibpath"; then 4839c76ae52dSmrg finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" 4840c76ae52dSmrg fi 4841c76ae52dSmrg 4842c76ae52dSmrg compile_var= 4843c76ae52dSmrg finalize_var= 4844c76ae52dSmrg if test -n "$runpath_var"; then 4845c76ae52dSmrg if test -n "$perm_rpath"; then 4846c76ae52dSmrg # We should set the runpath_var. 4847c76ae52dSmrg rpath= 4848c76ae52dSmrg for dir in $perm_rpath; do 4849c76ae52dSmrg rpath="$rpath$dir:" 4850c76ae52dSmrg done 4851c76ae52dSmrg compile_var="$runpath_var=\"$rpath\$$runpath_var\" " 4852c76ae52dSmrg fi 4853c76ae52dSmrg if test -n "$finalize_perm_rpath"; then 4854c76ae52dSmrg # We should set the runpath_var. 4855c76ae52dSmrg rpath= 4856c76ae52dSmrg for dir in $finalize_perm_rpath; do 4857c76ae52dSmrg rpath="$rpath$dir:" 4858c76ae52dSmrg done 4859c76ae52dSmrg finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " 4860c76ae52dSmrg fi 4861c76ae52dSmrg fi 4862c76ae52dSmrg 4863c76ae52dSmrg if test "$no_install" = yes; then 4864c76ae52dSmrg # We don't need to create a wrapper script. 4865c76ae52dSmrg link_command="$compile_var$compile_command$compile_rpath" 4866c76ae52dSmrg # Replace the output file specification. 4867c76ae52dSmrg link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` 4868c76ae52dSmrg # Delete the old output file. 4869c76ae52dSmrg $run $rm $output 4870c76ae52dSmrg # Link the executable and exit 4871c76ae52dSmrg $show "$link_command" 4872c76ae52dSmrg $run eval "$link_command" || exit $? 4873c76ae52dSmrg exit $EXIT_SUCCESS 4874c76ae52dSmrg fi 4875c76ae52dSmrg 4876c76ae52dSmrg if test "$hardcode_action" = relink; then 4877c76ae52dSmrg # Fast installation is not supported 4878c76ae52dSmrg link_command="$compile_var$compile_command$compile_rpath" 4879c76ae52dSmrg relink_command="$finalize_var$finalize_command$finalize_rpath" 4880c76ae52dSmrg 4881c76ae52dSmrg $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2 4882c76ae52dSmrg $echo "$modename: \`$output' will be relinked during installation" 1>&2 4883c76ae52dSmrg else 4884c76ae52dSmrg if test "$fast_install" != no; then 4885c76ae52dSmrg link_command="$finalize_var$compile_command$finalize_rpath" 4886c76ae52dSmrg if test "$fast_install" = yes; then 48870d590c07Smrg relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $SP2NL | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g' | $NL2SP` 4888c76ae52dSmrg else 4889c76ae52dSmrg # fast_install is set to needless 4890c76ae52dSmrg relink_command= 4891c76ae52dSmrg fi 4892c76ae52dSmrg else 4893c76ae52dSmrg link_command="$compile_var$compile_command$compile_rpath" 4894c76ae52dSmrg relink_command="$finalize_var$finalize_command$finalize_rpath" 4895c76ae52dSmrg fi 4896c76ae52dSmrg fi 4897c76ae52dSmrg 4898c76ae52dSmrg # Replace the output file specification. 4899c76ae52dSmrg link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` 4900c76ae52dSmrg 4901c76ae52dSmrg # Delete the old output files. 4902c76ae52dSmrg $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname 4903c76ae52dSmrg 4904c76ae52dSmrg $show "$link_command" 4905c76ae52dSmrg $run eval "$link_command" || exit $? 4906c76ae52dSmrg 4907c76ae52dSmrg # Now create the wrapper script. 4908c76ae52dSmrg $show "creating $output" 4909c76ae52dSmrg 4910c76ae52dSmrg # Quote the relink command for shipping. 4911c76ae52dSmrg if test -n "$relink_command"; then 4912c76ae52dSmrg # Preserve any variables that may affect compiler behavior 4913c76ae52dSmrg for var in $variables_saved_for_relink; do 4914c76ae52dSmrg if eval test -z \"\${$var+set}\"; then 4915c76ae52dSmrg relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" 4916c76ae52dSmrg elif eval var_value=\$$var; test -z "$var_value"; then 4917c76ae52dSmrg relink_command="$var=; export $var; $relink_command" 4918c76ae52dSmrg else 4919c76ae52dSmrg var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` 4920c76ae52dSmrg relink_command="$var=\"$var_value\"; export $var; $relink_command" 4921c76ae52dSmrg fi 4922c76ae52dSmrg done 4923c76ae52dSmrg relink_command="(cd `pwd`; $relink_command)" 49240d590c07Smrg relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP` 4925c76ae52dSmrg fi 4926c76ae52dSmrg 4927c76ae52dSmrg # Quote $echo for shipping. 4928c76ae52dSmrg if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then 4929c76ae52dSmrg case $progpath in 4930c76ae52dSmrg [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; 4931c76ae52dSmrg *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; 4932c76ae52dSmrg esac 4933c76ae52dSmrg qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"` 4934c76ae52dSmrg else 4935c76ae52dSmrg qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"` 4936c76ae52dSmrg fi 4937c76ae52dSmrg 4938c76ae52dSmrg # Only actually do things if our run command is non-null. 4939c76ae52dSmrg if test -z "$run"; then 4940c76ae52dSmrg # win32 will think the script is a binary if it has 4941c76ae52dSmrg # a .exe suffix, so we strip it off here. 4942c76ae52dSmrg case $output in 4943c76ae52dSmrg *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;; 4944c76ae52dSmrg esac 4945c76ae52dSmrg # test for cygwin because mv fails w/o .exe extensions 4946c76ae52dSmrg case $host in 4947c76ae52dSmrg *cygwin*) 4948c76ae52dSmrg exeext=.exe 4949c76ae52dSmrg outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;; 4950c76ae52dSmrg *) exeext= ;; 4951c76ae52dSmrg esac 4952c76ae52dSmrg case $host in 4953c76ae52dSmrg *cygwin* | *mingw* ) 4954c76ae52dSmrg output_name=`basename $output` 4955c76ae52dSmrg output_path=`dirname $output` 4956c76ae52dSmrg cwrappersource="$output_path/$objdir/lt-$output_name.c" 4957c76ae52dSmrg cwrapper="$output_path/$output_name.exe" 4958c76ae52dSmrg $rm $cwrappersource $cwrapper 4959c76ae52dSmrg trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 4960c76ae52dSmrg 4961c76ae52dSmrg cat > $cwrappersource <<EOF 4962c76ae52dSmrg 4963c76ae52dSmrg/* $cwrappersource - temporary wrapper executable for $objdir/$outputname 4964c76ae52dSmrg Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP 4965c76ae52dSmrg 4966c76ae52dSmrg The $output program cannot be directly executed until all the libtool 4967c76ae52dSmrg libraries that it depends on are installed. 4968c76ae52dSmrg 4969c76ae52dSmrg This wrapper executable should never be moved out of the build directory. 4970c76ae52dSmrg If it is, it will not operate correctly. 4971c76ae52dSmrg 4972c76ae52dSmrg Currently, it simply execs the wrapper *script* "/bin/sh $output", 4973c76ae52dSmrg but could eventually absorb all of the scripts functionality and 4974c76ae52dSmrg exec $objdir/$outputname directly. 4975c76ae52dSmrg*/ 4976c76ae52dSmrgEOF 4977c76ae52dSmrg cat >> $cwrappersource<<"EOF" 4978c76ae52dSmrg#include <stdio.h> 4979c76ae52dSmrg#include <stdlib.h> 4980c76ae52dSmrg#include <unistd.h> 4981c76ae52dSmrg#include <malloc.h> 4982c76ae52dSmrg#include <stdarg.h> 4983c76ae52dSmrg#include <assert.h> 4984c76ae52dSmrg#include <string.h> 4985c76ae52dSmrg#include <ctype.h> 4986c76ae52dSmrg#include <sys/stat.h> 4987c76ae52dSmrg 4988c76ae52dSmrg#if defined(PATH_MAX) 4989c76ae52dSmrg# define LT_PATHMAX PATH_MAX 4990c76ae52dSmrg#elif defined(MAXPATHLEN) 4991c76ae52dSmrg# define LT_PATHMAX MAXPATHLEN 4992c76ae52dSmrg#else 4993c76ae52dSmrg# define LT_PATHMAX 1024 4994c76ae52dSmrg#endif 4995c76ae52dSmrg 4996c76ae52dSmrg#ifndef DIR_SEPARATOR 4997c76ae52dSmrg# define DIR_SEPARATOR '/' 4998c76ae52dSmrg# define PATH_SEPARATOR ':' 4999c76ae52dSmrg#endif 5000c76ae52dSmrg 5001c76ae52dSmrg#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ 5002c76ae52dSmrg defined (__OS2__) 5003c76ae52dSmrg# define HAVE_DOS_BASED_FILE_SYSTEM 5004c76ae52dSmrg# ifndef DIR_SEPARATOR_2 5005c76ae52dSmrg# define DIR_SEPARATOR_2 '\\' 5006c76ae52dSmrg# endif 5007c76ae52dSmrg# ifndef PATH_SEPARATOR_2 5008c76ae52dSmrg# define PATH_SEPARATOR_2 ';' 5009c76ae52dSmrg# endif 5010c76ae52dSmrg#endif 5011c76ae52dSmrg 5012c76ae52dSmrg#ifndef DIR_SEPARATOR_2 5013c76ae52dSmrg# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) 5014c76ae52dSmrg#else /* DIR_SEPARATOR_2 */ 5015c76ae52dSmrg# define IS_DIR_SEPARATOR(ch) \ 5016c76ae52dSmrg (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) 5017c76ae52dSmrg#endif /* DIR_SEPARATOR_2 */ 5018c76ae52dSmrg 5019c76ae52dSmrg#ifndef PATH_SEPARATOR_2 5020c76ae52dSmrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) 5021c76ae52dSmrg#else /* PATH_SEPARATOR_2 */ 5022c76ae52dSmrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) 5023c76ae52dSmrg#endif /* PATH_SEPARATOR_2 */ 5024c76ae52dSmrg 5025c76ae52dSmrg#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) 5026c76ae52dSmrg#define XFREE(stale) do { \ 5027c76ae52dSmrg if (stale) { free ((void *) stale); stale = 0; } \ 5028c76ae52dSmrg} while (0) 5029c76ae52dSmrg 5030c76ae52dSmrg/* -DDEBUG is fairly common in CFLAGS. */ 5031c76ae52dSmrg#undef DEBUG 5032c76ae52dSmrg#if defined DEBUGWRAPPER 5033c76ae52dSmrg# define DEBUG(format, ...) fprintf(stderr, format, __VA_ARGS__) 5034c76ae52dSmrg#else 5035c76ae52dSmrg# define DEBUG(format, ...) 5036c76ae52dSmrg#endif 5037c76ae52dSmrg 5038c76ae52dSmrgconst char *program_name = NULL; 5039c76ae52dSmrg 5040c76ae52dSmrgvoid * xmalloc (size_t num); 5041c76ae52dSmrgchar * xstrdup (const char *string); 5042c76ae52dSmrgconst char * base_name (const char *name); 5043c76ae52dSmrgchar * find_executable(const char *wrapper); 5044c76ae52dSmrgint check_executable(const char *path); 5045c76ae52dSmrgchar * strendzap(char *str, const char *pat); 5046c76ae52dSmrgvoid lt_fatal (const char *message, ...); 5047c76ae52dSmrg 5048c76ae52dSmrgint 5049c76ae52dSmrgmain (int argc, char *argv[]) 5050c76ae52dSmrg{ 5051c76ae52dSmrg char **newargz; 5052c76ae52dSmrg int i; 5053c76ae52dSmrg 5054c76ae52dSmrg program_name = (char *) xstrdup (base_name (argv[0])); 5055c76ae52dSmrg DEBUG("(main) argv[0] : %s\n",argv[0]); 5056c76ae52dSmrg DEBUG("(main) program_name : %s\n",program_name); 5057c76ae52dSmrg newargz = XMALLOC(char *, argc+2); 5058c76ae52dSmrgEOF 5059c76ae52dSmrg 5060c76ae52dSmrg cat >> $cwrappersource <<EOF 5061c76ae52dSmrg newargz[0] = (char *) xstrdup("$SHELL"); 5062c76ae52dSmrgEOF 5063c76ae52dSmrg 5064c76ae52dSmrg cat >> $cwrappersource <<"EOF" 5065c76ae52dSmrg newargz[1] = find_executable(argv[0]); 5066c76ae52dSmrg if (newargz[1] == NULL) 5067c76ae52dSmrg lt_fatal("Couldn't find %s", argv[0]); 5068c76ae52dSmrg DEBUG("(main) found exe at : %s\n",newargz[1]); 5069c76ae52dSmrg /* we know the script has the same name, without the .exe */ 5070c76ae52dSmrg /* so make sure newargz[1] doesn't end in .exe */ 5071c76ae52dSmrg strendzap(newargz[1],".exe"); 5072c76ae52dSmrg for (i = 1; i < argc; i++) 5073c76ae52dSmrg newargz[i+1] = xstrdup(argv[i]); 5074c76ae52dSmrg newargz[argc+1] = NULL; 5075c76ae52dSmrg 5076c76ae52dSmrg for (i=0; i<argc+1; i++) 5077c76ae52dSmrg { 5078c76ae52dSmrg DEBUG("(main) newargz[%d] : %s\n",i,newargz[i]); 5079c76ae52dSmrg ; 5080c76ae52dSmrg } 5081c76ae52dSmrg 5082c76ae52dSmrgEOF 5083c76ae52dSmrg 5084c76ae52dSmrg case $host_os in 5085c76ae52dSmrg mingw*) 5086c76ae52dSmrg cat >> $cwrappersource <<EOF 5087c76ae52dSmrg execv("$SHELL",(char const **)newargz); 5088c76ae52dSmrgEOF 5089c76ae52dSmrg ;; 5090c76ae52dSmrg *) 5091c76ae52dSmrg cat >> $cwrappersource <<EOF 5092c76ae52dSmrg execv("$SHELL",newargz); 5093c76ae52dSmrgEOF 5094c76ae52dSmrg ;; 5095c76ae52dSmrg esac 5096c76ae52dSmrg 5097c76ae52dSmrg cat >> $cwrappersource <<"EOF" 5098c76ae52dSmrg return 127; 5099c76ae52dSmrg} 5100c76ae52dSmrg 5101c76ae52dSmrgvoid * 5102c76ae52dSmrgxmalloc (size_t num) 5103c76ae52dSmrg{ 5104c76ae52dSmrg void * p = (void *) malloc (num); 5105c76ae52dSmrg if (!p) 5106c76ae52dSmrg lt_fatal ("Memory exhausted"); 5107c76ae52dSmrg 5108c76ae52dSmrg return p; 5109c76ae52dSmrg} 5110c76ae52dSmrg 5111c76ae52dSmrgchar * 5112c76ae52dSmrgxstrdup (const char *string) 5113c76ae52dSmrg{ 5114c76ae52dSmrg return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL 5115c76ae52dSmrg; 5116c76ae52dSmrg} 5117c76ae52dSmrg 5118c76ae52dSmrgconst char * 5119c76ae52dSmrgbase_name (const char *name) 5120c76ae52dSmrg{ 5121c76ae52dSmrg const char *base; 5122c76ae52dSmrg 5123c76ae52dSmrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 5124c76ae52dSmrg /* Skip over the disk name in MSDOS pathnames. */ 5125c76ae52dSmrg if (isalpha ((unsigned char)name[0]) && name[1] == ':') 5126c76ae52dSmrg name += 2; 5127c76ae52dSmrg#endif 5128c76ae52dSmrg 5129c76ae52dSmrg for (base = name; *name; name++) 5130c76ae52dSmrg if (IS_DIR_SEPARATOR (*name)) 5131c76ae52dSmrg base = name + 1; 5132c76ae52dSmrg return base; 5133c76ae52dSmrg} 5134c76ae52dSmrg 5135c76ae52dSmrgint 5136c76ae52dSmrgcheck_executable(const char * path) 5137c76ae52dSmrg{ 5138c76ae52dSmrg struct stat st; 5139c76ae52dSmrg 5140c76ae52dSmrg DEBUG("(check_executable) : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!"); 5141c76ae52dSmrg if ((!path) || (!*path)) 5142c76ae52dSmrg return 0; 5143c76ae52dSmrg 5144c76ae52dSmrg if ((stat (path, &st) >= 0) && 5145c76ae52dSmrg ( 5146c76ae52dSmrg /* MinGW & native WIN32 do not support S_IXOTH or S_IXGRP */ 5147c76ae52dSmrg#if defined (S_IXOTH) 5148c76ae52dSmrg ((st.st_mode & S_IXOTH) == S_IXOTH) || 5149c76ae52dSmrg#endif 5150c76ae52dSmrg#if defined (S_IXGRP) 5151c76ae52dSmrg ((st.st_mode & S_IXGRP) == S_IXGRP) || 5152c76ae52dSmrg#endif 5153c76ae52dSmrg ((st.st_mode & S_IXUSR) == S_IXUSR)) 5154c76ae52dSmrg ) 5155c76ae52dSmrg return 1; 5156c76ae52dSmrg else 5157c76ae52dSmrg return 0; 5158c76ae52dSmrg} 5159c76ae52dSmrg 5160c76ae52dSmrg/* Searches for the full path of the wrapper. Returns 5161c76ae52dSmrg newly allocated full path name if found, NULL otherwise */ 5162c76ae52dSmrgchar * 5163c76ae52dSmrgfind_executable (const char* wrapper) 5164c76ae52dSmrg{ 5165c76ae52dSmrg int has_slash = 0; 5166c76ae52dSmrg const char* p; 5167c76ae52dSmrg const char* p_next; 5168c76ae52dSmrg /* static buffer for getcwd */ 5169c76ae52dSmrg char tmp[LT_PATHMAX + 1]; 5170c76ae52dSmrg int tmp_len; 5171c76ae52dSmrg char* concat_name; 5172c76ae52dSmrg 5173c76ae52dSmrg DEBUG("(find_executable) : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!"); 5174c76ae52dSmrg 5175c76ae52dSmrg if ((wrapper == NULL) || (*wrapper == '\0')) 5176c76ae52dSmrg return NULL; 5177c76ae52dSmrg 5178c76ae52dSmrg /* Absolute path? */ 5179c76ae52dSmrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 5180c76ae52dSmrg if (isalpha ((unsigned char)wrapper[0]) && wrapper[1] == ':') 5181c76ae52dSmrg { 5182c76ae52dSmrg concat_name = xstrdup (wrapper); 5183c76ae52dSmrg if (check_executable(concat_name)) 5184c76ae52dSmrg return concat_name; 5185c76ae52dSmrg XFREE(concat_name); 5186c76ae52dSmrg } 5187c76ae52dSmrg else 5188c76ae52dSmrg { 5189c76ae52dSmrg#endif 5190c76ae52dSmrg if (IS_DIR_SEPARATOR (wrapper[0])) 5191c76ae52dSmrg { 5192c76ae52dSmrg concat_name = xstrdup (wrapper); 5193c76ae52dSmrg if (check_executable(concat_name)) 5194c76ae52dSmrg return concat_name; 5195c76ae52dSmrg XFREE(concat_name); 5196c76ae52dSmrg } 5197c76ae52dSmrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 5198c76ae52dSmrg } 5199c76ae52dSmrg#endif 5200c76ae52dSmrg 5201c76ae52dSmrg for (p = wrapper; *p; p++) 5202c76ae52dSmrg if (*p == '/') 5203c76ae52dSmrg { 5204c76ae52dSmrg has_slash = 1; 5205c76ae52dSmrg break; 5206c76ae52dSmrg } 5207c76ae52dSmrg if (!has_slash) 5208c76ae52dSmrg { 5209c76ae52dSmrg /* no slashes; search PATH */ 5210c76ae52dSmrg const char* path = getenv ("PATH"); 5211c76ae52dSmrg if (path != NULL) 5212c76ae52dSmrg { 5213c76ae52dSmrg for (p = path; *p; p = p_next) 5214c76ae52dSmrg { 5215c76ae52dSmrg const char* q; 5216c76ae52dSmrg size_t p_len; 5217c76ae52dSmrg for (q = p; *q; q++) 5218c76ae52dSmrg if (IS_PATH_SEPARATOR(*q)) 5219c76ae52dSmrg break; 5220c76ae52dSmrg p_len = q - p; 5221c76ae52dSmrg p_next = (*q == '\0' ? q : q + 1); 5222c76ae52dSmrg if (p_len == 0) 5223c76ae52dSmrg { 5224c76ae52dSmrg /* empty path: current directory */ 5225c76ae52dSmrg if (getcwd (tmp, LT_PATHMAX) == NULL) 5226c76ae52dSmrg lt_fatal ("getcwd failed"); 5227c76ae52dSmrg tmp_len = strlen(tmp); 5228c76ae52dSmrg concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1); 5229c76ae52dSmrg memcpy (concat_name, tmp, tmp_len); 5230c76ae52dSmrg concat_name[tmp_len] = '/'; 5231c76ae52dSmrg strcpy (concat_name + tmp_len + 1, wrapper); 5232c76ae52dSmrg } 5233c76ae52dSmrg else 5234c76ae52dSmrg { 5235c76ae52dSmrg concat_name = XMALLOC(char, p_len + 1 + strlen(wrapper) + 1); 5236c76ae52dSmrg memcpy (concat_name, p, p_len); 5237c76ae52dSmrg concat_name[p_len] = '/'; 5238c76ae52dSmrg strcpy (concat_name + p_len + 1, wrapper); 5239c76ae52dSmrg } 5240c76ae52dSmrg if (check_executable(concat_name)) 5241c76ae52dSmrg return concat_name; 5242c76ae52dSmrg XFREE(concat_name); 5243c76ae52dSmrg } 5244c76ae52dSmrg } 5245c76ae52dSmrg /* not found in PATH; assume curdir */ 5246c76ae52dSmrg } 5247c76ae52dSmrg /* Relative path | not found in path: prepend cwd */ 5248c76ae52dSmrg if (getcwd (tmp, LT_PATHMAX) == NULL) 5249c76ae52dSmrg lt_fatal ("getcwd failed"); 5250c76ae52dSmrg tmp_len = strlen(tmp); 5251c76ae52dSmrg concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1); 5252c76ae52dSmrg memcpy (concat_name, tmp, tmp_len); 5253c76ae52dSmrg concat_name[tmp_len] = '/'; 5254c76ae52dSmrg strcpy (concat_name + tmp_len + 1, wrapper); 5255c76ae52dSmrg 5256c76ae52dSmrg if (check_executable(concat_name)) 5257c76ae52dSmrg return concat_name; 5258c76ae52dSmrg XFREE(concat_name); 5259c76ae52dSmrg return NULL; 5260c76ae52dSmrg} 5261c76ae52dSmrg 5262c76ae52dSmrgchar * 5263c76ae52dSmrgstrendzap(char *str, const char *pat) 5264c76ae52dSmrg{ 5265c76ae52dSmrg size_t len, patlen; 5266c76ae52dSmrg 5267c76ae52dSmrg assert(str != NULL); 5268c76ae52dSmrg assert(pat != NULL); 5269c76ae52dSmrg 5270c76ae52dSmrg len = strlen(str); 5271c76ae52dSmrg patlen = strlen(pat); 5272c76ae52dSmrg 5273c76ae52dSmrg if (patlen <= len) 5274c76ae52dSmrg { 5275c76ae52dSmrg str += len - patlen; 5276c76ae52dSmrg if (strcmp(str, pat) == 0) 5277c76ae52dSmrg *str = '\0'; 5278c76ae52dSmrg } 5279c76ae52dSmrg return str; 5280c76ae52dSmrg} 5281c76ae52dSmrg 5282c76ae52dSmrgstatic void 5283c76ae52dSmrglt_error_core (int exit_status, const char * mode, 5284c76ae52dSmrg const char * message, va_list ap) 5285c76ae52dSmrg{ 5286c76ae52dSmrg fprintf (stderr, "%s: %s: ", program_name, mode); 5287c76ae52dSmrg vfprintf (stderr, message, ap); 5288c76ae52dSmrg fprintf (stderr, ".\n"); 5289c76ae52dSmrg 5290c76ae52dSmrg if (exit_status >= 0) 5291c76ae52dSmrg exit (exit_status); 5292c76ae52dSmrg} 5293c76ae52dSmrg 5294c76ae52dSmrgvoid 5295c76ae52dSmrglt_fatal (const char *message, ...) 5296c76ae52dSmrg{ 5297c76ae52dSmrg va_list ap; 5298c76ae52dSmrg va_start (ap, message); 5299c76ae52dSmrg lt_error_core (EXIT_FAILURE, "FATAL", message, ap); 5300c76ae52dSmrg va_end (ap); 5301c76ae52dSmrg} 5302c76ae52dSmrgEOF 5303c76ae52dSmrg # we should really use a build-platform specific compiler 5304c76ae52dSmrg # here, but OTOH, the wrappers (shell script and this C one) 5305c76ae52dSmrg # are only useful if you want to execute the "real" binary. 5306c76ae52dSmrg # Since the "real" binary is built for $host, then this 5307c76ae52dSmrg # wrapper might as well be built for $host, too. 5308c76ae52dSmrg $run $LTCC $LTCFLAGS -s -o $cwrapper $cwrappersource 5309c76ae52dSmrg ;; 5310c76ae52dSmrg esac 5311c76ae52dSmrg $rm $output 5312c76ae52dSmrg trap "$rm $output; exit $EXIT_FAILURE" 1 2 15 5313c76ae52dSmrg 5314c76ae52dSmrg $echo > $output "\ 5315c76ae52dSmrg#! $SHELL 5316c76ae52dSmrg 5317c76ae52dSmrg# $output - temporary wrapper script for $objdir/$outputname 5318c76ae52dSmrg# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP 5319c76ae52dSmrg# 5320c76ae52dSmrg# The $output program cannot be directly executed until all the libtool 5321c76ae52dSmrg# libraries that it depends on are installed. 5322c76ae52dSmrg# 5323c76ae52dSmrg# This wrapper script should never be moved out of the build directory. 5324c76ae52dSmrg# If it is, it will not operate correctly. 5325c76ae52dSmrg 5326c76ae52dSmrg# Sed substitution that helps us do robust quoting. It backslashifies 5327c76ae52dSmrg# metacharacters that are still active within double-quoted strings. 5328c76ae52dSmrgXsed='${SED} -e 1s/^X//' 5329c76ae52dSmrgsed_quote_subst='$sed_quote_subst' 5330c76ae52dSmrg 53310d590c07Smrg# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE). 53320d590c07Smrgif test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then 53330d590c07Smrg emulate sh 53340d590c07Smrg NULLCMD=: 53350d590c07Smrg # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which 53360d590c07Smrg # is contrary to our usage. Disable this feature. 53370d590c07Smrg alias -g '\${1+\"\$@\"}'='\"\$@\"' 53380d590c07Smrg setopt NO_GLOB_SUBST 53390d590c07Smrgelse 53400d590c07Smrg case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac 53410d590c07Smrgfi 53420d590c07SmrgBIN_SH=xpg4; export BIN_SH # for Tru64 53430d590c07SmrgDUALCASE=1; export DUALCASE # for MKS sh 53440d590c07Smrg 5345c76ae52dSmrg# The HP-UX ksh and POSIX shell print the target directory to stdout 5346c76ae52dSmrg# if CDPATH is set. 5347c76ae52dSmrg(unset CDPATH) >/dev/null 2>&1 && unset CDPATH 5348c76ae52dSmrg 5349c76ae52dSmrgrelink_command=\"$relink_command\" 5350c76ae52dSmrg 5351c76ae52dSmrg# This environment variable determines our operation mode. 5352c76ae52dSmrgif test \"\$libtool_install_magic\" = \"$magic\"; then 5353c76ae52dSmrg # install mode needs the following variable: 5354c76ae52dSmrg notinst_deplibs='$notinst_deplibs' 5355c76ae52dSmrgelse 5356c76ae52dSmrg # When we are sourced in execute mode, \$file and \$echo are already set. 5357c76ae52dSmrg if test \"\$libtool_execute_magic\" != \"$magic\"; then 5358c76ae52dSmrg echo=\"$qecho\" 5359c76ae52dSmrg file=\"\$0\" 5360c76ae52dSmrg # Make sure echo works. 5361c76ae52dSmrg if test \"X\$1\" = X--no-reexec; then 5362c76ae52dSmrg # Discard the --no-reexec flag, and continue. 5363c76ae52dSmrg shift 5364c76ae52dSmrg elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then 5365c76ae52dSmrg # Yippee, \$echo works! 5366c76ae52dSmrg : 5367c76ae52dSmrg else 5368c76ae52dSmrg # Restart under the correct shell, and then maybe \$echo will work. 5369c76ae52dSmrg exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} 5370c76ae52dSmrg fi 5371c76ae52dSmrg fi\ 5372c76ae52dSmrg" 5373c76ae52dSmrg $echo >> $output "\ 5374c76ae52dSmrg 5375c76ae52dSmrg # Find the directory that this script lives in. 5376c76ae52dSmrg thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` 5377c76ae52dSmrg test \"x\$thisdir\" = \"x\$file\" && thisdir=. 5378c76ae52dSmrg 5379c76ae52dSmrg # Follow symbolic links until we get to the real thisdir. 5380c76ae52dSmrg file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` 5381c76ae52dSmrg while test -n \"\$file\"; do 5382c76ae52dSmrg destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` 5383c76ae52dSmrg 5384c76ae52dSmrg # If there was a directory component, then change thisdir. 5385c76ae52dSmrg if test \"x\$destdir\" != \"x\$file\"; then 5386c76ae52dSmrg case \"\$destdir\" in 5387c76ae52dSmrg [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; 5388c76ae52dSmrg *) thisdir=\"\$thisdir/\$destdir\" ;; 5389c76ae52dSmrg esac 5390c76ae52dSmrg fi 5391c76ae52dSmrg 5392c76ae52dSmrg file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` 5393c76ae52dSmrg file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` 5394c76ae52dSmrg done 5395c76ae52dSmrg 5396c76ae52dSmrg # Try to get the absolute directory name. 5397c76ae52dSmrg absdir=\`cd \"\$thisdir\" && pwd\` 5398c76ae52dSmrg test -n \"\$absdir\" && thisdir=\"\$absdir\" 5399c76ae52dSmrg" 5400c76ae52dSmrg 5401c76ae52dSmrg if test "$fast_install" = yes; then 5402c76ae52dSmrg $echo >> $output "\ 5403c76ae52dSmrg program=lt-'$outputname'$exeext 5404c76ae52dSmrg progdir=\"\$thisdir/$objdir\" 5405c76ae52dSmrg 5406c76ae52dSmrg if test ! -f \"\$progdir/\$program\" || \\ 5407c76ae52dSmrg { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ 5408c76ae52dSmrg test \"X\$file\" != \"X\$progdir/\$program\"; }; then 5409c76ae52dSmrg 5410c76ae52dSmrg file=\"\$\$-\$program\" 5411c76ae52dSmrg 5412c76ae52dSmrg if test ! -d \"\$progdir\"; then 5413c76ae52dSmrg $mkdir \"\$progdir\" 5414c76ae52dSmrg else 5415c76ae52dSmrg $rm \"\$progdir/\$file\" 5416c76ae52dSmrg fi" 5417c76ae52dSmrg 5418c76ae52dSmrg $echo >> $output "\ 5419c76ae52dSmrg 5420c76ae52dSmrg # relink executable if necessary 5421c76ae52dSmrg if test -n \"\$relink_command\"; then 5422c76ae52dSmrg if relink_command_output=\`eval \$relink_command 2>&1\`; then : 5423c76ae52dSmrg else 5424c76ae52dSmrg $echo \"\$relink_command_output\" >&2 5425c76ae52dSmrg $rm \"\$progdir/\$file\" 5426c76ae52dSmrg exit $EXIT_FAILURE 5427c76ae52dSmrg fi 5428c76ae52dSmrg fi 5429c76ae52dSmrg 5430c76ae52dSmrg $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || 5431c76ae52dSmrg { $rm \"\$progdir/\$program\"; 5432c76ae52dSmrg $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; } 5433c76ae52dSmrg $rm \"\$progdir/\$file\" 5434c76ae52dSmrg fi" 5435c76ae52dSmrg else 5436c76ae52dSmrg $echo >> $output "\ 5437c76ae52dSmrg program='$outputname' 5438c76ae52dSmrg progdir=\"\$thisdir/$objdir\" 5439c76ae52dSmrg" 5440c76ae52dSmrg fi 5441c76ae52dSmrg 5442c76ae52dSmrg $echo >> $output "\ 5443c76ae52dSmrg 5444c76ae52dSmrg if test -f \"\$progdir/\$program\"; then" 5445c76ae52dSmrg 5446c76ae52dSmrg # Export our shlibpath_var if we have one. 5447c76ae52dSmrg if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 5448c76ae52dSmrg $echo >> $output "\ 5449c76ae52dSmrg # Add our own library path to $shlibpath_var 5450c76ae52dSmrg $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" 5451c76ae52dSmrg 5452c76ae52dSmrg # Some systems cannot cope with colon-terminated $shlibpath_var 5453c76ae52dSmrg # The second colon is a workaround for a bug in BeOS R4 sed 5454c76ae52dSmrg $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` 5455c76ae52dSmrg 5456c76ae52dSmrg export $shlibpath_var 5457c76ae52dSmrg" 5458c76ae52dSmrg fi 5459c76ae52dSmrg 5460c76ae52dSmrg # fixup the dll searchpath if we need to. 5461c76ae52dSmrg if test -n "$dllsearchpath"; then 5462c76ae52dSmrg $echo >> $output "\ 5463c76ae52dSmrg # Add the dll search path components to the executable PATH 5464c76ae52dSmrg PATH=$dllsearchpath:\$PATH 5465c76ae52dSmrg" 5466c76ae52dSmrg fi 5467c76ae52dSmrg 5468c76ae52dSmrg $echo >> $output "\ 5469c76ae52dSmrg if test \"\$libtool_execute_magic\" != \"$magic\"; then 5470c76ae52dSmrg # Run the actual program with our arguments. 5471c76ae52dSmrg" 5472c76ae52dSmrg case $host in 5473c76ae52dSmrg # Backslashes separate directories on plain windows 5474c76ae52dSmrg *-*-mingw | *-*-os2*) 5475c76ae52dSmrg $echo >> $output "\ 5476c76ae52dSmrg exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} 5477c76ae52dSmrg" 5478c76ae52dSmrg ;; 5479c76ae52dSmrg 5480c76ae52dSmrg *) 5481c76ae52dSmrg $echo >> $output "\ 5482c76ae52dSmrg exec \"\$progdir/\$program\" \${1+\"\$@\"} 5483c76ae52dSmrg" 5484c76ae52dSmrg ;; 5485c76ae52dSmrg esac 5486c76ae52dSmrg $echo >> $output "\ 54870d590c07Smrg \$echo \"\$0: cannot exec \$program \$*\" 5488c76ae52dSmrg exit $EXIT_FAILURE 5489c76ae52dSmrg fi 5490c76ae52dSmrg else 5491c76ae52dSmrg # The program doesn't exist. 5492c76ae52dSmrg \$echo \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 5493c76ae52dSmrg \$echo \"This script is just a wrapper for \$program.\" 1>&2 5494c76ae52dSmrg $echo \"See the $PACKAGE documentation for more information.\" 1>&2 5495c76ae52dSmrg exit $EXIT_FAILURE 5496c76ae52dSmrg fi 5497c76ae52dSmrgfi\ 5498c76ae52dSmrg" 5499c76ae52dSmrg chmod +x $output 5500c76ae52dSmrg fi 5501c76ae52dSmrg exit $EXIT_SUCCESS 5502c76ae52dSmrg ;; 5503c76ae52dSmrg esac 5504c76ae52dSmrg 5505c76ae52dSmrg # See if we need to build an old-fashioned archive. 5506c76ae52dSmrg for oldlib in $oldlibs; do 5507c76ae52dSmrg 5508c76ae52dSmrg if test "$build_libtool_libs" = convenience; then 5509c76ae52dSmrg oldobjs="$libobjs_save" 5510c76ae52dSmrg addlibs="$convenience" 5511c76ae52dSmrg build_libtool_libs=no 5512c76ae52dSmrg else 5513c76ae52dSmrg if test "$build_libtool_libs" = module; then 5514c76ae52dSmrg oldobjs="$libobjs_save" 5515c76ae52dSmrg build_libtool_libs=no 5516c76ae52dSmrg else 5517c76ae52dSmrg oldobjs="$old_deplibs $non_pic_objects" 5518c76ae52dSmrg fi 5519c76ae52dSmrg addlibs="$old_convenience" 5520c76ae52dSmrg fi 5521c76ae52dSmrg 5522c76ae52dSmrg if test -n "$addlibs"; then 5523c76ae52dSmrg gentop="$output_objdir/${outputname}x" 5524c76ae52dSmrg generated="$generated $gentop" 5525c76ae52dSmrg 5526c76ae52dSmrg func_extract_archives $gentop $addlibs 5527c76ae52dSmrg oldobjs="$oldobjs $func_extract_archives_result" 5528c76ae52dSmrg fi 5529c76ae52dSmrg 5530c76ae52dSmrg # Do each command in the archive commands. 5531c76ae52dSmrg if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then 5532c76ae52dSmrg cmds=$old_archive_from_new_cmds 5533c76ae52dSmrg else 5534c76ae52dSmrg # POSIX demands no paths to be encoded in archives. We have 5535c76ae52dSmrg # to avoid creating archives with duplicate basenames if we 5536c76ae52dSmrg # might have to extract them afterwards, e.g., when creating a 5537c76ae52dSmrg # static archive out of a convenience library, or when linking 5538c76ae52dSmrg # the entirety of a libtool archive into another (currently 5539c76ae52dSmrg # not supported by libtool). 5540c76ae52dSmrg if (for obj in $oldobjs 5541c76ae52dSmrg do 5542c76ae52dSmrg $echo "X$obj" | $Xsed -e 's%^.*/%%' 5543c76ae52dSmrg done | sort | sort -uc >/dev/null 2>&1); then 5544c76ae52dSmrg : 5545c76ae52dSmrg else 5546c76ae52dSmrg $echo "copying selected object files to avoid basename conflicts..." 5547c76ae52dSmrg 5548c76ae52dSmrg if test -z "$gentop"; then 5549c76ae52dSmrg gentop="$output_objdir/${outputname}x" 5550c76ae52dSmrg generated="$generated $gentop" 5551c76ae52dSmrg 5552c76ae52dSmrg $show "${rm}r $gentop" 5553c76ae52dSmrg $run ${rm}r "$gentop" 5554c76ae52dSmrg $show "$mkdir $gentop" 5555c76ae52dSmrg $run $mkdir "$gentop" 5556c76ae52dSmrg exit_status=$? 5557c76ae52dSmrg if test "$exit_status" -ne 0 && test ! -d "$gentop"; then 5558c76ae52dSmrg exit $exit_status 5559c76ae52dSmrg fi 5560c76ae52dSmrg fi 5561c76ae52dSmrg 5562c76ae52dSmrg save_oldobjs=$oldobjs 5563c76ae52dSmrg oldobjs= 5564c76ae52dSmrg counter=1 5565c76ae52dSmrg for obj in $save_oldobjs 5566c76ae52dSmrg do 5567c76ae52dSmrg objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` 5568c76ae52dSmrg case " $oldobjs " in 5569c76ae52dSmrg " ") oldobjs=$obj ;; 5570c76ae52dSmrg *[\ /]"$objbase "*) 5571c76ae52dSmrg while :; do 5572c76ae52dSmrg # Make sure we don't pick an alternate name that also 5573c76ae52dSmrg # overlaps. 5574c76ae52dSmrg newobj=lt$counter-$objbase 5575c76ae52dSmrg counter=`expr $counter + 1` 5576c76ae52dSmrg case " $oldobjs " in 5577c76ae52dSmrg *[\ /]"$newobj "*) ;; 5578c76ae52dSmrg *) if test ! -f "$gentop/$newobj"; then break; fi ;; 5579c76ae52dSmrg esac 5580c76ae52dSmrg done 5581c76ae52dSmrg $show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" 5582c76ae52dSmrg $run ln "$obj" "$gentop/$newobj" || 5583c76ae52dSmrg $run cp "$obj" "$gentop/$newobj" 5584c76ae52dSmrg oldobjs="$oldobjs $gentop/$newobj" 5585c76ae52dSmrg ;; 5586c76ae52dSmrg *) oldobjs="$oldobjs $obj" ;; 5587c76ae52dSmrg esac 5588c76ae52dSmrg done 5589c76ae52dSmrg fi 5590c76ae52dSmrg 5591c76ae52dSmrg eval cmds=\"$old_archive_cmds\" 5592c76ae52dSmrg 5593c76ae52dSmrg if len=`expr "X$cmds" : ".*"` && 5594c76ae52dSmrg test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then 5595c76ae52dSmrg cmds=$old_archive_cmds 5596c76ae52dSmrg else 5597c76ae52dSmrg # the command line is too long to link in one step, link in parts 5598c76ae52dSmrg $echo "using piecewise archive linking..." 5599c76ae52dSmrg save_RANLIB=$RANLIB 5600c76ae52dSmrg RANLIB=: 5601c76ae52dSmrg objlist= 5602c76ae52dSmrg concat_cmds= 5603c76ae52dSmrg save_oldobjs=$oldobjs 5604c76ae52dSmrg 5605c76ae52dSmrg # Is there a better way of finding the last object in the list? 5606c76ae52dSmrg for obj in $save_oldobjs 5607c76ae52dSmrg do 5608c76ae52dSmrg last_oldobj=$obj 5609c76ae52dSmrg done 5610c76ae52dSmrg for obj in $save_oldobjs 5611c76ae52dSmrg do 5612c76ae52dSmrg oldobjs="$objlist $obj" 5613c76ae52dSmrg objlist="$objlist $obj" 5614c76ae52dSmrg eval test_cmds=\"$old_archive_cmds\" 5615c76ae52dSmrg if len=`expr "X$test_cmds" : ".*" 2>/dev/null` && 5616c76ae52dSmrg test "$len" -le "$max_cmd_len"; then 5617c76ae52dSmrg : 5618c76ae52dSmrg else 5619c76ae52dSmrg # the above command should be used before it gets too long 5620c76ae52dSmrg oldobjs=$objlist 5621c76ae52dSmrg if test "$obj" = "$last_oldobj" ; then 5622c76ae52dSmrg RANLIB=$save_RANLIB 5623c76ae52dSmrg fi 5624c76ae52dSmrg test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 5625c76ae52dSmrg eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" 5626c76ae52dSmrg objlist= 5627c76ae52dSmrg fi 5628c76ae52dSmrg done 5629c76ae52dSmrg RANLIB=$save_RANLIB 5630c76ae52dSmrg oldobjs=$objlist 5631c76ae52dSmrg if test "X$oldobjs" = "X" ; then 5632c76ae52dSmrg eval cmds=\"\$concat_cmds\" 5633c76ae52dSmrg else 5634c76ae52dSmrg eval cmds=\"\$concat_cmds~\$old_archive_cmds\" 5635c76ae52dSmrg fi 5636c76ae52dSmrg fi 5637c76ae52dSmrg fi 5638c76ae52dSmrg save_ifs="$IFS"; IFS='~' 5639c76ae52dSmrg for cmd in $cmds; do 5640c76ae52dSmrg eval cmd=\"$cmd\" 5641c76ae52dSmrg IFS="$save_ifs" 5642c76ae52dSmrg $show "$cmd" 5643c76ae52dSmrg $run eval "$cmd" || exit $? 5644c76ae52dSmrg done 5645c76ae52dSmrg IFS="$save_ifs" 5646c76ae52dSmrg done 5647c76ae52dSmrg 5648c76ae52dSmrg if test -n "$generated"; then 5649c76ae52dSmrg $show "${rm}r$generated" 5650c76ae52dSmrg $run ${rm}r$generated 5651c76ae52dSmrg fi 5652c76ae52dSmrg 5653c76ae52dSmrg # Now create the libtool archive. 5654c76ae52dSmrg case $output in 5655c76ae52dSmrg *.la) 5656c76ae52dSmrg old_library= 5657c76ae52dSmrg test "$build_old_libs" = yes && old_library="$libname.$libext" 5658c76ae52dSmrg $show "creating $output" 5659c76ae52dSmrg 5660c76ae52dSmrg # Preserve any variables that may affect compiler behavior 5661c76ae52dSmrg for var in $variables_saved_for_relink; do 5662c76ae52dSmrg if eval test -z \"\${$var+set}\"; then 5663c76ae52dSmrg relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" 5664c76ae52dSmrg elif eval var_value=\$$var; test -z "$var_value"; then 5665c76ae52dSmrg relink_command="$var=; export $var; $relink_command" 5666c76ae52dSmrg else 5667c76ae52dSmrg var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` 5668c76ae52dSmrg relink_command="$var=\"$var_value\"; export $var; $relink_command" 5669c76ae52dSmrg fi 5670c76ae52dSmrg done 5671c76ae52dSmrg # Quote the link command for shipping. 5672c76ae52dSmrg relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" 56730d590c07Smrg relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP` 5674c76ae52dSmrg if test "$hardcode_automatic" = yes ; then 5675c76ae52dSmrg relink_command= 5676c76ae52dSmrg fi 5677c76ae52dSmrg 5678c76ae52dSmrg 5679c76ae52dSmrg # Only create the output if not a dry run. 5680c76ae52dSmrg if test -z "$run"; then 5681c76ae52dSmrg for installed in no yes; do 5682c76ae52dSmrg if test "$installed" = yes; then 5683c76ae52dSmrg if test -z "$install_libdir"; then 5684c76ae52dSmrg break 5685c76ae52dSmrg fi 5686c76ae52dSmrg output="$output_objdir/$outputname"i 5687c76ae52dSmrg # Replace all uninstalled libtool libraries with the installed ones 5688c76ae52dSmrg newdependency_libs= 5689c76ae52dSmrg for deplib in $dependency_libs; do 5690c76ae52dSmrg case $deplib in 5691c76ae52dSmrg *.la) 5692c76ae52dSmrg name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'` 5693c76ae52dSmrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 5694c76ae52dSmrg if test -z "$libdir"; then 5695c76ae52dSmrg $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 5696c76ae52dSmrg exit $EXIT_FAILURE 5697c76ae52dSmrg fi 5698c76ae52dSmrg newdependency_libs="$newdependency_libs $libdir/$name" 5699c76ae52dSmrg ;; 5700c76ae52dSmrg *) newdependency_libs="$newdependency_libs $deplib" ;; 5701c76ae52dSmrg esac 5702c76ae52dSmrg done 5703c76ae52dSmrg dependency_libs="$newdependency_libs" 5704c76ae52dSmrg newdlfiles= 5705c76ae52dSmrg for lib in $dlfiles; do 5706c76ae52dSmrg name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` 5707c76ae52dSmrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 5708c76ae52dSmrg if test -z "$libdir"; then 5709c76ae52dSmrg $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 5710c76ae52dSmrg exit $EXIT_FAILURE 5711c76ae52dSmrg fi 5712c76ae52dSmrg newdlfiles="$newdlfiles $libdir/$name" 5713c76ae52dSmrg done 5714c76ae52dSmrg dlfiles="$newdlfiles" 5715c76ae52dSmrg newdlprefiles= 5716c76ae52dSmrg for lib in $dlprefiles; do 5717c76ae52dSmrg name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` 5718c76ae52dSmrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 5719c76ae52dSmrg if test -z "$libdir"; then 5720c76ae52dSmrg $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 5721c76ae52dSmrg exit $EXIT_FAILURE 5722c76ae52dSmrg fi 5723c76ae52dSmrg newdlprefiles="$newdlprefiles $libdir/$name" 5724c76ae52dSmrg done 5725c76ae52dSmrg dlprefiles="$newdlprefiles" 5726c76ae52dSmrg else 5727c76ae52dSmrg newdlfiles= 5728c76ae52dSmrg for lib in $dlfiles; do 5729c76ae52dSmrg case $lib in 5730c76ae52dSmrg [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 5731c76ae52dSmrg *) abs=`pwd`"/$lib" ;; 5732c76ae52dSmrg esac 5733c76ae52dSmrg newdlfiles="$newdlfiles $abs" 5734c76ae52dSmrg done 5735c76ae52dSmrg dlfiles="$newdlfiles" 5736c76ae52dSmrg newdlprefiles= 5737c76ae52dSmrg for lib in $dlprefiles; do 5738c76ae52dSmrg case $lib in 5739c76ae52dSmrg [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 5740c76ae52dSmrg *) abs=`pwd`"/$lib" ;; 5741c76ae52dSmrg esac 5742c76ae52dSmrg newdlprefiles="$newdlprefiles $abs" 5743c76ae52dSmrg done 5744c76ae52dSmrg dlprefiles="$newdlprefiles" 5745c76ae52dSmrg fi 5746c76ae52dSmrg $rm $output 5747c76ae52dSmrg # place dlname in correct position for cygwin 5748c76ae52dSmrg tdlname=$dlname 5749c76ae52dSmrg case $host,$output,$installed,$module,$dlname in 5750c76ae52dSmrg *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; 5751c76ae52dSmrg esac 5752c76ae52dSmrg $echo > $output "\ 5753c76ae52dSmrg# $outputname - a libtool library file 5754c76ae52dSmrg# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP 5755c76ae52dSmrg# 5756c76ae52dSmrg# Please DO NOT delete this file! 5757c76ae52dSmrg# It is necessary for linking the library. 5758c76ae52dSmrg 5759c76ae52dSmrg# The name that we can dlopen(3). 5760c76ae52dSmrgdlname='$tdlname' 5761c76ae52dSmrg 5762c76ae52dSmrg# Names of this library. 5763c76ae52dSmrglibrary_names='$library_names' 5764c76ae52dSmrg 5765c76ae52dSmrg# The name of the static archive. 5766c76ae52dSmrgold_library='$old_library' 5767c76ae52dSmrg 5768c76ae52dSmrg# Libraries that this one depends upon. 5769c76ae52dSmrgdependency_libs='$dependency_libs' 5770c76ae52dSmrg 5771c76ae52dSmrg# Version information for $libname. 5772c76ae52dSmrgcurrent=$current 5773c76ae52dSmrgage=$age 5774c76ae52dSmrgrevision=$revision 5775c76ae52dSmrg 5776c76ae52dSmrg# Is this an already installed library? 5777c76ae52dSmrginstalled=$installed 5778c76ae52dSmrg 5779c76ae52dSmrg# Should we warn about portability when linking against -modules? 5780c76ae52dSmrgshouldnotlink=$module 5781c76ae52dSmrg 5782c76ae52dSmrg# Files to dlopen/dlpreopen 5783c76ae52dSmrgdlopen='$dlfiles' 5784c76ae52dSmrgdlpreopen='$dlprefiles' 5785c76ae52dSmrg 5786c76ae52dSmrg# Directory that this library needs to be installed in: 5787c76ae52dSmrglibdir='$install_libdir'" 5788c76ae52dSmrg if test "$installed" = no && test "$need_relink" = yes; then 5789c76ae52dSmrg $echo >> $output "\ 5790c76ae52dSmrgrelink_command=\"$relink_command\"" 5791c76ae52dSmrg fi 5792c76ae52dSmrg done 5793c76ae52dSmrg fi 5794c76ae52dSmrg 5795c76ae52dSmrg # Do a symbolic link so that the libtool archive can be found in 5796c76ae52dSmrg # LD_LIBRARY_PATH before the program is installed. 5797c76ae52dSmrg $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" 5798c76ae52dSmrg $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $? 5799c76ae52dSmrg ;; 5800c76ae52dSmrg esac 5801c76ae52dSmrg exit $EXIT_SUCCESS 5802c76ae52dSmrg ;; 5803c76ae52dSmrg 5804c76ae52dSmrg # libtool install mode 5805c76ae52dSmrg install) 5806c76ae52dSmrg modename="$modename: install" 5807c76ae52dSmrg 5808c76ae52dSmrg # There may be an optional sh(1) argument at the beginning of 5809c76ae52dSmrg # install_prog (especially on Windows NT). 5810c76ae52dSmrg if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || 5811c76ae52dSmrg # Allow the use of GNU shtool's install command. 5812c76ae52dSmrg $echo "X$nonopt" | grep shtool > /dev/null; then 5813c76ae52dSmrg # Aesthetically quote it. 5814c76ae52dSmrg arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` 5815c76ae52dSmrg case $arg in 5816c76ae52dSmrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 5817c76ae52dSmrg arg="\"$arg\"" 5818c76ae52dSmrg ;; 5819c76ae52dSmrg esac 5820c76ae52dSmrg install_prog="$arg " 5821c76ae52dSmrg arg="$1" 5822c76ae52dSmrg shift 5823c76ae52dSmrg else 5824c76ae52dSmrg install_prog= 5825c76ae52dSmrg arg=$nonopt 5826c76ae52dSmrg fi 5827c76ae52dSmrg 5828c76ae52dSmrg # The real first argument should be the name of the installation program. 5829c76ae52dSmrg # Aesthetically quote it. 5830c76ae52dSmrg arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 5831c76ae52dSmrg case $arg in 5832c76ae52dSmrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 5833c76ae52dSmrg arg="\"$arg\"" 5834c76ae52dSmrg ;; 5835c76ae52dSmrg esac 5836c76ae52dSmrg install_prog="$install_prog$arg" 5837c76ae52dSmrg 5838c76ae52dSmrg # We need to accept at least all the BSD install flags. 5839c76ae52dSmrg dest= 5840c76ae52dSmrg files= 5841c76ae52dSmrg opts= 5842c76ae52dSmrg prev= 5843c76ae52dSmrg install_type= 5844c76ae52dSmrg isdir=no 5845c76ae52dSmrg stripme= 5846c76ae52dSmrg for arg 5847c76ae52dSmrg do 5848c76ae52dSmrg if test -n "$dest"; then 5849c76ae52dSmrg files="$files $dest" 5850c76ae52dSmrg dest=$arg 5851c76ae52dSmrg continue 5852c76ae52dSmrg fi 5853c76ae52dSmrg 5854c76ae52dSmrg case $arg in 5855c76ae52dSmrg -d) isdir=yes ;; 5856c76ae52dSmrg -f) 5857c76ae52dSmrg case " $install_prog " in 5858c76ae52dSmrg *[\\\ /]cp\ *) ;; 5859c76ae52dSmrg *) prev=$arg ;; 5860c76ae52dSmrg esac 5861c76ae52dSmrg ;; 5862c76ae52dSmrg -g | -m | -o) prev=$arg ;; 5863c76ae52dSmrg -s) 5864c76ae52dSmrg stripme=" -s" 5865c76ae52dSmrg continue 5866c76ae52dSmrg ;; 5867c76ae52dSmrg -*) 5868c76ae52dSmrg ;; 5869c76ae52dSmrg *) 5870c76ae52dSmrg # If the previous option needed an argument, then skip it. 5871c76ae52dSmrg if test -n "$prev"; then 5872c76ae52dSmrg prev= 5873c76ae52dSmrg else 5874c76ae52dSmrg dest=$arg 5875c76ae52dSmrg continue 5876c76ae52dSmrg fi 5877c76ae52dSmrg ;; 5878c76ae52dSmrg esac 5879c76ae52dSmrg 5880c76ae52dSmrg # Aesthetically quote the argument. 5881c76ae52dSmrg arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 5882c76ae52dSmrg case $arg in 5883c76ae52dSmrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 5884c76ae52dSmrg arg="\"$arg\"" 5885c76ae52dSmrg ;; 5886c76ae52dSmrg esac 5887c76ae52dSmrg install_prog="$install_prog $arg" 5888c76ae52dSmrg done 5889c76ae52dSmrg 5890c76ae52dSmrg if test -z "$install_prog"; then 5891c76ae52dSmrg $echo "$modename: you must specify an install program" 1>&2 5892c76ae52dSmrg $echo "$help" 1>&2 5893c76ae52dSmrg exit $EXIT_FAILURE 5894c76ae52dSmrg fi 5895c76ae52dSmrg 5896c76ae52dSmrg if test -n "$prev"; then 5897c76ae52dSmrg $echo "$modename: the \`$prev' option requires an argument" 1>&2 5898c76ae52dSmrg $echo "$help" 1>&2 5899c76ae52dSmrg exit $EXIT_FAILURE 5900c76ae52dSmrg fi 5901c76ae52dSmrg 5902c76ae52dSmrg if test -z "$files"; then 5903c76ae52dSmrg if test -z "$dest"; then 5904c76ae52dSmrg $echo "$modename: no file or destination specified" 1>&2 5905c76ae52dSmrg else 5906c76ae52dSmrg $echo "$modename: you must specify a destination" 1>&2 5907c76ae52dSmrg fi 5908c76ae52dSmrg $echo "$help" 1>&2 5909c76ae52dSmrg exit $EXIT_FAILURE 5910c76ae52dSmrg fi 5911c76ae52dSmrg 5912c76ae52dSmrg # Strip any trailing slash from the destination. 5913c76ae52dSmrg dest=`$echo "X$dest" | $Xsed -e 's%/$%%'` 5914c76ae52dSmrg 5915c76ae52dSmrg # Check to see that the destination is a directory. 5916c76ae52dSmrg test -d "$dest" && isdir=yes 5917c76ae52dSmrg if test "$isdir" = yes; then 5918c76ae52dSmrg destdir="$dest" 5919c76ae52dSmrg destname= 5920c76ae52dSmrg else 5921c76ae52dSmrg destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'` 5922c76ae52dSmrg test "X$destdir" = "X$dest" && destdir=. 5923c76ae52dSmrg destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'` 5924c76ae52dSmrg 5925c76ae52dSmrg # Not a directory, so check to see that there is only one file specified. 5926c76ae52dSmrg set dummy $files 5927c76ae52dSmrg if test "$#" -gt 2; then 5928c76ae52dSmrg $echo "$modename: \`$dest' is not a directory" 1>&2 5929c76ae52dSmrg $echo "$help" 1>&2 5930c76ae52dSmrg exit $EXIT_FAILURE 5931c76ae52dSmrg fi 5932c76ae52dSmrg fi 5933c76ae52dSmrg case $destdir in 5934c76ae52dSmrg [\\/]* | [A-Za-z]:[\\/]*) ;; 5935c76ae52dSmrg *) 5936c76ae52dSmrg for file in $files; do 5937c76ae52dSmrg case $file in 5938c76ae52dSmrg *.lo) ;; 5939c76ae52dSmrg *) 5940c76ae52dSmrg $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 5941c76ae52dSmrg $echo "$help" 1>&2 5942c76ae52dSmrg exit $EXIT_FAILURE 5943c76ae52dSmrg ;; 5944c76ae52dSmrg esac 5945c76ae52dSmrg done 5946c76ae52dSmrg ;; 5947c76ae52dSmrg esac 5948c76ae52dSmrg 5949c76ae52dSmrg # This variable tells wrapper scripts just to set variables rather 5950c76ae52dSmrg # than running their programs. 5951c76ae52dSmrg libtool_install_magic="$magic" 5952c76ae52dSmrg 5953c76ae52dSmrg staticlibs= 5954c76ae52dSmrg future_libdirs= 5955c76ae52dSmrg current_libdirs= 5956c76ae52dSmrg for file in $files; do 5957c76ae52dSmrg 5958c76ae52dSmrg # Do each installation. 5959c76ae52dSmrg case $file in 5960c76ae52dSmrg *.$libext) 5961c76ae52dSmrg # Do the static libraries later. 5962c76ae52dSmrg staticlibs="$staticlibs $file" 5963c76ae52dSmrg ;; 5964c76ae52dSmrg 5965c76ae52dSmrg *.la) 5966c76ae52dSmrg # Check to see that this really is a libtool archive. 5967c76ae52dSmrg if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : 5968c76ae52dSmrg else 5969c76ae52dSmrg $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 5970c76ae52dSmrg $echo "$help" 1>&2 5971c76ae52dSmrg exit $EXIT_FAILURE 5972c76ae52dSmrg fi 5973c76ae52dSmrg 5974c76ae52dSmrg library_names= 5975c76ae52dSmrg old_library= 5976c76ae52dSmrg relink_command= 5977c76ae52dSmrg # If there is no directory component, then add one. 5978c76ae52dSmrg case $file in 5979c76ae52dSmrg */* | *\\*) . $file ;; 5980c76ae52dSmrg *) . ./$file ;; 5981c76ae52dSmrg esac 5982c76ae52dSmrg 5983c76ae52dSmrg # Add the libdir to current_libdirs if it is the destination. 5984c76ae52dSmrg if test "X$destdir" = "X$libdir"; then 5985c76ae52dSmrg case "$current_libdirs " in 5986c76ae52dSmrg *" $libdir "*) ;; 5987c76ae52dSmrg *) current_libdirs="$current_libdirs $libdir" ;; 5988c76ae52dSmrg esac 5989c76ae52dSmrg else 5990c76ae52dSmrg # Note the libdir as a future libdir. 5991c76ae52dSmrg case "$future_libdirs " in 5992c76ae52dSmrg *" $libdir "*) ;; 5993c76ae52dSmrg *) future_libdirs="$future_libdirs $libdir" ;; 5994c76ae52dSmrg esac 5995c76ae52dSmrg fi 5996c76ae52dSmrg 5997c76ae52dSmrg dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/ 5998c76ae52dSmrg test "X$dir" = "X$file/" && dir= 5999c76ae52dSmrg dir="$dir$objdir" 6000c76ae52dSmrg 6001c76ae52dSmrg if test -n "$relink_command"; then 6002c76ae52dSmrg # Determine the prefix the user has applied to our future dir. 6003c76ae52dSmrg inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"` 6004c76ae52dSmrg 6005c76ae52dSmrg # Don't allow the user to place us outside of our expected 6006c76ae52dSmrg # location b/c this prevents finding dependent libraries that 6007c76ae52dSmrg # are installed to the same prefix. 6008c76ae52dSmrg # At present, this check doesn't affect windows .dll's that 6009c76ae52dSmrg # are installed into $libdir/../bin (currently, that works fine) 6010c76ae52dSmrg # but it's something to keep an eye on. 6011c76ae52dSmrg if test "$inst_prefix_dir" = "$destdir"; then 6012c76ae52dSmrg $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2 6013c76ae52dSmrg exit $EXIT_FAILURE 6014c76ae52dSmrg fi 6015c76ae52dSmrg 6016c76ae52dSmrg if test -n "$inst_prefix_dir"; then 6017c76ae52dSmrg # Stick the inst_prefix_dir data into the link command. 60180d590c07Smrg relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%" | $NL2SP` 6019c76ae52dSmrg else 60200d590c07Smrg relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%%" | $NL2SP` 6021c76ae52dSmrg fi 6022c76ae52dSmrg 6023c76ae52dSmrg $echo "$modename: warning: relinking \`$file'" 1>&2 6024c76ae52dSmrg $show "$relink_command" 6025c76ae52dSmrg if $run eval "$relink_command"; then : 6026c76ae52dSmrg else 6027c76ae52dSmrg $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 6028c76ae52dSmrg exit $EXIT_FAILURE 6029c76ae52dSmrg fi 6030c76ae52dSmrg fi 6031c76ae52dSmrg 6032c76ae52dSmrg # See the names of the shared library. 6033c76ae52dSmrg set dummy $library_names 6034c76ae52dSmrg if test -n "$2"; then 6035c76ae52dSmrg realname="$2" 6036c76ae52dSmrg shift 6037c76ae52dSmrg shift 6038c76ae52dSmrg 6039c76ae52dSmrg srcname="$realname" 6040c76ae52dSmrg test -n "$relink_command" && srcname="$realname"T 6041c76ae52dSmrg 6042c76ae52dSmrg # Install the shared library and build the symlinks. 6043c76ae52dSmrg $show "$install_prog $dir/$srcname $destdir/$realname" 6044c76ae52dSmrg $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $? 6045c76ae52dSmrg if test -n "$stripme" && test -n "$striplib"; then 6046c76ae52dSmrg $show "$striplib $destdir/$realname" 6047c76ae52dSmrg $run eval "$striplib $destdir/$realname" || exit $? 6048c76ae52dSmrg fi 6049c76ae52dSmrg 6050c76ae52dSmrg if test "$#" -gt 0; then 6051c76ae52dSmrg # Delete the old symlinks, and create new ones. 6052c76ae52dSmrg # Try `ln -sf' first, because the `ln' binary might depend on 6053c76ae52dSmrg # the symlink we replace! Solaris /bin/ln does not understand -f, 6054c76ae52dSmrg # so we also need to try rm && ln -s. 6055c76ae52dSmrg for linkname 6056c76ae52dSmrg do 6057c76ae52dSmrg if test "$linkname" != "$realname"; then 6058c76ae52dSmrg $show "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })" 6059c76ae52dSmrg $run eval "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })" 6060c76ae52dSmrg fi 6061c76ae52dSmrg done 6062c76ae52dSmrg fi 6063c76ae52dSmrg 6064c76ae52dSmrg # Do each command in the postinstall commands. 6065c76ae52dSmrg lib="$destdir/$realname" 6066c76ae52dSmrg cmds=$postinstall_cmds 6067c76ae52dSmrg save_ifs="$IFS"; IFS='~' 6068c76ae52dSmrg for cmd in $cmds; do 6069c76ae52dSmrg IFS="$save_ifs" 6070c76ae52dSmrg eval cmd=\"$cmd\" 6071c76ae52dSmrg $show "$cmd" 6072c76ae52dSmrg $run eval "$cmd" || { 6073c76ae52dSmrg lt_exit=$? 6074c76ae52dSmrg 6075c76ae52dSmrg # Restore the uninstalled library and exit 6076c76ae52dSmrg if test "$mode" = relink; then 6077c76ae52dSmrg $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)' 6078c76ae52dSmrg fi 6079c76ae52dSmrg 6080c76ae52dSmrg exit $lt_exit 6081c76ae52dSmrg } 6082c76ae52dSmrg done 6083c76ae52dSmrg IFS="$save_ifs" 6084c76ae52dSmrg fi 6085c76ae52dSmrg 6086c76ae52dSmrg # Install the pseudo-library for information purposes. 6087c76ae52dSmrg name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 6088c76ae52dSmrg instname="$dir/$name"i 6089c76ae52dSmrg $show "$install_prog $instname $destdir/$name" 6090c76ae52dSmrg $run eval "$install_prog $instname $destdir/$name" || exit $? 6091c76ae52dSmrg 6092c76ae52dSmrg # Maybe install the static library, too. 6093c76ae52dSmrg test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" 6094c76ae52dSmrg ;; 6095c76ae52dSmrg 6096c76ae52dSmrg *.lo) 6097c76ae52dSmrg # Install (i.e. copy) a libtool object. 6098c76ae52dSmrg 6099c76ae52dSmrg # Figure out destination file name, if it wasn't already specified. 6100c76ae52dSmrg if test -n "$destname"; then 6101c76ae52dSmrg destfile="$destdir/$destname" 6102c76ae52dSmrg else 6103c76ae52dSmrg destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 6104c76ae52dSmrg destfile="$destdir/$destfile" 6105c76ae52dSmrg fi 6106c76ae52dSmrg 6107c76ae52dSmrg # Deduce the name of the destination old-style object file. 6108c76ae52dSmrg case $destfile in 6109c76ae52dSmrg *.lo) 6110c76ae52dSmrg staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"` 6111c76ae52dSmrg ;; 6112c76ae52dSmrg *.$objext) 6113c76ae52dSmrg staticdest="$destfile" 6114c76ae52dSmrg destfile= 6115c76ae52dSmrg ;; 6116c76ae52dSmrg *) 6117c76ae52dSmrg $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 6118c76ae52dSmrg $echo "$help" 1>&2 6119c76ae52dSmrg exit $EXIT_FAILURE 6120c76ae52dSmrg ;; 6121c76ae52dSmrg esac 6122c76ae52dSmrg 6123c76ae52dSmrg # Install the libtool object if requested. 6124c76ae52dSmrg if test -n "$destfile"; then 6125c76ae52dSmrg $show "$install_prog $file $destfile" 6126c76ae52dSmrg $run eval "$install_prog $file $destfile" || exit $? 6127c76ae52dSmrg fi 6128c76ae52dSmrg 6129c76ae52dSmrg # Install the old object if enabled. 6130c76ae52dSmrg if test "$build_old_libs" = yes; then 6131c76ae52dSmrg # Deduce the name of the old-style object file. 6132c76ae52dSmrg staticobj=`$echo "X$file" | $Xsed -e "$lo2o"` 6133c76ae52dSmrg 6134c76ae52dSmrg $show "$install_prog $staticobj $staticdest" 6135c76ae52dSmrg $run eval "$install_prog \$staticobj \$staticdest" || exit $? 6136c76ae52dSmrg fi 6137c76ae52dSmrg exit $EXIT_SUCCESS 6138c76ae52dSmrg ;; 6139c76ae52dSmrg 6140c76ae52dSmrg *) 6141c76ae52dSmrg # Figure out destination file name, if it wasn't already specified. 6142c76ae52dSmrg if test -n "$destname"; then 6143c76ae52dSmrg destfile="$destdir/$destname" 6144c76ae52dSmrg else 6145c76ae52dSmrg destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 6146c76ae52dSmrg destfile="$destdir/$destfile" 6147c76ae52dSmrg fi 6148c76ae52dSmrg 6149c76ae52dSmrg # If the file is missing, and there is a .exe on the end, strip it 6150c76ae52dSmrg # because it is most likely a libtool script we actually want to 6151c76ae52dSmrg # install 6152c76ae52dSmrg stripped_ext="" 6153c76ae52dSmrg case $file in 6154c76ae52dSmrg *.exe) 6155c76ae52dSmrg if test ! -f "$file"; then 6156c76ae52dSmrg file=`$echo $file|${SED} 's,.exe$,,'` 6157c76ae52dSmrg stripped_ext=".exe" 6158c76ae52dSmrg fi 6159c76ae52dSmrg ;; 6160c76ae52dSmrg esac 6161c76ae52dSmrg 6162c76ae52dSmrg # Do a test to see if this is really a libtool program. 6163c76ae52dSmrg case $host in 6164c76ae52dSmrg *cygwin*|*mingw*) 6165c76ae52dSmrg wrapper=`$echo $file | ${SED} -e 's,.exe$,,'` 6166c76ae52dSmrg ;; 6167c76ae52dSmrg *) 6168c76ae52dSmrg wrapper=$file 6169c76ae52dSmrg ;; 6170c76ae52dSmrg esac 6171c76ae52dSmrg if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then 6172c76ae52dSmrg notinst_deplibs= 6173c76ae52dSmrg relink_command= 6174c76ae52dSmrg 6175c76ae52dSmrg # Note that it is not necessary on cygwin/mingw to append a dot to 6176c76ae52dSmrg # foo even if both foo and FILE.exe exist: automatic-append-.exe 6177c76ae52dSmrg # behavior happens only for exec(3), not for open(2)! Also, sourcing 6178c76ae52dSmrg # `FILE.' does not work on cygwin managed mounts. 6179c76ae52dSmrg # 6180c76ae52dSmrg # If there is no directory component, then add one. 6181c76ae52dSmrg case $wrapper in 6182c76ae52dSmrg */* | *\\*) . ${wrapper} ;; 6183c76ae52dSmrg *) . ./${wrapper} ;; 6184c76ae52dSmrg esac 6185c76ae52dSmrg 6186c76ae52dSmrg # Check the variables that should have been set. 6187c76ae52dSmrg if test -z "$notinst_deplibs"; then 6188c76ae52dSmrg $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2 6189c76ae52dSmrg exit $EXIT_FAILURE 6190c76ae52dSmrg fi 6191c76ae52dSmrg 6192c76ae52dSmrg finalize=yes 6193c76ae52dSmrg for lib in $notinst_deplibs; do 6194c76ae52dSmrg # Check to see that each library is installed. 6195c76ae52dSmrg libdir= 6196c76ae52dSmrg if test -f "$lib"; then 6197c76ae52dSmrg # If there is no directory component, then add one. 6198c76ae52dSmrg case $lib in 6199c76ae52dSmrg */* | *\\*) . $lib ;; 6200c76ae52dSmrg *) . ./$lib ;; 6201c76ae52dSmrg esac 6202c76ae52dSmrg fi 6203c76ae52dSmrg libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test 6204c76ae52dSmrg if test -n "$libdir" && test ! -f "$libfile"; then 6205c76ae52dSmrg $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 6206c76ae52dSmrg finalize=no 6207c76ae52dSmrg fi 6208c76ae52dSmrg done 6209c76ae52dSmrg 6210c76ae52dSmrg relink_command= 6211c76ae52dSmrg # Note that it is not necessary on cygwin/mingw to append a dot to 6212c76ae52dSmrg # foo even if both foo and FILE.exe exist: automatic-append-.exe 6213c76ae52dSmrg # behavior happens only for exec(3), not for open(2)! Also, sourcing 6214c76ae52dSmrg # `FILE.' does not work on cygwin managed mounts. 6215c76ae52dSmrg # 6216c76ae52dSmrg # If there is no directory component, then add one. 6217c76ae52dSmrg case $wrapper in 6218c76ae52dSmrg */* | *\\*) . ${wrapper} ;; 6219c76ae52dSmrg *) . ./${wrapper} ;; 6220c76ae52dSmrg esac 6221c76ae52dSmrg 6222c76ae52dSmrg outputname= 6223c76ae52dSmrg if test "$fast_install" = no && test -n "$relink_command"; then 6224c76ae52dSmrg if test "$finalize" = yes && test -z "$run"; then 6225c76ae52dSmrg tmpdir=`func_mktempdir` 6226c76ae52dSmrg file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'` 6227c76ae52dSmrg outputname="$tmpdir/$file" 6228c76ae52dSmrg # Replace the output file specification. 62290d590c07Smrg relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g' | $NL2SP` 6230c76ae52dSmrg 6231c76ae52dSmrg $show "$relink_command" 6232c76ae52dSmrg if $run eval "$relink_command"; then : 6233c76ae52dSmrg else 6234c76ae52dSmrg $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 6235c76ae52dSmrg ${rm}r "$tmpdir" 6236c76ae52dSmrg continue 6237c76ae52dSmrg fi 6238c76ae52dSmrg file="$outputname" 6239c76ae52dSmrg else 6240c76ae52dSmrg $echo "$modename: warning: cannot relink \`$file'" 1>&2 6241c76ae52dSmrg fi 6242c76ae52dSmrg else 6243c76ae52dSmrg # Install the binary that we compiled earlier. 6244c76ae52dSmrg file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` 6245c76ae52dSmrg fi 6246c76ae52dSmrg fi 6247c76ae52dSmrg 6248c76ae52dSmrg # remove .exe since cygwin /usr/bin/install will append another 6249c76ae52dSmrg # one anyway 6250c76ae52dSmrg case $install_prog,$host in 6251c76ae52dSmrg */usr/bin/install*,*cygwin*) 6252c76ae52dSmrg case $file:$destfile in 6253c76ae52dSmrg *.exe:*.exe) 6254c76ae52dSmrg # this is ok 6255c76ae52dSmrg ;; 6256c76ae52dSmrg *.exe:*) 6257c76ae52dSmrg destfile=$destfile.exe 6258c76ae52dSmrg ;; 6259c76ae52dSmrg *:*.exe) 6260c76ae52dSmrg destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'` 6261c76ae52dSmrg ;; 6262c76ae52dSmrg esac 6263c76ae52dSmrg ;; 6264c76ae52dSmrg esac 6265c76ae52dSmrg $show "$install_prog$stripme $file $destfile" 6266c76ae52dSmrg $run eval "$install_prog\$stripme \$file \$destfile" || exit $? 6267c76ae52dSmrg test -n "$outputname" && ${rm}r "$tmpdir" 6268c76ae52dSmrg ;; 6269c76ae52dSmrg esac 6270c76ae52dSmrg done 6271c76ae52dSmrg 6272c76ae52dSmrg for file in $staticlibs; do 6273c76ae52dSmrg name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 6274c76ae52dSmrg 6275c76ae52dSmrg # Set up the ranlib parameters. 6276c76ae52dSmrg oldlib="$destdir/$name" 6277c76ae52dSmrg 6278c76ae52dSmrg $show "$install_prog $file $oldlib" 6279c76ae52dSmrg $run eval "$install_prog \$file \$oldlib" || exit $? 6280c76ae52dSmrg 6281c76ae52dSmrg if test -n "$stripme" && test -n "$old_striplib"; then 6282c76ae52dSmrg $show "$old_striplib $oldlib" 6283c76ae52dSmrg $run eval "$old_striplib $oldlib" || exit $? 6284c76ae52dSmrg fi 6285c76ae52dSmrg 6286c76ae52dSmrg # Do each command in the postinstall commands. 6287c76ae52dSmrg cmds=$old_postinstall_cmds 6288c76ae52dSmrg save_ifs="$IFS"; IFS='~' 6289c76ae52dSmrg for cmd in $cmds; do 6290c76ae52dSmrg IFS="$save_ifs" 6291c76ae52dSmrg eval cmd=\"$cmd\" 6292c76ae52dSmrg $show "$cmd" 6293c76ae52dSmrg $run eval "$cmd" || exit $? 6294c76ae52dSmrg done 6295c76ae52dSmrg IFS="$save_ifs" 6296c76ae52dSmrg done 6297c76ae52dSmrg 6298c76ae52dSmrg if test -n "$future_libdirs"; then 6299c76ae52dSmrg $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2 6300c76ae52dSmrg fi 6301c76ae52dSmrg 6302c76ae52dSmrg if test -n "$current_libdirs"; then 6303c76ae52dSmrg # Maybe just do a dry run. 6304c76ae52dSmrg test -n "$run" && current_libdirs=" -n$current_libdirs" 6305c76ae52dSmrg exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' 6306c76ae52dSmrg else 6307c76ae52dSmrg exit $EXIT_SUCCESS 6308c76ae52dSmrg fi 6309c76ae52dSmrg ;; 6310c76ae52dSmrg 6311c76ae52dSmrg # libtool finish mode 6312c76ae52dSmrg finish) 6313c76ae52dSmrg modename="$modename: finish" 6314c76ae52dSmrg libdirs="$nonopt" 6315c76ae52dSmrg admincmds= 6316c76ae52dSmrg 6317c76ae52dSmrg if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then 6318c76ae52dSmrg for dir 6319c76ae52dSmrg do 6320c76ae52dSmrg libdirs="$libdirs $dir" 6321c76ae52dSmrg done 6322c76ae52dSmrg 6323c76ae52dSmrg for libdir in $libdirs; do 6324c76ae52dSmrg if test -n "$finish_cmds"; then 6325c76ae52dSmrg # Do each command in the finish commands. 6326c76ae52dSmrg cmds=$finish_cmds 6327c76ae52dSmrg save_ifs="$IFS"; IFS='~' 6328c76ae52dSmrg for cmd in $cmds; do 6329c76ae52dSmrg IFS="$save_ifs" 6330c76ae52dSmrg eval cmd=\"$cmd\" 6331c76ae52dSmrg $show "$cmd" 6332c76ae52dSmrg $run eval "$cmd" || admincmds="$admincmds 6333c76ae52dSmrg $cmd" 6334c76ae52dSmrg done 6335c76ae52dSmrg IFS="$save_ifs" 6336c76ae52dSmrg fi 6337c76ae52dSmrg if test -n "$finish_eval"; then 6338c76ae52dSmrg # Do the single finish_eval. 6339c76ae52dSmrg eval cmds=\"$finish_eval\" 6340c76ae52dSmrg $run eval "$cmds" || admincmds="$admincmds 6341c76ae52dSmrg $cmds" 6342c76ae52dSmrg fi 6343c76ae52dSmrg done 6344c76ae52dSmrg fi 6345c76ae52dSmrg 6346c76ae52dSmrg # Exit here if they wanted silent mode. 6347c76ae52dSmrg test "$show" = : && exit $EXIT_SUCCESS 6348c76ae52dSmrg 6349c76ae52dSmrg $echo "X----------------------------------------------------------------------" | $Xsed 6350c76ae52dSmrg $echo "Libraries have been installed in:" 6351c76ae52dSmrg for libdir in $libdirs; do 6352c76ae52dSmrg $echo " $libdir" 6353c76ae52dSmrg done 6354c76ae52dSmrg $echo 6355c76ae52dSmrg $echo "If you ever happen to want to link against installed libraries" 6356c76ae52dSmrg $echo "in a given directory, LIBDIR, you must either use libtool, and" 6357c76ae52dSmrg $echo "specify the full pathname of the library, or use the \`-LLIBDIR'" 6358c76ae52dSmrg $echo "flag during linking and do at least one of the following:" 6359c76ae52dSmrg if test -n "$shlibpath_var"; then 6360c76ae52dSmrg $echo " - add LIBDIR to the \`$shlibpath_var' environment variable" 6361c76ae52dSmrg $echo " during execution" 6362c76ae52dSmrg fi 6363c76ae52dSmrg if test -n "$runpath_var"; then 6364c76ae52dSmrg $echo " - add LIBDIR to the \`$runpath_var' environment variable" 6365c76ae52dSmrg $echo " during linking" 6366c76ae52dSmrg fi 6367c76ae52dSmrg if test -n "$hardcode_libdir_flag_spec"; then 6368c76ae52dSmrg libdir=LIBDIR 6369c76ae52dSmrg eval flag=\"$hardcode_libdir_flag_spec\" 6370c76ae52dSmrg 6371c76ae52dSmrg $echo " - use the \`$flag' linker flag" 6372c76ae52dSmrg fi 6373c76ae52dSmrg if test -n "$admincmds"; then 6374c76ae52dSmrg $echo " - have your system administrator run these commands:$admincmds" 6375c76ae52dSmrg fi 6376c76ae52dSmrg if test -f /etc/ld.so.conf; then 6377c76ae52dSmrg $echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" 6378c76ae52dSmrg fi 6379c76ae52dSmrg $echo 6380c76ae52dSmrg $echo "See any operating system documentation about shared libraries for" 6381c76ae52dSmrg $echo "more information, such as the ld(1) and ld.so(8) manual pages." 6382c76ae52dSmrg $echo "X----------------------------------------------------------------------" | $Xsed 6383c76ae52dSmrg exit $EXIT_SUCCESS 6384c76ae52dSmrg ;; 6385c76ae52dSmrg 6386c76ae52dSmrg # libtool execute mode 6387c76ae52dSmrg execute) 6388c76ae52dSmrg modename="$modename: execute" 6389c76ae52dSmrg 6390c76ae52dSmrg # The first argument is the command name. 6391c76ae52dSmrg cmd="$nonopt" 6392c76ae52dSmrg if test -z "$cmd"; then 6393c76ae52dSmrg $echo "$modename: you must specify a COMMAND" 1>&2 6394c76ae52dSmrg $echo "$help" 6395c76ae52dSmrg exit $EXIT_FAILURE 6396c76ae52dSmrg fi 6397c76ae52dSmrg 6398c76ae52dSmrg # Handle -dlopen flags immediately. 6399c76ae52dSmrg for file in $execute_dlfiles; do 6400c76ae52dSmrg if test ! -f "$file"; then 6401c76ae52dSmrg $echo "$modename: \`$file' is not a file" 1>&2 6402c76ae52dSmrg $echo "$help" 1>&2 6403c76ae52dSmrg exit $EXIT_FAILURE 6404c76ae52dSmrg fi 6405c76ae52dSmrg 6406c76ae52dSmrg dir= 6407c76ae52dSmrg case $file in 6408c76ae52dSmrg *.la) 6409c76ae52dSmrg # Check to see that this really is a libtool archive. 6410c76ae52dSmrg if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : 6411c76ae52dSmrg else 6412c76ae52dSmrg $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 6413c76ae52dSmrg $echo "$help" 1>&2 6414c76ae52dSmrg exit $EXIT_FAILURE 6415c76ae52dSmrg fi 6416c76ae52dSmrg 6417c76ae52dSmrg # Read the libtool library. 6418c76ae52dSmrg dlname= 6419c76ae52dSmrg library_names= 6420c76ae52dSmrg 6421c76ae52dSmrg # If there is no directory component, then add one. 6422c76ae52dSmrg case $file in 6423c76ae52dSmrg */* | *\\*) . $file ;; 6424c76ae52dSmrg *) . ./$file ;; 6425c76ae52dSmrg esac 6426c76ae52dSmrg 6427c76ae52dSmrg # Skip this library if it cannot be dlopened. 6428c76ae52dSmrg if test -z "$dlname"; then 6429c76ae52dSmrg # Warn if it was a shared library. 6430c76ae52dSmrg test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'" 6431c76ae52dSmrg continue 6432c76ae52dSmrg fi 6433c76ae52dSmrg 6434c76ae52dSmrg dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` 6435c76ae52dSmrg test "X$dir" = "X$file" && dir=. 6436c76ae52dSmrg 6437c76ae52dSmrg if test -f "$dir/$objdir/$dlname"; then 6438c76ae52dSmrg dir="$dir/$objdir" 6439c76ae52dSmrg else 64400d590c07Smrg if test ! -f "$dir/$dlname"; then 64410d590c07Smrg $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 64420d590c07Smrg exit $EXIT_FAILURE 64430d590c07Smrg fi 6444c76ae52dSmrg fi 6445c76ae52dSmrg ;; 6446c76ae52dSmrg 6447c76ae52dSmrg *.lo) 6448c76ae52dSmrg # Just add the directory containing the .lo file. 6449c76ae52dSmrg dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` 6450c76ae52dSmrg test "X$dir" = "X$file" && dir=. 6451c76ae52dSmrg ;; 6452c76ae52dSmrg 6453c76ae52dSmrg *) 6454c76ae52dSmrg $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2 6455c76ae52dSmrg continue 6456c76ae52dSmrg ;; 6457c76ae52dSmrg esac 6458c76ae52dSmrg 6459c76ae52dSmrg # Get the absolute pathname. 6460c76ae52dSmrg absdir=`cd "$dir" && pwd` 6461c76ae52dSmrg test -n "$absdir" && dir="$absdir" 6462c76ae52dSmrg 6463c76ae52dSmrg # Now add the directory to shlibpath_var. 6464c76ae52dSmrg if eval "test -z \"\$$shlibpath_var\""; then 6465c76ae52dSmrg eval "$shlibpath_var=\"\$dir\"" 6466c76ae52dSmrg else 6467c76ae52dSmrg eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" 6468c76ae52dSmrg fi 6469c76ae52dSmrg done 6470c76ae52dSmrg 6471c76ae52dSmrg # This variable tells wrapper scripts just to set shlibpath_var 6472c76ae52dSmrg # rather than running their programs. 6473c76ae52dSmrg libtool_execute_magic="$magic" 6474c76ae52dSmrg 6475c76ae52dSmrg # Check if any of the arguments is a wrapper script. 6476c76ae52dSmrg args= 6477c76ae52dSmrg for file 6478c76ae52dSmrg do 6479c76ae52dSmrg case $file in 6480c76ae52dSmrg -*) ;; 6481c76ae52dSmrg *) 6482c76ae52dSmrg # Do a test to see if this is really a libtool program. 6483c76ae52dSmrg if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 6484c76ae52dSmrg # If there is no directory component, then add one. 6485c76ae52dSmrg case $file in 6486c76ae52dSmrg */* | *\\*) . $file ;; 6487c76ae52dSmrg *) . ./$file ;; 6488c76ae52dSmrg esac 6489c76ae52dSmrg 6490c76ae52dSmrg # Transform arg to wrapped name. 6491c76ae52dSmrg file="$progdir/$program" 6492c76ae52dSmrg fi 6493c76ae52dSmrg ;; 6494c76ae52dSmrg esac 6495c76ae52dSmrg # Quote arguments (to preserve shell metacharacters). 6496c76ae52dSmrg file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"` 6497c76ae52dSmrg args="$args \"$file\"" 6498c76ae52dSmrg done 6499c76ae52dSmrg 6500c76ae52dSmrg if test -z "$run"; then 6501c76ae52dSmrg if test -n "$shlibpath_var"; then 6502c76ae52dSmrg # Export the shlibpath_var. 6503c76ae52dSmrg eval "export $shlibpath_var" 6504c76ae52dSmrg fi 6505c76ae52dSmrg 6506c76ae52dSmrg # Restore saved environment variables 65070d590c07Smrg for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 65080d590c07Smrg do 65090d590c07Smrg eval "if test \"\${save_$lt_var+set}\" = set; then 65100d590c07Smrg $lt_var=\$save_$lt_var; export $lt_var 65110d590c07Smrg fi" 65120d590c07Smrg done 6513c76ae52dSmrg 6514c76ae52dSmrg # Now prepare to actually exec the command. 6515c76ae52dSmrg exec_cmd="\$cmd$args" 6516c76ae52dSmrg else 6517c76ae52dSmrg # Display what would be done. 6518c76ae52dSmrg if test -n "$shlibpath_var"; then 6519c76ae52dSmrg eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\"" 6520c76ae52dSmrg $echo "export $shlibpath_var" 6521c76ae52dSmrg fi 6522c76ae52dSmrg $echo "$cmd$args" 6523c76ae52dSmrg exit $EXIT_SUCCESS 6524c76ae52dSmrg fi 6525c76ae52dSmrg ;; 6526c76ae52dSmrg 6527c76ae52dSmrg # libtool clean and uninstall mode 6528c76ae52dSmrg clean | uninstall) 6529c76ae52dSmrg modename="$modename: $mode" 6530c76ae52dSmrg rm="$nonopt" 6531c76ae52dSmrg files= 6532c76ae52dSmrg rmforce= 6533c76ae52dSmrg exit_status=0 6534c76ae52dSmrg 6535c76ae52dSmrg # This variable tells wrapper scripts just to set variables rather 6536c76ae52dSmrg # than running their programs. 6537c76ae52dSmrg libtool_install_magic="$magic" 6538c76ae52dSmrg 6539c76ae52dSmrg for arg 6540c76ae52dSmrg do 6541c76ae52dSmrg case $arg in 6542c76ae52dSmrg -f) rm="$rm $arg"; rmforce=yes ;; 6543c76ae52dSmrg -*) rm="$rm $arg" ;; 6544c76ae52dSmrg *) files="$files $arg" ;; 6545c76ae52dSmrg esac 6546c76ae52dSmrg done 6547c76ae52dSmrg 6548c76ae52dSmrg if test -z "$rm"; then 6549c76ae52dSmrg $echo "$modename: you must specify an RM program" 1>&2 6550c76ae52dSmrg $echo "$help" 1>&2 6551c76ae52dSmrg exit $EXIT_FAILURE 6552c76ae52dSmrg fi 6553c76ae52dSmrg 6554c76ae52dSmrg rmdirs= 6555c76ae52dSmrg 6556c76ae52dSmrg origobjdir="$objdir" 6557c76ae52dSmrg for file in $files; do 6558c76ae52dSmrg dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` 6559c76ae52dSmrg if test "X$dir" = "X$file"; then 6560c76ae52dSmrg dir=. 6561c76ae52dSmrg objdir="$origobjdir" 6562c76ae52dSmrg else 6563c76ae52dSmrg objdir="$dir/$origobjdir" 6564c76ae52dSmrg fi 6565c76ae52dSmrg name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 6566c76ae52dSmrg test "$mode" = uninstall && objdir="$dir" 6567c76ae52dSmrg 6568c76ae52dSmrg # Remember objdir for removal later, being careful to avoid duplicates 6569c76ae52dSmrg if test "$mode" = clean; then 6570c76ae52dSmrg case " $rmdirs " in 6571c76ae52dSmrg *" $objdir "*) ;; 6572c76ae52dSmrg *) rmdirs="$rmdirs $objdir" ;; 6573c76ae52dSmrg esac 6574c76ae52dSmrg fi 6575c76ae52dSmrg 6576c76ae52dSmrg # Don't error if the file doesn't exist and rm -f was used. 6577c76ae52dSmrg if (test -L "$file") >/dev/null 2>&1 \ 6578c76ae52dSmrg || (test -h "$file") >/dev/null 2>&1 \ 6579c76ae52dSmrg || test -f "$file"; then 6580c76ae52dSmrg : 6581c76ae52dSmrg elif test -d "$file"; then 6582c76ae52dSmrg exit_status=1 6583c76ae52dSmrg continue 6584c76ae52dSmrg elif test "$rmforce" = yes; then 6585c76ae52dSmrg continue 6586c76ae52dSmrg fi 6587c76ae52dSmrg 6588c76ae52dSmrg rmfiles="$file" 6589c76ae52dSmrg 6590c76ae52dSmrg case $name in 6591c76ae52dSmrg *.la) 6592c76ae52dSmrg # Possibly a libtool archive, so verify it. 6593c76ae52dSmrg if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 6594c76ae52dSmrg . $dir/$name 6595c76ae52dSmrg 6596c76ae52dSmrg # Delete the libtool libraries and symlinks. 6597c76ae52dSmrg for n in $library_names; do 6598c76ae52dSmrg rmfiles="$rmfiles $objdir/$n" 6599c76ae52dSmrg done 6600c76ae52dSmrg test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" 6601c76ae52dSmrg 6602c76ae52dSmrg case "$mode" in 6603c76ae52dSmrg clean) 6604c76ae52dSmrg case " $library_names " in 6605c76ae52dSmrg # " " in the beginning catches empty $dlname 6606c76ae52dSmrg *" $dlname "*) ;; 6607c76ae52dSmrg *) rmfiles="$rmfiles $objdir/$dlname" ;; 6608c76ae52dSmrg esac 6609c76ae52dSmrg test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" 6610c76ae52dSmrg ;; 6611c76ae52dSmrg uninstall) 6612c76ae52dSmrg if test -n "$library_names"; then 6613c76ae52dSmrg # Do each command in the postuninstall commands. 6614c76ae52dSmrg cmds=$postuninstall_cmds 6615c76ae52dSmrg save_ifs="$IFS"; IFS='~' 6616c76ae52dSmrg for cmd in $cmds; do 6617c76ae52dSmrg IFS="$save_ifs" 6618c76ae52dSmrg eval cmd=\"$cmd\" 6619c76ae52dSmrg $show "$cmd" 6620c76ae52dSmrg $run eval "$cmd" 6621c76ae52dSmrg if test "$?" -ne 0 && test "$rmforce" != yes; then 6622c76ae52dSmrg exit_status=1 6623c76ae52dSmrg fi 6624c76ae52dSmrg done 6625c76ae52dSmrg IFS="$save_ifs" 6626c76ae52dSmrg fi 6627c76ae52dSmrg 6628c76ae52dSmrg if test -n "$old_library"; then 6629c76ae52dSmrg # Do each command in the old_postuninstall commands. 6630c76ae52dSmrg cmds=$old_postuninstall_cmds 6631c76ae52dSmrg save_ifs="$IFS"; IFS='~' 6632c76ae52dSmrg for cmd in $cmds; do 6633c76ae52dSmrg IFS="$save_ifs" 6634c76ae52dSmrg eval cmd=\"$cmd\" 6635c76ae52dSmrg $show "$cmd" 6636c76ae52dSmrg $run eval "$cmd" 6637c76ae52dSmrg if test "$?" -ne 0 && test "$rmforce" != yes; then 6638c76ae52dSmrg exit_status=1 6639c76ae52dSmrg fi 6640c76ae52dSmrg done 6641c76ae52dSmrg IFS="$save_ifs" 6642c76ae52dSmrg fi 6643c76ae52dSmrg # FIXME: should reinstall the best remaining shared library. 6644c76ae52dSmrg ;; 6645c76ae52dSmrg esac 6646c76ae52dSmrg fi 6647c76ae52dSmrg ;; 6648c76ae52dSmrg 6649c76ae52dSmrg *.lo) 6650c76ae52dSmrg # Possibly a libtool object, so verify it. 6651c76ae52dSmrg if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 6652c76ae52dSmrg 6653c76ae52dSmrg # Read the .lo file 6654c76ae52dSmrg . $dir/$name 6655c76ae52dSmrg 6656c76ae52dSmrg # Add PIC object to the list of files to remove. 6657c76ae52dSmrg if test -n "$pic_object" \ 6658c76ae52dSmrg && test "$pic_object" != none; then 6659c76ae52dSmrg rmfiles="$rmfiles $dir/$pic_object" 6660c76ae52dSmrg fi 6661c76ae52dSmrg 6662c76ae52dSmrg # Add non-PIC object to the list of files to remove. 6663c76ae52dSmrg if test -n "$non_pic_object" \ 6664c76ae52dSmrg && test "$non_pic_object" != none; then 6665c76ae52dSmrg rmfiles="$rmfiles $dir/$non_pic_object" 6666c76ae52dSmrg fi 6667c76ae52dSmrg fi 6668c76ae52dSmrg ;; 6669c76ae52dSmrg 6670c76ae52dSmrg *) 6671c76ae52dSmrg if test "$mode" = clean ; then 6672c76ae52dSmrg noexename=$name 6673c76ae52dSmrg case $file in 6674c76ae52dSmrg *.exe) 6675c76ae52dSmrg file=`$echo $file|${SED} 's,.exe$,,'` 6676c76ae52dSmrg noexename=`$echo $name|${SED} 's,.exe$,,'` 6677c76ae52dSmrg # $file with .exe has already been added to rmfiles, 6678c76ae52dSmrg # add $file without .exe 6679c76ae52dSmrg rmfiles="$rmfiles $file" 6680c76ae52dSmrg ;; 6681c76ae52dSmrg esac 6682c76ae52dSmrg # Do a test to see if this is a libtool program. 6683c76ae52dSmrg if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 6684c76ae52dSmrg relink_command= 6685c76ae52dSmrg . $dir/$noexename 6686c76ae52dSmrg 6687c76ae52dSmrg # note $name still contains .exe if it was in $file originally 6688c76ae52dSmrg # as does the version of $file that was added into $rmfiles 6689c76ae52dSmrg rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" 6690c76ae52dSmrg if test "$fast_install" = yes && test -n "$relink_command"; then 6691c76ae52dSmrg rmfiles="$rmfiles $objdir/lt-$name" 6692c76ae52dSmrg fi 6693c76ae52dSmrg if test "X$noexename" != "X$name" ; then 6694c76ae52dSmrg rmfiles="$rmfiles $objdir/lt-${noexename}.c" 6695c76ae52dSmrg fi 6696c76ae52dSmrg fi 6697c76ae52dSmrg fi 6698c76ae52dSmrg ;; 6699c76ae52dSmrg esac 6700c76ae52dSmrg $show "$rm $rmfiles" 6701c76ae52dSmrg $run $rm $rmfiles || exit_status=1 6702c76ae52dSmrg done 6703c76ae52dSmrg objdir="$origobjdir" 6704c76ae52dSmrg 6705c76ae52dSmrg # Try to remove the ${objdir}s in the directories where we deleted files 6706c76ae52dSmrg for dir in $rmdirs; do 6707c76ae52dSmrg if test -d "$dir"; then 6708c76ae52dSmrg $show "rmdir $dir" 6709c76ae52dSmrg $run rmdir $dir >/dev/null 2>&1 6710c76ae52dSmrg fi 6711c76ae52dSmrg done 6712c76ae52dSmrg 6713c76ae52dSmrg exit $exit_status 6714c76ae52dSmrg ;; 6715c76ae52dSmrg 6716c76ae52dSmrg "") 6717c76ae52dSmrg $echo "$modename: you must specify a MODE" 1>&2 6718c76ae52dSmrg $echo "$generic_help" 1>&2 6719c76ae52dSmrg exit $EXIT_FAILURE 6720c76ae52dSmrg ;; 6721c76ae52dSmrg esac 6722c76ae52dSmrg 6723c76ae52dSmrg if test -z "$exec_cmd"; then 6724c76ae52dSmrg $echo "$modename: invalid operation mode \`$mode'" 1>&2 6725c76ae52dSmrg $echo "$generic_help" 1>&2 6726c76ae52dSmrg exit $EXIT_FAILURE 6727c76ae52dSmrg fi 6728c76ae52dSmrgfi # test -z "$show_help" 6729c76ae52dSmrg 6730c76ae52dSmrgif test -n "$exec_cmd"; then 6731c76ae52dSmrg eval exec $exec_cmd 6732c76ae52dSmrg exit $EXIT_FAILURE 6733c76ae52dSmrgfi 6734c76ae52dSmrg 6735c76ae52dSmrg# We need to display help for each of the modes. 6736c76ae52dSmrgcase $mode in 6737c76ae52dSmrg"") $echo \ 6738c76ae52dSmrg"Usage: $modename [OPTION]... [MODE-ARG]... 6739c76ae52dSmrg 6740c76ae52dSmrgProvide generalized library-building support services. 6741c76ae52dSmrg 6742c76ae52dSmrg --config show all configuration variables 6743c76ae52dSmrg --debug enable verbose shell tracing 6744c76ae52dSmrg-n, --dry-run display commands without modifying any files 6745c76ae52dSmrg --features display basic configuration information and exit 6746c76ae52dSmrg --finish same as \`--mode=finish' 6747c76ae52dSmrg --help display this help message and exit 6748c76ae52dSmrg --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] 6749c76ae52dSmrg --quiet same as \`--silent' 6750c76ae52dSmrg --silent don't print informational messages 6751c76ae52dSmrg --tag=TAG use configuration variables from tag TAG 6752c76ae52dSmrg --version print version information 6753c76ae52dSmrg 6754c76ae52dSmrgMODE must be one of the following: 6755c76ae52dSmrg 6756c76ae52dSmrg clean remove files from the build directory 6757c76ae52dSmrg compile compile a source file into a libtool object 6758c76ae52dSmrg execute automatically set library path, then run a program 6759c76ae52dSmrg finish complete the installation of libtool libraries 6760c76ae52dSmrg install install libraries or executables 6761c76ae52dSmrg link create a library or an executable 6762c76ae52dSmrg uninstall remove libraries from an installed directory 6763c76ae52dSmrg 6764c76ae52dSmrgMODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for 6765c76ae52dSmrga more detailed description of MODE. 6766c76ae52dSmrg 6767c76ae52dSmrgReport bugs to <bug-libtool@gnu.org>." 6768c76ae52dSmrg exit $EXIT_SUCCESS 6769c76ae52dSmrg ;; 6770c76ae52dSmrg 6771c76ae52dSmrgclean) 6772c76ae52dSmrg $echo \ 6773c76ae52dSmrg"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE... 6774c76ae52dSmrg 6775c76ae52dSmrgRemove files from the build directory. 6776c76ae52dSmrg 6777c76ae52dSmrgRM is the name of the program to use to delete files associated with each FILE 6778c76ae52dSmrg(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 6779c76ae52dSmrgto RM. 6780c76ae52dSmrg 6781c76ae52dSmrgIf FILE is a libtool library, object or program, all the files associated 6782c76ae52dSmrgwith it are deleted. Otherwise, only FILE itself is deleted using RM." 6783c76ae52dSmrg ;; 6784c76ae52dSmrg 6785c76ae52dSmrgcompile) 6786c76ae52dSmrg $echo \ 6787c76ae52dSmrg"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE 6788c76ae52dSmrg 6789c76ae52dSmrgCompile a source file into a libtool library object. 6790c76ae52dSmrg 6791c76ae52dSmrgThis mode accepts the following additional options: 6792c76ae52dSmrg 6793c76ae52dSmrg -o OUTPUT-FILE set the output file name to OUTPUT-FILE 6794c76ae52dSmrg -prefer-pic try to building PIC objects only 6795c76ae52dSmrg -prefer-non-pic try to building non-PIC objects only 6796c76ae52dSmrg -static always build a \`.o' file suitable for static linking 6797c76ae52dSmrg 6798c76ae52dSmrgCOMPILE-COMMAND is a command to be used in creating a \`standard' object file 6799c76ae52dSmrgfrom the given SOURCEFILE. 6800c76ae52dSmrg 6801c76ae52dSmrgThe output file name is determined by removing the directory component from 6802c76ae52dSmrgSOURCEFILE, then substituting the C source code suffix \`.c' with the 6803c76ae52dSmrglibrary object suffix, \`.lo'." 6804c76ae52dSmrg ;; 6805c76ae52dSmrg 6806c76ae52dSmrgexecute) 6807c76ae52dSmrg $echo \ 6808c76ae52dSmrg"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]... 6809c76ae52dSmrg 6810c76ae52dSmrgAutomatically set library path, then run a program. 6811c76ae52dSmrg 6812c76ae52dSmrgThis mode accepts the following additional options: 6813c76ae52dSmrg 6814c76ae52dSmrg -dlopen FILE add the directory containing FILE to the library path 6815c76ae52dSmrg 6816c76ae52dSmrgThis mode sets the library path environment variable according to \`-dlopen' 6817c76ae52dSmrgflags. 6818c76ae52dSmrg 6819c76ae52dSmrgIf any of the ARGS are libtool executable wrappers, then they are translated 6820c76ae52dSmrginto their corresponding uninstalled binary, and any of their required library 6821c76ae52dSmrgdirectories are added to the library path. 6822c76ae52dSmrg 6823c76ae52dSmrgThen, COMMAND is executed, with ARGS as arguments." 6824c76ae52dSmrg ;; 6825c76ae52dSmrg 6826c76ae52dSmrgfinish) 6827c76ae52dSmrg $echo \ 6828c76ae52dSmrg"Usage: $modename [OPTION]... --mode=finish [LIBDIR]... 6829c76ae52dSmrg 6830c76ae52dSmrgComplete the installation of libtool libraries. 6831c76ae52dSmrg 6832c76ae52dSmrgEach LIBDIR is a directory that contains libtool libraries. 6833c76ae52dSmrg 6834c76ae52dSmrgThe commands that this mode executes may require superuser privileges. Use 6835c76ae52dSmrgthe \`--dry-run' option if you just want to see what would be executed." 6836c76ae52dSmrg ;; 6837c76ae52dSmrg 6838c76ae52dSmrginstall) 6839c76ae52dSmrg $echo \ 6840c76ae52dSmrg"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND... 6841c76ae52dSmrg 6842c76ae52dSmrgInstall executables or libraries. 6843c76ae52dSmrg 6844c76ae52dSmrgINSTALL-COMMAND is the installation command. The first component should be 6845c76ae52dSmrgeither the \`install' or \`cp' program. 6846c76ae52dSmrg 6847c76ae52dSmrgThe rest of the components are interpreted as arguments to that command (only 6848c76ae52dSmrgBSD-compatible install options are recognized)." 6849c76ae52dSmrg ;; 6850c76ae52dSmrg 6851c76ae52dSmrglink) 6852c76ae52dSmrg $echo \ 6853c76ae52dSmrg"Usage: $modename [OPTION]... --mode=link LINK-COMMAND... 6854c76ae52dSmrg 6855c76ae52dSmrgLink object files or libraries together to form another library, or to 6856c76ae52dSmrgcreate an executable program. 6857c76ae52dSmrg 6858c76ae52dSmrgLINK-COMMAND is a command using the C compiler that you would use to create 6859c76ae52dSmrga program from several object files. 6860c76ae52dSmrg 6861c76ae52dSmrgThe following components of LINK-COMMAND are treated specially: 6862c76ae52dSmrg 6863c76ae52dSmrg -all-static do not do any dynamic linking at all 6864c76ae52dSmrg -avoid-version do not add a version suffix if possible 6865c76ae52dSmrg -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime 6866c76ae52dSmrg -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols 6867c76ae52dSmrg -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) 6868c76ae52dSmrg -export-symbols SYMFILE 68690d590c07Smrg try to export only the symbols listed in SYMFILE 6870c76ae52dSmrg -export-symbols-regex REGEX 68710d590c07Smrg try to export only the symbols matching REGEX 6872c76ae52dSmrg -LLIBDIR search LIBDIR for required installed libraries 6873c76ae52dSmrg -lNAME OUTPUT-FILE requires the installed library libNAME 6874c76ae52dSmrg -module build a library that can dlopened 6875c76ae52dSmrg -no-fast-install disable the fast-install mode 6876c76ae52dSmrg -no-install link a not-installable executable 6877c76ae52dSmrg -no-undefined declare that a library does not refer to external symbols 6878c76ae52dSmrg -o OUTPUT-FILE create OUTPUT-FILE from the specified objects 6879c76ae52dSmrg -objectlist FILE Use a list of object files found in FILE to specify objects 6880c76ae52dSmrg -precious-files-regex REGEX 6881c76ae52dSmrg don't remove output files matching REGEX 6882c76ae52dSmrg -release RELEASE specify package release information 6883c76ae52dSmrg -rpath LIBDIR the created library will eventually be installed in LIBDIR 6884c76ae52dSmrg -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries 68850d590c07Smrg -static do not do any dynamic linking of uninstalled libtool libraries 68860d590c07Smrg -static-libtool-libs 68870d590c07Smrg do not do any dynamic linking of libtool libraries 6888c76ae52dSmrg -version-info CURRENT[:REVISION[:AGE]] 68890d590c07Smrg specify library version info [each variable defaults to 0] 6890c76ae52dSmrg 6891c76ae52dSmrgAll other options (arguments beginning with \`-') are ignored. 6892c76ae52dSmrg 6893c76ae52dSmrgEvery other argument is treated as a filename. Files ending in \`.la' are 6894c76ae52dSmrgtreated as uninstalled libtool libraries, other files are standard or library 6895c76ae52dSmrgobject files. 6896c76ae52dSmrg 6897c76ae52dSmrgIf the OUTPUT-FILE ends in \`.la', then a libtool library is created, 6898c76ae52dSmrgonly library objects (\`.lo' files) may be specified, and \`-rpath' is 6899c76ae52dSmrgrequired, except when creating a convenience library. 6900c76ae52dSmrg 6901c76ae52dSmrgIf OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created 6902c76ae52dSmrgusing \`ar' and \`ranlib', or on Windows using \`lib'. 6903c76ae52dSmrg 6904c76ae52dSmrgIf OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file 6905c76ae52dSmrgis created, otherwise an executable program is created." 6906c76ae52dSmrg ;; 6907c76ae52dSmrg 6908c76ae52dSmrguninstall) 6909c76ae52dSmrg $echo \ 6910c76ae52dSmrg"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... 6911c76ae52dSmrg 6912c76ae52dSmrgRemove libraries from an installation directory. 6913c76ae52dSmrg 6914c76ae52dSmrgRM is the name of the program to use to delete files associated with each FILE 6915c76ae52dSmrg(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 6916c76ae52dSmrgto RM. 6917c76ae52dSmrg 6918c76ae52dSmrgIf FILE is a libtool library, all the files associated with it are deleted. 6919c76ae52dSmrgOtherwise, only FILE itself is deleted using RM." 6920c76ae52dSmrg ;; 6921c76ae52dSmrg 6922c76ae52dSmrg*) 6923c76ae52dSmrg $echo "$modename: invalid operation mode \`$mode'" 1>&2 6924c76ae52dSmrg $echo "$help" 1>&2 6925c76ae52dSmrg exit $EXIT_FAILURE 6926c76ae52dSmrg ;; 6927c76ae52dSmrgesac 6928c76ae52dSmrg 6929c76ae52dSmrg$echo 6930c76ae52dSmrg$echo "Try \`$modename --help' for more information about other modes." 6931c76ae52dSmrg 6932c76ae52dSmrgexit $? 6933c76ae52dSmrg 6934c76ae52dSmrg# The TAGs below are defined such that we never get into a situation 6935c76ae52dSmrg# in which we disable both kinds of libraries. Given conflicting 6936c76ae52dSmrg# choices, we go for a static library, that is the most portable, 6937c76ae52dSmrg# since we can't tell whether shared libraries were disabled because 6938c76ae52dSmrg# the user asked for that or because the platform doesn't support 6939c76ae52dSmrg# them. This is particularly important on AIX, because we don't 6940c76ae52dSmrg# support having both static and shared libraries enabled at the same 6941c76ae52dSmrg# time on that platform, so we default to a shared-only configuration. 6942c76ae52dSmrg# If a disable-shared tag is given, we'll fallback to a static-only 6943c76ae52dSmrg# configuration. But we'll never go from static-only to shared-only. 6944c76ae52dSmrg 6945c76ae52dSmrg# ### BEGIN LIBTOOL TAG CONFIG: disable-shared 6946c76ae52dSmrgdisable_libs=shared 6947c76ae52dSmrg# ### END LIBTOOL TAG CONFIG: disable-shared 6948c76ae52dSmrg 6949c76ae52dSmrg# ### BEGIN LIBTOOL TAG CONFIG: disable-static 6950c76ae52dSmrgdisable_libs=static 6951c76ae52dSmrg# ### END LIBTOOL TAG CONFIG: disable-static 6952c76ae52dSmrg 6953c76ae52dSmrg# Local Variables: 6954c76ae52dSmrg# mode:shell-script 6955c76ae52dSmrg# sh-indentation:2 6956c76ae52dSmrg# End: 6957