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