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