ltmain.sh revision 357bfbb2
1357bfbb2Smrg# ltmain.sh - Provide generalized library-building support services. 2357bfbb2Smrg# NOTE: Changing this file will not affect anything until you rerun configure. 3357bfbb2Smrg# 4357bfbb2Smrg# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005 5357bfbb2Smrg# Free Software Foundation, Inc. 6357bfbb2Smrg# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 7357bfbb2Smrg# 8357bfbb2Smrg# This program is free software; you can redistribute it and/or modify 9357bfbb2Smrg# it under the terms of the GNU General Public License as published by 10357bfbb2Smrg# the Free Software Foundation; either version 2 of the License, or 11357bfbb2Smrg# (at your option) any later version. 12357bfbb2Smrg# 13357bfbb2Smrg# This program is distributed in the hope that it will be useful, but 14357bfbb2Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of 15357bfbb2Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 16357bfbb2Smrg# General Public License for more details. 17357bfbb2Smrg# 18357bfbb2Smrg# You should have received a copy of the GNU General Public License 19357bfbb2Smrg# along with this program; if not, write to the Free Software 20357bfbb2Smrg# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 21357bfbb2Smrg# 22357bfbb2Smrg# As a special exception to the GNU General Public License, if you 23357bfbb2Smrg# distribute this file as part of a program that contains a 24357bfbb2Smrg# configuration script generated by Autoconf, you may include it under 25357bfbb2Smrg# the same distribution terms that you use for the rest of that program. 26357bfbb2Smrg 27357bfbb2Smrgbasename="s,^.*/,,g" 28357bfbb2Smrg 29357bfbb2Smrg# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh 30357bfbb2Smrg# is ksh but when the shell is invoked as "sh" and the current value of 31357bfbb2Smrg# the _XPG environment variable is not equal to 1 (one), the special 32357bfbb2Smrg# positional parameter $0, within a function call, is the name of the 33357bfbb2Smrg# function. 34357bfbb2Smrgprogpath="$0" 35357bfbb2Smrg 36357bfbb2Smrg# The name of this program: 37357bfbb2Smrgprogname=`echo "$progpath" | $SED $basename` 38357bfbb2Smrgmodename="$progname" 39357bfbb2Smrg 40357bfbb2Smrg# Global variables: 41357bfbb2SmrgEXIT_SUCCESS=0 42357bfbb2SmrgEXIT_FAILURE=1 43357bfbb2Smrg 44357bfbb2SmrgPROGRAM=ltmain.sh 45357bfbb2SmrgPACKAGE=libtool 46357bfbb2SmrgVERSION=1.5.22 47357bfbb2SmrgTIMESTAMP=" (1.1220.2.365 2005/12/18 22:14:06)" 48357bfbb2Smrg 49357bfbb2Smrg# See if we are running on zsh, and set the options which allow our 50357bfbb2Smrg# commands through without removal of \ escapes. 51357bfbb2Smrgif test -n "${ZSH_VERSION+set}" ; then 52357bfbb2Smrg setopt NO_GLOB_SUBST 53357bfbb2Smrgfi 54357bfbb2Smrg 55357bfbb2Smrg# Check that we have a working $echo. 56357bfbb2Smrgif test "X$1" = X--no-reexec; then 57357bfbb2Smrg # Discard the --no-reexec flag, and continue. 58357bfbb2Smrg shift 59357bfbb2Smrgelif test "X$1" = X--fallback-echo; then 60357bfbb2Smrg # Avoid inline document here, it may be left over 61357bfbb2Smrg : 62357bfbb2Smrgelif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then 63357bfbb2Smrg # Yippee, $echo works! 64357bfbb2Smrg : 65357bfbb2Smrgelse 66357bfbb2Smrg # Restart under the correct shell, and then maybe $echo will work. 67357bfbb2Smrg exec $SHELL "$progpath" --no-reexec ${1+"$@"} 68357bfbb2Smrgfi 69357bfbb2Smrg 70357bfbb2Smrgif test "X$1" = X--fallback-echo; then 71357bfbb2Smrg # used as fallback echo 72357bfbb2Smrg shift 73357bfbb2Smrg cat <<EOF 74357bfbb2Smrg$* 75357bfbb2SmrgEOF 76357bfbb2Smrg exit $EXIT_SUCCESS 77357bfbb2Smrgfi 78357bfbb2Smrg 79357bfbb2Smrgdefault_mode= 80357bfbb2Smrghelp="Try \`$progname --help' for more information." 81357bfbb2Smrgmagic="%%%MAGIC variable%%%" 82357bfbb2Smrgmkdir="mkdir" 83357bfbb2Smrgmv="mv -f" 84357bfbb2Smrgrm="rm -f" 85357bfbb2Smrg 86357bfbb2Smrg# Sed substitution that helps us do robust quoting. It backslashifies 87357bfbb2Smrg# metacharacters that are still active within double-quoted strings. 88357bfbb2SmrgXsed="${SED}"' -e 1s/^X//' 89357bfbb2Smrgsed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g' 90357bfbb2Smrg# test EBCDIC or ASCII 91357bfbb2Smrgcase `echo X|tr X '\101'` in 92357bfbb2Smrg A) # ASCII based system 93357bfbb2Smrg # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr 94357bfbb2Smrg SP2NL='tr \040 \012' 95357bfbb2Smrg NL2SP='tr \015\012 \040\040' 96357bfbb2Smrg ;; 97357bfbb2Smrg *) # EBCDIC based system 98357bfbb2Smrg SP2NL='tr \100 \n' 99357bfbb2Smrg NL2SP='tr \r\n \100\100' 100357bfbb2Smrg ;; 101357bfbb2Smrgesac 102357bfbb2Smrg 103357bfbb2Smrg# NLS nuisances. 104357bfbb2Smrg# Only set LANG and LC_ALL to C if already set. 105357bfbb2Smrg# These must not be set unconditionally because not all systems understand 106357bfbb2Smrg# e.g. LANG=C (notably SCO). 107357bfbb2Smrg# We save the old values to restore during execute mode. 108357bfbb2Smrgif test "${LC_ALL+set}" = set; then 109357bfbb2Smrg save_LC_ALL="$LC_ALL"; LC_ALL=C; export LC_ALL 110357bfbb2Smrgfi 111357bfbb2Smrgif test "${LANG+set}" = set; then 112357bfbb2Smrg save_LANG="$LANG"; LANG=C; export LANG 113357bfbb2Smrgfi 114357bfbb2Smrg 115357bfbb2Smrg# Make sure IFS has a sensible default 116357bfbb2Smrglt_nl=' 117357bfbb2Smrg' 118357bfbb2SmrgIFS=" $lt_nl" 119357bfbb2Smrg 120357bfbb2Smrgif test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then 121357bfbb2Smrg $echo "$modename: not configured to build any kind of library" 1>&2 122357bfbb2Smrg $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 123357bfbb2Smrg exit $EXIT_FAILURE 124357bfbb2Smrgfi 125357bfbb2Smrg 126357bfbb2Smrg# Global variables. 127357bfbb2Smrgmode=$default_mode 128357bfbb2Smrgnonopt= 129357bfbb2Smrgprev= 130357bfbb2Smrgprevopt= 131357bfbb2Smrgrun= 132357bfbb2Smrgshow="$echo" 133357bfbb2Smrgshow_help= 134357bfbb2Smrgexecute_dlfiles= 135357bfbb2Smrgduplicate_deps=no 136357bfbb2Smrgpreserve_args= 137357bfbb2Smrglo2o="s/\\.lo\$/.${objext}/" 138357bfbb2Smrgo2lo="s/\\.${objext}\$/.lo/" 139357bfbb2Smrg 140357bfbb2Smrg##################################### 141357bfbb2Smrg# Shell function definitions: 142357bfbb2Smrg# This seems to be the best place for them 143357bfbb2Smrg 144357bfbb2Smrg# func_mktempdir [string] 145357bfbb2Smrg# Make a temporary directory that won't clash with other running 146357bfbb2Smrg# libtool processes, and avoids race conditions if possible. If 147357bfbb2Smrg# given, STRING is the basename for that directory. 148357bfbb2Smrgfunc_mktempdir () 149357bfbb2Smrg{ 150357bfbb2Smrg my_template="${TMPDIR-/tmp}/${1-$progname}" 151357bfbb2Smrg 152357bfbb2Smrg if test "$run" = ":"; then 153357bfbb2Smrg # Return a directory name, but don't create it in dry-run mode 154357bfbb2Smrg my_tmpdir="${my_template}-$$" 155357bfbb2Smrg else 156357bfbb2Smrg 157357bfbb2Smrg # If mktemp works, use that first and foremost 158357bfbb2Smrg my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` 159357bfbb2Smrg 160357bfbb2Smrg if test ! -d "$my_tmpdir"; then 161357bfbb2Smrg # Failing that, at least try and use $RANDOM to avoid a race 162357bfbb2Smrg my_tmpdir="${my_template}-${RANDOM-0}$$" 163357bfbb2Smrg 164357bfbb2Smrg save_mktempdir_umask=`umask` 165357bfbb2Smrg umask 0077 166357bfbb2Smrg $mkdir "$my_tmpdir" 167357bfbb2Smrg umask $save_mktempdir_umask 168357bfbb2Smrg fi 169357bfbb2Smrg 170357bfbb2Smrg # If we're not in dry-run mode, bomb out on failure 171357bfbb2Smrg test -d "$my_tmpdir" || { 172357bfbb2Smrg $echo "cannot create temporary directory \`$my_tmpdir'" 1>&2 173357bfbb2Smrg exit $EXIT_FAILURE 174357bfbb2Smrg } 175357bfbb2Smrg fi 176357bfbb2Smrg 177357bfbb2Smrg $echo "X$my_tmpdir" | $Xsed 178357bfbb2Smrg} 179357bfbb2Smrg 180357bfbb2Smrg 181357bfbb2Smrg# func_win32_libid arg 182357bfbb2Smrg# return the library type of file 'arg' 183357bfbb2Smrg# 184357bfbb2Smrg# Need a lot of goo to handle *both* DLLs and import libs 185357bfbb2Smrg# Has to be a shell function in order to 'eat' the argument 186357bfbb2Smrg# that is supplied when $file_magic_command is called. 187357bfbb2Smrgfunc_win32_libid () 188357bfbb2Smrg{ 189357bfbb2Smrg win32_libid_type="unknown" 190357bfbb2Smrg win32_fileres=`file -L $1 2>/dev/null` 191357bfbb2Smrg case $win32_fileres in 192357bfbb2Smrg *ar\ archive\ import\ library*) # definitely import 193357bfbb2Smrg win32_libid_type="x86 archive import" 194357bfbb2Smrg ;; 195357bfbb2Smrg *ar\ archive*) # could be an import, or static 196357bfbb2Smrg if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \ 197357bfbb2Smrg $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then 198357bfbb2Smrg win32_nmres=`eval $NM -f posix -A $1 | \ 199357bfbb2Smrg $SED -n -e '1,100{/ I /{s,.*,import,;p;q;};}'` 200357bfbb2Smrg case $win32_nmres in 201357bfbb2Smrg import*) win32_libid_type="x86 archive import";; 202357bfbb2Smrg *) win32_libid_type="x86 archive static";; 203357bfbb2Smrg esac 204357bfbb2Smrg fi 205357bfbb2Smrg ;; 206357bfbb2Smrg *DLL*) 207357bfbb2Smrg win32_libid_type="x86 DLL" 208357bfbb2Smrg ;; 209357bfbb2Smrg *executable*) # but shell scripts are "executable" too... 210357bfbb2Smrg case $win32_fileres in 211357bfbb2Smrg *MS\ Windows\ PE\ Intel*) 212357bfbb2Smrg win32_libid_type="x86 DLL" 213357bfbb2Smrg ;; 214357bfbb2Smrg esac 215357bfbb2Smrg ;; 216357bfbb2Smrg esac 217357bfbb2Smrg $echo $win32_libid_type 218357bfbb2Smrg} 219357bfbb2Smrg 220357bfbb2Smrg 221357bfbb2Smrg# func_infer_tag arg 222357bfbb2Smrg# Infer tagged configuration to use if any are available and 223357bfbb2Smrg# if one wasn't chosen via the "--tag" command line option. 224357bfbb2Smrg# Only attempt this if the compiler in the base compile 225357bfbb2Smrg# command doesn't match the default compiler. 226357bfbb2Smrg# arg is usually of the form 'gcc ...' 227357bfbb2Smrgfunc_infer_tag () 228357bfbb2Smrg{ 229357bfbb2Smrg if test -n "$available_tags" && test -z "$tagname"; then 230357bfbb2Smrg CC_quoted= 231357bfbb2Smrg for arg in $CC; do 232357bfbb2Smrg case $arg in 233357bfbb2Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 234357bfbb2Smrg arg="\"$arg\"" 235357bfbb2Smrg ;; 236357bfbb2Smrg esac 237357bfbb2Smrg CC_quoted="$CC_quoted $arg" 238357bfbb2Smrg done 239357bfbb2Smrg case $@ in 240357bfbb2Smrg # Blanks in the command may have been stripped by the calling shell, 241357bfbb2Smrg # but not from the CC environment variable when configure was run. 242357bfbb2Smrg " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;; 243357bfbb2Smrg # Blanks at the start of $base_compile will cause this to fail 244357bfbb2Smrg # if we don't check for them as well. 245357bfbb2Smrg *) 246357bfbb2Smrg for z in $available_tags; do 247357bfbb2Smrg if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then 248357bfbb2Smrg # Evaluate the configuration. 249357bfbb2Smrg eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" 250357bfbb2Smrg CC_quoted= 251357bfbb2Smrg for arg in $CC; do 252357bfbb2Smrg # Double-quote args containing other shell metacharacters. 253357bfbb2Smrg case $arg in 254357bfbb2Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 255357bfbb2Smrg arg="\"$arg\"" 256357bfbb2Smrg ;; 257357bfbb2Smrg esac 258357bfbb2Smrg CC_quoted="$CC_quoted $arg" 259357bfbb2Smrg done 260357bfbb2Smrg case "$@ " in 261357bfbb2Smrg " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) 262357bfbb2Smrg # The compiler in the base compile command matches 263357bfbb2Smrg # the one in the tagged configuration. 264357bfbb2Smrg # Assume this is the tagged configuration we want. 265357bfbb2Smrg tagname=$z 266357bfbb2Smrg break 267357bfbb2Smrg ;; 268357bfbb2Smrg esac 269357bfbb2Smrg fi 270357bfbb2Smrg done 271357bfbb2Smrg # If $tagname still isn't set, then no tagged configuration 272357bfbb2Smrg # was found and let the user know that the "--tag" command 273357bfbb2Smrg # line option must be used. 274357bfbb2Smrg if test -z "$tagname"; then 275357bfbb2Smrg $echo "$modename: unable to infer tagged configuration" 276357bfbb2Smrg $echo "$modename: specify a tag with \`--tag'" 1>&2 277357bfbb2Smrg exit $EXIT_FAILURE 278357bfbb2Smrg# else 279357bfbb2Smrg# $echo "$modename: using $tagname tagged configuration" 280357bfbb2Smrg fi 281357bfbb2Smrg ;; 282357bfbb2Smrg esac 283357bfbb2Smrg fi 284357bfbb2Smrg} 285357bfbb2Smrg 286357bfbb2Smrg 287357bfbb2Smrg# func_extract_an_archive dir oldlib 288357bfbb2Smrgfunc_extract_an_archive () 289357bfbb2Smrg{ 290357bfbb2Smrg f_ex_an_ar_dir="$1"; shift 291357bfbb2Smrg f_ex_an_ar_oldlib="$1" 292357bfbb2Smrg 293357bfbb2Smrg $show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)" 294357bfbb2Smrg $run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" || exit $? 295357bfbb2Smrg if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then 296357bfbb2Smrg : 297357bfbb2Smrg else 298357bfbb2Smrg $echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 1>&2 299357bfbb2Smrg exit $EXIT_FAILURE 300357bfbb2Smrg fi 301357bfbb2Smrg} 302357bfbb2Smrg 303357bfbb2Smrg# func_extract_archives gentop oldlib ... 304357bfbb2Smrgfunc_extract_archives () 305357bfbb2Smrg{ 306357bfbb2Smrg my_gentop="$1"; shift 307357bfbb2Smrg my_oldlibs=${1+"$@"} 308357bfbb2Smrg my_oldobjs="" 309357bfbb2Smrg my_xlib="" 310357bfbb2Smrg my_xabs="" 311357bfbb2Smrg my_xdir="" 312357bfbb2Smrg my_status="" 313357bfbb2Smrg 314357bfbb2Smrg $show "${rm}r $my_gentop" 315357bfbb2Smrg $run ${rm}r "$my_gentop" 316357bfbb2Smrg $show "$mkdir $my_gentop" 317357bfbb2Smrg $run $mkdir "$my_gentop" 318357bfbb2Smrg my_status=$? 319357bfbb2Smrg if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then 320357bfbb2Smrg exit $my_status 321357bfbb2Smrg fi 322357bfbb2Smrg 323357bfbb2Smrg for my_xlib in $my_oldlibs; do 324357bfbb2Smrg # Extract the objects. 325357bfbb2Smrg case $my_xlib in 326357bfbb2Smrg [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; 327357bfbb2Smrg *) my_xabs=`pwd`"/$my_xlib" ;; 328357bfbb2Smrg esac 329357bfbb2Smrg my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'` 330357bfbb2Smrg my_xdir="$my_gentop/$my_xlib" 331357bfbb2Smrg 332357bfbb2Smrg $show "${rm}r $my_xdir" 333357bfbb2Smrg $run ${rm}r "$my_xdir" 334357bfbb2Smrg $show "$mkdir $my_xdir" 335357bfbb2Smrg $run $mkdir "$my_xdir" 336357bfbb2Smrg exit_status=$? 337357bfbb2Smrg if test "$exit_status" -ne 0 && test ! -d "$my_xdir"; then 338357bfbb2Smrg exit $exit_status 339357bfbb2Smrg fi 340357bfbb2Smrg case $host in 341357bfbb2Smrg *-darwin*) 342357bfbb2Smrg $show "Extracting $my_xabs" 343357bfbb2Smrg # Do not bother doing anything if just a dry run 344357bfbb2Smrg if test -z "$run"; then 345357bfbb2Smrg darwin_orig_dir=`pwd` 346357bfbb2Smrg cd $my_xdir || exit $? 347357bfbb2Smrg darwin_archive=$my_xabs 348357bfbb2Smrg darwin_curdir=`pwd` 349357bfbb2Smrg darwin_base_archive=`$echo "X$darwin_archive" | $Xsed -e 's%^.*/%%'` 350357bfbb2Smrg darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null` 351357bfbb2Smrg if test -n "$darwin_arches"; then 352357bfbb2Smrg darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'` 353357bfbb2Smrg darwin_arch= 354357bfbb2Smrg $show "$darwin_base_archive has multiple architectures $darwin_arches" 355357bfbb2Smrg for darwin_arch in $darwin_arches ; do 356357bfbb2Smrg mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}" 357357bfbb2Smrg lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" 358357bfbb2Smrg cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" 359357bfbb2Smrg func_extract_an_archive "`pwd`" "${darwin_base_archive}" 360357bfbb2Smrg cd "$darwin_curdir" 361357bfbb2Smrg $rm "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" 362357bfbb2Smrg done # $darwin_arches 363357bfbb2Smrg ## Okay now we have a bunch of thin objects, gotta fatten them up :) 364357bfbb2Smrg darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP` 365357bfbb2Smrg darwin_file= 366357bfbb2Smrg darwin_files= 367357bfbb2Smrg for darwin_file in $darwin_filelist; do 368357bfbb2Smrg darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` 369357bfbb2Smrg lipo -create -output "$darwin_file" $darwin_files 370357bfbb2Smrg done # $darwin_filelist 371357bfbb2Smrg ${rm}r unfat-$$ 372357bfbb2Smrg cd "$darwin_orig_dir" 373357bfbb2Smrg else 374357bfbb2Smrg cd "$darwin_orig_dir" 375357bfbb2Smrg func_extract_an_archive "$my_xdir" "$my_xabs" 376357bfbb2Smrg fi # $darwin_arches 377357bfbb2Smrg fi # $run 378357bfbb2Smrg ;; 379357bfbb2Smrg *) 380357bfbb2Smrg func_extract_an_archive "$my_xdir" "$my_xabs" 381357bfbb2Smrg ;; 382357bfbb2Smrg esac 383357bfbb2Smrg my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` 384357bfbb2Smrg done 385357bfbb2Smrg func_extract_archives_result="$my_oldobjs" 386357bfbb2Smrg} 387357bfbb2Smrg# End of Shell function definitions 388357bfbb2Smrg##################################### 389357bfbb2Smrg 390357bfbb2Smrg# Darwin sucks 391357bfbb2Smrgeval std_shrext=\"$shrext_cmds\" 392357bfbb2Smrg 393357bfbb2Smrgdisable_libs=no 394357bfbb2Smrg 395357bfbb2Smrg# Parse our command line options once, thoroughly. 396357bfbb2Smrgwhile test "$#" -gt 0 397357bfbb2Smrgdo 398357bfbb2Smrg arg="$1" 399357bfbb2Smrg shift 400357bfbb2Smrg 401357bfbb2Smrg case $arg in 402357bfbb2Smrg -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; 403357bfbb2Smrg *) optarg= ;; 404357bfbb2Smrg esac 405357bfbb2Smrg 406357bfbb2Smrg # If the previous option needs an argument, assign it. 407357bfbb2Smrg if test -n "$prev"; then 408357bfbb2Smrg case $prev in 409357bfbb2Smrg execute_dlfiles) 410357bfbb2Smrg execute_dlfiles="$execute_dlfiles $arg" 411357bfbb2Smrg ;; 412357bfbb2Smrg tag) 413357bfbb2Smrg tagname="$arg" 414357bfbb2Smrg preserve_args="${preserve_args}=$arg" 415357bfbb2Smrg 416357bfbb2Smrg # Check whether tagname contains only valid characters 417357bfbb2Smrg case $tagname in 418357bfbb2Smrg *[!-_A-Za-z0-9,/]*) 419357bfbb2Smrg $echo "$progname: invalid tag name: $tagname" 1>&2 420357bfbb2Smrg exit $EXIT_FAILURE 421357bfbb2Smrg ;; 422357bfbb2Smrg esac 423357bfbb2Smrg 424357bfbb2Smrg case $tagname in 425357bfbb2Smrg CC) 426357bfbb2Smrg # Don't test for the "default" C tag, as we know, it's there, but 427357bfbb2Smrg # not specially marked. 428357bfbb2Smrg ;; 429357bfbb2Smrg *) 430357bfbb2Smrg if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then 431357bfbb2Smrg taglist="$taglist $tagname" 432357bfbb2Smrg # Evaluate the configuration. 433357bfbb2Smrg eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`" 434357bfbb2Smrg else 435357bfbb2Smrg $echo "$progname: ignoring unknown tag $tagname" 1>&2 436357bfbb2Smrg fi 437357bfbb2Smrg ;; 438357bfbb2Smrg esac 439357bfbb2Smrg ;; 440357bfbb2Smrg *) 441357bfbb2Smrg eval "$prev=\$arg" 442357bfbb2Smrg ;; 443357bfbb2Smrg esac 444357bfbb2Smrg 445357bfbb2Smrg prev= 446357bfbb2Smrg prevopt= 447357bfbb2Smrg continue 448357bfbb2Smrg fi 449357bfbb2Smrg 450357bfbb2Smrg # Have we seen a non-optional argument yet? 451357bfbb2Smrg case $arg in 452357bfbb2Smrg --help) 453357bfbb2Smrg show_help=yes 454357bfbb2Smrg ;; 455357bfbb2Smrg 456357bfbb2Smrg --version) 457357bfbb2Smrg $echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP" 458357bfbb2Smrg $echo 459357bfbb2Smrg $echo "Copyright (C) 2005 Free Software Foundation, Inc." 460357bfbb2Smrg $echo "This is free software; see the source for copying conditions. There is NO" 461357bfbb2Smrg $echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 462357bfbb2Smrg exit $? 463357bfbb2Smrg ;; 464357bfbb2Smrg 465357bfbb2Smrg --config) 466357bfbb2Smrg ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath 467357bfbb2Smrg # Now print the configurations for the tags. 468357bfbb2Smrg for tagname in $taglist; do 469357bfbb2Smrg ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath" 470357bfbb2Smrg done 471357bfbb2Smrg exit $? 472357bfbb2Smrg ;; 473357bfbb2Smrg 474357bfbb2Smrg --debug) 475357bfbb2Smrg $echo "$progname: enabling shell trace mode" 476357bfbb2Smrg set -x 477357bfbb2Smrg preserve_args="$preserve_args $arg" 478357bfbb2Smrg ;; 479357bfbb2Smrg 480357bfbb2Smrg --dry-run | -n) 481357bfbb2Smrg run=: 482357bfbb2Smrg ;; 483357bfbb2Smrg 484357bfbb2Smrg --features) 485357bfbb2Smrg $echo "host: $host" 486357bfbb2Smrg if test "$build_libtool_libs" = yes; then 487357bfbb2Smrg $echo "enable shared libraries" 488357bfbb2Smrg else 489357bfbb2Smrg $echo "disable shared libraries" 490357bfbb2Smrg fi 491357bfbb2Smrg if test "$build_old_libs" = yes; then 492357bfbb2Smrg $echo "enable static libraries" 493357bfbb2Smrg else 494357bfbb2Smrg $echo "disable static libraries" 495357bfbb2Smrg fi 496357bfbb2Smrg exit $? 497357bfbb2Smrg ;; 498357bfbb2Smrg 499357bfbb2Smrg --finish) mode="finish" ;; 500357bfbb2Smrg 501357bfbb2Smrg --mode) prevopt="--mode" prev=mode ;; 502357bfbb2Smrg --mode=*) mode="$optarg" ;; 503357bfbb2Smrg 504357bfbb2Smrg --preserve-dup-deps) duplicate_deps="yes" ;; 505357bfbb2Smrg 506357bfbb2Smrg --quiet | --silent) 507357bfbb2Smrg show=: 508357bfbb2Smrg preserve_args="$preserve_args $arg" 509357bfbb2Smrg ;; 510357bfbb2Smrg 511357bfbb2Smrg --tag) 512357bfbb2Smrg prevopt="--tag" 513357bfbb2Smrg prev=tag 514357bfbb2Smrg preserve_args="$preserve_args --tag" 515357bfbb2Smrg ;; 516357bfbb2Smrg --tag=*) 517357bfbb2Smrg set tag "$optarg" ${1+"$@"} 518357bfbb2Smrg shift 519357bfbb2Smrg prev=tag 520357bfbb2Smrg preserve_args="$preserve_args --tag" 521357bfbb2Smrg ;; 522357bfbb2Smrg 523357bfbb2Smrg -dlopen) 524357bfbb2Smrg prevopt="-dlopen" 525357bfbb2Smrg prev=execute_dlfiles 526357bfbb2Smrg ;; 527357bfbb2Smrg 528357bfbb2Smrg -*) 529357bfbb2Smrg $echo "$modename: unrecognized option \`$arg'" 1>&2 530357bfbb2Smrg $echo "$help" 1>&2 531357bfbb2Smrg exit $EXIT_FAILURE 532357bfbb2Smrg ;; 533357bfbb2Smrg 534357bfbb2Smrg *) 535357bfbb2Smrg nonopt="$arg" 536357bfbb2Smrg break 537357bfbb2Smrg ;; 538357bfbb2Smrg esac 539357bfbb2Smrgdone 540357bfbb2Smrg 541357bfbb2Smrgif test -n "$prevopt"; then 542357bfbb2Smrg $echo "$modename: option \`$prevopt' requires an argument" 1>&2 543357bfbb2Smrg $echo "$help" 1>&2 544357bfbb2Smrg exit $EXIT_FAILURE 545357bfbb2Smrgfi 546357bfbb2Smrg 547357bfbb2Smrgcase $disable_libs in 548357bfbb2Smrgno) 549357bfbb2Smrg ;; 550357bfbb2Smrgshared) 551357bfbb2Smrg build_libtool_libs=no 552357bfbb2Smrg build_old_libs=yes 553357bfbb2Smrg ;; 554357bfbb2Smrgstatic) 555357bfbb2Smrg build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` 556357bfbb2Smrg ;; 557357bfbb2Smrgesac 558357bfbb2Smrg 559357bfbb2Smrg# If this variable is set in any of the actions, the command in it 560357bfbb2Smrg# will be execed at the end. This prevents here-documents from being 561357bfbb2Smrg# left over by shells. 562357bfbb2Smrgexec_cmd= 563357bfbb2Smrg 564357bfbb2Smrgif test -z "$show_help"; then 565357bfbb2Smrg 566357bfbb2Smrg # Infer the operation mode. 567357bfbb2Smrg if test -z "$mode"; then 568357bfbb2Smrg $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2 569357bfbb2Smrg $echo "*** Future versions of Libtool will require --mode=MODE be specified." 1>&2 570357bfbb2Smrg case $nonopt in 571357bfbb2Smrg *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*) 572357bfbb2Smrg mode=link 573357bfbb2Smrg for arg 574357bfbb2Smrg do 575357bfbb2Smrg case $arg in 576357bfbb2Smrg -c) 577357bfbb2Smrg mode=compile 578357bfbb2Smrg break 579357bfbb2Smrg ;; 580357bfbb2Smrg esac 581357bfbb2Smrg done 582357bfbb2Smrg ;; 583357bfbb2Smrg *db | *dbx | *strace | *truss) 584357bfbb2Smrg mode=execute 585357bfbb2Smrg ;; 586357bfbb2Smrg *install*|cp|mv) 587357bfbb2Smrg mode=install 588357bfbb2Smrg ;; 589357bfbb2Smrg *rm) 590357bfbb2Smrg mode=uninstall 591357bfbb2Smrg ;; 592357bfbb2Smrg *) 593357bfbb2Smrg # If we have no mode, but dlfiles were specified, then do execute mode. 594357bfbb2Smrg test -n "$execute_dlfiles" && mode=execute 595357bfbb2Smrg 596357bfbb2Smrg # Just use the default operation mode. 597357bfbb2Smrg if test -z "$mode"; then 598357bfbb2Smrg if test -n "$nonopt"; then 599357bfbb2Smrg $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2 600357bfbb2Smrg else 601357bfbb2Smrg $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2 602357bfbb2Smrg fi 603357bfbb2Smrg fi 604357bfbb2Smrg ;; 605357bfbb2Smrg esac 606357bfbb2Smrg fi 607357bfbb2Smrg 608357bfbb2Smrg # Only execute mode is allowed to have -dlopen flags. 609357bfbb2Smrg if test -n "$execute_dlfiles" && test "$mode" != execute; then 610357bfbb2Smrg $echo "$modename: unrecognized option \`-dlopen'" 1>&2 611357bfbb2Smrg $echo "$help" 1>&2 612357bfbb2Smrg exit $EXIT_FAILURE 613357bfbb2Smrg fi 614357bfbb2Smrg 615357bfbb2Smrg # Change the help message to a mode-specific one. 616357bfbb2Smrg generic_help="$help" 617357bfbb2Smrg help="Try \`$modename --help --mode=$mode' for more information." 618357bfbb2Smrg 619357bfbb2Smrg # These modes are in order of execution frequency so that they run quickly. 620357bfbb2Smrg case $mode in 621357bfbb2Smrg # libtool compile mode 622357bfbb2Smrg compile) 623357bfbb2Smrg modename="$modename: compile" 624357bfbb2Smrg # Get the compilation command and the source file. 625357bfbb2Smrg base_compile= 626357bfbb2Smrg srcfile="$nonopt" # always keep a non-empty value in "srcfile" 627357bfbb2Smrg suppress_opt=yes 628357bfbb2Smrg suppress_output= 629357bfbb2Smrg arg_mode=normal 630357bfbb2Smrg libobj= 631357bfbb2Smrg later= 632357bfbb2Smrg 633357bfbb2Smrg for arg 634357bfbb2Smrg do 635357bfbb2Smrg case $arg_mode in 636357bfbb2Smrg arg ) 637357bfbb2Smrg # do not "continue". Instead, add this to base_compile 638357bfbb2Smrg lastarg="$arg" 639357bfbb2Smrg arg_mode=normal 640357bfbb2Smrg ;; 641357bfbb2Smrg 642357bfbb2Smrg target ) 643357bfbb2Smrg libobj="$arg" 644357bfbb2Smrg arg_mode=normal 645357bfbb2Smrg continue 646357bfbb2Smrg ;; 647357bfbb2Smrg 648357bfbb2Smrg normal ) 649357bfbb2Smrg # Accept any command-line options. 650357bfbb2Smrg case $arg in 651357bfbb2Smrg -o) 652357bfbb2Smrg if test -n "$libobj" ; then 653357bfbb2Smrg $echo "$modename: you cannot specify \`-o' more than once" 1>&2 654357bfbb2Smrg exit $EXIT_FAILURE 655357bfbb2Smrg fi 656357bfbb2Smrg arg_mode=target 657357bfbb2Smrg continue 658357bfbb2Smrg ;; 659357bfbb2Smrg 660357bfbb2Smrg -static | -prefer-pic | -prefer-non-pic) 661357bfbb2Smrg later="$later $arg" 662357bfbb2Smrg continue 663357bfbb2Smrg ;; 664357bfbb2Smrg 665357bfbb2Smrg -no-suppress) 666357bfbb2Smrg suppress_opt=no 667357bfbb2Smrg continue 668357bfbb2Smrg ;; 669357bfbb2Smrg 670357bfbb2Smrg -Xcompiler) 671357bfbb2Smrg arg_mode=arg # the next one goes into the "base_compile" arg list 672357bfbb2Smrg continue # The current "srcfile" will either be retained or 673357bfbb2Smrg ;; # replaced later. I would guess that would be a bug. 674357bfbb2Smrg 675357bfbb2Smrg -Wc,*) 676357bfbb2Smrg args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"` 677357bfbb2Smrg lastarg= 678357bfbb2Smrg save_ifs="$IFS"; IFS=',' 679357bfbb2Smrg for arg in $args; do 680357bfbb2Smrg IFS="$save_ifs" 681357bfbb2Smrg 682357bfbb2Smrg # Double-quote args containing other shell metacharacters. 683357bfbb2Smrg # Many Bourne shells cannot handle close brackets correctly 684357bfbb2Smrg # in scan sets, so we specify it separately. 685357bfbb2Smrg case $arg in 686357bfbb2Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 687357bfbb2Smrg arg="\"$arg\"" 688357bfbb2Smrg ;; 689357bfbb2Smrg esac 690357bfbb2Smrg lastarg="$lastarg $arg" 691357bfbb2Smrg done 692357bfbb2Smrg IFS="$save_ifs" 693357bfbb2Smrg lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"` 694357bfbb2Smrg 695357bfbb2Smrg # Add the arguments to base_compile. 696357bfbb2Smrg base_compile="$base_compile $lastarg" 697357bfbb2Smrg continue 698357bfbb2Smrg ;; 699357bfbb2Smrg 700357bfbb2Smrg * ) 701357bfbb2Smrg # Accept the current argument as the source file. 702357bfbb2Smrg # The previous "srcfile" becomes the current argument. 703357bfbb2Smrg # 704357bfbb2Smrg lastarg="$srcfile" 705357bfbb2Smrg srcfile="$arg" 706357bfbb2Smrg ;; 707357bfbb2Smrg esac # case $arg 708357bfbb2Smrg ;; 709357bfbb2Smrg esac # case $arg_mode 710357bfbb2Smrg 711357bfbb2Smrg # Aesthetically quote the previous argument. 712357bfbb2Smrg lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` 713357bfbb2Smrg 714357bfbb2Smrg case $lastarg in 715357bfbb2Smrg # Double-quote args containing other shell metacharacters. 716357bfbb2Smrg # Many Bourne shells cannot handle close brackets correctly 717357bfbb2Smrg # in scan sets, and some SunOS ksh mistreat backslash-escaping 718357bfbb2Smrg # in scan sets (worked around with variable expansion), 719357bfbb2Smrg # and furthermore cannot handle '|' '&' '(' ')' in scan sets 720357bfbb2Smrg # at all, so we specify them separately. 721357bfbb2Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 722357bfbb2Smrg lastarg="\"$lastarg\"" 723357bfbb2Smrg ;; 724357bfbb2Smrg esac 725357bfbb2Smrg 726357bfbb2Smrg base_compile="$base_compile $lastarg" 727357bfbb2Smrg done # for arg 728357bfbb2Smrg 729357bfbb2Smrg case $arg_mode in 730357bfbb2Smrg arg) 731357bfbb2Smrg $echo "$modename: you must specify an argument for -Xcompile" 732357bfbb2Smrg exit $EXIT_FAILURE 733357bfbb2Smrg ;; 734357bfbb2Smrg target) 735357bfbb2Smrg $echo "$modename: you must specify a target with \`-o'" 1>&2 736357bfbb2Smrg exit $EXIT_FAILURE 737357bfbb2Smrg ;; 738357bfbb2Smrg *) 739357bfbb2Smrg # Get the name of the library object. 740357bfbb2Smrg [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` 741357bfbb2Smrg ;; 742357bfbb2Smrg esac 743357bfbb2Smrg 744357bfbb2Smrg # Recognize several different file suffixes. 745357bfbb2Smrg # If the user specifies -o file.o, it is replaced with file.lo 746357bfbb2Smrg xform='[cCFSifmso]' 747357bfbb2Smrg case $libobj in 748357bfbb2Smrg *.ada) xform=ada ;; 749357bfbb2Smrg *.adb) xform=adb ;; 750357bfbb2Smrg *.ads) xform=ads ;; 751357bfbb2Smrg *.asm) xform=asm ;; 752357bfbb2Smrg *.c++) xform=c++ ;; 753357bfbb2Smrg *.cc) xform=cc ;; 754357bfbb2Smrg *.ii) xform=ii ;; 755357bfbb2Smrg *.class) xform=class ;; 756357bfbb2Smrg *.cpp) xform=cpp ;; 757357bfbb2Smrg *.cxx) xform=cxx ;; 758357bfbb2Smrg *.f90) xform=f90 ;; 759357bfbb2Smrg *.for) xform=for ;; 760357bfbb2Smrg *.java) xform=java ;; 761357bfbb2Smrg esac 762357bfbb2Smrg 763357bfbb2Smrg libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` 764357bfbb2Smrg 765357bfbb2Smrg case $libobj in 766357bfbb2Smrg *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; 767357bfbb2Smrg *) 768357bfbb2Smrg $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 769357bfbb2Smrg exit $EXIT_FAILURE 770357bfbb2Smrg ;; 771357bfbb2Smrg esac 772357bfbb2Smrg 773357bfbb2Smrg func_infer_tag $base_compile 774357bfbb2Smrg 775357bfbb2Smrg for arg in $later; do 776357bfbb2Smrg case $arg in 777357bfbb2Smrg -static) 778357bfbb2Smrg build_old_libs=yes 779357bfbb2Smrg continue 780357bfbb2Smrg ;; 781357bfbb2Smrg 782357bfbb2Smrg -prefer-pic) 783357bfbb2Smrg pic_mode=yes 784357bfbb2Smrg continue 785357bfbb2Smrg ;; 786357bfbb2Smrg 787357bfbb2Smrg -prefer-non-pic) 788357bfbb2Smrg pic_mode=no 789357bfbb2Smrg continue 790357bfbb2Smrg ;; 791357bfbb2Smrg esac 792357bfbb2Smrg done 793357bfbb2Smrg 794357bfbb2Smrg qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"` 795357bfbb2Smrg case $qlibobj in 796357bfbb2Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 797357bfbb2Smrg qlibobj="\"$qlibobj\"" ;; 798357bfbb2Smrg esac 799357bfbb2Smrg test "X$libobj" != "X$qlibobj" \ 800357bfbb2Smrg && $echo "X$libobj" | grep '[]~#^*{};<>?"'"'"' &()|`$[]' \ 801357bfbb2Smrg && $echo "$modename: libobj name \`$libobj' may not contain shell special characters." 802357bfbb2Smrg objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` 803357bfbb2Smrg xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` 804357bfbb2Smrg if test "X$xdir" = "X$obj"; then 805357bfbb2Smrg xdir= 806357bfbb2Smrg else 807357bfbb2Smrg xdir=$xdir/ 808357bfbb2Smrg fi 809357bfbb2Smrg lobj=${xdir}$objdir/$objname 810357bfbb2Smrg 811357bfbb2Smrg if test -z "$base_compile"; then 812357bfbb2Smrg $echo "$modename: you must specify a compilation command" 1>&2 813357bfbb2Smrg $echo "$help" 1>&2 814357bfbb2Smrg exit $EXIT_FAILURE 815357bfbb2Smrg fi 816357bfbb2Smrg 817357bfbb2Smrg # Delete any leftover library objects. 818357bfbb2Smrg if test "$build_old_libs" = yes; then 819357bfbb2Smrg removelist="$obj $lobj $libobj ${libobj}T" 820357bfbb2Smrg else 821357bfbb2Smrg removelist="$lobj $libobj ${libobj}T" 822357bfbb2Smrg fi 823357bfbb2Smrg 824357bfbb2Smrg $run $rm $removelist 825357bfbb2Smrg trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 826357bfbb2Smrg 827357bfbb2Smrg # On Cygwin there's no "real" PIC flag so we must build both object types 828357bfbb2Smrg case $host_os in 829357bfbb2Smrg cygwin* | mingw* | pw32* | os2*) 830357bfbb2Smrg pic_mode=default 831357bfbb2Smrg ;; 832357bfbb2Smrg esac 833357bfbb2Smrg if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then 834357bfbb2Smrg # non-PIC code in shared libraries is not supported 835357bfbb2Smrg pic_mode=default 836357bfbb2Smrg fi 837357bfbb2Smrg 838357bfbb2Smrg # Calculate the filename of the output object if compiler does 839357bfbb2Smrg # not support -o with -c 840357bfbb2Smrg if test "$compiler_c_o" = no; then 841357bfbb2Smrg output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} 842357bfbb2Smrg lockfile="$output_obj.lock" 843357bfbb2Smrg removelist="$removelist $output_obj $lockfile" 844357bfbb2Smrg trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 845357bfbb2Smrg else 846357bfbb2Smrg output_obj= 847357bfbb2Smrg need_locks=no 848357bfbb2Smrg lockfile= 849357bfbb2Smrg fi 850357bfbb2Smrg 851357bfbb2Smrg # Lock this critical section if it is needed 852357bfbb2Smrg # We use this script file to make the link, it avoids creating a new file 853357bfbb2Smrg if test "$need_locks" = yes; then 854357bfbb2Smrg until $run ln "$progpath" "$lockfile" 2>/dev/null; do 855357bfbb2Smrg $show "Waiting for $lockfile to be removed" 856357bfbb2Smrg sleep 2 857357bfbb2Smrg done 858357bfbb2Smrg elif test "$need_locks" = warn; then 859357bfbb2Smrg if test -f "$lockfile"; then 860357bfbb2Smrg $echo "\ 861357bfbb2Smrg*** ERROR, $lockfile exists and contains: 862357bfbb2Smrg`cat $lockfile 2>/dev/null` 863357bfbb2Smrg 864357bfbb2SmrgThis indicates that another process is trying to use the same 865357bfbb2Smrgtemporary object file, and libtool could not work around it because 866357bfbb2Smrgyour compiler does not support \`-c' and \`-o' together. If you 867357bfbb2Smrgrepeat this compilation, it may succeed, by chance, but you had better 868357bfbb2Smrgavoid parallel builds (make -j) in this platform, or get a better 869357bfbb2Smrgcompiler." 870357bfbb2Smrg 871357bfbb2Smrg $run $rm $removelist 872357bfbb2Smrg exit $EXIT_FAILURE 873357bfbb2Smrg fi 874357bfbb2Smrg $echo "$srcfile" > "$lockfile" 875357bfbb2Smrg fi 876357bfbb2Smrg 877357bfbb2Smrg if test -n "$fix_srcfile_path"; then 878357bfbb2Smrg eval srcfile=\"$fix_srcfile_path\" 879357bfbb2Smrg fi 880357bfbb2Smrg qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"` 881357bfbb2Smrg case $qsrcfile in 882357bfbb2Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 883357bfbb2Smrg qsrcfile="\"$qsrcfile\"" ;; 884357bfbb2Smrg esac 885357bfbb2Smrg 886357bfbb2Smrg $run $rm "$libobj" "${libobj}T" 887357bfbb2Smrg 888357bfbb2Smrg # Create a libtool object file (analogous to a ".la" file), 889357bfbb2Smrg # but don't create it if we're doing a dry run. 890357bfbb2Smrg test -z "$run" && cat > ${libobj}T <<EOF 891357bfbb2Smrg# $libobj - a libtool object file 892357bfbb2Smrg# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP 893357bfbb2Smrg# 894357bfbb2Smrg# Please DO NOT delete this file! 895357bfbb2Smrg# It is necessary for linking the library. 896357bfbb2Smrg 897357bfbb2Smrg# Name of the PIC object. 898357bfbb2SmrgEOF 899357bfbb2Smrg 900357bfbb2Smrg # Only build a PIC object if we are building libtool libraries. 901357bfbb2Smrg if test "$build_libtool_libs" = yes; then 902357bfbb2Smrg # Without this assignment, base_compile gets emptied. 903357bfbb2Smrg fbsd_hideous_sh_bug=$base_compile 904357bfbb2Smrg 905357bfbb2Smrg if test "$pic_mode" != no; then 906357bfbb2Smrg command="$base_compile $qsrcfile $pic_flag" 907357bfbb2Smrg else 908357bfbb2Smrg # Don't build PIC code 909357bfbb2Smrg command="$base_compile $qsrcfile" 910357bfbb2Smrg fi 911357bfbb2Smrg 912357bfbb2Smrg if test ! -d "${xdir}$objdir"; then 913357bfbb2Smrg $show "$mkdir ${xdir}$objdir" 914357bfbb2Smrg $run $mkdir ${xdir}$objdir 915357bfbb2Smrg exit_status=$? 916357bfbb2Smrg if test "$exit_status" -ne 0 && test ! -d "${xdir}$objdir"; then 917357bfbb2Smrg exit $exit_status 918357bfbb2Smrg fi 919357bfbb2Smrg fi 920357bfbb2Smrg 921357bfbb2Smrg if test -z "$output_obj"; then 922357bfbb2Smrg # Place PIC objects in $objdir 923357bfbb2Smrg command="$command -o $lobj" 924357bfbb2Smrg fi 925357bfbb2Smrg 926357bfbb2Smrg $run $rm "$lobj" "$output_obj" 927357bfbb2Smrg 928357bfbb2Smrg $show "$command" 929357bfbb2Smrg if $run eval "$command"; then : 930357bfbb2Smrg else 931357bfbb2Smrg test -n "$output_obj" && $run $rm $removelist 932357bfbb2Smrg exit $EXIT_FAILURE 933357bfbb2Smrg fi 934357bfbb2Smrg 935357bfbb2Smrg if test "$need_locks" = warn && 936357bfbb2Smrg test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 937357bfbb2Smrg $echo "\ 938357bfbb2Smrg*** ERROR, $lockfile contains: 939357bfbb2Smrg`cat $lockfile 2>/dev/null` 940357bfbb2Smrg 941357bfbb2Smrgbut it should contain: 942357bfbb2Smrg$srcfile 943357bfbb2Smrg 944357bfbb2SmrgThis indicates that another process is trying to use the same 945357bfbb2Smrgtemporary object file, and libtool could not work around it because 946357bfbb2Smrgyour compiler does not support \`-c' and \`-o' together. If you 947357bfbb2Smrgrepeat this compilation, it may succeed, by chance, but you had better 948357bfbb2Smrgavoid parallel builds (make -j) in this platform, or get a better 949357bfbb2Smrgcompiler." 950357bfbb2Smrg 951357bfbb2Smrg $run $rm $removelist 952357bfbb2Smrg exit $EXIT_FAILURE 953357bfbb2Smrg fi 954357bfbb2Smrg 955357bfbb2Smrg # Just move the object if needed, then go on to compile the next one 956357bfbb2Smrg if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then 957357bfbb2Smrg $show "$mv $output_obj $lobj" 958357bfbb2Smrg if $run $mv $output_obj $lobj; then : 959357bfbb2Smrg else 960357bfbb2Smrg error=$? 961357bfbb2Smrg $run $rm $removelist 962357bfbb2Smrg exit $error 963357bfbb2Smrg fi 964357bfbb2Smrg fi 965357bfbb2Smrg 966357bfbb2Smrg # Append the name of the PIC object to the libtool object file. 967357bfbb2Smrg test -z "$run" && cat >> ${libobj}T <<EOF 968357bfbb2Smrgpic_object='$objdir/$objname' 969357bfbb2Smrg 970357bfbb2SmrgEOF 971357bfbb2Smrg 972357bfbb2Smrg # Allow error messages only from the first compilation. 973357bfbb2Smrg if test "$suppress_opt" = yes; then 974357bfbb2Smrg suppress_output=' >/dev/null 2>&1' 975357bfbb2Smrg fi 976357bfbb2Smrg else 977357bfbb2Smrg # No PIC object so indicate it doesn't exist in the libtool 978357bfbb2Smrg # object file. 979357bfbb2Smrg test -z "$run" && cat >> ${libobj}T <<EOF 980357bfbb2Smrgpic_object=none 981357bfbb2Smrg 982357bfbb2SmrgEOF 983357bfbb2Smrg fi 984357bfbb2Smrg 985357bfbb2Smrg # Only build a position-dependent object if we build old libraries. 986357bfbb2Smrg if test "$build_old_libs" = yes; then 987357bfbb2Smrg if test "$pic_mode" != yes; then 988357bfbb2Smrg # Don't build PIC code 989357bfbb2Smrg command="$base_compile $qsrcfile" 990357bfbb2Smrg else 991357bfbb2Smrg command="$base_compile $qsrcfile $pic_flag" 992357bfbb2Smrg fi 993357bfbb2Smrg if test "$compiler_c_o" = yes; then 994357bfbb2Smrg command="$command -o $obj" 995357bfbb2Smrg fi 996357bfbb2Smrg 997357bfbb2Smrg # Suppress compiler output if we already did a PIC compilation. 998357bfbb2Smrg command="$command$suppress_output" 999357bfbb2Smrg $run $rm "$obj" "$output_obj" 1000357bfbb2Smrg $show "$command" 1001357bfbb2Smrg if $run eval "$command"; then : 1002357bfbb2Smrg else 1003357bfbb2Smrg $run $rm $removelist 1004357bfbb2Smrg exit $EXIT_FAILURE 1005357bfbb2Smrg fi 1006357bfbb2Smrg 1007357bfbb2Smrg if test "$need_locks" = warn && 1008357bfbb2Smrg test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 1009357bfbb2Smrg $echo "\ 1010357bfbb2Smrg*** ERROR, $lockfile contains: 1011357bfbb2Smrg`cat $lockfile 2>/dev/null` 1012357bfbb2Smrg 1013357bfbb2Smrgbut it should contain: 1014357bfbb2Smrg$srcfile 1015357bfbb2Smrg 1016357bfbb2SmrgThis indicates that another process is trying to use the same 1017357bfbb2Smrgtemporary object file, and libtool could not work around it because 1018357bfbb2Smrgyour compiler does not support \`-c' and \`-o' together. If you 1019357bfbb2Smrgrepeat this compilation, it may succeed, by chance, but you had better 1020357bfbb2Smrgavoid parallel builds (make -j) in this platform, or get a better 1021357bfbb2Smrgcompiler." 1022357bfbb2Smrg 1023357bfbb2Smrg $run $rm $removelist 1024357bfbb2Smrg exit $EXIT_FAILURE 1025357bfbb2Smrg fi 1026357bfbb2Smrg 1027357bfbb2Smrg # Just move the object if needed 1028357bfbb2Smrg if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then 1029357bfbb2Smrg $show "$mv $output_obj $obj" 1030357bfbb2Smrg if $run $mv $output_obj $obj; then : 1031357bfbb2Smrg else 1032357bfbb2Smrg error=$? 1033357bfbb2Smrg $run $rm $removelist 1034357bfbb2Smrg exit $error 1035357bfbb2Smrg fi 1036357bfbb2Smrg fi 1037357bfbb2Smrg 1038357bfbb2Smrg # Append the name of the non-PIC object the libtool object file. 1039357bfbb2Smrg # Only append if the libtool object file exists. 1040357bfbb2Smrg test -z "$run" && cat >> ${libobj}T <<EOF 1041357bfbb2Smrg# Name of the non-PIC object. 1042357bfbb2Smrgnon_pic_object='$objname' 1043357bfbb2Smrg 1044357bfbb2SmrgEOF 1045357bfbb2Smrg else 1046357bfbb2Smrg # Append the name of the non-PIC object the libtool object file. 1047357bfbb2Smrg # Only append if the libtool object file exists. 1048357bfbb2Smrg test -z "$run" && cat >> ${libobj}T <<EOF 1049357bfbb2Smrg# Name of the non-PIC object. 1050357bfbb2Smrgnon_pic_object=none 1051357bfbb2Smrg 1052357bfbb2SmrgEOF 1053357bfbb2Smrg fi 1054357bfbb2Smrg 1055357bfbb2Smrg $run $mv "${libobj}T" "${libobj}" 1056357bfbb2Smrg 1057357bfbb2Smrg # Unlock the critical section if it was locked 1058357bfbb2Smrg if test "$need_locks" != no; then 1059357bfbb2Smrg $run $rm "$lockfile" 1060357bfbb2Smrg fi 1061357bfbb2Smrg 1062357bfbb2Smrg exit $EXIT_SUCCESS 1063357bfbb2Smrg ;; 1064357bfbb2Smrg 1065357bfbb2Smrg # libtool link mode 1066357bfbb2Smrg link | relink) 1067357bfbb2Smrg modename="$modename: link" 1068357bfbb2Smrg case $host in 1069357bfbb2Smrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) 1070357bfbb2Smrg # It is impossible to link a dll without this setting, and 1071357bfbb2Smrg # we shouldn't force the makefile maintainer to figure out 1072357bfbb2Smrg # which system we are compiling for in order to pass an extra 1073357bfbb2Smrg # flag for every libtool invocation. 1074357bfbb2Smrg # allow_undefined=no 1075357bfbb2Smrg 1076357bfbb2Smrg # FIXME: Unfortunately, there are problems with the above when trying 1077357bfbb2Smrg # to make a dll which has undefined symbols, in which case not 1078357bfbb2Smrg # even a static library is built. For now, we need to specify 1079357bfbb2Smrg # -no-undefined on the libtool link line when we can be certain 1080357bfbb2Smrg # that all symbols are satisfied, otherwise we get a static library. 1081357bfbb2Smrg allow_undefined=yes 1082357bfbb2Smrg ;; 1083357bfbb2Smrg *) 1084357bfbb2Smrg allow_undefined=yes 1085357bfbb2Smrg ;; 1086357bfbb2Smrg esac 1087357bfbb2Smrg libtool_args="$nonopt" 1088357bfbb2Smrg base_compile="$nonopt $@" 1089357bfbb2Smrg compile_command="$nonopt" 1090357bfbb2Smrg finalize_command="$nonopt" 1091357bfbb2Smrg 1092357bfbb2Smrg compile_rpath= 1093357bfbb2Smrg finalize_rpath= 1094357bfbb2Smrg compile_shlibpath= 1095357bfbb2Smrg finalize_shlibpath= 1096357bfbb2Smrg convenience= 1097357bfbb2Smrg old_convenience= 1098357bfbb2Smrg deplibs= 1099357bfbb2Smrg old_deplibs= 1100357bfbb2Smrg compiler_flags= 1101357bfbb2Smrg linker_flags= 1102357bfbb2Smrg dllsearchpath= 1103357bfbb2Smrg lib_search_path=`pwd` 1104357bfbb2Smrg inst_prefix_dir= 1105357bfbb2Smrg 1106357bfbb2Smrg avoid_version=no 1107357bfbb2Smrg dlfiles= 1108357bfbb2Smrg dlprefiles= 1109357bfbb2Smrg dlself=no 1110357bfbb2Smrg export_dynamic=no 1111357bfbb2Smrg export_symbols= 1112357bfbb2Smrg export_symbols_regex= 1113357bfbb2Smrg generated= 1114357bfbb2Smrg libobjs= 1115357bfbb2Smrg ltlibs= 1116357bfbb2Smrg module=no 1117357bfbb2Smrg no_install=no 1118357bfbb2Smrg objs= 1119357bfbb2Smrg non_pic_objects= 1120357bfbb2Smrg notinst_path= # paths that contain not-installed libtool libraries 1121357bfbb2Smrg precious_files_regex= 1122357bfbb2Smrg prefer_static_libs=no 1123357bfbb2Smrg preload=no 1124357bfbb2Smrg prev= 1125357bfbb2Smrg prevarg= 1126357bfbb2Smrg release= 1127357bfbb2Smrg rpath= 1128357bfbb2Smrg xrpath= 1129357bfbb2Smrg perm_rpath= 1130357bfbb2Smrg temp_rpath= 1131357bfbb2Smrg thread_safe=no 1132357bfbb2Smrg vinfo= 1133357bfbb2Smrg vinfo_number=no 1134357bfbb2Smrg 1135357bfbb2Smrg func_infer_tag $base_compile 1136357bfbb2Smrg 1137357bfbb2Smrg # We need to know -static, to get the right output filenames. 1138357bfbb2Smrg for arg 1139357bfbb2Smrg do 1140357bfbb2Smrg case $arg in 1141357bfbb2Smrg -all-static | -static) 1142357bfbb2Smrg if test "X$arg" = "X-all-static"; then 1143357bfbb2Smrg if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then 1144357bfbb2Smrg $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2 1145357bfbb2Smrg fi 1146357bfbb2Smrg if test -n "$link_static_flag"; then 1147357bfbb2Smrg dlopen_self=$dlopen_self_static 1148357bfbb2Smrg fi 1149357bfbb2Smrg prefer_static_libs=yes 1150357bfbb2Smrg else 1151357bfbb2Smrg if test -z "$pic_flag" && test -n "$link_static_flag"; then 1152357bfbb2Smrg dlopen_self=$dlopen_self_static 1153357bfbb2Smrg fi 1154357bfbb2Smrg prefer_static_libs=built 1155357bfbb2Smrg fi 1156357bfbb2Smrg build_libtool_libs=no 1157357bfbb2Smrg build_old_libs=yes 1158357bfbb2Smrg break 1159357bfbb2Smrg ;; 1160357bfbb2Smrg esac 1161357bfbb2Smrg done 1162357bfbb2Smrg 1163357bfbb2Smrg # See if our shared archives depend on static archives. 1164357bfbb2Smrg test -n "$old_archive_from_new_cmds" && build_old_libs=yes 1165357bfbb2Smrg 1166357bfbb2Smrg # Go through the arguments, transforming them on the way. 1167357bfbb2Smrg while test "$#" -gt 0; do 1168357bfbb2Smrg arg="$1" 1169357bfbb2Smrg shift 1170357bfbb2Smrg case $arg in 1171357bfbb2Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 1172357bfbb2Smrg qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test 1173357bfbb2Smrg ;; 1174357bfbb2Smrg *) qarg=$arg ;; 1175357bfbb2Smrg esac 1176357bfbb2Smrg libtool_args="$libtool_args $qarg" 1177357bfbb2Smrg 1178357bfbb2Smrg # If the previous option needs an argument, assign it. 1179357bfbb2Smrg if test -n "$prev"; then 1180357bfbb2Smrg case $prev in 1181357bfbb2Smrg output) 1182357bfbb2Smrg compile_command="$compile_command @OUTPUT@" 1183357bfbb2Smrg finalize_command="$finalize_command @OUTPUT@" 1184357bfbb2Smrg ;; 1185357bfbb2Smrg esac 1186357bfbb2Smrg 1187357bfbb2Smrg case $prev in 1188357bfbb2Smrg dlfiles|dlprefiles) 1189357bfbb2Smrg if test "$preload" = no; then 1190357bfbb2Smrg # Add the symbol object into the linking commands. 1191357bfbb2Smrg compile_command="$compile_command @SYMFILE@" 1192357bfbb2Smrg finalize_command="$finalize_command @SYMFILE@" 1193357bfbb2Smrg preload=yes 1194357bfbb2Smrg fi 1195357bfbb2Smrg case $arg in 1196357bfbb2Smrg *.la | *.lo) ;; # We handle these cases below. 1197357bfbb2Smrg force) 1198357bfbb2Smrg if test "$dlself" = no; then 1199357bfbb2Smrg dlself=needless 1200357bfbb2Smrg export_dynamic=yes 1201357bfbb2Smrg fi 1202357bfbb2Smrg prev= 1203357bfbb2Smrg continue 1204357bfbb2Smrg ;; 1205357bfbb2Smrg self) 1206357bfbb2Smrg if test "$prev" = dlprefiles; then 1207357bfbb2Smrg dlself=yes 1208357bfbb2Smrg elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then 1209357bfbb2Smrg dlself=yes 1210357bfbb2Smrg else 1211357bfbb2Smrg dlself=needless 1212357bfbb2Smrg export_dynamic=yes 1213357bfbb2Smrg fi 1214357bfbb2Smrg prev= 1215357bfbb2Smrg continue 1216357bfbb2Smrg ;; 1217357bfbb2Smrg *) 1218357bfbb2Smrg if test "$prev" = dlfiles; then 1219357bfbb2Smrg dlfiles="$dlfiles $arg" 1220357bfbb2Smrg else 1221357bfbb2Smrg dlprefiles="$dlprefiles $arg" 1222357bfbb2Smrg fi 1223357bfbb2Smrg prev= 1224357bfbb2Smrg continue 1225357bfbb2Smrg ;; 1226357bfbb2Smrg esac 1227357bfbb2Smrg ;; 1228357bfbb2Smrg expsyms) 1229357bfbb2Smrg export_symbols="$arg" 1230357bfbb2Smrg if test ! -f "$arg"; then 1231357bfbb2Smrg $echo "$modename: symbol file \`$arg' does not exist" 1232357bfbb2Smrg exit $EXIT_FAILURE 1233357bfbb2Smrg fi 1234357bfbb2Smrg prev= 1235357bfbb2Smrg continue 1236357bfbb2Smrg ;; 1237357bfbb2Smrg expsyms_regex) 1238357bfbb2Smrg export_symbols_regex="$arg" 1239357bfbb2Smrg prev= 1240357bfbb2Smrg continue 1241357bfbb2Smrg ;; 1242357bfbb2Smrg inst_prefix) 1243357bfbb2Smrg inst_prefix_dir="$arg" 1244357bfbb2Smrg prev= 1245357bfbb2Smrg continue 1246357bfbb2Smrg ;; 1247357bfbb2Smrg precious_regex) 1248357bfbb2Smrg precious_files_regex="$arg" 1249357bfbb2Smrg prev= 1250357bfbb2Smrg continue 1251357bfbb2Smrg ;; 1252357bfbb2Smrg release) 1253357bfbb2Smrg release="-$arg" 1254357bfbb2Smrg prev= 1255357bfbb2Smrg continue 1256357bfbb2Smrg ;; 1257357bfbb2Smrg objectlist) 1258357bfbb2Smrg if test -f "$arg"; then 1259357bfbb2Smrg save_arg=$arg 1260357bfbb2Smrg moreargs= 1261357bfbb2Smrg for fil in `cat $save_arg` 1262357bfbb2Smrg do 1263357bfbb2Smrg# moreargs="$moreargs $fil" 1264357bfbb2Smrg arg=$fil 1265357bfbb2Smrg # A libtool-controlled object. 1266357bfbb2Smrg 1267357bfbb2Smrg # Check to see that this really is a libtool object. 1268357bfbb2Smrg if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 1269357bfbb2Smrg pic_object= 1270357bfbb2Smrg non_pic_object= 1271357bfbb2Smrg 1272357bfbb2Smrg # Read the .lo file 1273357bfbb2Smrg # If there is no directory component, then add one. 1274357bfbb2Smrg case $arg in 1275357bfbb2Smrg */* | *\\*) . $arg ;; 1276357bfbb2Smrg *) . ./$arg ;; 1277357bfbb2Smrg esac 1278357bfbb2Smrg 1279357bfbb2Smrg if test -z "$pic_object" || \ 1280357bfbb2Smrg test -z "$non_pic_object" || 1281357bfbb2Smrg test "$pic_object" = none && \ 1282357bfbb2Smrg test "$non_pic_object" = none; then 1283357bfbb2Smrg $echo "$modename: cannot find name of object for \`$arg'" 1>&2 1284357bfbb2Smrg exit $EXIT_FAILURE 1285357bfbb2Smrg fi 1286357bfbb2Smrg 1287357bfbb2Smrg # Extract subdirectory from the argument. 1288357bfbb2Smrg xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` 1289357bfbb2Smrg if test "X$xdir" = "X$arg"; then 1290357bfbb2Smrg xdir= 1291357bfbb2Smrg else 1292357bfbb2Smrg xdir="$xdir/" 1293357bfbb2Smrg fi 1294357bfbb2Smrg 1295357bfbb2Smrg if test "$pic_object" != none; then 1296357bfbb2Smrg # Prepend the subdirectory the object is found in. 1297357bfbb2Smrg pic_object="$xdir$pic_object" 1298357bfbb2Smrg 1299357bfbb2Smrg if test "$prev" = dlfiles; then 1300357bfbb2Smrg if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 1301357bfbb2Smrg dlfiles="$dlfiles $pic_object" 1302357bfbb2Smrg prev= 1303357bfbb2Smrg continue 1304357bfbb2Smrg else 1305357bfbb2Smrg # If libtool objects are unsupported, then we need to preload. 1306357bfbb2Smrg prev=dlprefiles 1307357bfbb2Smrg fi 1308357bfbb2Smrg fi 1309357bfbb2Smrg 1310357bfbb2Smrg # CHECK ME: I think I busted this. -Ossama 1311357bfbb2Smrg if test "$prev" = dlprefiles; then 1312357bfbb2Smrg # Preload the old-style object. 1313357bfbb2Smrg dlprefiles="$dlprefiles $pic_object" 1314357bfbb2Smrg prev= 1315357bfbb2Smrg fi 1316357bfbb2Smrg 1317357bfbb2Smrg # A PIC object. 1318357bfbb2Smrg libobjs="$libobjs $pic_object" 1319357bfbb2Smrg arg="$pic_object" 1320357bfbb2Smrg fi 1321357bfbb2Smrg 1322357bfbb2Smrg # Non-PIC object. 1323357bfbb2Smrg if test "$non_pic_object" != none; then 1324357bfbb2Smrg # Prepend the subdirectory the object is found in. 1325357bfbb2Smrg non_pic_object="$xdir$non_pic_object" 1326357bfbb2Smrg 1327357bfbb2Smrg # A standard non-PIC object 1328357bfbb2Smrg non_pic_objects="$non_pic_objects $non_pic_object" 1329357bfbb2Smrg if test -z "$pic_object" || test "$pic_object" = none ; then 1330357bfbb2Smrg arg="$non_pic_object" 1331357bfbb2Smrg fi 1332357bfbb2Smrg else 1333357bfbb2Smrg # If the PIC object exists, use it instead. 1334357bfbb2Smrg # $xdir was prepended to $pic_object above. 1335357bfbb2Smrg non_pic_object="$pic_object" 1336357bfbb2Smrg non_pic_objects="$non_pic_objects $non_pic_object" 1337357bfbb2Smrg fi 1338357bfbb2Smrg else 1339357bfbb2Smrg # Only an error if not doing a dry-run. 1340357bfbb2Smrg if test -z "$run"; then 1341357bfbb2Smrg $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 1342357bfbb2Smrg exit $EXIT_FAILURE 1343357bfbb2Smrg else 1344357bfbb2Smrg # Dry-run case. 1345357bfbb2Smrg 1346357bfbb2Smrg # Extract subdirectory from the argument. 1347357bfbb2Smrg xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` 1348357bfbb2Smrg if test "X$xdir" = "X$arg"; then 1349357bfbb2Smrg xdir= 1350357bfbb2Smrg else 1351357bfbb2Smrg xdir="$xdir/" 1352357bfbb2Smrg fi 1353357bfbb2Smrg 1354357bfbb2Smrg pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` 1355357bfbb2Smrg non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` 1356357bfbb2Smrg libobjs="$libobjs $pic_object" 1357357bfbb2Smrg non_pic_objects="$non_pic_objects $non_pic_object" 1358357bfbb2Smrg fi 1359357bfbb2Smrg fi 1360357bfbb2Smrg done 1361357bfbb2Smrg else 1362357bfbb2Smrg $echo "$modename: link input file \`$save_arg' does not exist" 1363357bfbb2Smrg exit $EXIT_FAILURE 1364357bfbb2Smrg fi 1365357bfbb2Smrg arg=$save_arg 1366357bfbb2Smrg prev= 1367357bfbb2Smrg continue 1368357bfbb2Smrg ;; 1369357bfbb2Smrg rpath | xrpath) 1370357bfbb2Smrg # We need an absolute path. 1371357bfbb2Smrg case $arg in 1372357bfbb2Smrg [\\/]* | [A-Za-z]:[\\/]*) ;; 1373357bfbb2Smrg *) 1374357bfbb2Smrg $echo "$modename: only absolute run-paths are allowed" 1>&2 1375357bfbb2Smrg exit $EXIT_FAILURE 1376357bfbb2Smrg ;; 1377357bfbb2Smrg esac 1378357bfbb2Smrg if test "$prev" = rpath; then 1379357bfbb2Smrg case "$rpath " in 1380357bfbb2Smrg *" $arg "*) ;; 1381357bfbb2Smrg *) rpath="$rpath $arg" ;; 1382357bfbb2Smrg esac 1383357bfbb2Smrg else 1384357bfbb2Smrg case "$xrpath " in 1385357bfbb2Smrg *" $arg "*) ;; 1386357bfbb2Smrg *) xrpath="$xrpath $arg" ;; 1387357bfbb2Smrg esac 1388357bfbb2Smrg fi 1389357bfbb2Smrg prev= 1390357bfbb2Smrg continue 1391357bfbb2Smrg ;; 1392357bfbb2Smrg xcompiler) 1393357bfbb2Smrg compiler_flags="$compiler_flags $qarg" 1394357bfbb2Smrg prev= 1395357bfbb2Smrg compile_command="$compile_command $qarg" 1396357bfbb2Smrg finalize_command="$finalize_command $qarg" 1397357bfbb2Smrg continue 1398357bfbb2Smrg ;; 1399357bfbb2Smrg xlinker) 1400357bfbb2Smrg linker_flags="$linker_flags $qarg" 1401357bfbb2Smrg compiler_flags="$compiler_flags $wl$qarg" 1402357bfbb2Smrg prev= 1403357bfbb2Smrg compile_command="$compile_command $wl$qarg" 1404357bfbb2Smrg finalize_command="$finalize_command $wl$qarg" 1405357bfbb2Smrg continue 1406357bfbb2Smrg ;; 1407357bfbb2Smrg xcclinker) 1408357bfbb2Smrg linker_flags="$linker_flags $qarg" 1409357bfbb2Smrg compiler_flags="$compiler_flags $qarg" 1410357bfbb2Smrg prev= 1411357bfbb2Smrg compile_command="$compile_command $qarg" 1412357bfbb2Smrg finalize_command="$finalize_command $qarg" 1413357bfbb2Smrg continue 1414357bfbb2Smrg ;; 1415357bfbb2Smrg shrext) 1416357bfbb2Smrg shrext_cmds="$arg" 1417357bfbb2Smrg prev= 1418357bfbb2Smrg continue 1419357bfbb2Smrg ;; 1420357bfbb2Smrg darwin_framework|darwin_framework_skip) 1421357bfbb2Smrg test "$prev" = "darwin_framework" && compiler_flags="$compiler_flags $arg" 1422357bfbb2Smrg compile_command="$compile_command $arg" 1423357bfbb2Smrg finalize_command="$finalize_command $arg" 1424357bfbb2Smrg prev= 1425357bfbb2Smrg continue 1426357bfbb2Smrg ;; 1427357bfbb2Smrg *) 1428357bfbb2Smrg eval "$prev=\"\$arg\"" 1429357bfbb2Smrg prev= 1430357bfbb2Smrg continue 1431357bfbb2Smrg ;; 1432357bfbb2Smrg esac 1433357bfbb2Smrg fi # test -n "$prev" 1434357bfbb2Smrg 1435357bfbb2Smrg prevarg="$arg" 1436357bfbb2Smrg 1437357bfbb2Smrg case $arg in 1438357bfbb2Smrg -all-static) 1439357bfbb2Smrg if test -n "$link_static_flag"; then 1440357bfbb2Smrg compile_command="$compile_command $link_static_flag" 1441357bfbb2Smrg finalize_command="$finalize_command $link_static_flag" 1442357bfbb2Smrg fi 1443357bfbb2Smrg continue 1444357bfbb2Smrg ;; 1445357bfbb2Smrg 1446357bfbb2Smrg -allow-undefined) 1447357bfbb2Smrg # FIXME: remove this flag sometime in the future. 1448357bfbb2Smrg $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2 1449357bfbb2Smrg continue 1450357bfbb2Smrg ;; 1451357bfbb2Smrg 1452357bfbb2Smrg -avoid-version) 1453357bfbb2Smrg avoid_version=yes 1454357bfbb2Smrg continue 1455357bfbb2Smrg ;; 1456357bfbb2Smrg 1457357bfbb2Smrg -dlopen) 1458357bfbb2Smrg prev=dlfiles 1459357bfbb2Smrg continue 1460357bfbb2Smrg ;; 1461357bfbb2Smrg 1462357bfbb2Smrg -dlpreopen) 1463357bfbb2Smrg prev=dlprefiles 1464357bfbb2Smrg continue 1465357bfbb2Smrg ;; 1466357bfbb2Smrg 1467357bfbb2Smrg -export-dynamic) 1468357bfbb2Smrg export_dynamic=yes 1469357bfbb2Smrg continue 1470357bfbb2Smrg ;; 1471357bfbb2Smrg 1472357bfbb2Smrg -export-symbols | -export-symbols-regex) 1473357bfbb2Smrg if test -n "$export_symbols" || test -n "$export_symbols_regex"; then 1474357bfbb2Smrg $echo "$modename: more than one -exported-symbols argument is not allowed" 1475357bfbb2Smrg exit $EXIT_FAILURE 1476357bfbb2Smrg fi 1477357bfbb2Smrg if test "X$arg" = "X-export-symbols"; then 1478357bfbb2Smrg prev=expsyms 1479357bfbb2Smrg else 1480357bfbb2Smrg prev=expsyms_regex 1481357bfbb2Smrg fi 1482357bfbb2Smrg continue 1483357bfbb2Smrg ;; 1484357bfbb2Smrg 1485357bfbb2Smrg -framework|-arch|-isysroot) 1486357bfbb2Smrg case " $CC " in 1487357bfbb2Smrg *" ${arg} ${1} "* | *" ${arg} ${1} "*) 1488357bfbb2Smrg prev=darwin_framework_skip ;; 1489357bfbb2Smrg *) compiler_flags="$compiler_flags $arg" 1490357bfbb2Smrg prev=darwin_framework ;; 1491357bfbb2Smrg esac 1492357bfbb2Smrg compile_command="$compile_command $arg" 1493357bfbb2Smrg finalize_command="$finalize_command $arg" 1494357bfbb2Smrg continue 1495357bfbb2Smrg ;; 1496357bfbb2Smrg 1497357bfbb2Smrg -inst-prefix-dir) 1498357bfbb2Smrg prev=inst_prefix 1499357bfbb2Smrg continue 1500357bfbb2Smrg ;; 1501357bfbb2Smrg 1502357bfbb2Smrg # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* 1503357bfbb2Smrg # so, if we see these flags be careful not to treat them like -L 1504357bfbb2Smrg -L[A-Z][A-Z]*:*) 1505357bfbb2Smrg case $with_gcc/$host in 1506357bfbb2Smrg no/*-*-irix* | /*-*-irix*) 1507357bfbb2Smrg compile_command="$compile_command $arg" 1508357bfbb2Smrg finalize_command="$finalize_command $arg" 1509357bfbb2Smrg ;; 1510357bfbb2Smrg esac 1511357bfbb2Smrg continue 1512357bfbb2Smrg ;; 1513357bfbb2Smrg 1514357bfbb2Smrg -L*) 1515357bfbb2Smrg dir=`$echo "X$arg" | $Xsed -e 's/^-L//'` 1516357bfbb2Smrg # We need an absolute path. 1517357bfbb2Smrg case $dir in 1518357bfbb2Smrg [\\/]* | [A-Za-z]:[\\/]*) ;; 1519357bfbb2Smrg *) 1520357bfbb2Smrg absdir=`cd "$dir" && pwd` 1521357bfbb2Smrg if test -z "$absdir"; then 1522357bfbb2Smrg $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2 1523357bfbb2Smrg absdir="$dir" 1524357bfbb2Smrg notinst_path="$notinst_path $dir" 1525357bfbb2Smrg fi 1526357bfbb2Smrg dir="$absdir" 1527357bfbb2Smrg ;; 1528357bfbb2Smrg esac 1529357bfbb2Smrg case "$deplibs " in 1530357bfbb2Smrg *" -L$dir "*) ;; 1531357bfbb2Smrg *) 1532357bfbb2Smrg deplibs="$deplibs -L$dir" 1533357bfbb2Smrg lib_search_path="$lib_search_path $dir" 1534357bfbb2Smrg ;; 1535357bfbb2Smrg esac 1536357bfbb2Smrg case $host in 1537357bfbb2Smrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) 1538357bfbb2Smrg testbindir=`$echo "X$dir" | $Xsed -e 's*/lib$*/bin*'` 1539357bfbb2Smrg case :$dllsearchpath: in 1540357bfbb2Smrg *":$dir:"*) ;; 1541357bfbb2Smrg *) dllsearchpath="$dllsearchpath:$dir";; 1542357bfbb2Smrg esac 1543357bfbb2Smrg case :$dllsearchpath: in 1544357bfbb2Smrg *":$testbindir:"*) ;; 1545357bfbb2Smrg *) dllsearchpath="$dllsearchpath:$testbindir";; 1546357bfbb2Smrg esac 1547357bfbb2Smrg ;; 1548357bfbb2Smrg esac 1549357bfbb2Smrg continue 1550357bfbb2Smrg ;; 1551357bfbb2Smrg 1552357bfbb2Smrg -l*) 1553357bfbb2Smrg if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then 1554357bfbb2Smrg case $host in 1555357bfbb2Smrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos*) 1556357bfbb2Smrg # These systems don't actually have a C or math library (as such) 1557357bfbb2Smrg continue 1558357bfbb2Smrg ;; 1559357bfbb2Smrg *-*-os2*) 1560357bfbb2Smrg # These systems don't actually have a C library (as such) 1561357bfbb2Smrg test "X$arg" = "X-lc" && continue 1562357bfbb2Smrg ;; 1563357bfbb2Smrg *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 1564357bfbb2Smrg # Do not include libc due to us having libc/libc_r. 1565357bfbb2Smrg test "X$arg" = "X-lc" && continue 1566357bfbb2Smrg ;; 1567357bfbb2Smrg *-*-rhapsody* | *-*-darwin1.[012]) 1568357bfbb2Smrg # Rhapsody C and math libraries are in the System framework 1569357bfbb2Smrg deplibs="$deplibs -framework System" 1570357bfbb2Smrg continue 1571357bfbb2Smrg ;; 1572357bfbb2Smrg *-*-sco3.2v5* | *-*-sco5v6*) 1573357bfbb2Smrg # Causes problems with __ctype 1574357bfbb2Smrg test "X$arg" = "X-lc" && continue 1575357bfbb2Smrg ;; 1576357bfbb2Smrg *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 1577357bfbb2Smrg # Compiler inserts libc in the correct place for threads to work 1578357bfbb2Smrg test "X$arg" = "X-lc" && continue 1579357bfbb2Smrg ;; 1580357bfbb2Smrg esac 1581357bfbb2Smrg elif test "X$arg" = "X-lc_r"; then 1582357bfbb2Smrg case $host in 1583357bfbb2Smrg *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 1584357bfbb2Smrg # Do not include libc_r directly, use -pthread flag. 1585357bfbb2Smrg continue 1586357bfbb2Smrg ;; 1587357bfbb2Smrg esac 1588357bfbb2Smrg fi 1589357bfbb2Smrg deplibs="$deplibs $arg" 1590357bfbb2Smrg continue 1591357bfbb2Smrg ;; 1592357bfbb2Smrg 1593357bfbb2Smrg # Tru64 UNIX uses -model [arg] to determine the layout of C++ 1594357bfbb2Smrg # classes, name mangling, and exception handling. 1595357bfbb2Smrg -model) 1596357bfbb2Smrg compile_command="$compile_command $arg" 1597357bfbb2Smrg compiler_flags="$compiler_flags $arg" 1598357bfbb2Smrg finalize_command="$finalize_command $arg" 1599357bfbb2Smrg prev=xcompiler 1600357bfbb2Smrg continue 1601357bfbb2Smrg ;; 1602357bfbb2Smrg 1603357bfbb2Smrg -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe) 1604357bfbb2Smrg compiler_flags="$compiler_flags $arg" 1605357bfbb2Smrg compile_command="$compile_command $arg" 1606357bfbb2Smrg finalize_command="$finalize_command $arg" 1607357bfbb2Smrg continue 1608357bfbb2Smrg ;; 1609357bfbb2Smrg 1610357bfbb2Smrg -module) 1611357bfbb2Smrg module=yes 1612357bfbb2Smrg continue 1613357bfbb2Smrg ;; 1614357bfbb2Smrg 1615357bfbb2Smrg # -64, -mips[0-9] enable 64-bit mode on the SGI compiler 1616357bfbb2Smrg # -r[0-9][0-9]* specifies the processor on the SGI compiler 1617357bfbb2Smrg # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler 1618357bfbb2Smrg # +DA*, +DD* enable 64-bit mode on the HP compiler 1619357bfbb2Smrg # -q* pass through compiler args for the IBM compiler 1620357bfbb2Smrg # -m* pass through architecture-specific compiler args for GCC 1621357bfbb2Smrg # -m*, -t[45]*, -txscale* pass through architecture-specific 1622357bfbb2Smrg # compiler args for GCC 1623357bfbb2Smrg # -pg pass through profiling flag for GCC 1624357bfbb2Smrg # @file GCC response files 1625357bfbb2Smrg -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*|-pg| \ 1626357bfbb2Smrg -t[45]*|-txscale*|@*) 1627357bfbb2Smrg 1628357bfbb2Smrg # Unknown arguments in both finalize_command and compile_command need 1629357bfbb2Smrg # to be aesthetically quoted because they are evaled later. 1630357bfbb2Smrg arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 1631357bfbb2Smrg case $arg in 1632357bfbb2Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 1633357bfbb2Smrg arg="\"$arg\"" 1634357bfbb2Smrg ;; 1635357bfbb2Smrg esac 1636357bfbb2Smrg compile_command="$compile_command $arg" 1637357bfbb2Smrg finalize_command="$finalize_command $arg" 1638357bfbb2Smrg compiler_flags="$compiler_flags $arg" 1639357bfbb2Smrg continue 1640357bfbb2Smrg ;; 1641357bfbb2Smrg 1642357bfbb2Smrg -shrext) 1643357bfbb2Smrg prev=shrext 1644357bfbb2Smrg continue 1645357bfbb2Smrg ;; 1646357bfbb2Smrg 1647357bfbb2Smrg -no-fast-install) 1648357bfbb2Smrg fast_install=no 1649357bfbb2Smrg continue 1650357bfbb2Smrg ;; 1651357bfbb2Smrg 1652357bfbb2Smrg -no-install) 1653357bfbb2Smrg case $host in 1654357bfbb2Smrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) 1655357bfbb2Smrg # The PATH hackery in wrapper scripts is required on Windows 1656357bfbb2Smrg # in order for the loader to find any dlls it needs. 1657357bfbb2Smrg $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2 1658357bfbb2Smrg $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2 1659357bfbb2Smrg fast_install=no 1660357bfbb2Smrg ;; 1661357bfbb2Smrg *) no_install=yes ;; 1662357bfbb2Smrg esac 1663357bfbb2Smrg continue 1664357bfbb2Smrg ;; 1665357bfbb2Smrg 1666357bfbb2Smrg -no-undefined) 1667357bfbb2Smrg allow_undefined=no 1668357bfbb2Smrg continue 1669357bfbb2Smrg ;; 1670357bfbb2Smrg 1671357bfbb2Smrg -objectlist) 1672357bfbb2Smrg prev=objectlist 1673357bfbb2Smrg continue 1674357bfbb2Smrg ;; 1675357bfbb2Smrg 1676357bfbb2Smrg -o) prev=output ;; 1677357bfbb2Smrg 1678357bfbb2Smrg -precious-files-regex) 1679357bfbb2Smrg prev=precious_regex 1680357bfbb2Smrg continue 1681357bfbb2Smrg ;; 1682357bfbb2Smrg 1683357bfbb2Smrg -release) 1684357bfbb2Smrg prev=release 1685357bfbb2Smrg continue 1686357bfbb2Smrg ;; 1687357bfbb2Smrg 1688357bfbb2Smrg -rpath) 1689357bfbb2Smrg prev=rpath 1690357bfbb2Smrg continue 1691357bfbb2Smrg ;; 1692357bfbb2Smrg 1693357bfbb2Smrg -R) 1694357bfbb2Smrg prev=xrpath 1695357bfbb2Smrg continue 1696357bfbb2Smrg ;; 1697357bfbb2Smrg 1698357bfbb2Smrg -R*) 1699357bfbb2Smrg dir=`$echo "X$arg" | $Xsed -e 's/^-R//'` 1700357bfbb2Smrg # We need an absolute path. 1701357bfbb2Smrg case $dir in 1702357bfbb2Smrg [\\/]* | [A-Za-z]:[\\/]*) ;; 1703357bfbb2Smrg *) 1704357bfbb2Smrg $echo "$modename: only absolute run-paths are allowed" 1>&2 1705357bfbb2Smrg exit $EXIT_FAILURE 1706357bfbb2Smrg ;; 1707357bfbb2Smrg esac 1708357bfbb2Smrg case "$xrpath " in 1709357bfbb2Smrg *" $dir "*) ;; 1710357bfbb2Smrg *) xrpath="$xrpath $dir" ;; 1711357bfbb2Smrg esac 1712357bfbb2Smrg continue 1713357bfbb2Smrg ;; 1714357bfbb2Smrg 1715357bfbb2Smrg -static) 1716357bfbb2Smrg # The effects of -static are defined in a previous loop. 1717357bfbb2Smrg # We used to do the same as -all-static on platforms that 1718357bfbb2Smrg # didn't have a PIC flag, but the assumption that the effects 1719357bfbb2Smrg # would be equivalent was wrong. It would break on at least 1720357bfbb2Smrg # Digital Unix and AIX. 1721357bfbb2Smrg continue 1722357bfbb2Smrg ;; 1723357bfbb2Smrg 1724357bfbb2Smrg -thread-safe) 1725357bfbb2Smrg thread_safe=yes 1726357bfbb2Smrg continue 1727357bfbb2Smrg ;; 1728357bfbb2Smrg 1729357bfbb2Smrg -version-info) 1730357bfbb2Smrg prev=vinfo 1731357bfbb2Smrg continue 1732357bfbb2Smrg ;; 1733357bfbb2Smrg -version-number) 1734357bfbb2Smrg prev=vinfo 1735357bfbb2Smrg vinfo_number=yes 1736357bfbb2Smrg continue 1737357bfbb2Smrg ;; 1738357bfbb2Smrg 1739357bfbb2Smrg -Wc,*) 1740357bfbb2Smrg args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'` 1741357bfbb2Smrg arg= 1742357bfbb2Smrg save_ifs="$IFS"; IFS=',' 1743357bfbb2Smrg for flag in $args; do 1744357bfbb2Smrg IFS="$save_ifs" 1745357bfbb2Smrg case $flag in 1746357bfbb2Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 1747357bfbb2Smrg flag="\"$flag\"" 1748357bfbb2Smrg ;; 1749357bfbb2Smrg esac 1750357bfbb2Smrg arg="$arg $wl$flag" 1751357bfbb2Smrg compiler_flags="$compiler_flags $flag" 1752357bfbb2Smrg done 1753357bfbb2Smrg IFS="$save_ifs" 1754357bfbb2Smrg arg=`$echo "X$arg" | $Xsed -e "s/^ //"` 1755357bfbb2Smrg ;; 1756357bfbb2Smrg 1757357bfbb2Smrg -Wl,*) 1758357bfbb2Smrg args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'` 1759357bfbb2Smrg arg= 1760357bfbb2Smrg save_ifs="$IFS"; IFS=',' 1761357bfbb2Smrg for flag in $args; do 1762357bfbb2Smrg IFS="$save_ifs" 1763357bfbb2Smrg case $flag in 1764357bfbb2Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 1765357bfbb2Smrg flag="\"$flag\"" 1766357bfbb2Smrg ;; 1767357bfbb2Smrg esac 1768357bfbb2Smrg arg="$arg $wl$flag" 1769357bfbb2Smrg compiler_flags="$compiler_flags $wl$flag" 1770357bfbb2Smrg linker_flags="$linker_flags $flag" 1771357bfbb2Smrg done 1772357bfbb2Smrg IFS="$save_ifs" 1773357bfbb2Smrg arg=`$echo "X$arg" | $Xsed -e "s/^ //"` 1774357bfbb2Smrg ;; 1775357bfbb2Smrg 1776357bfbb2Smrg -Xcompiler) 1777357bfbb2Smrg prev=xcompiler 1778357bfbb2Smrg continue 1779357bfbb2Smrg ;; 1780357bfbb2Smrg 1781357bfbb2Smrg -Xlinker) 1782357bfbb2Smrg prev=xlinker 1783357bfbb2Smrg continue 1784357bfbb2Smrg ;; 1785357bfbb2Smrg 1786357bfbb2Smrg -XCClinker) 1787357bfbb2Smrg prev=xcclinker 1788357bfbb2Smrg continue 1789357bfbb2Smrg ;; 1790357bfbb2Smrg 1791357bfbb2Smrg # Some other compiler flag. 1792357bfbb2Smrg -* | +*) 1793357bfbb2Smrg # Unknown arguments in both finalize_command and compile_command need 1794357bfbb2Smrg # to be aesthetically quoted because they are evaled later. 1795357bfbb2Smrg arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 1796357bfbb2Smrg case $arg in 1797357bfbb2Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 1798357bfbb2Smrg arg="\"$arg\"" 1799357bfbb2Smrg ;; 1800357bfbb2Smrg esac 1801357bfbb2Smrg ;; 1802357bfbb2Smrg 1803357bfbb2Smrg *.$objext) 1804357bfbb2Smrg # A standard object. 1805357bfbb2Smrg objs="$objs $arg" 1806357bfbb2Smrg ;; 1807357bfbb2Smrg 1808357bfbb2Smrg *.lo) 1809357bfbb2Smrg # A libtool-controlled object. 1810357bfbb2Smrg 1811357bfbb2Smrg # Check to see that this really is a libtool object. 1812357bfbb2Smrg if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 1813357bfbb2Smrg pic_object= 1814357bfbb2Smrg non_pic_object= 1815357bfbb2Smrg 1816357bfbb2Smrg # Read the .lo file 1817357bfbb2Smrg # If there is no directory component, then add one. 1818357bfbb2Smrg case $arg in 1819357bfbb2Smrg */* | *\\*) . $arg ;; 1820357bfbb2Smrg *) . ./$arg ;; 1821357bfbb2Smrg esac 1822357bfbb2Smrg 1823357bfbb2Smrg if test -z "$pic_object" || \ 1824357bfbb2Smrg test -z "$non_pic_object" || 1825357bfbb2Smrg test "$pic_object" = none && \ 1826357bfbb2Smrg test "$non_pic_object" = none; then 1827357bfbb2Smrg $echo "$modename: cannot find name of object for \`$arg'" 1>&2 1828357bfbb2Smrg exit $EXIT_FAILURE 1829357bfbb2Smrg fi 1830357bfbb2Smrg 1831357bfbb2Smrg # Extract subdirectory from the argument. 1832357bfbb2Smrg xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` 1833357bfbb2Smrg if test "X$xdir" = "X$arg"; then 1834357bfbb2Smrg xdir= 1835357bfbb2Smrg else 1836357bfbb2Smrg xdir="$xdir/" 1837357bfbb2Smrg fi 1838357bfbb2Smrg 1839357bfbb2Smrg if test "$pic_object" != none; then 1840357bfbb2Smrg # Prepend the subdirectory the object is found in. 1841357bfbb2Smrg pic_object="$xdir$pic_object" 1842357bfbb2Smrg 1843357bfbb2Smrg if test "$prev" = dlfiles; then 1844357bfbb2Smrg if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 1845357bfbb2Smrg dlfiles="$dlfiles $pic_object" 1846357bfbb2Smrg prev= 1847357bfbb2Smrg continue 1848357bfbb2Smrg else 1849357bfbb2Smrg # If libtool objects are unsupported, then we need to preload. 1850357bfbb2Smrg prev=dlprefiles 1851357bfbb2Smrg fi 1852357bfbb2Smrg fi 1853357bfbb2Smrg 1854357bfbb2Smrg # CHECK ME: I think I busted this. -Ossama 1855357bfbb2Smrg if test "$prev" = dlprefiles; then 1856357bfbb2Smrg # Preload the old-style object. 1857357bfbb2Smrg dlprefiles="$dlprefiles $pic_object" 1858357bfbb2Smrg prev= 1859357bfbb2Smrg fi 1860357bfbb2Smrg 1861357bfbb2Smrg # A PIC object. 1862357bfbb2Smrg libobjs="$libobjs $pic_object" 1863357bfbb2Smrg arg="$pic_object" 1864357bfbb2Smrg fi 1865357bfbb2Smrg 1866357bfbb2Smrg # Non-PIC object. 1867357bfbb2Smrg if test "$non_pic_object" != none; then 1868357bfbb2Smrg # Prepend the subdirectory the object is found in. 1869357bfbb2Smrg non_pic_object="$xdir$non_pic_object" 1870357bfbb2Smrg 1871357bfbb2Smrg # A standard non-PIC object 1872357bfbb2Smrg non_pic_objects="$non_pic_objects $non_pic_object" 1873357bfbb2Smrg if test -z "$pic_object" || test "$pic_object" = none ; then 1874357bfbb2Smrg arg="$non_pic_object" 1875357bfbb2Smrg fi 1876357bfbb2Smrg else 1877357bfbb2Smrg # If the PIC object exists, use it instead. 1878357bfbb2Smrg # $xdir was prepended to $pic_object above. 1879357bfbb2Smrg non_pic_object="$pic_object" 1880357bfbb2Smrg non_pic_objects="$non_pic_objects $non_pic_object" 1881357bfbb2Smrg fi 1882357bfbb2Smrg else 1883357bfbb2Smrg # Only an error if not doing a dry-run. 1884357bfbb2Smrg if test -z "$run"; then 1885357bfbb2Smrg $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 1886357bfbb2Smrg exit $EXIT_FAILURE 1887357bfbb2Smrg else 1888357bfbb2Smrg # Dry-run case. 1889357bfbb2Smrg 1890357bfbb2Smrg # Extract subdirectory from the argument. 1891357bfbb2Smrg xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` 1892357bfbb2Smrg if test "X$xdir" = "X$arg"; then 1893357bfbb2Smrg xdir= 1894357bfbb2Smrg else 1895357bfbb2Smrg xdir="$xdir/" 1896357bfbb2Smrg fi 1897357bfbb2Smrg 1898357bfbb2Smrg pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` 1899357bfbb2Smrg non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` 1900357bfbb2Smrg libobjs="$libobjs $pic_object" 1901357bfbb2Smrg non_pic_objects="$non_pic_objects $non_pic_object" 1902357bfbb2Smrg fi 1903357bfbb2Smrg fi 1904357bfbb2Smrg ;; 1905357bfbb2Smrg 1906357bfbb2Smrg *.$libext) 1907357bfbb2Smrg # An archive. 1908357bfbb2Smrg deplibs="$deplibs $arg" 1909357bfbb2Smrg old_deplibs="$old_deplibs $arg" 1910357bfbb2Smrg continue 1911357bfbb2Smrg ;; 1912357bfbb2Smrg 1913357bfbb2Smrg *.la) 1914357bfbb2Smrg # A libtool-controlled library. 1915357bfbb2Smrg 1916357bfbb2Smrg if test "$prev" = dlfiles; then 1917357bfbb2Smrg # This library was specified with -dlopen. 1918357bfbb2Smrg dlfiles="$dlfiles $arg" 1919357bfbb2Smrg prev= 1920357bfbb2Smrg elif test "$prev" = dlprefiles; then 1921357bfbb2Smrg # The library was specified with -dlpreopen. 1922357bfbb2Smrg dlprefiles="$dlprefiles $arg" 1923357bfbb2Smrg prev= 1924357bfbb2Smrg else 1925357bfbb2Smrg deplibs="$deplibs $arg" 1926357bfbb2Smrg fi 1927357bfbb2Smrg continue 1928357bfbb2Smrg ;; 1929357bfbb2Smrg 1930357bfbb2Smrg # Some other compiler argument. 1931357bfbb2Smrg *) 1932357bfbb2Smrg # Unknown arguments in both finalize_command and compile_command need 1933357bfbb2Smrg # to be aesthetically quoted because they are evaled later. 1934357bfbb2Smrg arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 1935357bfbb2Smrg case $arg in 1936357bfbb2Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 1937357bfbb2Smrg arg="\"$arg\"" 1938357bfbb2Smrg ;; 1939357bfbb2Smrg esac 1940357bfbb2Smrg ;; 1941357bfbb2Smrg esac # arg 1942357bfbb2Smrg 1943357bfbb2Smrg # Now actually substitute the argument into the commands. 1944357bfbb2Smrg if test -n "$arg"; then 1945357bfbb2Smrg compile_command="$compile_command $arg" 1946357bfbb2Smrg finalize_command="$finalize_command $arg" 1947357bfbb2Smrg fi 1948357bfbb2Smrg done # argument parsing loop 1949357bfbb2Smrg 1950357bfbb2Smrg if test -n "$prev"; then 1951357bfbb2Smrg $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 1952357bfbb2Smrg $echo "$help" 1>&2 1953357bfbb2Smrg exit $EXIT_FAILURE 1954357bfbb2Smrg fi 1955357bfbb2Smrg 1956357bfbb2Smrg if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then 1957357bfbb2Smrg eval arg=\"$export_dynamic_flag_spec\" 1958357bfbb2Smrg compile_command="$compile_command $arg" 1959357bfbb2Smrg finalize_command="$finalize_command $arg" 1960357bfbb2Smrg fi 1961357bfbb2Smrg 1962357bfbb2Smrg oldlibs= 1963357bfbb2Smrg # calculate the name of the file, without its directory 1964357bfbb2Smrg outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'` 1965357bfbb2Smrg libobjs_save="$libobjs" 1966357bfbb2Smrg 1967357bfbb2Smrg if test -n "$shlibpath_var"; then 1968357bfbb2Smrg # get the directories listed in $shlibpath_var 1969357bfbb2Smrg eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` 1970357bfbb2Smrg else 1971357bfbb2Smrg shlib_search_path= 1972357bfbb2Smrg fi 1973357bfbb2Smrg eval sys_lib_search_path=\"$sys_lib_search_path_spec\" 1974357bfbb2Smrg eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" 1975357bfbb2Smrg 1976357bfbb2Smrg output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` 1977357bfbb2Smrg if test "X$output_objdir" = "X$output"; then 1978357bfbb2Smrg output_objdir="$objdir" 1979357bfbb2Smrg else 1980357bfbb2Smrg output_objdir="$output_objdir/$objdir" 1981357bfbb2Smrg fi 1982357bfbb2Smrg # Create the object directory. 1983357bfbb2Smrg if test ! -d "$output_objdir"; then 1984357bfbb2Smrg $show "$mkdir $output_objdir" 1985357bfbb2Smrg $run $mkdir $output_objdir 1986357bfbb2Smrg exit_status=$? 1987357bfbb2Smrg if test "$exit_status" -ne 0 && test ! -d "$output_objdir"; then 1988357bfbb2Smrg exit $exit_status 1989357bfbb2Smrg fi 1990357bfbb2Smrg fi 1991357bfbb2Smrg 1992357bfbb2Smrg # Determine the type of output 1993357bfbb2Smrg case $output in 1994357bfbb2Smrg "") 1995357bfbb2Smrg $echo "$modename: you must specify an output file" 1>&2 1996357bfbb2Smrg $echo "$help" 1>&2 1997357bfbb2Smrg exit $EXIT_FAILURE 1998357bfbb2Smrg ;; 1999357bfbb2Smrg *.$libext) linkmode=oldlib ;; 2000357bfbb2Smrg *.lo | *.$objext) linkmode=obj ;; 2001357bfbb2Smrg *.la) linkmode=lib ;; 2002357bfbb2Smrg *) linkmode=prog ;; # Anything else should be a program. 2003357bfbb2Smrg esac 2004357bfbb2Smrg 2005357bfbb2Smrg case $host in 2006357bfbb2Smrg *cygwin* | *mingw* | *pw32*) 2007357bfbb2Smrg # don't eliminate duplications in $postdeps and $predeps 2008357bfbb2Smrg duplicate_compiler_generated_deps=yes 2009357bfbb2Smrg ;; 2010357bfbb2Smrg *) 2011357bfbb2Smrg duplicate_compiler_generated_deps=$duplicate_deps 2012357bfbb2Smrg ;; 2013357bfbb2Smrg esac 2014357bfbb2Smrg specialdeplibs= 2015357bfbb2Smrg 2016357bfbb2Smrg libs= 2017357bfbb2Smrg # Find all interdependent deplibs by searching for libraries 2018357bfbb2Smrg # that are linked more than once (e.g. -la -lb -la) 2019357bfbb2Smrg for deplib in $deplibs; do 2020357bfbb2Smrg if test "X$duplicate_deps" = "Xyes" ; then 2021357bfbb2Smrg case "$libs " in 2022357bfbb2Smrg *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 2023357bfbb2Smrg esac 2024357bfbb2Smrg fi 2025357bfbb2Smrg libs="$libs $deplib" 2026357bfbb2Smrg done 2027357bfbb2Smrg 2028357bfbb2Smrg if test "$linkmode" = lib; then 2029357bfbb2Smrg libs="$predeps $libs $compiler_lib_search_path $postdeps" 2030357bfbb2Smrg 2031357bfbb2Smrg # Compute libraries that are listed more than once in $predeps 2032357bfbb2Smrg # $postdeps and mark them as special (i.e., whose duplicates are 2033357bfbb2Smrg # not to be eliminated). 2034357bfbb2Smrg pre_post_deps= 2035357bfbb2Smrg if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then 2036357bfbb2Smrg for pre_post_dep in $predeps $postdeps; do 2037357bfbb2Smrg case "$pre_post_deps " in 2038357bfbb2Smrg *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; 2039357bfbb2Smrg esac 2040357bfbb2Smrg pre_post_deps="$pre_post_deps $pre_post_dep" 2041357bfbb2Smrg done 2042357bfbb2Smrg fi 2043357bfbb2Smrg pre_post_deps= 2044357bfbb2Smrg fi 2045357bfbb2Smrg 2046357bfbb2Smrg deplibs= 2047357bfbb2Smrg newdependency_libs= 2048357bfbb2Smrg newlib_search_path= 2049357bfbb2Smrg need_relink=no # whether we're linking any uninstalled libtool libraries 2050357bfbb2Smrg notinst_deplibs= # not-installed libtool libraries 2051357bfbb2Smrg case $linkmode in 2052357bfbb2Smrg lib) 2053357bfbb2Smrg passes="conv link" 2054357bfbb2Smrg for file in $dlfiles $dlprefiles; do 2055357bfbb2Smrg case $file in 2056357bfbb2Smrg *.la) ;; 2057357bfbb2Smrg *) 2058357bfbb2Smrg $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2 2059357bfbb2Smrg exit $EXIT_FAILURE 2060357bfbb2Smrg ;; 2061357bfbb2Smrg esac 2062357bfbb2Smrg done 2063357bfbb2Smrg ;; 2064357bfbb2Smrg prog) 2065357bfbb2Smrg compile_deplibs= 2066357bfbb2Smrg finalize_deplibs= 2067357bfbb2Smrg alldeplibs=no 2068357bfbb2Smrg newdlfiles= 2069357bfbb2Smrg newdlprefiles= 2070357bfbb2Smrg passes="conv scan dlopen dlpreopen link" 2071357bfbb2Smrg ;; 2072357bfbb2Smrg *) passes="conv" 2073357bfbb2Smrg ;; 2074357bfbb2Smrg esac 2075357bfbb2Smrg for pass in $passes; do 2076357bfbb2Smrg # The preopen pass in lib mode reverses $deplibs; put it back here 2077357bfbb2Smrg # so that -L comes before libs that need it for instance... 2078357bfbb2Smrg if test "$linkmode,$pass" = "lib,link"; then 2079357bfbb2Smrg ## FIXME: Find the place where the list is rebuilt in the wrong 2080357bfbb2Smrg ## order, and fix it there properly 2081357bfbb2Smrg tmp_deplibs= 2082357bfbb2Smrg for deplib in $deplibs; do 2083357bfbb2Smrg tmp_deplibs="$deplib $tmp_deplibs" 2084357bfbb2Smrg done 2085357bfbb2Smrg deplibs="$tmp_deplibs" 2086357bfbb2Smrg fi 2087357bfbb2Smrg if test "$linkmode,$pass" = "lib,link" || 2088357bfbb2Smrg test "$linkmode,$pass" = "prog,scan"; then 2089357bfbb2Smrg libs="$deplibs" 2090357bfbb2Smrg deplibs= 2091357bfbb2Smrg fi 2092357bfbb2Smrg if test "$linkmode" = prog; then 2093357bfbb2Smrg case $pass in 2094357bfbb2Smrg dlopen) libs="$dlfiles" ;; 2095357bfbb2Smrg dlpreopen) libs="$dlprefiles" ;; 2096357bfbb2Smrg link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; 2097357bfbb2Smrg esac 2098357bfbb2Smrg fi 2099357bfbb2Smrg if test "$pass" = dlopen; then 2100357bfbb2Smrg # Collect dlpreopened libraries 2101357bfbb2Smrg save_deplibs="$deplibs" 2102357bfbb2Smrg deplibs= 2103357bfbb2Smrg fi 2104357bfbb2Smrg for deplib in $libs; do 2105357bfbb2Smrg lib= 2106357bfbb2Smrg found=no 2107357bfbb2Smrg case $deplib in 2108357bfbb2Smrg -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe) 2109357bfbb2Smrg if test "$linkmode,$pass" = "prog,link"; then 2110357bfbb2Smrg compile_deplibs="$deplib $compile_deplibs" 2111357bfbb2Smrg finalize_deplibs="$deplib $finalize_deplibs" 2112357bfbb2Smrg else 2113357bfbb2Smrg compiler_flags="$compiler_flags $deplib" 2114357bfbb2Smrg fi 2115357bfbb2Smrg continue 2116357bfbb2Smrg ;; 2117357bfbb2Smrg -l*) 2118357bfbb2Smrg if test "$linkmode" != lib && test "$linkmode" != prog; then 2119357bfbb2Smrg $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2 2120357bfbb2Smrg continue 2121357bfbb2Smrg fi 2122357bfbb2Smrg name=`$echo "X$deplib" | $Xsed -e 's/^-l//'` 2123357bfbb2Smrg for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do 2124357bfbb2Smrg for search_ext in .la $std_shrext .so .a; do 2125357bfbb2Smrg # Search the libtool library 2126357bfbb2Smrg lib="$searchdir/lib${name}${search_ext}" 2127357bfbb2Smrg if test -f "$lib"; then 2128357bfbb2Smrg if test "$search_ext" = ".la"; then 2129357bfbb2Smrg found=yes 2130357bfbb2Smrg else 2131357bfbb2Smrg found=no 2132357bfbb2Smrg fi 2133357bfbb2Smrg break 2 2134357bfbb2Smrg fi 2135357bfbb2Smrg done 2136357bfbb2Smrg done 2137357bfbb2Smrg if test "$found" != yes; then 2138357bfbb2Smrg # deplib doesn't seem to be a libtool library 2139357bfbb2Smrg if test "$linkmode,$pass" = "prog,link"; then 2140357bfbb2Smrg compile_deplibs="$deplib $compile_deplibs" 2141357bfbb2Smrg finalize_deplibs="$deplib $finalize_deplibs" 2142357bfbb2Smrg else 2143357bfbb2Smrg deplibs="$deplib $deplibs" 2144357bfbb2Smrg test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 2145357bfbb2Smrg fi 2146357bfbb2Smrg continue 2147357bfbb2Smrg else # deplib is a libtool library 2148357bfbb2Smrg # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, 2149357bfbb2Smrg # We need to do some special things here, and not later. 2150357bfbb2Smrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 2151357bfbb2Smrg case " $predeps $postdeps " in 2152357bfbb2Smrg *" $deplib "*) 2153357bfbb2Smrg if (${SED} -e '2q' $lib | 2154357bfbb2Smrg grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 2155357bfbb2Smrg library_names= 2156357bfbb2Smrg old_library= 2157357bfbb2Smrg case $lib in 2158357bfbb2Smrg */* | *\\*) . $lib ;; 2159357bfbb2Smrg *) . ./$lib ;; 2160357bfbb2Smrg esac 2161357bfbb2Smrg for l in $old_library $library_names; do 2162357bfbb2Smrg ll="$l" 2163357bfbb2Smrg done 2164357bfbb2Smrg if test "X$ll" = "X$old_library" ; then # only static version available 2165357bfbb2Smrg found=no 2166357bfbb2Smrg ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` 2167357bfbb2Smrg test "X$ladir" = "X$lib" && ladir="." 2168357bfbb2Smrg lib=$ladir/$old_library 2169357bfbb2Smrg if test "$linkmode,$pass" = "prog,link"; then 2170357bfbb2Smrg compile_deplibs="$deplib $compile_deplibs" 2171357bfbb2Smrg finalize_deplibs="$deplib $finalize_deplibs" 2172357bfbb2Smrg else 2173357bfbb2Smrg deplibs="$deplib $deplibs" 2174357bfbb2Smrg test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 2175357bfbb2Smrg fi 2176357bfbb2Smrg continue 2177357bfbb2Smrg fi 2178357bfbb2Smrg fi 2179357bfbb2Smrg ;; 2180357bfbb2Smrg *) ;; 2181357bfbb2Smrg esac 2182357bfbb2Smrg fi 2183357bfbb2Smrg fi 2184357bfbb2Smrg ;; # -l 2185357bfbb2Smrg -L*) 2186357bfbb2Smrg case $linkmode in 2187357bfbb2Smrg lib) 2188357bfbb2Smrg deplibs="$deplib $deplibs" 2189357bfbb2Smrg test "$pass" = conv && continue 2190357bfbb2Smrg newdependency_libs="$deplib $newdependency_libs" 2191357bfbb2Smrg newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` 2192357bfbb2Smrg ;; 2193357bfbb2Smrg prog) 2194357bfbb2Smrg if test "$pass" = conv; then 2195357bfbb2Smrg deplibs="$deplib $deplibs" 2196357bfbb2Smrg continue 2197357bfbb2Smrg fi 2198357bfbb2Smrg if test "$pass" = scan; then 2199357bfbb2Smrg deplibs="$deplib $deplibs" 2200357bfbb2Smrg else 2201357bfbb2Smrg compile_deplibs="$deplib $compile_deplibs" 2202357bfbb2Smrg finalize_deplibs="$deplib $finalize_deplibs" 2203357bfbb2Smrg fi 2204357bfbb2Smrg newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` 2205357bfbb2Smrg ;; 2206357bfbb2Smrg *) 2207357bfbb2Smrg $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2 2208357bfbb2Smrg ;; 2209357bfbb2Smrg esac # linkmode 2210357bfbb2Smrg continue 2211357bfbb2Smrg ;; # -L 2212357bfbb2Smrg -R*) 2213357bfbb2Smrg if test "$pass" = link; then 2214357bfbb2Smrg dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'` 2215357bfbb2Smrg # Make sure the xrpath contains only unique directories. 2216357bfbb2Smrg case "$xrpath " in 2217357bfbb2Smrg *" $dir "*) ;; 2218357bfbb2Smrg *) xrpath="$xrpath $dir" ;; 2219357bfbb2Smrg esac 2220357bfbb2Smrg fi 2221357bfbb2Smrg deplibs="$deplib $deplibs" 2222357bfbb2Smrg continue 2223357bfbb2Smrg ;; 2224357bfbb2Smrg *.la) lib="$deplib" ;; 2225357bfbb2Smrg *.$libext) 2226357bfbb2Smrg if test "$pass" = conv; then 2227357bfbb2Smrg deplibs="$deplib $deplibs" 2228357bfbb2Smrg continue 2229357bfbb2Smrg fi 2230357bfbb2Smrg case $linkmode in 2231357bfbb2Smrg lib) 2232357bfbb2Smrg valid_a_lib=no 2233357bfbb2Smrg case $deplibs_check_method in 2234357bfbb2Smrg match_pattern*) 2235357bfbb2Smrg set dummy $deplibs_check_method 2236357bfbb2Smrg match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` 2237357bfbb2Smrg if eval $echo \"$deplib\" 2>/dev/null \ 2238357bfbb2Smrg | $SED 10q \ 2239357bfbb2Smrg | $EGREP "$match_pattern_regex" > /dev/null; then 2240357bfbb2Smrg valid_a_lib=yes 2241357bfbb2Smrg fi 2242357bfbb2Smrg ;; 2243357bfbb2Smrg pass_all) 2244357bfbb2Smrg valid_a_lib=yes 2245357bfbb2Smrg ;; 2246357bfbb2Smrg esac 2247357bfbb2Smrg if test "$valid_a_lib" != yes; then 2248357bfbb2Smrg $echo 2249357bfbb2Smrg $echo "*** Warning: Trying to link with static lib archive $deplib." 2250357bfbb2Smrg $echo "*** I have the capability to make that library automatically link in when" 2251357bfbb2Smrg $echo "*** you link to this library. But I can only do this if you have a" 2252357bfbb2Smrg $echo "*** shared version of the library, which you do not appear to have" 2253357bfbb2Smrg $echo "*** because the file extensions .$libext of this argument makes me believe" 2254357bfbb2Smrg $echo "*** that it is just a static archive that I should not used here." 2255357bfbb2Smrg else 2256357bfbb2Smrg $echo 2257357bfbb2Smrg $echo "*** Warning: Linking the shared library $output against the" 2258357bfbb2Smrg $echo "*** static library $deplib is not portable!" 2259357bfbb2Smrg deplibs="$deplib $deplibs" 2260357bfbb2Smrg fi 2261357bfbb2Smrg continue 2262357bfbb2Smrg ;; 2263357bfbb2Smrg prog) 2264357bfbb2Smrg if test "$pass" != link; then 2265357bfbb2Smrg deplibs="$deplib $deplibs" 2266357bfbb2Smrg else 2267357bfbb2Smrg compile_deplibs="$deplib $compile_deplibs" 2268357bfbb2Smrg finalize_deplibs="$deplib $finalize_deplibs" 2269357bfbb2Smrg fi 2270357bfbb2Smrg continue 2271357bfbb2Smrg ;; 2272357bfbb2Smrg esac # linkmode 2273357bfbb2Smrg ;; # *.$libext 2274357bfbb2Smrg *.lo | *.$objext) 2275357bfbb2Smrg if test "$pass" = conv; then 2276357bfbb2Smrg deplibs="$deplib $deplibs" 2277357bfbb2Smrg elif test "$linkmode" = prog; then 2278357bfbb2Smrg if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then 2279357bfbb2Smrg # If there is no dlopen support or we're linking statically, 2280357bfbb2Smrg # we need to preload. 2281357bfbb2Smrg newdlprefiles="$newdlprefiles $deplib" 2282357bfbb2Smrg compile_deplibs="$deplib $compile_deplibs" 2283357bfbb2Smrg finalize_deplibs="$deplib $finalize_deplibs" 2284357bfbb2Smrg else 2285357bfbb2Smrg newdlfiles="$newdlfiles $deplib" 2286357bfbb2Smrg fi 2287357bfbb2Smrg fi 2288357bfbb2Smrg continue 2289357bfbb2Smrg ;; 2290357bfbb2Smrg %DEPLIBS%) 2291357bfbb2Smrg alldeplibs=yes 2292357bfbb2Smrg continue 2293357bfbb2Smrg ;; 2294357bfbb2Smrg esac # case $deplib 2295357bfbb2Smrg if test "$found" = yes || test -f "$lib"; then : 2296357bfbb2Smrg else 2297357bfbb2Smrg $echo "$modename: cannot find the library \`$lib' or unhandled argument \`$deplib'" 1>&2 2298357bfbb2Smrg exit $EXIT_FAILURE 2299357bfbb2Smrg fi 2300357bfbb2Smrg 2301357bfbb2Smrg # Check to see that this really is a libtool archive. 2302357bfbb2Smrg if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : 2303357bfbb2Smrg else 2304357bfbb2Smrg $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 2305357bfbb2Smrg exit $EXIT_FAILURE 2306357bfbb2Smrg fi 2307357bfbb2Smrg 2308357bfbb2Smrg ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` 2309357bfbb2Smrg test "X$ladir" = "X$lib" && ladir="." 2310357bfbb2Smrg 2311357bfbb2Smrg dlname= 2312357bfbb2Smrg dlopen= 2313357bfbb2Smrg dlpreopen= 2314357bfbb2Smrg libdir= 2315357bfbb2Smrg library_names= 2316357bfbb2Smrg old_library= 2317357bfbb2Smrg # If the library was installed with an old release of libtool, 2318357bfbb2Smrg # it will not redefine variables installed, or shouldnotlink 2319357bfbb2Smrg installed=yes 2320357bfbb2Smrg shouldnotlink=no 2321357bfbb2Smrg avoidtemprpath= 2322357bfbb2Smrg 2323357bfbb2Smrg 2324357bfbb2Smrg # Read the .la file 2325357bfbb2Smrg case $lib in 2326357bfbb2Smrg */* | *\\*) . $lib ;; 2327357bfbb2Smrg *) . ./$lib ;; 2328357bfbb2Smrg esac 2329357bfbb2Smrg 2330357bfbb2Smrg if test "$linkmode,$pass" = "lib,link" || 2331357bfbb2Smrg test "$linkmode,$pass" = "prog,scan" || 2332357bfbb2Smrg { test "$linkmode" != prog && test "$linkmode" != lib; }; then 2333357bfbb2Smrg test -n "$dlopen" && dlfiles="$dlfiles $dlopen" 2334357bfbb2Smrg test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" 2335357bfbb2Smrg fi 2336357bfbb2Smrg 2337357bfbb2Smrg if test "$pass" = conv; then 2338357bfbb2Smrg # Only check for convenience libraries 2339357bfbb2Smrg deplibs="$lib $deplibs" 2340357bfbb2Smrg if test -z "$libdir"; then 2341357bfbb2Smrg if test -z "$old_library"; then 2342357bfbb2Smrg $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 2343357bfbb2Smrg exit $EXIT_FAILURE 2344357bfbb2Smrg fi 2345357bfbb2Smrg # It is a libtool convenience library, so add in its objects. 2346357bfbb2Smrg convenience="$convenience $ladir/$objdir/$old_library" 2347357bfbb2Smrg old_convenience="$old_convenience $ladir/$objdir/$old_library" 2348357bfbb2Smrg elif test "$linkmode" != prog && test "$linkmode" != lib; then 2349357bfbb2Smrg $echo "$modename: \`$lib' is not a convenience library" 1>&2 2350357bfbb2Smrg exit $EXIT_FAILURE 2351357bfbb2Smrg fi 2352357bfbb2Smrg tmp_libs= 2353357bfbb2Smrg for deplib in $dependency_libs; do 2354357bfbb2Smrg deplibs="$deplib $deplibs" 2355357bfbb2Smrg if test "X$duplicate_deps" = "Xyes" ; then 2356357bfbb2Smrg case "$tmp_libs " in 2357357bfbb2Smrg *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 2358357bfbb2Smrg esac 2359357bfbb2Smrg fi 2360357bfbb2Smrg tmp_libs="$tmp_libs $deplib" 2361357bfbb2Smrg done 2362357bfbb2Smrg continue 2363357bfbb2Smrg fi # $pass = conv 2364357bfbb2Smrg 2365357bfbb2Smrg 2366357bfbb2Smrg # Get the name of the library we link against. 2367357bfbb2Smrg linklib= 2368357bfbb2Smrg for l in $old_library $library_names; do 2369357bfbb2Smrg linklib="$l" 2370357bfbb2Smrg done 2371357bfbb2Smrg if test -z "$linklib"; then 2372357bfbb2Smrg $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 2373357bfbb2Smrg exit $EXIT_FAILURE 2374357bfbb2Smrg fi 2375357bfbb2Smrg 2376357bfbb2Smrg # This library was specified with -dlopen. 2377357bfbb2Smrg if test "$pass" = dlopen; then 2378357bfbb2Smrg if test -z "$libdir"; then 2379357bfbb2Smrg $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2 2380357bfbb2Smrg exit $EXIT_FAILURE 2381357bfbb2Smrg fi 2382357bfbb2Smrg if test -z "$dlname" || 2383357bfbb2Smrg test "$dlopen_support" != yes || 2384357bfbb2Smrg test "$build_libtool_libs" = no; then 2385357bfbb2Smrg # If there is no dlname, no dlopen support or we're linking 2386357bfbb2Smrg # statically, we need to preload. We also need to preload any 2387357bfbb2Smrg # dependent libraries so libltdl's deplib preloader doesn't 2388357bfbb2Smrg # bomb out in the load deplibs phase. 2389357bfbb2Smrg dlprefiles="$dlprefiles $lib $dependency_libs" 2390357bfbb2Smrg else 2391357bfbb2Smrg newdlfiles="$newdlfiles $lib" 2392357bfbb2Smrg fi 2393357bfbb2Smrg continue 2394357bfbb2Smrg fi # $pass = dlopen 2395357bfbb2Smrg 2396357bfbb2Smrg # We need an absolute path. 2397357bfbb2Smrg case $ladir in 2398357bfbb2Smrg [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; 2399357bfbb2Smrg *) 2400357bfbb2Smrg abs_ladir=`cd "$ladir" && pwd` 2401357bfbb2Smrg if test -z "$abs_ladir"; then 2402357bfbb2Smrg $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2 2403357bfbb2Smrg $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 2404357bfbb2Smrg abs_ladir="$ladir" 2405357bfbb2Smrg fi 2406357bfbb2Smrg ;; 2407357bfbb2Smrg esac 2408357bfbb2Smrg laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` 2409357bfbb2Smrg 2410357bfbb2Smrg # Find the relevant object directory and library name. 2411357bfbb2Smrg if test "X$installed" = Xyes; then 2412357bfbb2Smrg if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then 2413357bfbb2Smrg $echo "$modename: warning: library \`$lib' was moved." 1>&2 2414357bfbb2Smrg dir="$ladir" 2415357bfbb2Smrg absdir="$abs_ladir" 2416357bfbb2Smrg libdir="$abs_ladir" 2417357bfbb2Smrg else 2418357bfbb2Smrg dir="$libdir" 2419357bfbb2Smrg absdir="$libdir" 2420357bfbb2Smrg fi 2421357bfbb2Smrg test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes 2422357bfbb2Smrg else 2423357bfbb2Smrg if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then 2424357bfbb2Smrg dir="$ladir" 2425357bfbb2Smrg absdir="$abs_ladir" 2426357bfbb2Smrg # Remove this search path later 2427357bfbb2Smrg notinst_path="$notinst_path $abs_ladir" 2428357bfbb2Smrg else 2429357bfbb2Smrg dir="$ladir/$objdir" 2430357bfbb2Smrg absdir="$abs_ladir/$objdir" 2431357bfbb2Smrg # Remove this search path later 2432357bfbb2Smrg notinst_path="$notinst_path $abs_ladir" 2433357bfbb2Smrg fi 2434357bfbb2Smrg fi # $installed = yes 2435357bfbb2Smrg name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` 2436357bfbb2Smrg 2437357bfbb2Smrg # This library was specified with -dlpreopen. 2438357bfbb2Smrg if test "$pass" = dlpreopen; then 2439357bfbb2Smrg if test -z "$libdir"; then 2440357bfbb2Smrg $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2 2441357bfbb2Smrg exit $EXIT_FAILURE 2442357bfbb2Smrg fi 2443357bfbb2Smrg # Prefer using a static library (so that no silly _DYNAMIC symbols 2444357bfbb2Smrg # are required to link). 2445357bfbb2Smrg if test -n "$old_library"; then 2446357bfbb2Smrg newdlprefiles="$newdlprefiles $dir/$old_library" 2447357bfbb2Smrg # Otherwise, use the dlname, so that lt_dlopen finds it. 2448357bfbb2Smrg elif test -n "$dlname"; then 2449357bfbb2Smrg newdlprefiles="$newdlprefiles $dir/$dlname" 2450357bfbb2Smrg else 2451357bfbb2Smrg newdlprefiles="$newdlprefiles $dir/$linklib" 2452357bfbb2Smrg fi 2453357bfbb2Smrg fi # $pass = dlpreopen 2454357bfbb2Smrg 2455357bfbb2Smrg if test -z "$libdir"; then 2456357bfbb2Smrg # Link the convenience library 2457357bfbb2Smrg if test "$linkmode" = lib; then 2458357bfbb2Smrg deplibs="$dir/$old_library $deplibs" 2459357bfbb2Smrg elif test "$linkmode,$pass" = "prog,link"; then 2460357bfbb2Smrg compile_deplibs="$dir/$old_library $compile_deplibs" 2461357bfbb2Smrg finalize_deplibs="$dir/$old_library $finalize_deplibs" 2462357bfbb2Smrg else 2463357bfbb2Smrg deplibs="$lib $deplibs" # used for prog,scan pass 2464357bfbb2Smrg fi 2465357bfbb2Smrg continue 2466357bfbb2Smrg fi 2467357bfbb2Smrg 2468357bfbb2Smrg 2469357bfbb2Smrg if test "$linkmode" = prog && test "$pass" != link; then 2470357bfbb2Smrg newlib_search_path="$newlib_search_path $ladir" 2471357bfbb2Smrg deplibs="$lib $deplibs" 2472357bfbb2Smrg 2473357bfbb2Smrg linkalldeplibs=no 2474357bfbb2Smrg if test "$link_all_deplibs" != no || test -z "$library_names" || 2475357bfbb2Smrg test "$build_libtool_libs" = no; then 2476357bfbb2Smrg linkalldeplibs=yes 2477357bfbb2Smrg fi 2478357bfbb2Smrg 2479357bfbb2Smrg tmp_libs= 2480357bfbb2Smrg for deplib in $dependency_libs; do 2481357bfbb2Smrg case $deplib in 2482357bfbb2Smrg -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test 2483357bfbb2Smrg esac 2484357bfbb2Smrg # Need to link against all dependency_libs? 2485357bfbb2Smrg if test "$linkalldeplibs" = yes; then 2486357bfbb2Smrg deplibs="$deplib $deplibs" 2487357bfbb2Smrg else 2488357bfbb2Smrg # Need to hardcode shared library paths 2489357bfbb2Smrg # or/and link against static libraries 2490357bfbb2Smrg newdependency_libs="$deplib $newdependency_libs" 2491357bfbb2Smrg fi 2492357bfbb2Smrg if test "X$duplicate_deps" = "Xyes" ; then 2493357bfbb2Smrg case "$tmp_libs " in 2494357bfbb2Smrg *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 2495357bfbb2Smrg esac 2496357bfbb2Smrg fi 2497357bfbb2Smrg tmp_libs="$tmp_libs $deplib" 2498357bfbb2Smrg done # for deplib 2499357bfbb2Smrg continue 2500357bfbb2Smrg fi # $linkmode = prog... 2501357bfbb2Smrg 2502357bfbb2Smrg if test "$linkmode,$pass" = "prog,link"; then 2503357bfbb2Smrg if test -n "$library_names" && 2504357bfbb2Smrg { test "$prefer_static_libs" = no || test -z "$old_library"; }; then 2505357bfbb2Smrg # We need to hardcode the library path 2506357bfbb2Smrg if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then 2507357bfbb2Smrg # Make sure the rpath contains only unique directories. 2508357bfbb2Smrg case "$temp_rpath " in 2509357bfbb2Smrg *" $dir "*) ;; 2510357bfbb2Smrg *" $absdir "*) ;; 2511357bfbb2Smrg *) temp_rpath="$temp_rpath $absdir" ;; 2512357bfbb2Smrg esac 2513357bfbb2Smrg fi 2514357bfbb2Smrg 2515357bfbb2Smrg # Hardcode the library path. 2516357bfbb2Smrg # Skip directories that are in the system default run-time 2517357bfbb2Smrg # search path. 2518357bfbb2Smrg case " $sys_lib_dlsearch_path " in 2519357bfbb2Smrg *" $absdir "*) ;; 2520357bfbb2Smrg *) 2521357bfbb2Smrg case "$compile_rpath " in 2522357bfbb2Smrg *" $absdir "*) ;; 2523357bfbb2Smrg *) compile_rpath="$compile_rpath $absdir" 2524357bfbb2Smrg esac 2525357bfbb2Smrg ;; 2526357bfbb2Smrg esac 2527357bfbb2Smrg case " $sys_lib_dlsearch_path " in 2528357bfbb2Smrg *" $libdir "*) ;; 2529357bfbb2Smrg *) 2530357bfbb2Smrg case "$finalize_rpath " in 2531357bfbb2Smrg *" $libdir "*) ;; 2532357bfbb2Smrg *) finalize_rpath="$finalize_rpath $libdir" 2533357bfbb2Smrg esac 2534357bfbb2Smrg ;; 2535357bfbb2Smrg esac 2536357bfbb2Smrg fi # $linkmode,$pass = prog,link... 2537357bfbb2Smrg 2538357bfbb2Smrg if test "$alldeplibs" = yes && 2539357bfbb2Smrg { test "$deplibs_check_method" = pass_all || 2540357bfbb2Smrg { test "$build_libtool_libs" = yes && 2541357bfbb2Smrg test -n "$library_names"; }; }; then 2542357bfbb2Smrg # We only need to search for static libraries 2543357bfbb2Smrg continue 2544357bfbb2Smrg fi 2545357bfbb2Smrg fi 2546357bfbb2Smrg 2547357bfbb2Smrg link_static=no # Whether the deplib will be linked statically 2548357bfbb2Smrg use_static_libs=$prefer_static_libs 2549357bfbb2Smrg if test "$use_static_libs" = built && test "$installed" = yes ; then 2550357bfbb2Smrg use_static_libs=no 2551357bfbb2Smrg fi 2552357bfbb2Smrg if test -n "$library_names" && 2553357bfbb2Smrg { test "$use_static_libs" = no || test -z "$old_library"; }; then 2554357bfbb2Smrg if test "$installed" = no; then 2555357bfbb2Smrg notinst_deplibs="$notinst_deplibs $lib" 2556357bfbb2Smrg test -z "$DESTDIR" && need_relink=yes 2557357bfbb2Smrg fi 2558357bfbb2Smrg # This is a shared library 2559357bfbb2Smrg 2560357bfbb2Smrg # Warn about portability, can't link against -module's on 2561357bfbb2Smrg # some systems (darwin) 2562357bfbb2Smrg if test "$shouldnotlink" = yes && test "$pass" = link ; then 2563357bfbb2Smrg $echo 2564357bfbb2Smrg if test "$linkmode" = prog; then 2565357bfbb2Smrg $echo "*** Warning: Linking the executable $output against the loadable module" 2566357bfbb2Smrg else 2567357bfbb2Smrg $echo "*** Warning: Linking the shared library $output against the loadable module" 2568357bfbb2Smrg fi 2569357bfbb2Smrg $echo "*** $linklib is not portable!" 2570357bfbb2Smrg fi 2571357bfbb2Smrg if test "$linkmode" = lib && 2572357bfbb2Smrg test "$hardcode_into_libs" = yes; then 2573357bfbb2Smrg # Hardcode the library path. 2574357bfbb2Smrg # Skip directories that are in the system default run-time 2575357bfbb2Smrg # search path. 2576357bfbb2Smrg case " $sys_lib_dlsearch_path " in 2577357bfbb2Smrg *" $absdir "*) ;; 2578357bfbb2Smrg *) 2579357bfbb2Smrg case "$compile_rpath " in 2580357bfbb2Smrg *" $absdir "*) ;; 2581357bfbb2Smrg *) compile_rpath="$compile_rpath $absdir" 2582357bfbb2Smrg esac 2583357bfbb2Smrg ;; 2584357bfbb2Smrg esac 2585357bfbb2Smrg case " $sys_lib_dlsearch_path " in 2586357bfbb2Smrg *" $libdir "*) ;; 2587357bfbb2Smrg *) 2588357bfbb2Smrg case "$finalize_rpath " in 2589357bfbb2Smrg *" $libdir "*) ;; 2590357bfbb2Smrg *) finalize_rpath="$finalize_rpath $libdir" 2591357bfbb2Smrg esac 2592357bfbb2Smrg ;; 2593357bfbb2Smrg esac 2594357bfbb2Smrg fi 2595357bfbb2Smrg 2596357bfbb2Smrg if test -n "$old_archive_from_expsyms_cmds"; then 2597357bfbb2Smrg # figure out the soname 2598357bfbb2Smrg set dummy $library_names 2599357bfbb2Smrg realname="$2" 2600357bfbb2Smrg shift; shift 2601357bfbb2Smrg libname=`eval \\$echo \"$libname_spec\"` 2602357bfbb2Smrg # use dlname if we got it. it's perfectly good, no? 2603357bfbb2Smrg if test -n "$dlname"; then 2604357bfbb2Smrg soname="$dlname" 2605357bfbb2Smrg elif test -n "$soname_spec"; then 2606357bfbb2Smrg # bleh windows 2607357bfbb2Smrg case $host in 2608357bfbb2Smrg *cygwin* | mingw*) 2609357bfbb2Smrg major=`expr $current - $age` 2610357bfbb2Smrg versuffix="-$major" 2611357bfbb2Smrg ;; 2612357bfbb2Smrg esac 2613357bfbb2Smrg eval soname=\"$soname_spec\" 2614357bfbb2Smrg else 2615357bfbb2Smrg soname="$realname" 2616357bfbb2Smrg fi 2617357bfbb2Smrg 2618357bfbb2Smrg # Make a new name for the extract_expsyms_cmds to use 2619357bfbb2Smrg soroot="$soname" 2620357bfbb2Smrg soname=`$echo $soroot | ${SED} -e 's/^.*\///'` 2621357bfbb2Smrg newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a" 2622357bfbb2Smrg 2623357bfbb2Smrg # If the library has no export list, then create one now 2624357bfbb2Smrg if test -f "$output_objdir/$soname-def"; then : 2625357bfbb2Smrg else 2626357bfbb2Smrg $show "extracting exported symbol list from \`$soname'" 2627357bfbb2Smrg save_ifs="$IFS"; IFS='~' 2628357bfbb2Smrg cmds=$extract_expsyms_cmds 2629357bfbb2Smrg for cmd in $cmds; do 2630357bfbb2Smrg IFS="$save_ifs" 2631357bfbb2Smrg eval cmd=\"$cmd\" 2632357bfbb2Smrg $show "$cmd" 2633357bfbb2Smrg $run eval "$cmd" || exit $? 2634357bfbb2Smrg done 2635357bfbb2Smrg IFS="$save_ifs" 2636357bfbb2Smrg fi 2637357bfbb2Smrg 2638357bfbb2Smrg # Create $newlib 2639357bfbb2Smrg if test -f "$output_objdir/$newlib"; then :; else 2640357bfbb2Smrg $show "generating import library for \`$soname'" 2641357bfbb2Smrg save_ifs="$IFS"; IFS='~' 2642357bfbb2Smrg cmds=$old_archive_from_expsyms_cmds 2643357bfbb2Smrg for cmd in $cmds; do 2644357bfbb2Smrg IFS="$save_ifs" 2645357bfbb2Smrg eval cmd=\"$cmd\" 2646357bfbb2Smrg $show "$cmd" 2647357bfbb2Smrg $run eval "$cmd" || exit $? 2648357bfbb2Smrg done 2649357bfbb2Smrg IFS="$save_ifs" 2650357bfbb2Smrg fi 2651357bfbb2Smrg # make sure the library variables are pointing to the new library 2652357bfbb2Smrg dir=$output_objdir 2653357bfbb2Smrg linklib=$newlib 2654357bfbb2Smrg fi # test -n "$old_archive_from_expsyms_cmds" 2655357bfbb2Smrg 2656357bfbb2Smrg if test "$linkmode" = prog || test "$mode" != relink; then 2657357bfbb2Smrg add_shlibpath= 2658357bfbb2Smrg add_dir= 2659357bfbb2Smrg add= 2660357bfbb2Smrg lib_linked=yes 2661357bfbb2Smrg case $hardcode_action in 2662357bfbb2Smrg immediate | unsupported) 2663357bfbb2Smrg if test "$hardcode_direct" = no; then 2664357bfbb2Smrg add="$dir/$linklib" 2665357bfbb2Smrg case $host in 2666357bfbb2Smrg *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; 2667357bfbb2Smrg *-*-sysv4*uw2*) add_dir="-L$dir" ;; 2668357bfbb2Smrg *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ 2669357bfbb2Smrg *-*-unixware7*) add_dir="-L$dir" ;; 2670357bfbb2Smrg *-*-darwin* ) 2671357bfbb2Smrg # if the lib is a module then we can not link against 2672357bfbb2Smrg # it, someone is ignoring the new warnings I added 2673357bfbb2Smrg if /usr/bin/file -L $add 2> /dev/null | 2674357bfbb2Smrg $EGREP ": [^:]* bundle" >/dev/null ; then 2675357bfbb2Smrg $echo "** Warning, lib $linklib is a module, not a shared library" 2676357bfbb2Smrg if test -z "$old_library" ; then 2677357bfbb2Smrg $echo 2678357bfbb2Smrg $echo "** And there doesn't seem to be a static archive available" 2679357bfbb2Smrg $echo "** The link will probably fail, sorry" 2680357bfbb2Smrg else 2681357bfbb2Smrg add="$dir/$old_library" 2682357bfbb2Smrg fi 2683357bfbb2Smrg fi 2684357bfbb2Smrg esac 2685357bfbb2Smrg elif test "$hardcode_minus_L" = no; then 2686357bfbb2Smrg case $host in 2687357bfbb2Smrg *-*-sunos*) add_shlibpath="$dir" ;; 2688357bfbb2Smrg esac 2689357bfbb2Smrg add_dir="-L$dir" 2690357bfbb2Smrg add="-l$name" 2691357bfbb2Smrg elif test "$hardcode_shlibpath_var" = no; then 2692357bfbb2Smrg add_shlibpath="$dir" 2693357bfbb2Smrg add="-l$name" 2694357bfbb2Smrg else 2695357bfbb2Smrg lib_linked=no 2696357bfbb2Smrg fi 2697357bfbb2Smrg ;; 2698357bfbb2Smrg relink) 2699357bfbb2Smrg if test "$hardcode_direct" = yes; then 2700357bfbb2Smrg add="$dir/$linklib" 2701357bfbb2Smrg elif test "$hardcode_minus_L" = yes; then 2702357bfbb2Smrg add_dir="-L$dir" 2703357bfbb2Smrg # Try looking first in the location we're being installed to. 2704357bfbb2Smrg if test -n "$inst_prefix_dir"; then 2705357bfbb2Smrg case $libdir in 2706357bfbb2Smrg [\\/]*) 2707357bfbb2Smrg add_dir="$add_dir -L$inst_prefix_dir$libdir" 2708357bfbb2Smrg ;; 2709357bfbb2Smrg esac 2710357bfbb2Smrg fi 2711357bfbb2Smrg add="-l$name" 2712357bfbb2Smrg elif test "$hardcode_shlibpath_var" = yes; then 2713357bfbb2Smrg add_shlibpath="$dir" 2714357bfbb2Smrg add="-l$name" 2715357bfbb2Smrg else 2716357bfbb2Smrg lib_linked=no 2717357bfbb2Smrg fi 2718357bfbb2Smrg ;; 2719357bfbb2Smrg *) lib_linked=no ;; 2720357bfbb2Smrg esac 2721357bfbb2Smrg 2722357bfbb2Smrg if test "$lib_linked" != yes; then 2723357bfbb2Smrg $echo "$modename: configuration error: unsupported hardcode properties" 2724357bfbb2Smrg exit $EXIT_FAILURE 2725357bfbb2Smrg fi 2726357bfbb2Smrg 2727357bfbb2Smrg if test -n "$add_shlibpath"; then 2728357bfbb2Smrg case :$compile_shlibpath: in 2729357bfbb2Smrg *":$add_shlibpath:"*) ;; 2730357bfbb2Smrg *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; 2731357bfbb2Smrg esac 2732357bfbb2Smrg fi 2733357bfbb2Smrg if test "$linkmode" = prog; then 2734357bfbb2Smrg test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" 2735357bfbb2Smrg test -n "$add" && compile_deplibs="$add $compile_deplibs" 2736357bfbb2Smrg else 2737357bfbb2Smrg test -n "$add_dir" && deplibs="$add_dir $deplibs" 2738357bfbb2Smrg test -n "$add" && deplibs="$add $deplibs" 2739357bfbb2Smrg if test "$hardcode_direct" != yes && \ 2740357bfbb2Smrg test "$hardcode_minus_L" != yes && \ 2741357bfbb2Smrg test "$hardcode_shlibpath_var" = yes; then 2742357bfbb2Smrg case :$finalize_shlibpath: in 2743357bfbb2Smrg *":$libdir:"*) ;; 2744357bfbb2Smrg *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; 2745357bfbb2Smrg esac 2746357bfbb2Smrg fi 2747357bfbb2Smrg fi 2748357bfbb2Smrg fi 2749357bfbb2Smrg 2750357bfbb2Smrg if test "$linkmode" = prog || test "$mode" = relink; then 2751357bfbb2Smrg add_shlibpath= 2752357bfbb2Smrg add_dir= 2753357bfbb2Smrg add= 2754357bfbb2Smrg # Finalize command for both is simple: just hardcode it. 2755357bfbb2Smrg if test "$hardcode_direct" = yes && test -f $libdir/$linklib; then 2756357bfbb2Smrg add="$libdir/$linklib" 2757357bfbb2Smrg elif test "$hardcode_minus_L" = yes; then 2758357bfbb2Smrg add_dir="-L$libdir" 2759357bfbb2Smrg add="-l$name" 2760357bfbb2Smrg elif test "$hardcode_shlibpath_var" = yes; then 2761357bfbb2Smrg case :$finalize_shlibpath: in 2762357bfbb2Smrg *":$libdir:"*) ;; 2763357bfbb2Smrg *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; 2764357bfbb2Smrg esac 2765357bfbb2Smrg add="-l$name" 2766357bfbb2Smrg elif test "$hardcode_automatic" = yes; then 2767357bfbb2Smrg if test -n "$inst_prefix_dir" && 2768357bfbb2Smrg test -f "$inst_prefix_dir$libdir/$linklib" ; then 2769357bfbb2Smrg add="$inst_prefix_dir$libdir/$linklib" 2770357bfbb2Smrg else 2771357bfbb2Smrg add="$libdir/$linklib" 2772357bfbb2Smrg fi 2773357bfbb2Smrg else 2774357bfbb2Smrg # We cannot seem to hardcode it, guess we'll fake it. 2775357bfbb2Smrg add_dir="-L$libdir" 2776357bfbb2Smrg # Try looking first in the location we're being installed to. 2777357bfbb2Smrg if test -n "$inst_prefix_dir"; then 2778357bfbb2Smrg case $libdir in 2779357bfbb2Smrg [\\/]*) 2780357bfbb2Smrg add_dir="$add_dir -L$inst_prefix_dir$libdir" 2781357bfbb2Smrg ;; 2782357bfbb2Smrg esac 2783357bfbb2Smrg fi 2784357bfbb2Smrg add="-l$name" 2785357bfbb2Smrg fi 2786357bfbb2Smrg 2787357bfbb2Smrg if test "$linkmode" = prog; then 2788357bfbb2Smrg test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" 2789357bfbb2Smrg test -n "$add" && finalize_deplibs="$add $finalize_deplibs" 2790357bfbb2Smrg else 2791357bfbb2Smrg test -n "$add_dir" && deplibs="$add_dir $deplibs" 2792357bfbb2Smrg test -n "$add" && deplibs="$add $deplibs" 2793357bfbb2Smrg fi 2794357bfbb2Smrg fi 2795357bfbb2Smrg elif test "$linkmode" = prog; then 2796357bfbb2Smrg # Here we assume that one of hardcode_direct or hardcode_minus_L 2797357bfbb2Smrg # is not unsupported. This is valid on all known static and 2798357bfbb2Smrg # shared platforms. 2799357bfbb2Smrg if test "$hardcode_direct" != unsupported; then 2800357bfbb2Smrg test -n "$old_library" && linklib="$old_library" 2801357bfbb2Smrg compile_deplibs="$dir/$linklib $compile_deplibs" 2802357bfbb2Smrg finalize_deplibs="$dir/$linklib $finalize_deplibs" 2803357bfbb2Smrg else 2804357bfbb2Smrg compile_deplibs="-l$name -L$dir $compile_deplibs" 2805357bfbb2Smrg finalize_deplibs="-l$name -L$dir $finalize_deplibs" 2806357bfbb2Smrg fi 2807357bfbb2Smrg elif test "$build_libtool_libs" = yes; then 2808357bfbb2Smrg # Not a shared library 2809357bfbb2Smrg if test "$deplibs_check_method" != pass_all; then 2810357bfbb2Smrg # We're trying link a shared library against a static one 2811357bfbb2Smrg # but the system doesn't support it. 2812357bfbb2Smrg 2813357bfbb2Smrg # Just print a warning and add the library to dependency_libs so 2814357bfbb2Smrg # that the program can be linked against the static library. 2815357bfbb2Smrg $echo 2816357bfbb2Smrg $echo "*** Warning: This system can not link to static lib archive $lib." 2817357bfbb2Smrg $echo "*** I have the capability to make that library automatically link in when" 2818357bfbb2Smrg $echo "*** you link to this library. But I can only do this if you have a" 2819357bfbb2Smrg $echo "*** shared version of the library, which you do not appear to have." 2820357bfbb2Smrg if test "$module" = yes; then 2821357bfbb2Smrg $echo "*** But as you try to build a module library, libtool will still create " 2822357bfbb2Smrg $echo "*** a static module, that should work as long as the dlopening application" 2823357bfbb2Smrg $echo "*** is linked with the -dlopen flag to resolve symbols at runtime." 2824357bfbb2Smrg if test -z "$global_symbol_pipe"; then 2825357bfbb2Smrg $echo 2826357bfbb2Smrg $echo "*** However, this would only work if libtool was able to extract symbol" 2827357bfbb2Smrg $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" 2828357bfbb2Smrg $echo "*** not find such a program. So, this module is probably useless." 2829357bfbb2Smrg $echo "*** \`nm' from GNU binutils and a full rebuild may help." 2830357bfbb2Smrg fi 2831357bfbb2Smrg if test "$build_old_libs" = no; then 2832357bfbb2Smrg build_libtool_libs=module 2833357bfbb2Smrg build_old_libs=yes 2834357bfbb2Smrg else 2835357bfbb2Smrg build_libtool_libs=no 2836357bfbb2Smrg fi 2837357bfbb2Smrg fi 2838357bfbb2Smrg else 2839357bfbb2Smrg deplibs="$dir/$old_library $deplibs" 2840357bfbb2Smrg link_static=yes 2841357bfbb2Smrg fi 2842357bfbb2Smrg fi # link shared/static library? 2843357bfbb2Smrg 2844357bfbb2Smrg if test "$linkmode" = lib; then 2845357bfbb2Smrg if test -n "$dependency_libs" && 2846357bfbb2Smrg { test "$hardcode_into_libs" != yes || 2847357bfbb2Smrg test "$build_old_libs" = yes || 2848357bfbb2Smrg test "$link_static" = yes; }; then 2849357bfbb2Smrg # Extract -R from dependency_libs 2850357bfbb2Smrg temp_deplibs= 2851357bfbb2Smrg for libdir in $dependency_libs; do 2852357bfbb2Smrg case $libdir in 2853357bfbb2Smrg -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'` 2854357bfbb2Smrg case " $xrpath " in 2855357bfbb2Smrg *" $temp_xrpath "*) ;; 2856357bfbb2Smrg *) xrpath="$xrpath $temp_xrpath";; 2857357bfbb2Smrg esac;; 2858357bfbb2Smrg *) temp_deplibs="$temp_deplibs $libdir";; 2859357bfbb2Smrg esac 2860357bfbb2Smrg done 2861357bfbb2Smrg dependency_libs="$temp_deplibs" 2862357bfbb2Smrg fi 2863357bfbb2Smrg 2864357bfbb2Smrg newlib_search_path="$newlib_search_path $absdir" 2865357bfbb2Smrg # Link against this library 2866357bfbb2Smrg test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" 2867357bfbb2Smrg # ... and its dependency_libs 2868357bfbb2Smrg tmp_libs= 2869357bfbb2Smrg for deplib in $dependency_libs; do 2870357bfbb2Smrg newdependency_libs="$deplib $newdependency_libs" 2871357bfbb2Smrg if test "X$duplicate_deps" = "Xyes" ; then 2872357bfbb2Smrg case "$tmp_libs " in 2873357bfbb2Smrg *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 2874357bfbb2Smrg esac 2875357bfbb2Smrg fi 2876357bfbb2Smrg tmp_libs="$tmp_libs $deplib" 2877357bfbb2Smrg done 2878357bfbb2Smrg 2879357bfbb2Smrg if test "$link_all_deplibs" != no; then 2880357bfbb2Smrg # Add the search paths of all dependency libraries 2881357bfbb2Smrg for deplib in $dependency_libs; do 2882357bfbb2Smrg case $deplib in 2883357bfbb2Smrg -L*) path="$deplib" ;; 2884357bfbb2Smrg *.la) 2885357bfbb2Smrg dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'` 2886357bfbb2Smrg test "X$dir" = "X$deplib" && dir="." 2887357bfbb2Smrg # We need an absolute path. 2888357bfbb2Smrg case $dir in 2889357bfbb2Smrg [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; 2890357bfbb2Smrg *) 2891357bfbb2Smrg absdir=`cd "$dir" && pwd` 2892357bfbb2Smrg if test -z "$absdir"; then 2893357bfbb2Smrg $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 2894357bfbb2Smrg absdir="$dir" 2895357bfbb2Smrg fi 2896357bfbb2Smrg ;; 2897357bfbb2Smrg esac 2898357bfbb2Smrg if grep "^installed=no" $deplib > /dev/null; then 2899357bfbb2Smrg path="$absdir/$objdir" 2900357bfbb2Smrg else 2901357bfbb2Smrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 2902357bfbb2Smrg if test -z "$libdir"; then 2903357bfbb2Smrg $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 2904357bfbb2Smrg exit $EXIT_FAILURE 2905357bfbb2Smrg fi 2906357bfbb2Smrg if test "$absdir" != "$libdir"; then 2907357bfbb2Smrg $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2 2908357bfbb2Smrg fi 2909357bfbb2Smrg path="$absdir" 2910357bfbb2Smrg fi 2911357bfbb2Smrg depdepl= 2912357bfbb2Smrg case $host in 2913357bfbb2Smrg *-*-darwin*) 2914357bfbb2Smrg # we do not want to link against static libs, 2915357bfbb2Smrg # but need to link against shared 2916357bfbb2Smrg eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` 2917357bfbb2Smrg if test -n "$deplibrary_names" ; then 2918357bfbb2Smrg for tmp in $deplibrary_names ; do 2919357bfbb2Smrg depdepl=$tmp 2920357bfbb2Smrg done 2921357bfbb2Smrg if test -f "$path/$depdepl" ; then 2922357bfbb2Smrg depdepl="$path/$depdepl" 2923357bfbb2Smrg fi 2924357bfbb2Smrg # do not add paths which are already there 2925357bfbb2Smrg case " $newlib_search_path " in 2926357bfbb2Smrg *" $path "*) ;; 2927357bfbb2Smrg *) newlib_search_path="$newlib_search_path $path";; 2928357bfbb2Smrg esac 2929357bfbb2Smrg fi 2930357bfbb2Smrg path="" 2931357bfbb2Smrg ;; 2932357bfbb2Smrg *) 2933357bfbb2Smrg path="-L$path" 2934357bfbb2Smrg ;; 2935357bfbb2Smrg esac 2936357bfbb2Smrg ;; 2937357bfbb2Smrg -l*) 2938357bfbb2Smrg case $host in 2939357bfbb2Smrg *-*-darwin*) 2940357bfbb2Smrg # Again, we only want to link against shared libraries 2941357bfbb2Smrg eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"` 2942357bfbb2Smrg for tmp in $newlib_search_path ; do 2943357bfbb2Smrg if test -f "$tmp/lib$tmp_libs.dylib" ; then 2944357bfbb2Smrg eval depdepl="$tmp/lib$tmp_libs.dylib" 2945357bfbb2Smrg break 2946357bfbb2Smrg fi 2947357bfbb2Smrg done 2948357bfbb2Smrg path="" 2949357bfbb2Smrg ;; 2950357bfbb2Smrg *) continue ;; 2951357bfbb2Smrg esac 2952357bfbb2Smrg ;; 2953357bfbb2Smrg *) continue ;; 2954357bfbb2Smrg esac 2955357bfbb2Smrg case " $deplibs " in 2956357bfbb2Smrg *" $path "*) ;; 2957357bfbb2Smrg *) deplibs="$path $deplibs" ;; 2958357bfbb2Smrg esac 2959357bfbb2Smrg case " $deplibs " in 2960357bfbb2Smrg *" $depdepl "*) ;; 2961357bfbb2Smrg *) deplibs="$depdepl $deplibs" ;; 2962357bfbb2Smrg esac 2963357bfbb2Smrg done 2964357bfbb2Smrg fi # link_all_deplibs != no 2965357bfbb2Smrg fi # linkmode = lib 2966357bfbb2Smrg done # for deplib in $libs 2967357bfbb2Smrg dependency_libs="$newdependency_libs" 2968357bfbb2Smrg if test "$pass" = dlpreopen; then 2969357bfbb2Smrg # Link the dlpreopened libraries before other libraries 2970357bfbb2Smrg for deplib in $save_deplibs; do 2971357bfbb2Smrg deplibs="$deplib $deplibs" 2972357bfbb2Smrg done 2973357bfbb2Smrg fi 2974357bfbb2Smrg if test "$pass" != dlopen; then 2975357bfbb2Smrg if test "$pass" != conv; then 2976357bfbb2Smrg # Make sure lib_search_path contains only unique directories. 2977357bfbb2Smrg lib_search_path= 2978357bfbb2Smrg for dir in $newlib_search_path; do 2979357bfbb2Smrg case "$lib_search_path " in 2980357bfbb2Smrg *" $dir "*) ;; 2981357bfbb2Smrg *) lib_search_path="$lib_search_path $dir" ;; 2982357bfbb2Smrg esac 2983357bfbb2Smrg done 2984357bfbb2Smrg newlib_search_path= 2985357bfbb2Smrg fi 2986357bfbb2Smrg 2987357bfbb2Smrg if test "$linkmode,$pass" != "prog,link"; then 2988357bfbb2Smrg vars="deplibs" 2989357bfbb2Smrg else 2990357bfbb2Smrg vars="compile_deplibs finalize_deplibs" 2991357bfbb2Smrg fi 2992357bfbb2Smrg for var in $vars dependency_libs; do 2993357bfbb2Smrg # Add libraries to $var in reverse order 2994357bfbb2Smrg eval tmp_libs=\"\$$var\" 2995357bfbb2Smrg new_libs= 2996357bfbb2Smrg for deplib in $tmp_libs; do 2997357bfbb2Smrg # FIXME: Pedantically, this is the right thing to do, so 2998357bfbb2Smrg # that some nasty dependency loop isn't accidentally 2999357bfbb2Smrg # broken: 3000357bfbb2Smrg #new_libs="$deplib $new_libs" 3001357bfbb2Smrg # Pragmatically, this seems to cause very few problems in 3002357bfbb2Smrg # practice: 3003357bfbb2Smrg case $deplib in 3004357bfbb2Smrg -L*) new_libs="$deplib $new_libs" ;; 3005357bfbb2Smrg -R*) ;; 3006357bfbb2Smrg *) 3007357bfbb2Smrg # And here is the reason: when a library appears more 3008357bfbb2Smrg # than once as an explicit dependence of a library, or 3009357bfbb2Smrg # is implicitly linked in more than once by the 3010357bfbb2Smrg # compiler, it is considered special, and multiple 3011357bfbb2Smrg # occurrences thereof are not removed. Compare this 3012357bfbb2Smrg # with having the same library being listed as a 3013357bfbb2Smrg # dependency of multiple other libraries: in this case, 3014357bfbb2Smrg # we know (pedantically, we assume) the library does not 3015357bfbb2Smrg # need to be listed more than once, so we keep only the 3016357bfbb2Smrg # last copy. This is not always right, but it is rare 3017357bfbb2Smrg # enough that we require users that really mean to play 3018357bfbb2Smrg # such unportable linking tricks to link the library 3019357bfbb2Smrg # using -Wl,-lname, so that libtool does not consider it 3020357bfbb2Smrg # for duplicate removal. 3021357bfbb2Smrg case " $specialdeplibs " in 3022357bfbb2Smrg *" $deplib "*) new_libs="$deplib $new_libs" ;; 3023357bfbb2Smrg *) 3024357bfbb2Smrg case " $new_libs " in 3025357bfbb2Smrg *" $deplib "*) ;; 3026357bfbb2Smrg *) new_libs="$deplib $new_libs" ;; 3027357bfbb2Smrg esac 3028357bfbb2Smrg ;; 3029357bfbb2Smrg esac 3030357bfbb2Smrg ;; 3031357bfbb2Smrg esac 3032357bfbb2Smrg done 3033357bfbb2Smrg tmp_libs= 3034357bfbb2Smrg for deplib in $new_libs; do 3035357bfbb2Smrg case $deplib in 3036357bfbb2Smrg -L*) 3037357bfbb2Smrg case " $tmp_libs " in 3038357bfbb2Smrg *" $deplib "*) ;; 3039357bfbb2Smrg *) tmp_libs="$tmp_libs $deplib" ;; 3040357bfbb2Smrg esac 3041357bfbb2Smrg ;; 3042357bfbb2Smrg *) tmp_libs="$tmp_libs $deplib" ;; 3043357bfbb2Smrg esac 3044357bfbb2Smrg done 3045357bfbb2Smrg eval $var=\"$tmp_libs\" 3046357bfbb2Smrg done # for var 3047357bfbb2Smrg fi 3048357bfbb2Smrg # Last step: remove runtime libs from dependency_libs 3049357bfbb2Smrg # (they stay in deplibs) 3050357bfbb2Smrg tmp_libs= 3051357bfbb2Smrg for i in $dependency_libs ; do 3052357bfbb2Smrg case " $predeps $postdeps $compiler_lib_search_path " in 3053357bfbb2Smrg *" $i "*) 3054357bfbb2Smrg i="" 3055357bfbb2Smrg ;; 3056357bfbb2Smrg esac 3057357bfbb2Smrg if test -n "$i" ; then 3058357bfbb2Smrg tmp_libs="$tmp_libs $i" 3059357bfbb2Smrg fi 3060357bfbb2Smrg done 3061357bfbb2Smrg dependency_libs=$tmp_libs 3062357bfbb2Smrg done # for pass 3063357bfbb2Smrg if test "$linkmode" = prog; then 3064357bfbb2Smrg dlfiles="$newdlfiles" 3065357bfbb2Smrg dlprefiles="$newdlprefiles" 3066357bfbb2Smrg fi 3067357bfbb2Smrg 3068357bfbb2Smrg case $linkmode in 3069357bfbb2Smrg oldlib) 3070357bfbb2Smrg if test -n "$deplibs"; then 3071357bfbb2Smrg $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 3072357bfbb2Smrg fi 3073357bfbb2Smrg 3074357bfbb2Smrg if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 3075357bfbb2Smrg $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2 3076357bfbb2Smrg fi 3077357bfbb2Smrg 3078357bfbb2Smrg if test -n "$rpath"; then 3079357bfbb2Smrg $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2 3080357bfbb2Smrg fi 3081357bfbb2Smrg 3082357bfbb2Smrg if test -n "$xrpath"; then 3083357bfbb2Smrg $echo "$modename: warning: \`-R' is ignored for archives" 1>&2 3084357bfbb2Smrg fi 3085357bfbb2Smrg 3086357bfbb2Smrg if test -n "$vinfo"; then 3087357bfbb2Smrg $echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2 3088357bfbb2Smrg fi 3089357bfbb2Smrg 3090357bfbb2Smrg if test -n "$release"; then 3091357bfbb2Smrg $echo "$modename: warning: \`-release' is ignored for archives" 1>&2 3092357bfbb2Smrg fi 3093357bfbb2Smrg 3094357bfbb2Smrg if test -n "$export_symbols" || test -n "$export_symbols_regex"; then 3095357bfbb2Smrg $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2 3096357bfbb2Smrg fi 3097357bfbb2Smrg 3098357bfbb2Smrg # Now set the variables for building old libraries. 3099357bfbb2Smrg build_libtool_libs=no 3100357bfbb2Smrg oldlibs="$output" 3101357bfbb2Smrg objs="$objs$old_deplibs" 3102357bfbb2Smrg ;; 3103357bfbb2Smrg 3104357bfbb2Smrg lib) 3105357bfbb2Smrg # Make sure we only generate libraries of the form `libNAME.la'. 3106357bfbb2Smrg case $outputname in 3107357bfbb2Smrg lib*) 3108357bfbb2Smrg name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` 3109357bfbb2Smrg eval shared_ext=\"$shrext_cmds\" 3110357bfbb2Smrg eval libname=\"$libname_spec\" 3111357bfbb2Smrg ;; 3112357bfbb2Smrg *) 3113357bfbb2Smrg if test "$module" = no; then 3114357bfbb2Smrg $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2 3115357bfbb2Smrg $echo "$help" 1>&2 3116357bfbb2Smrg exit $EXIT_FAILURE 3117357bfbb2Smrg fi 3118357bfbb2Smrg if test "$need_lib_prefix" != no; then 3119357bfbb2Smrg # Add the "lib" prefix for modules if required 3120357bfbb2Smrg name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` 3121357bfbb2Smrg eval shared_ext=\"$shrext_cmds\" 3122357bfbb2Smrg eval libname=\"$libname_spec\" 3123357bfbb2Smrg else 3124357bfbb2Smrg libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` 3125357bfbb2Smrg fi 3126357bfbb2Smrg ;; 3127357bfbb2Smrg esac 3128357bfbb2Smrg 3129357bfbb2Smrg if test -n "$objs"; then 3130357bfbb2Smrg if test "$deplibs_check_method" != pass_all; then 3131357bfbb2Smrg $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1 3132357bfbb2Smrg exit $EXIT_FAILURE 3133357bfbb2Smrg else 3134357bfbb2Smrg $echo 3135357bfbb2Smrg $echo "*** Warning: Linking the shared library $output against the non-libtool" 3136357bfbb2Smrg $echo "*** objects $objs is not portable!" 3137357bfbb2Smrg libobjs="$libobjs $objs" 3138357bfbb2Smrg fi 3139357bfbb2Smrg fi 3140357bfbb2Smrg 3141357bfbb2Smrg if test "$dlself" != no; then 3142357bfbb2Smrg $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2 3143357bfbb2Smrg fi 3144357bfbb2Smrg 3145357bfbb2Smrg set dummy $rpath 3146357bfbb2Smrg if test "$#" -gt 2; then 3147357bfbb2Smrg $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2 3148357bfbb2Smrg fi 3149357bfbb2Smrg install_libdir="$2" 3150357bfbb2Smrg 3151357bfbb2Smrg oldlibs= 3152357bfbb2Smrg if test -z "$rpath"; then 3153357bfbb2Smrg if test "$build_libtool_libs" = yes; then 3154357bfbb2Smrg # Building a libtool convenience library. 3155357bfbb2Smrg # Some compilers have problems with a `.al' extension so 3156357bfbb2Smrg # convenience libraries should have the same extension an 3157357bfbb2Smrg # archive normally would. 3158357bfbb2Smrg oldlibs="$output_objdir/$libname.$libext $oldlibs" 3159357bfbb2Smrg build_libtool_libs=convenience 3160357bfbb2Smrg build_old_libs=yes 3161357bfbb2Smrg fi 3162357bfbb2Smrg 3163357bfbb2Smrg if test -n "$vinfo"; then 3164357bfbb2Smrg $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2 3165357bfbb2Smrg fi 3166357bfbb2Smrg 3167357bfbb2Smrg if test -n "$release"; then 3168357bfbb2Smrg $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2 3169357bfbb2Smrg fi 3170357bfbb2Smrg else 3171357bfbb2Smrg 3172357bfbb2Smrg # Parse the version information argument. 3173357bfbb2Smrg save_ifs="$IFS"; IFS=':' 3174357bfbb2Smrg set dummy $vinfo 0 0 0 3175357bfbb2Smrg IFS="$save_ifs" 3176357bfbb2Smrg 3177357bfbb2Smrg if test -n "$8"; then 3178357bfbb2Smrg $echo "$modename: too many parameters to \`-version-info'" 1>&2 3179357bfbb2Smrg $echo "$help" 1>&2 3180357bfbb2Smrg exit $EXIT_FAILURE 3181357bfbb2Smrg fi 3182357bfbb2Smrg 3183357bfbb2Smrg # convert absolute version numbers to libtool ages 3184357bfbb2Smrg # this retains compatibility with .la files and attempts 3185357bfbb2Smrg # to make the code below a bit more comprehensible 3186357bfbb2Smrg 3187357bfbb2Smrg case $vinfo_number in 3188357bfbb2Smrg yes) 3189357bfbb2Smrg number_major="$2" 3190357bfbb2Smrg number_minor="$3" 3191357bfbb2Smrg number_revision="$4" 3192357bfbb2Smrg # 3193357bfbb2Smrg # There are really only two kinds -- those that 3194357bfbb2Smrg # use the current revision as the major version 3195357bfbb2Smrg # and those that subtract age and use age as 3196357bfbb2Smrg # a minor version. But, then there is irix 3197357bfbb2Smrg # which has an extra 1 added just for fun 3198357bfbb2Smrg # 3199357bfbb2Smrg case $version_type in 3200357bfbb2Smrg darwin|linux|osf|windows) 3201357bfbb2Smrg current=`expr $number_major + $number_minor` 3202357bfbb2Smrg age="$number_minor" 3203357bfbb2Smrg revision="$number_revision" 3204357bfbb2Smrg ;; 3205357bfbb2Smrg freebsd-aout|freebsd-elf|sunos) 3206357bfbb2Smrg current="$number_major" 3207357bfbb2Smrg revision="$number_minor" 3208357bfbb2Smrg age="0" 3209357bfbb2Smrg ;; 3210357bfbb2Smrg irix|nonstopux) 3211357bfbb2Smrg current=`expr $number_major + $number_minor - 1` 3212357bfbb2Smrg age="$number_minor" 3213357bfbb2Smrg revision="$number_minor" 3214357bfbb2Smrg ;; 3215357bfbb2Smrg esac 3216357bfbb2Smrg ;; 3217357bfbb2Smrg no) 3218357bfbb2Smrg current="$2" 3219357bfbb2Smrg revision="$3" 3220357bfbb2Smrg age="$4" 3221357bfbb2Smrg ;; 3222357bfbb2Smrg esac 3223357bfbb2Smrg 3224357bfbb2Smrg # Check that each of the things are valid numbers. 3225357bfbb2Smrg case $current in 3226357bfbb2Smrg 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]) ;; 3227357bfbb2Smrg *) 3228357bfbb2Smrg $echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2 3229357bfbb2Smrg $echo "$modename: \`$vinfo' is not valid version information" 1>&2 3230357bfbb2Smrg exit $EXIT_FAILURE 3231357bfbb2Smrg ;; 3232357bfbb2Smrg esac 3233357bfbb2Smrg 3234357bfbb2Smrg case $revision in 3235357bfbb2Smrg 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]) ;; 3236357bfbb2Smrg *) 3237357bfbb2Smrg $echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2 3238357bfbb2Smrg $echo "$modename: \`$vinfo' is not valid version information" 1>&2 3239357bfbb2Smrg exit $EXIT_FAILURE 3240357bfbb2Smrg ;; 3241357bfbb2Smrg esac 3242357bfbb2Smrg 3243357bfbb2Smrg case $age in 3244357bfbb2Smrg 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]) ;; 3245357bfbb2Smrg *) 3246357bfbb2Smrg $echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2 3247357bfbb2Smrg $echo "$modename: \`$vinfo' is not valid version information" 1>&2 3248357bfbb2Smrg exit $EXIT_FAILURE 3249357bfbb2Smrg ;; 3250357bfbb2Smrg esac 3251357bfbb2Smrg 3252357bfbb2Smrg if test "$age" -gt "$current"; then 3253357bfbb2Smrg $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 3254357bfbb2Smrg $echo "$modename: \`$vinfo' is not valid version information" 1>&2 3255357bfbb2Smrg exit $EXIT_FAILURE 3256357bfbb2Smrg fi 3257357bfbb2Smrg 3258357bfbb2Smrg # Calculate the version variables. 3259357bfbb2Smrg major= 3260357bfbb2Smrg versuffix= 3261357bfbb2Smrg verstring= 3262357bfbb2Smrg case $version_type in 3263357bfbb2Smrg none) ;; 3264357bfbb2Smrg 3265357bfbb2Smrg darwin) 3266357bfbb2Smrg # Like Linux, but with the current version available in 3267357bfbb2Smrg # verstring for coding it into the library header 3268357bfbb2Smrg major=.`expr $current - $age` 3269357bfbb2Smrg versuffix="$major.$age.$revision" 3270357bfbb2Smrg # Darwin ld doesn't like 0 for these options... 3271357bfbb2Smrg minor_current=`expr $current + 1` 3272357bfbb2Smrg verstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" 3273357bfbb2Smrg ;; 3274357bfbb2Smrg 3275357bfbb2Smrg freebsd-aout) 3276357bfbb2Smrg major=".$current" 3277357bfbb2Smrg versuffix=".$current.$revision"; 3278357bfbb2Smrg ;; 3279357bfbb2Smrg 3280357bfbb2Smrg freebsd-elf) 3281357bfbb2Smrg major=".$current" 3282357bfbb2Smrg versuffix=".$current"; 3283357bfbb2Smrg ;; 3284357bfbb2Smrg 3285357bfbb2Smrg irix | nonstopux) 3286357bfbb2Smrg major=`expr $current - $age + 1` 3287357bfbb2Smrg 3288357bfbb2Smrg case $version_type in 3289357bfbb2Smrg nonstopux) verstring_prefix=nonstopux ;; 3290357bfbb2Smrg *) verstring_prefix=sgi ;; 3291357bfbb2Smrg esac 3292357bfbb2Smrg verstring="$verstring_prefix$major.$revision" 3293357bfbb2Smrg 3294357bfbb2Smrg # Add in all the interfaces that we are compatible with. 3295357bfbb2Smrg loop=$revision 3296357bfbb2Smrg while test "$loop" -ne 0; do 3297357bfbb2Smrg iface=`expr $revision - $loop` 3298357bfbb2Smrg loop=`expr $loop - 1` 3299357bfbb2Smrg verstring="$verstring_prefix$major.$iface:$verstring" 3300357bfbb2Smrg done 3301357bfbb2Smrg 3302357bfbb2Smrg # Before this point, $major must not contain `.'. 3303357bfbb2Smrg major=.$major 3304357bfbb2Smrg versuffix="$major.$revision" 3305357bfbb2Smrg ;; 3306357bfbb2Smrg 3307357bfbb2Smrg linux) 3308357bfbb2Smrg major=.`expr $current - $age` 3309357bfbb2Smrg versuffix="$major.$age.$revision" 3310357bfbb2Smrg ;; 3311357bfbb2Smrg 3312357bfbb2Smrg osf) 3313357bfbb2Smrg major=.`expr $current - $age` 3314357bfbb2Smrg versuffix=".$current.$age.$revision" 3315357bfbb2Smrg verstring="$current.$age.$revision" 3316357bfbb2Smrg 3317357bfbb2Smrg # Add in all the interfaces that we are compatible with. 3318357bfbb2Smrg loop=$age 3319357bfbb2Smrg while test "$loop" -ne 0; do 3320357bfbb2Smrg iface=`expr $current - $loop` 3321357bfbb2Smrg loop=`expr $loop - 1` 3322357bfbb2Smrg verstring="$verstring:${iface}.0" 3323357bfbb2Smrg done 3324357bfbb2Smrg 3325357bfbb2Smrg # Make executables depend on our current version. 3326357bfbb2Smrg verstring="$verstring:${current}.0" 3327357bfbb2Smrg ;; 3328357bfbb2Smrg 3329357bfbb2Smrg sunos) 3330357bfbb2Smrg major=".$current" 3331357bfbb2Smrg versuffix=".$current.$revision" 3332357bfbb2Smrg ;; 3333357bfbb2Smrg 3334357bfbb2Smrg windows) 3335357bfbb2Smrg # Use '-' rather than '.', since we only want one 3336357bfbb2Smrg # extension on DOS 8.3 filesystems. 3337357bfbb2Smrg major=`expr $current - $age` 3338357bfbb2Smrg versuffix="-$major" 3339357bfbb2Smrg ;; 3340357bfbb2Smrg 3341357bfbb2Smrg *) 3342357bfbb2Smrg $echo "$modename: unknown library version type \`$version_type'" 1>&2 3343357bfbb2Smrg $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 3344357bfbb2Smrg exit $EXIT_FAILURE 3345357bfbb2Smrg ;; 3346357bfbb2Smrg esac 3347357bfbb2Smrg 3348357bfbb2Smrg # Clear the version info if we defaulted, and they specified a release. 3349357bfbb2Smrg if test -z "$vinfo" && test -n "$release"; then 3350357bfbb2Smrg major= 3351357bfbb2Smrg case $version_type in 3352357bfbb2Smrg darwin) 3353357bfbb2Smrg # we can't check for "0.0" in archive_cmds due to quoting 3354357bfbb2Smrg # problems, so we reset it completely 3355357bfbb2Smrg verstring= 3356357bfbb2Smrg ;; 3357357bfbb2Smrg *) 3358357bfbb2Smrg verstring="0.0" 3359357bfbb2Smrg ;; 3360357bfbb2Smrg esac 3361357bfbb2Smrg if test "$need_version" = no; then 3362357bfbb2Smrg versuffix= 3363357bfbb2Smrg else 3364357bfbb2Smrg versuffix=".0.0" 3365357bfbb2Smrg fi 3366357bfbb2Smrg fi 3367357bfbb2Smrg 3368357bfbb2Smrg # Remove version info from name if versioning should be avoided 3369357bfbb2Smrg if test "$avoid_version" = yes && test "$need_version" = no; then 3370357bfbb2Smrg major= 3371357bfbb2Smrg versuffix= 3372357bfbb2Smrg verstring="" 3373357bfbb2Smrg else 3374357bfbb2Smrg # XXX 3375357bfbb2Smrg tmp=`echo $libname|sed -e 's,+,_,g' -e 's,-,_,g' -e 's,\.,_,g'` 3376357bfbb2Smrg eval tmp2=\$${tmp}_ltversion 3377357bfbb2Smrg if ! test -z "${SHARED_LIBS_LOG}"; then 3378357bfbb2Smrg if ! test -f ${SHARED_LIBS_LOG}; then 3379357bfbb2Smrg echo "# SHARED_LIBS+= <libname> <obsd version> # <orig version>" >${SHARED_LIBS_LOG} 3380357bfbb2Smrg fi 3381357bfbb2Smrg tmp4=`echo $libname|sed -e 's/^lib//'` 3382357bfbb2Smrg printf "SHARED_LIBS +=\t%-20s %-8s # %s\n" "$tmp4" "$tmp2" "$versuffix" >>${SHARED_LIBS_LOG} 3383357bfbb2Smrg fi 3384357bfbb2Smrg if test -n "$versuffix" && test -n "$tmp2"; then 3385357bfbb2Smrg versuffix=".$tmp2" 3386357bfbb2Smrg fi 3387357bfbb2Smrg fi 3388357bfbb2Smrg 3389357bfbb2Smrg # Check to see if the archive will have undefined symbols. 3390357bfbb2Smrg if test "$allow_undefined" = yes; then 3391357bfbb2Smrg if test "$allow_undefined_flag" = unsupported; then 3392357bfbb2Smrg $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2 3393357bfbb2Smrg build_libtool_libs=no 3394357bfbb2Smrg build_old_libs=yes 3395357bfbb2Smrg fi 3396357bfbb2Smrg else 3397357bfbb2Smrg # Don't allow undefined symbols. 3398357bfbb2Smrg allow_undefined_flag="$no_undefined_flag" 3399357bfbb2Smrg fi 3400357bfbb2Smrg fi 3401357bfbb2Smrg 3402357bfbb2Smrg if test "$mode" != relink; then 3403357bfbb2Smrg # Remove our outputs, but don't remove object files since they 3404357bfbb2Smrg # may have been created when compiling PIC objects. 3405357bfbb2Smrg removelist= 3406357bfbb2Smrg tempremovelist=`$echo "$output_objdir/*"` 3407357bfbb2Smrg for p in $tempremovelist; do 3408357bfbb2Smrg case $p in 3409357bfbb2Smrg *.$objext) 3410357bfbb2Smrg ;; 3411357bfbb2Smrg $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) 3412357bfbb2Smrg if test "X$precious_files_regex" != "X"; then 3413357bfbb2Smrg if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 3414357bfbb2Smrg then 3415357bfbb2Smrg continue 3416357bfbb2Smrg fi 3417357bfbb2Smrg fi 3418357bfbb2Smrg removelist="$removelist $p" 3419357bfbb2Smrg ;; 3420357bfbb2Smrg *) ;; 3421357bfbb2Smrg esac 3422357bfbb2Smrg done 3423357bfbb2Smrg if test -n "$removelist"; then 3424357bfbb2Smrg $show "${rm}r $removelist" 3425357bfbb2Smrg $run ${rm}r $removelist 3426357bfbb2Smrg fi 3427357bfbb2Smrg fi 3428357bfbb2Smrg 3429357bfbb2Smrg # Now set the variables for building old libraries. 3430357bfbb2Smrg if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then 3431357bfbb2Smrg oldlibs="$oldlibs $output_objdir/$libname.$libext" 3432357bfbb2Smrg 3433357bfbb2Smrg # Transform .lo files to .o files. 3434357bfbb2Smrg oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` 3435357bfbb2Smrg fi 3436357bfbb2Smrg 3437357bfbb2Smrg # Eliminate all temporary directories. 3438357bfbb2Smrg for path in $notinst_path; do 3439357bfbb2Smrg lib_search_path=`$echo "$lib_search_path " | ${SED} -e "s% $path % %g"` 3440357bfbb2Smrg deplibs=`$echo "$deplibs " | ${SED} -e "s% -L$path % %g"` 3441357bfbb2Smrg dependency_libs=`$echo "$dependency_libs " | ${SED} -e "s% -L$path % %g"` 3442357bfbb2Smrg done 3443357bfbb2Smrg 3444357bfbb2Smrg if test -n "$xrpath"; then 3445357bfbb2Smrg # If the user specified any rpath flags, then add them. 3446357bfbb2Smrg temp_xrpath= 3447357bfbb2Smrg for libdir in $xrpath; do 3448357bfbb2Smrg temp_xrpath="$temp_xrpath -R$libdir" 3449357bfbb2Smrg case "$finalize_rpath " in 3450357bfbb2Smrg *" $libdir "*) ;; 3451357bfbb2Smrg *) finalize_rpath="$finalize_rpath $libdir" ;; 3452357bfbb2Smrg esac 3453357bfbb2Smrg done 3454357bfbb2Smrg if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then 3455357bfbb2Smrg dependency_libs="$temp_xrpath $dependency_libs" 3456357bfbb2Smrg fi 3457357bfbb2Smrg fi 3458357bfbb2Smrg 3459357bfbb2Smrg # Make sure dlfiles contains only unique files that won't be dlpreopened 3460357bfbb2Smrg old_dlfiles="$dlfiles" 3461357bfbb2Smrg dlfiles= 3462357bfbb2Smrg for lib in $old_dlfiles; do 3463357bfbb2Smrg case " $dlprefiles $dlfiles " in 3464357bfbb2Smrg *" $lib "*) ;; 3465357bfbb2Smrg *) dlfiles="$dlfiles $lib" ;; 3466357bfbb2Smrg esac 3467357bfbb2Smrg done 3468357bfbb2Smrg 3469357bfbb2Smrg # Make sure dlprefiles contains only unique files 3470357bfbb2Smrg old_dlprefiles="$dlprefiles" 3471357bfbb2Smrg dlprefiles= 3472357bfbb2Smrg for lib in $old_dlprefiles; do 3473357bfbb2Smrg case "$dlprefiles " in 3474357bfbb2Smrg *" $lib "*) ;; 3475357bfbb2Smrg *) dlprefiles="$dlprefiles $lib" ;; 3476357bfbb2Smrg esac 3477357bfbb2Smrg done 3478357bfbb2Smrg 3479357bfbb2Smrg if test "$build_libtool_libs" = yes; then 3480357bfbb2Smrg if test -n "$rpath"; then 3481357bfbb2Smrg case $host in 3482357bfbb2Smrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*) 3483357bfbb2Smrg # these systems don't actually have a c library (as such)! 3484357bfbb2Smrg ;; 3485357bfbb2Smrg *-*-rhapsody* | *-*-darwin1.[012]) 3486357bfbb2Smrg # Rhapsody C library is in the System framework 3487357bfbb2Smrg deplibs="$deplibs -framework System" 3488357bfbb2Smrg ;; 3489357bfbb2Smrg *-*-netbsd*) 3490357bfbb2Smrg # Don't link with libc until the a.out ld.so is fixed. 3491357bfbb2Smrg ;; 3492357bfbb2Smrg *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 3493357bfbb2Smrg # Do not include libc due to us having libc/libc_r. 3494357bfbb2Smrg ;; 3495357bfbb2Smrg *-*-sco3.2v5* | *-*-sco5v6*) 3496357bfbb2Smrg # Causes problems with __ctype 3497357bfbb2Smrg ;; 3498357bfbb2Smrg *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 3499357bfbb2Smrg # Compiler inserts libc in the correct place for threads to work 3500357bfbb2Smrg ;; 3501357bfbb2Smrg *) 3502357bfbb2Smrg # Add libc to deplibs on all other systems if necessary. 3503357bfbb2Smrg if test "$build_libtool_need_lc" = "yes"; then 3504357bfbb2Smrg deplibs="$deplibs -lc" 3505357bfbb2Smrg fi 3506357bfbb2Smrg ;; 3507357bfbb2Smrg esac 3508357bfbb2Smrg fi 3509357bfbb2Smrg 3510357bfbb2Smrg # Transform deplibs into only deplibs that can be linked in shared. 3511357bfbb2Smrg name_save=$name 3512357bfbb2Smrg libname_save=$libname 3513357bfbb2Smrg release_save=$release 3514357bfbb2Smrg versuffix_save=$versuffix 3515357bfbb2Smrg major_save=$major 3516357bfbb2Smrg # I'm not sure if I'm treating the release correctly. I think 3517357bfbb2Smrg # release should show up in the -l (ie -lgmp5) so we don't want to 3518357bfbb2Smrg # add it in twice. Is that correct? 3519357bfbb2Smrg release="" 3520357bfbb2Smrg versuffix="" 3521357bfbb2Smrg major="" 3522357bfbb2Smrg newdeplibs= 3523357bfbb2Smrg droppeddeps=no 3524357bfbb2Smrg case $deplibs_check_method in 3525357bfbb2Smrg pass_all) 3526357bfbb2Smrg # Don't check for shared/static. Everything works. 3527357bfbb2Smrg # This might be a little naive. We might want to check 3528357bfbb2Smrg # whether the library exists or not. But this is on 3529357bfbb2Smrg # osf3 & osf4 and I'm not really sure... Just 3530357bfbb2Smrg # implementing what was already the behavior. 3531357bfbb2Smrg newdeplibs=$deplibs 3532357bfbb2Smrg ;; 3533357bfbb2Smrg test_compile) 3534357bfbb2Smrg # This code stresses the "libraries are programs" paradigm to its 3535357bfbb2Smrg # limits. Maybe even breaks it. We compile a program, linking it 3536357bfbb2Smrg # against the deplibs as a proxy for the library. Then we can check 3537357bfbb2Smrg # whether they linked in statically or dynamically with ldd. 3538357bfbb2Smrg $rm conftest.c 3539357bfbb2Smrg cat > conftest.c <<EOF 3540357bfbb2Smrg int main() { return 0; } 3541357bfbb2SmrgEOF 3542357bfbb2Smrg $rm conftest 3543357bfbb2Smrg $LTCC $LTCFLAGS -o conftest conftest.c $deplibs 3544357bfbb2Smrg if test "$?" -eq 0 ; then 3545357bfbb2Smrg ldd_output=`ldd conftest` 3546357bfbb2Smrg for i in $deplibs; do 3547357bfbb2Smrg name=`expr $i : '-l\(.*\)'` 3548357bfbb2Smrg # If $name is empty we are operating on a -L argument. 3549357bfbb2Smrg if test "$name" != "" && test "$name" -ne "0"; then 3550357bfbb2Smrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 3551357bfbb2Smrg case " $predeps $postdeps " in 3552357bfbb2Smrg *" $i "*) 3553357bfbb2Smrg newdeplibs="$newdeplibs $i" 3554357bfbb2Smrg i="" 3555357bfbb2Smrg ;; 3556357bfbb2Smrg esac 3557357bfbb2Smrg fi 3558357bfbb2Smrg if test -n "$i" ; then 3559357bfbb2Smrg libname=`eval \\$echo \"$libname_spec\"` 3560357bfbb2Smrg deplib_matches=`eval \\$echo \"$library_names_spec\"` 3561357bfbb2Smrg set dummy $deplib_matches 3562357bfbb2Smrg deplib_match=$2 3563357bfbb2Smrg if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 3564357bfbb2Smrg newdeplibs="$newdeplibs $i" 3565357bfbb2Smrg else 3566357bfbb2Smrg droppeddeps=yes 3567357bfbb2Smrg $echo 3568357bfbb2Smrg $echo "*** Warning: dynamic linker does not accept needed library $i." 3569357bfbb2Smrg $echo "*** I have the capability to make that library automatically link in when" 3570357bfbb2Smrg $echo "*** you link to this library. But I can only do this if you have a" 3571357bfbb2Smrg $echo "*** shared version of the library, which I believe you do not have" 3572357bfbb2Smrg $echo "*** because a test_compile did reveal that the linker did not use it for" 3573357bfbb2Smrg $echo "*** its dynamic dependency list that programs get resolved with at runtime." 3574357bfbb2Smrg fi 3575357bfbb2Smrg fi 3576357bfbb2Smrg else 3577357bfbb2Smrg newdeplibs="$newdeplibs $i" 3578357bfbb2Smrg fi 3579357bfbb2Smrg done 3580357bfbb2Smrg else 3581357bfbb2Smrg # Error occurred in the first compile. Let's try to salvage 3582357bfbb2Smrg # the situation: Compile a separate program for each library. 3583357bfbb2Smrg for i in $deplibs; do 3584357bfbb2Smrg name=`expr $i : '-l\(.*\)'` 3585357bfbb2Smrg # If $name is empty we are operating on a -L argument. 3586357bfbb2Smrg if test "$name" != "" && test "$name" != "0"; then 3587357bfbb2Smrg $rm conftest 3588357bfbb2Smrg $LTCC $LTCFLAGS -o conftest conftest.c $i 3589357bfbb2Smrg # Did it work? 3590357bfbb2Smrg if test "$?" -eq 0 ; then 3591357bfbb2Smrg ldd_output=`ldd conftest` 3592357bfbb2Smrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 3593357bfbb2Smrg case " $predeps $postdeps " in 3594357bfbb2Smrg *" $i "*) 3595357bfbb2Smrg newdeplibs="$newdeplibs $i" 3596357bfbb2Smrg i="" 3597357bfbb2Smrg ;; 3598357bfbb2Smrg esac 3599357bfbb2Smrg fi 3600357bfbb2Smrg if test -n "$i" ; then 3601357bfbb2Smrg libname=`eval \\$echo \"$libname_spec\"` 3602357bfbb2Smrg deplib_matches=`eval \\$echo \"$library_names_spec\"` 3603357bfbb2Smrg set dummy $deplib_matches 3604357bfbb2Smrg deplib_match=$2 3605357bfbb2Smrg if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 3606357bfbb2Smrg newdeplibs="$newdeplibs $i" 3607357bfbb2Smrg else 3608357bfbb2Smrg droppeddeps=yes 3609357bfbb2Smrg $echo 3610357bfbb2Smrg $echo "*** Warning: dynamic linker does not accept needed library $i." 3611357bfbb2Smrg $echo "*** I have the capability to make that library automatically link in when" 3612357bfbb2Smrg $echo "*** you link to this library. But I can only do this if you have a" 3613357bfbb2Smrg $echo "*** shared version of the library, which you do not appear to have" 3614357bfbb2Smrg $echo "*** because a test_compile did reveal that the linker did not use this one" 3615357bfbb2Smrg $echo "*** as a dynamic dependency that programs can get resolved with at runtime." 3616357bfbb2Smrg fi 3617357bfbb2Smrg fi 3618357bfbb2Smrg else 3619357bfbb2Smrg droppeddeps=yes 3620357bfbb2Smrg $echo 3621357bfbb2Smrg $echo "*** Warning! Library $i is needed by this library but I was not able to" 3622357bfbb2Smrg $echo "*** make it link in! You will probably need to install it or some" 3623357bfbb2Smrg $echo "*** library that it depends on before this library will be fully" 3624357bfbb2Smrg $echo "*** functional. Installing it before continuing would be even better." 3625357bfbb2Smrg fi 3626357bfbb2Smrg else 3627357bfbb2Smrg newdeplibs="$newdeplibs $i" 3628357bfbb2Smrg fi 3629357bfbb2Smrg done 3630357bfbb2Smrg fi 3631357bfbb2Smrg ;; 3632357bfbb2Smrg file_magic*) 3633357bfbb2Smrg set dummy $deplibs_check_method 3634357bfbb2Smrg file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` 3635357bfbb2Smrg for a_deplib in $deplibs; do 3636357bfbb2Smrg name=`expr $a_deplib : '-l\(.*\)'` 3637357bfbb2Smrg # If $name is empty we are operating on a -L argument. 3638357bfbb2Smrg if test "$name" != "" && test "$name" != "0"; then 3639357bfbb2Smrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 3640357bfbb2Smrg case " $predeps $postdeps " in 3641357bfbb2Smrg *" $a_deplib "*) 3642357bfbb2Smrg newdeplibs="$newdeplibs $a_deplib" 3643357bfbb2Smrg a_deplib="" 3644357bfbb2Smrg ;; 3645357bfbb2Smrg esac 3646357bfbb2Smrg fi 3647357bfbb2Smrg if test -n "$a_deplib" ; then 3648357bfbb2Smrg libname=`eval \\$echo \"$libname_spec\"` 3649357bfbb2Smrg for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 3650357bfbb2Smrg potential_libs=`ls $i/$libname[.-]* 2>/dev/null` 3651357bfbb2Smrg for potent_lib in $potential_libs; do 3652357bfbb2Smrg # Follow soft links. 3653357bfbb2Smrg if ls -lLd "$potent_lib" 2>/dev/null \ 3654357bfbb2Smrg | grep " -> " >/dev/null; then 3655357bfbb2Smrg continue 3656357bfbb2Smrg fi 3657357bfbb2Smrg # The statement above tries to avoid entering an 3658357bfbb2Smrg # endless loop below, in case of cyclic links. 3659357bfbb2Smrg # We might still enter an endless loop, since a link 3660357bfbb2Smrg # loop can be closed while we follow links, 3661357bfbb2Smrg # but so what? 3662357bfbb2Smrg potlib="$potent_lib" 3663357bfbb2Smrg while test -h "$potlib" 2>/dev/null; do 3664357bfbb2Smrg potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` 3665357bfbb2Smrg case $potliblink in 3666357bfbb2Smrg [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; 3667357bfbb2Smrg *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; 3668357bfbb2Smrg esac 3669357bfbb2Smrg done 3670357bfbb2Smrg if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \ 3671357bfbb2Smrg | ${SED} 10q \ 3672357bfbb2Smrg | $EGREP "$file_magic_regex" > /dev/null; then 3673357bfbb2Smrg newdeplibs="$newdeplibs $a_deplib" 3674357bfbb2Smrg a_deplib="" 3675357bfbb2Smrg break 2 3676357bfbb2Smrg fi 3677357bfbb2Smrg done 3678357bfbb2Smrg done 3679357bfbb2Smrg fi 3680357bfbb2Smrg if test -n "$a_deplib" ; then 3681357bfbb2Smrg droppeddeps=yes 3682357bfbb2Smrg $echo 3683357bfbb2Smrg $echo "*** Warning: linker path does not have real file for library $a_deplib." 3684357bfbb2Smrg $echo "*** I have the capability to make that library automatically link in when" 3685357bfbb2Smrg $echo "*** you link to this library. But I can only do this if you have a" 3686357bfbb2Smrg $echo "*** shared version of the library, which you do not appear to have" 3687357bfbb2Smrg $echo "*** because I did check the linker path looking for a file starting" 3688357bfbb2Smrg if test -z "$potlib" ; then 3689357bfbb2Smrg $echo "*** with $libname but no candidates were found. (...for file magic test)" 3690357bfbb2Smrg else 3691357bfbb2Smrg $echo "*** with $libname and none of the candidates passed a file format test" 3692357bfbb2Smrg $echo "*** using a file magic. Last file checked: $potlib" 3693357bfbb2Smrg fi 3694357bfbb2Smrg fi 3695357bfbb2Smrg else 3696357bfbb2Smrg # Add a -L argument. 3697357bfbb2Smrg newdeplibs="$newdeplibs $a_deplib" 3698357bfbb2Smrg fi 3699357bfbb2Smrg done # Gone through all deplibs. 3700357bfbb2Smrg ;; 3701357bfbb2Smrg match_pattern*) 3702357bfbb2Smrg set dummy $deplibs_check_method 3703357bfbb2Smrg match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` 3704357bfbb2Smrg for a_deplib in $deplibs; do 3705357bfbb2Smrg name=`expr $a_deplib : '-l\(.*\)'` 3706357bfbb2Smrg # If $name is empty we are operating on a -L argument. 3707357bfbb2Smrg if test -n "$name" && test "$name" != "0"; then 3708357bfbb2Smrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 3709357bfbb2Smrg case " $predeps $postdeps " in 3710357bfbb2Smrg *" $a_deplib "*) 3711357bfbb2Smrg newdeplibs="$newdeplibs $a_deplib" 3712357bfbb2Smrg a_deplib="" 3713357bfbb2Smrg ;; 3714357bfbb2Smrg esac 3715357bfbb2Smrg fi 3716357bfbb2Smrg if test -n "$a_deplib" ; then 3717357bfbb2Smrg libname=`eval \\$echo \"$libname_spec\"` 3718357bfbb2Smrg for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 3719357bfbb2Smrg potential_libs=`ls $i/$libname[.-]* 2>/dev/null` 3720357bfbb2Smrg for potent_lib in $potential_libs; do 3721357bfbb2Smrg potlib="$potent_lib" # see symlink-check above in file_magic test 3722357bfbb2Smrg if eval $echo \"$potent_lib\" 2>/dev/null \ 3723357bfbb2Smrg | ${SED} 10q \ 3724357bfbb2Smrg | $EGREP "$match_pattern_regex" > /dev/null; then 3725357bfbb2Smrg newdeplibs="$newdeplibs $a_deplib" 3726357bfbb2Smrg a_deplib="" 3727357bfbb2Smrg break 2 3728357bfbb2Smrg fi 3729357bfbb2Smrg done 3730357bfbb2Smrg done 3731357bfbb2Smrg fi 3732357bfbb2Smrg if test -n "$a_deplib" ; then 3733357bfbb2Smrg droppeddeps=yes 3734357bfbb2Smrg $echo 3735357bfbb2Smrg $echo "*** Warning: linker path does not have real file for library $a_deplib." 3736357bfbb2Smrg $echo "*** I have the capability to make that library automatically link in when" 3737357bfbb2Smrg $echo "*** you link to this library. But I can only do this if you have a" 3738357bfbb2Smrg $echo "*** shared version of the library, which you do not appear to have" 3739357bfbb2Smrg $echo "*** because I did check the linker path looking for a file starting" 3740357bfbb2Smrg if test -z "$potlib" ; then 3741357bfbb2Smrg $echo "*** with $libname but no candidates were found. (...for regex pattern test)" 3742357bfbb2Smrg else 3743357bfbb2Smrg $echo "*** with $libname and none of the candidates passed a file format test" 3744357bfbb2Smrg $echo "*** using a regex pattern. Last file checked: $potlib" 3745357bfbb2Smrg fi 3746357bfbb2Smrg fi 3747357bfbb2Smrg else 3748357bfbb2Smrg # Add a -L argument. 3749357bfbb2Smrg newdeplibs="$newdeplibs $a_deplib" 3750357bfbb2Smrg fi 3751357bfbb2Smrg done # Gone through all deplibs. 3752357bfbb2Smrg ;; 3753357bfbb2Smrg none | unknown | *) 3754357bfbb2Smrg newdeplibs="" 3755357bfbb2Smrg tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ 3756357bfbb2Smrg -e 's/ -[LR][^ ]*//g'` 3757357bfbb2Smrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 3758357bfbb2Smrg for i in $predeps $postdeps ; do 3759357bfbb2Smrg # can't use Xsed below, because $i might contain '/' 3760357bfbb2Smrg tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"` 3761357bfbb2Smrg done 3762357bfbb2Smrg fi 3763357bfbb2Smrg if $echo "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' \ 3764357bfbb2Smrg | grep . >/dev/null; then 3765357bfbb2Smrg $echo 3766357bfbb2Smrg if test "X$deplibs_check_method" = "Xnone"; then 3767357bfbb2Smrg $echo "*** Warning: inter-library dependencies are not supported in this platform." 3768357bfbb2Smrg else 3769357bfbb2Smrg $echo "*** Warning: inter-library dependencies are not known to be supported." 3770357bfbb2Smrg fi 3771357bfbb2Smrg $echo "*** All declared inter-library dependencies are being dropped." 3772357bfbb2Smrg droppeddeps=yes 3773357bfbb2Smrg fi 3774357bfbb2Smrg ;; 3775357bfbb2Smrg esac 3776357bfbb2Smrg versuffix=$versuffix_save 3777357bfbb2Smrg major=$major_save 3778357bfbb2Smrg release=$release_save 3779357bfbb2Smrg libname=$libname_save 3780357bfbb2Smrg name=$name_save 3781357bfbb2Smrg 3782357bfbb2Smrg case $host in 3783357bfbb2Smrg *-*-rhapsody* | *-*-darwin1.[012]) 3784357bfbb2Smrg # On Rhapsody replace the C library is the System framework 3785357bfbb2Smrg newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'` 3786357bfbb2Smrg ;; 3787357bfbb2Smrg esac 3788357bfbb2Smrg 3789357bfbb2Smrg if test "$droppeddeps" = yes; then 3790357bfbb2Smrg if test "$module" = yes; then 3791357bfbb2Smrg $echo 3792357bfbb2Smrg $echo "*** Warning: libtool could not satisfy all declared inter-library" 3793357bfbb2Smrg $echo "*** dependencies of module $libname. Therefore, libtool will create" 3794357bfbb2Smrg $echo "*** a static module, that should work as long as the dlopening" 3795357bfbb2Smrg $echo "*** application is linked with the -dlopen flag." 3796357bfbb2Smrg if test -z "$global_symbol_pipe"; then 3797357bfbb2Smrg $echo 3798357bfbb2Smrg $echo "*** However, this would only work if libtool was able to extract symbol" 3799357bfbb2Smrg $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" 3800357bfbb2Smrg $echo "*** not find such a program. So, this module is probably useless." 3801357bfbb2Smrg $echo "*** \`nm' from GNU binutils and a full rebuild may help." 3802357bfbb2Smrg fi 3803357bfbb2Smrg if test "$build_old_libs" = no; then 3804357bfbb2Smrg oldlibs="$output_objdir/$libname.$libext" 3805357bfbb2Smrg build_libtool_libs=module 3806357bfbb2Smrg build_old_libs=yes 3807357bfbb2Smrg else 3808357bfbb2Smrg build_libtool_libs=no 3809357bfbb2Smrg fi 3810357bfbb2Smrg else 3811357bfbb2Smrg $echo "*** The inter-library dependencies that have been dropped here will be" 3812357bfbb2Smrg $echo "*** automatically added whenever a program is linked with this library" 3813357bfbb2Smrg $echo "*** or is declared to -dlopen it." 3814357bfbb2Smrg 3815357bfbb2Smrg if test "$allow_undefined" = no; then 3816357bfbb2Smrg $echo 3817357bfbb2Smrg $echo "*** Since this library must not contain undefined symbols," 3818357bfbb2Smrg $echo "*** because either the platform does not support them or" 3819357bfbb2Smrg $echo "*** it was explicitly requested with -no-undefined," 3820357bfbb2Smrg $echo "*** libtool will only create a static version of it." 3821357bfbb2Smrg if test "$build_old_libs" = no; then 3822357bfbb2Smrg oldlibs="$output_objdir/$libname.$libext" 3823357bfbb2Smrg build_libtool_libs=module 3824357bfbb2Smrg build_old_libs=yes 3825357bfbb2Smrg else 3826357bfbb2Smrg build_libtool_libs=no 3827357bfbb2Smrg fi 3828357bfbb2Smrg fi 3829357bfbb2Smrg fi 3830357bfbb2Smrg fi 3831357bfbb2Smrg # Done checking deplibs! 3832357bfbb2Smrg deplibs=$newdeplibs 3833357bfbb2Smrg fi 3834357bfbb2Smrg 3835357bfbb2Smrg 3836357bfbb2Smrg # move library search paths that coincide with paths to not yet 3837357bfbb2Smrg # installed libraries to the beginning of the library search list 3838357bfbb2Smrg new_libs= 3839357bfbb2Smrg for path in $notinst_path; do 3840357bfbb2Smrg case " $new_libs " in 3841357bfbb2Smrg *" -L$path/$objdir "*) ;; 3842357bfbb2Smrg *) 3843357bfbb2Smrg case " $deplibs " in 3844357bfbb2Smrg *" -L$path/$objdir "*) 3845357bfbb2Smrg new_libs="$new_libs -L$path/$objdir" ;; 3846357bfbb2Smrg esac 3847357bfbb2Smrg ;; 3848357bfbb2Smrg esac 3849357bfbb2Smrg done 3850357bfbb2Smrg for deplib in $deplibs; do 3851357bfbb2Smrg case $deplib in 3852357bfbb2Smrg -L*) 3853357bfbb2Smrg case " $new_libs " in 3854357bfbb2Smrg *" $deplib "*) ;; 3855357bfbb2Smrg *) new_libs="$new_libs $deplib" ;; 3856357bfbb2Smrg esac 3857357bfbb2Smrg ;; 3858357bfbb2Smrg *) new_libs="$new_libs $deplib" ;; 3859357bfbb2Smrg esac 3860357bfbb2Smrg done 3861357bfbb2Smrg deplibs="$new_libs" 3862357bfbb2Smrg 3863357bfbb2Smrg 3864357bfbb2Smrg # All the library-specific variables (install_libdir is set above). 3865357bfbb2Smrg library_names= 3866357bfbb2Smrg old_library= 3867357bfbb2Smrg dlname= 3868357bfbb2Smrg 3869357bfbb2Smrg # Test again, we may have decided not to build it any more 3870357bfbb2Smrg if test "$build_libtool_libs" = yes; then 3871357bfbb2Smrg if test "$hardcode_into_libs" = yes; then 3872357bfbb2Smrg # Hardcode the library paths 3873357bfbb2Smrg hardcode_libdirs= 3874357bfbb2Smrg dep_rpath= 3875357bfbb2Smrg rpath="$finalize_rpath" 3876357bfbb2Smrg test "$mode" != relink && rpath="$compile_rpath$rpath" 3877357bfbb2Smrg for libdir in $rpath; do 3878357bfbb2Smrg if test -n "$hardcode_libdir_flag_spec"; then 3879357bfbb2Smrg if test -n "$hardcode_libdir_separator"; then 3880357bfbb2Smrg if test -z "$hardcode_libdirs"; then 3881357bfbb2Smrg hardcode_libdirs="$libdir" 3882357bfbb2Smrg else 3883357bfbb2Smrg # Just accumulate the unique libdirs. 3884357bfbb2Smrg case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 3885357bfbb2Smrg *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 3886357bfbb2Smrg ;; 3887357bfbb2Smrg *) 3888357bfbb2Smrg hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 3889357bfbb2Smrg ;; 3890357bfbb2Smrg esac 3891357bfbb2Smrg fi 3892357bfbb2Smrg else 3893357bfbb2Smrg eval flag=\"$hardcode_libdir_flag_spec\" 3894357bfbb2Smrg dep_rpath="$dep_rpath $flag" 3895357bfbb2Smrg fi 3896357bfbb2Smrg elif test -n "$runpath_var"; then 3897357bfbb2Smrg case "$perm_rpath " in 3898357bfbb2Smrg *" $libdir "*) ;; 3899357bfbb2Smrg *) perm_rpath="$perm_rpath $libdir" ;; 3900357bfbb2Smrg esac 3901357bfbb2Smrg fi 3902357bfbb2Smrg done 3903357bfbb2Smrg # Substitute the hardcoded libdirs into the rpath. 3904357bfbb2Smrg if test -n "$hardcode_libdir_separator" && 3905357bfbb2Smrg test -n "$hardcode_libdirs"; then 3906357bfbb2Smrg libdir="$hardcode_libdirs" 3907357bfbb2Smrg if test -n "$hardcode_libdir_flag_spec_ld"; then 3908357bfbb2Smrg eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" 3909357bfbb2Smrg else 3910357bfbb2Smrg eval dep_rpath=\"$hardcode_libdir_flag_spec\" 3911357bfbb2Smrg fi 3912357bfbb2Smrg fi 3913357bfbb2Smrg if test -n "$runpath_var" && test -n "$perm_rpath"; then 3914357bfbb2Smrg # We should set the runpath_var. 3915357bfbb2Smrg rpath= 3916357bfbb2Smrg for dir in $perm_rpath; do 3917357bfbb2Smrg rpath="$rpath$dir:" 3918357bfbb2Smrg done 3919357bfbb2Smrg eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" 3920357bfbb2Smrg fi 3921357bfbb2Smrg test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" 3922357bfbb2Smrg fi 3923357bfbb2Smrg 3924357bfbb2Smrg shlibpath="$finalize_shlibpath" 3925357bfbb2Smrg test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" 3926357bfbb2Smrg if test -n "$shlibpath"; then 3927357bfbb2Smrg eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" 3928357bfbb2Smrg fi 3929357bfbb2Smrg 3930357bfbb2Smrg # Get the real and link names of the library. 3931357bfbb2Smrg eval shared_ext=\"$shrext_cmds\" 3932357bfbb2Smrg eval library_names=\"$library_names_spec\" 3933357bfbb2Smrg set dummy $library_names 3934357bfbb2Smrg realname="$2" 3935357bfbb2Smrg shift; shift 3936357bfbb2Smrg 3937357bfbb2Smrg if test -n "$soname_spec"; then 3938357bfbb2Smrg eval soname=\"$soname_spec\" 3939357bfbb2Smrg else 3940357bfbb2Smrg soname="$realname" 3941357bfbb2Smrg fi 3942357bfbb2Smrg if test -z "$dlname"; then 3943357bfbb2Smrg dlname=$soname 3944357bfbb2Smrg fi 3945357bfbb2Smrg 3946357bfbb2Smrg lib="$output_objdir/$realname" 3947357bfbb2Smrg linknames= 3948357bfbb2Smrg for link 3949357bfbb2Smrg do 3950357bfbb2Smrg linknames="$linknames $link" 3951357bfbb2Smrg done 3952357bfbb2Smrg 3953357bfbb2Smrg # Use standard objects if they are pic 3954357bfbb2Smrg test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 3955357bfbb2Smrg 3956357bfbb2Smrg # Prepare the list of exported symbols 3957357bfbb2Smrg if test -z "$export_symbols"; then 3958357bfbb2Smrg if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then 3959357bfbb2Smrg $show "generating symbol list for \`$libname.la'" 3960357bfbb2Smrg export_symbols="$output_objdir/$libname.exp" 3961357bfbb2Smrg $run $rm $export_symbols 3962357bfbb2Smrg cmds=$export_symbols_cmds 3963357bfbb2Smrg save_ifs="$IFS"; IFS='~' 3964357bfbb2Smrg for cmd in $cmds; do 3965357bfbb2Smrg IFS="$save_ifs" 3966357bfbb2Smrg eval cmd=\"$cmd\" 3967357bfbb2Smrg if len=`expr "X$cmd" : ".*"` && 3968357bfbb2Smrg test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then 3969357bfbb2Smrg $show "$cmd" 3970357bfbb2Smrg $run eval "$cmd" || exit $? 3971357bfbb2Smrg skipped_export=false 3972357bfbb2Smrg else 3973357bfbb2Smrg # The command line is too long to execute in one step. 3974357bfbb2Smrg $show "using reloadable object file for export list..." 3975357bfbb2Smrg skipped_export=: 3976357bfbb2Smrg # Break out early, otherwise skipped_export may be 3977357bfbb2Smrg # set to false by a later but shorter cmd. 3978357bfbb2Smrg break 3979357bfbb2Smrg fi 3980357bfbb2Smrg done 3981357bfbb2Smrg IFS="$save_ifs" 3982357bfbb2Smrg if test -n "$export_symbols_regex"; then 3983357bfbb2Smrg $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\"" 3984357bfbb2Smrg $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' 3985357bfbb2Smrg $show "$mv \"${export_symbols}T\" \"$export_symbols\"" 3986357bfbb2Smrg $run eval '$mv "${export_symbols}T" "$export_symbols"' 3987357bfbb2Smrg fi 3988357bfbb2Smrg fi 3989357bfbb2Smrg fi 3990357bfbb2Smrg 3991357bfbb2Smrg if test -n "$export_symbols" && test -n "$include_expsyms"; then 3992357bfbb2Smrg $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"' 3993357bfbb2Smrg fi 3994357bfbb2Smrg 3995357bfbb2Smrg tmp_deplibs= 3996357bfbb2Smrg for test_deplib in $deplibs; do 3997357bfbb2Smrg case " $convenience " in 3998357bfbb2Smrg *" $test_deplib "*) ;; 3999357bfbb2Smrg *) 4000357bfbb2Smrg tmp_deplibs="$tmp_deplibs $test_deplib" 4001357bfbb2Smrg ;; 4002357bfbb2Smrg esac 4003357bfbb2Smrg done 4004357bfbb2Smrg deplibs="$tmp_deplibs" 4005357bfbb2Smrg 4006357bfbb2Smrg if test -n "$convenience"; then 4007357bfbb2Smrg if test -n "$whole_archive_flag_spec"; then 4008357bfbb2Smrg save_libobjs=$libobjs 4009357bfbb2Smrg eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 4010357bfbb2Smrg else 4011357bfbb2Smrg gentop="$output_objdir/${outputname}x" 4012357bfbb2Smrg generated="$generated $gentop" 4013357bfbb2Smrg 4014357bfbb2Smrg func_extract_archives $gentop $convenience 4015357bfbb2Smrg libobjs="$libobjs $func_extract_archives_result" 4016357bfbb2Smrg fi 4017357bfbb2Smrg fi 4018357bfbb2Smrg 4019357bfbb2Smrg if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then 4020357bfbb2Smrg eval flag=\"$thread_safe_flag_spec\" 4021357bfbb2Smrg linker_flags="$linker_flags $flag" 4022357bfbb2Smrg fi 4023357bfbb2Smrg 4024357bfbb2Smrg # Make a backup of the uninstalled library when relinking 4025357bfbb2Smrg if test "$mode" = relink; then 4026357bfbb2Smrg $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $? 4027357bfbb2Smrg fi 4028357bfbb2Smrg 4029357bfbb2Smrg # Do each of the archive commands. 4030357bfbb2Smrg if test "$module" = yes && test -n "$module_cmds" ; then 4031357bfbb2Smrg if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 4032357bfbb2Smrg eval test_cmds=\"$module_expsym_cmds\" 4033357bfbb2Smrg cmds=$module_expsym_cmds 4034357bfbb2Smrg else 4035357bfbb2Smrg eval test_cmds=\"$module_cmds\" 4036357bfbb2Smrg cmds=$module_cmds 4037357bfbb2Smrg fi 4038357bfbb2Smrg else 4039357bfbb2Smrg if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 4040357bfbb2Smrg eval test_cmds=\"$archive_expsym_cmds\" 4041357bfbb2Smrg cmds=$archive_expsym_cmds 4042357bfbb2Smrg else 4043357bfbb2Smrg eval test_cmds=\"$archive_cmds\" 4044357bfbb2Smrg cmds=$archive_cmds 4045357bfbb2Smrg fi 4046357bfbb2Smrg fi 4047357bfbb2Smrg 4048357bfbb2Smrg if test "X$skipped_export" != "X:" && 4049357bfbb2Smrg len=`expr "X$test_cmds" : ".*" 2>/dev/null` && 4050357bfbb2Smrg test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then 4051357bfbb2Smrg : 4052357bfbb2Smrg else 4053357bfbb2Smrg # The command line is too long to link in one step, link piecewise. 4054357bfbb2Smrg $echo "creating reloadable object files..." 4055357bfbb2Smrg 4056357bfbb2Smrg # Save the value of $output and $libobjs because we want to 4057357bfbb2Smrg # use them later. If we have whole_archive_flag_spec, we 4058357bfbb2Smrg # want to use save_libobjs as it was before 4059357bfbb2Smrg # whole_archive_flag_spec was expanded, because we can't 4060357bfbb2Smrg # assume the linker understands whole_archive_flag_spec. 4061357bfbb2Smrg # This may have to be revisited, in case too many 4062357bfbb2Smrg # convenience libraries get linked in and end up exceeding 4063357bfbb2Smrg # the spec. 4064357bfbb2Smrg if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then 4065357bfbb2Smrg save_libobjs=$libobjs 4066357bfbb2Smrg fi 4067357bfbb2Smrg save_output=$output 4068357bfbb2Smrg output_la=`$echo "X$output" | $Xsed -e "$basename"` 4069357bfbb2Smrg 4070357bfbb2Smrg # Clear the reloadable object creation command queue and 4071357bfbb2Smrg # initialize k to one. 4072357bfbb2Smrg test_cmds= 4073357bfbb2Smrg concat_cmds= 4074357bfbb2Smrg objlist= 4075357bfbb2Smrg delfiles= 4076357bfbb2Smrg last_robj= 4077357bfbb2Smrg k=1 4078357bfbb2Smrg output=$output_objdir/$output_la-${k}.$objext 4079357bfbb2Smrg # Loop over the list of objects to be linked. 4080357bfbb2Smrg for obj in $save_libobjs 4081357bfbb2Smrg do 4082357bfbb2Smrg eval test_cmds=\"$reload_cmds $objlist $last_robj\" 4083357bfbb2Smrg if test "X$objlist" = X || 4084357bfbb2Smrg { len=`expr "X$test_cmds" : ".*" 2>/dev/null` && 4085357bfbb2Smrg test "$len" -le "$max_cmd_len"; }; then 4086357bfbb2Smrg objlist="$objlist $obj" 4087357bfbb2Smrg else 4088357bfbb2Smrg # The command $test_cmds is almost too long, add a 4089357bfbb2Smrg # command to the queue. 4090357bfbb2Smrg if test "$k" -eq 1 ; then 4091357bfbb2Smrg # The first file doesn't have a previous command to add. 4092357bfbb2Smrg eval concat_cmds=\"$reload_cmds $objlist $last_robj\" 4093357bfbb2Smrg else 4094357bfbb2Smrg # All subsequent reloadable object files will link in 4095357bfbb2Smrg # the last one created. 4096357bfbb2Smrg eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\" 4097357bfbb2Smrg fi 4098357bfbb2Smrg last_robj=$output_objdir/$output_la-${k}.$objext 4099357bfbb2Smrg k=`expr $k + 1` 4100357bfbb2Smrg output=$output_objdir/$output_la-${k}.$objext 4101357bfbb2Smrg objlist=$obj 4102357bfbb2Smrg len=1 4103357bfbb2Smrg fi 4104357bfbb2Smrg done 4105357bfbb2Smrg # Handle the remaining objects by creating one last 4106357bfbb2Smrg # reloadable object file. All subsequent reloadable object 4107357bfbb2Smrg # files will link in the last one created. 4108357bfbb2Smrg test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 4109357bfbb2Smrg eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" 4110357bfbb2Smrg 4111357bfbb2Smrg if ${skipped_export-false}; then 4112357bfbb2Smrg $show "generating symbol list for \`$libname.la'" 4113357bfbb2Smrg export_symbols="$output_objdir/$libname.exp" 4114357bfbb2Smrg $run $rm $export_symbols 4115357bfbb2Smrg libobjs=$output 4116357bfbb2Smrg # Append the command to create the export file. 4117357bfbb2Smrg eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\" 4118357bfbb2Smrg fi 4119357bfbb2Smrg 4120357bfbb2Smrg # Set up a command to remove the reloadable object files 4121357bfbb2Smrg # after they are used. 4122357bfbb2Smrg i=0 4123357bfbb2Smrg while test "$i" -lt "$k" 4124357bfbb2Smrg do 4125357bfbb2Smrg i=`expr $i + 1` 4126357bfbb2Smrg delfiles="$delfiles $output_objdir/$output_la-${i}.$objext" 4127357bfbb2Smrg done 4128357bfbb2Smrg 4129357bfbb2Smrg $echo "creating a temporary reloadable object file: $output" 4130357bfbb2Smrg 4131357bfbb2Smrg # Loop through the commands generated above and execute them. 4132357bfbb2Smrg save_ifs="$IFS"; IFS='~' 4133357bfbb2Smrg for cmd in $concat_cmds; do 4134357bfbb2Smrg IFS="$save_ifs" 4135357bfbb2Smrg $show "$cmd" 4136357bfbb2Smrg $run eval "$cmd" || exit $? 4137357bfbb2Smrg done 4138357bfbb2Smrg IFS="$save_ifs" 4139357bfbb2Smrg 4140357bfbb2Smrg libobjs=$output 4141357bfbb2Smrg # Restore the value of output. 4142357bfbb2Smrg output=$save_output 4143357bfbb2Smrg 4144357bfbb2Smrg if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then 4145357bfbb2Smrg eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 4146357bfbb2Smrg fi 4147357bfbb2Smrg # Expand the library linking commands again to reset the 4148357bfbb2Smrg # value of $libobjs for piecewise linking. 4149357bfbb2Smrg 4150357bfbb2Smrg # Do each of the archive commands. 4151357bfbb2Smrg if test "$module" = yes && test -n "$module_cmds" ; then 4152357bfbb2Smrg if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 4153357bfbb2Smrg cmds=$module_expsym_cmds 4154357bfbb2Smrg else 4155357bfbb2Smrg cmds=$module_cmds 4156357bfbb2Smrg fi 4157357bfbb2Smrg else 4158357bfbb2Smrg if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 4159357bfbb2Smrg cmds=$archive_expsym_cmds 4160357bfbb2Smrg else 4161357bfbb2Smrg cmds=$archive_cmds 4162357bfbb2Smrg fi 4163357bfbb2Smrg fi 4164357bfbb2Smrg 4165357bfbb2Smrg # Append the command to remove the reloadable object files 4166357bfbb2Smrg # to the just-reset $cmds. 4167357bfbb2Smrg eval cmds=\"\$cmds~\$rm $delfiles\" 4168357bfbb2Smrg fi 4169357bfbb2Smrg save_ifs="$IFS"; IFS='~' 4170357bfbb2Smrg for cmd in $cmds; do 4171357bfbb2Smrg IFS="$save_ifs" 4172357bfbb2Smrg eval cmd=\"$cmd\" 4173357bfbb2Smrg $show "$cmd" 4174357bfbb2Smrg $run eval "$cmd" || { 4175357bfbb2Smrg lt_exit=$? 4176357bfbb2Smrg 4177357bfbb2Smrg # Restore the uninstalled library and exit 4178357bfbb2Smrg if test "$mode" = relink; then 4179357bfbb2Smrg $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)' 4180357bfbb2Smrg fi 4181357bfbb2Smrg 4182357bfbb2Smrg exit $lt_exit 4183357bfbb2Smrg } 4184357bfbb2Smrg done 4185357bfbb2Smrg IFS="$save_ifs" 4186357bfbb2Smrg 4187357bfbb2Smrg # Restore the uninstalled library and exit 4188357bfbb2Smrg if test "$mode" = relink; then 4189357bfbb2Smrg $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $? 4190357bfbb2Smrg 4191357bfbb2Smrg if test -n "$convenience"; then 4192357bfbb2Smrg if test -z "$whole_archive_flag_spec"; then 4193357bfbb2Smrg $show "${rm}r $gentop" 4194357bfbb2Smrg $run ${rm}r "$gentop" 4195357bfbb2Smrg fi 4196357bfbb2Smrg fi 4197357bfbb2Smrg 4198357bfbb2Smrg exit $EXIT_SUCCESS 4199357bfbb2Smrg fi 4200357bfbb2Smrg 4201357bfbb2Smrg # Create links to the real library. 4202357bfbb2Smrg for linkname in $linknames; do 4203357bfbb2Smrg if test "$realname" != "$linkname"; then 4204357bfbb2Smrg $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)" 4205357bfbb2Smrg $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $? 4206357bfbb2Smrg fi 4207357bfbb2Smrg done 4208357bfbb2Smrg 4209357bfbb2Smrg # If -module or -export-dynamic was specified, set the dlname. 4210357bfbb2Smrg if test "$module" = yes || test "$export_dynamic" = yes; then 4211357bfbb2Smrg # On all known operating systems, these are identical. 4212357bfbb2Smrg dlname="$soname" 4213357bfbb2Smrg fi 4214357bfbb2Smrg fi 4215357bfbb2Smrg ;; 4216357bfbb2Smrg 4217357bfbb2Smrg obj) 4218357bfbb2Smrg if test -n "$deplibs"; then 4219357bfbb2Smrg $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 4220357bfbb2Smrg fi 4221357bfbb2Smrg 4222357bfbb2Smrg if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 4223357bfbb2Smrg $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2 4224357bfbb2Smrg fi 4225357bfbb2Smrg 4226357bfbb2Smrg if test -n "$rpath"; then 4227357bfbb2Smrg $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2 4228357bfbb2Smrg fi 4229357bfbb2Smrg 4230357bfbb2Smrg if test -n "$xrpath"; then 4231357bfbb2Smrg $echo "$modename: warning: \`-R' is ignored for objects" 1>&2 4232357bfbb2Smrg fi 4233357bfbb2Smrg 4234357bfbb2Smrg if test -n "$vinfo"; then 4235357bfbb2Smrg $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2 4236357bfbb2Smrg fi 4237357bfbb2Smrg 4238357bfbb2Smrg if test -n "$release"; then 4239357bfbb2Smrg $echo "$modename: warning: \`-release' is ignored for objects" 1>&2 4240357bfbb2Smrg fi 4241357bfbb2Smrg 4242357bfbb2Smrg case $output in 4243357bfbb2Smrg *.lo) 4244357bfbb2Smrg if test -n "$objs$old_deplibs"; then 4245357bfbb2Smrg $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 4246357bfbb2Smrg exit $EXIT_FAILURE 4247357bfbb2Smrg fi 4248357bfbb2Smrg libobj="$output" 4249357bfbb2Smrg obj=`$echo "X$output" | $Xsed -e "$lo2o"` 4250357bfbb2Smrg ;; 4251357bfbb2Smrg *) 4252357bfbb2Smrg libobj= 4253357bfbb2Smrg obj="$output" 4254357bfbb2Smrg ;; 4255357bfbb2Smrg esac 4256357bfbb2Smrg 4257357bfbb2Smrg # Delete the old objects. 4258357bfbb2Smrg $run $rm $obj $libobj 4259357bfbb2Smrg 4260357bfbb2Smrg # Objects from convenience libraries. This assumes 4261357bfbb2Smrg # single-version convenience libraries. Whenever we create 4262357bfbb2Smrg # different ones for PIC/non-PIC, this we'll have to duplicate 4263357bfbb2Smrg # the extraction. 4264357bfbb2Smrg reload_conv_objs= 4265357bfbb2Smrg gentop= 4266357bfbb2Smrg # reload_cmds runs $LD directly, so let us get rid of 4267357bfbb2Smrg # -Wl from whole_archive_flag_spec 4268357bfbb2Smrg wl= 4269357bfbb2Smrg 4270357bfbb2Smrg if test -n "$convenience"; then 4271357bfbb2Smrg if test -n "$whole_archive_flag_spec"; then 4272357bfbb2Smrg eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\" 4273357bfbb2Smrg else 4274357bfbb2Smrg gentop="$output_objdir/${obj}x" 4275357bfbb2Smrg generated="$generated $gentop" 4276357bfbb2Smrg 4277357bfbb2Smrg func_extract_archives $gentop $convenience 4278357bfbb2Smrg reload_conv_objs="$reload_objs $func_extract_archives_result" 4279357bfbb2Smrg fi 4280357bfbb2Smrg fi 4281357bfbb2Smrg 4282357bfbb2Smrg # Create the old-style object. 4283357bfbb2Smrg 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 4284357bfbb2Smrg 4285357bfbb2Smrg output="$obj" 4286357bfbb2Smrg cmds=$reload_cmds 4287357bfbb2Smrg save_ifs="$IFS"; IFS='~' 4288357bfbb2Smrg for cmd in $cmds; do 4289357bfbb2Smrg IFS="$save_ifs" 4290357bfbb2Smrg eval cmd=\"$cmd\" 4291357bfbb2Smrg $show "$cmd" 4292357bfbb2Smrg $run eval "$cmd" || exit $? 4293357bfbb2Smrg done 4294357bfbb2Smrg IFS="$save_ifs" 4295357bfbb2Smrg 4296357bfbb2Smrg # Exit if we aren't doing a library object file. 4297357bfbb2Smrg if test -z "$libobj"; then 4298357bfbb2Smrg if test -n "$gentop"; then 4299357bfbb2Smrg $show "${rm}r $gentop" 4300357bfbb2Smrg $run ${rm}r $gentop 4301357bfbb2Smrg fi 4302357bfbb2Smrg 4303357bfbb2Smrg exit $EXIT_SUCCESS 4304357bfbb2Smrg fi 4305357bfbb2Smrg 4306357bfbb2Smrg if test "$build_libtool_libs" != yes; then 4307357bfbb2Smrg if test -n "$gentop"; then 4308357bfbb2Smrg $show "${rm}r $gentop" 4309357bfbb2Smrg $run ${rm}r $gentop 4310357bfbb2Smrg fi 4311357bfbb2Smrg 4312357bfbb2Smrg # Create an invalid libtool object if no PIC, so that we don't 4313357bfbb2Smrg # accidentally link it into a program. 4314357bfbb2Smrg # $show "echo timestamp > $libobj" 4315357bfbb2Smrg # $run eval "echo timestamp > $libobj" || exit $? 4316357bfbb2Smrg exit $EXIT_SUCCESS 4317357bfbb2Smrg fi 4318357bfbb2Smrg 4319357bfbb2Smrg if test -n "$pic_flag" || test "$pic_mode" != default; then 4320357bfbb2Smrg # Only do commands if we really have different PIC objects. 4321357bfbb2Smrg reload_objs="$libobjs $reload_conv_objs" 4322357bfbb2Smrg output="$libobj" 4323357bfbb2Smrg cmds=$reload_cmds 4324357bfbb2Smrg save_ifs="$IFS"; IFS='~' 4325357bfbb2Smrg for cmd in $cmds; do 4326357bfbb2Smrg IFS="$save_ifs" 4327357bfbb2Smrg eval cmd=\"$cmd\" 4328357bfbb2Smrg $show "$cmd" 4329357bfbb2Smrg $run eval "$cmd" || exit $? 4330357bfbb2Smrg done 4331357bfbb2Smrg IFS="$save_ifs" 4332357bfbb2Smrg fi 4333357bfbb2Smrg 4334357bfbb2Smrg if test -n "$gentop"; then 4335357bfbb2Smrg $show "${rm}r $gentop" 4336357bfbb2Smrg $run ${rm}r $gentop 4337357bfbb2Smrg fi 4338357bfbb2Smrg 4339357bfbb2Smrg exit $EXIT_SUCCESS 4340357bfbb2Smrg ;; 4341357bfbb2Smrg 4342357bfbb2Smrg prog) 4343357bfbb2Smrg case $host in 4344357bfbb2Smrg *cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;; 4345357bfbb2Smrg esac 4346357bfbb2Smrg if test -n "$vinfo"; then 4347357bfbb2Smrg $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2 4348357bfbb2Smrg fi 4349357bfbb2Smrg 4350357bfbb2Smrg if test -n "$release"; then 4351357bfbb2Smrg $echo "$modename: warning: \`-release' is ignored for programs" 1>&2 4352357bfbb2Smrg fi 4353357bfbb2Smrg 4354357bfbb2Smrg if test "$preload" = yes; then 4355357bfbb2Smrg if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown && 4356357bfbb2Smrg test "$dlopen_self_static" = unknown; then 4357357bfbb2Smrg $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support." 4358357bfbb2Smrg fi 4359357bfbb2Smrg fi 4360357bfbb2Smrg 4361357bfbb2Smrg case $host in 4362357bfbb2Smrg *-*-rhapsody* | *-*-darwin1.[012]) 4363357bfbb2Smrg # On Rhapsody replace the C library is the System framework 4364357bfbb2Smrg compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'` 4365357bfbb2Smrg finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'` 4366357bfbb2Smrg ;; 4367357bfbb2Smrg esac 4368357bfbb2Smrg 4369357bfbb2Smrg case $host in 4370357bfbb2Smrg *darwin*) 4371357bfbb2Smrg # Don't allow lazy linking, it breaks C++ global constructors 4372357bfbb2Smrg if test "$tagname" = CXX ; then 4373357bfbb2Smrg compile_command="$compile_command ${wl}-bind_at_load" 4374357bfbb2Smrg finalize_command="$finalize_command ${wl}-bind_at_load" 4375357bfbb2Smrg fi 4376357bfbb2Smrg ;; 4377357bfbb2Smrg esac 4378357bfbb2Smrg 4379357bfbb2Smrg 4380357bfbb2Smrg # move library search paths that coincide with paths to not yet 4381357bfbb2Smrg # installed libraries to the beginning of the library search list 4382357bfbb2Smrg new_libs= 4383357bfbb2Smrg for path in $notinst_path; do 4384357bfbb2Smrg case " $new_libs " in 4385357bfbb2Smrg *" -L$path/$objdir "*) ;; 4386357bfbb2Smrg *) 4387357bfbb2Smrg case " $compile_deplibs " in 4388357bfbb2Smrg *" -L$path/$objdir "*) 4389357bfbb2Smrg new_libs="$new_libs -L$path/$objdir" ;; 4390357bfbb2Smrg esac 4391357bfbb2Smrg ;; 4392357bfbb2Smrg esac 4393357bfbb2Smrg done 4394357bfbb2Smrg for deplib in $compile_deplibs; do 4395357bfbb2Smrg case $deplib in 4396357bfbb2Smrg -L*) 4397357bfbb2Smrg case " $new_libs " in 4398357bfbb2Smrg *" $deplib "*) ;; 4399357bfbb2Smrg *) new_libs="$new_libs $deplib" ;; 4400357bfbb2Smrg esac 4401357bfbb2Smrg ;; 4402357bfbb2Smrg *) new_libs="$new_libs $deplib" ;; 4403357bfbb2Smrg esac 4404357bfbb2Smrg done 4405357bfbb2Smrg compile_deplibs="$new_libs" 4406357bfbb2Smrg 4407357bfbb2Smrg 4408357bfbb2Smrg compile_command="$compile_command $compile_deplibs" 4409357bfbb2Smrg finalize_command="$finalize_command $finalize_deplibs" 4410357bfbb2Smrg 4411357bfbb2Smrg if test -n "$rpath$xrpath"; then 4412357bfbb2Smrg # If the user specified any rpath flags, then add them. 4413357bfbb2Smrg for libdir in $rpath $xrpath; do 4414357bfbb2Smrg # This is the magic to use -rpath. 4415357bfbb2Smrg case "$finalize_rpath " in 4416357bfbb2Smrg *" $libdir "*) ;; 4417357bfbb2Smrg *) finalize_rpath="$finalize_rpath $libdir" ;; 4418357bfbb2Smrg esac 4419357bfbb2Smrg done 4420357bfbb2Smrg fi 4421357bfbb2Smrg 4422357bfbb2Smrg # Now hardcode the library paths 4423357bfbb2Smrg rpath= 4424357bfbb2Smrg hardcode_libdirs= 4425357bfbb2Smrg for libdir in $compile_rpath $finalize_rpath; do 4426357bfbb2Smrg if test -n "$hardcode_libdir_flag_spec"; then 4427357bfbb2Smrg if test -n "$hardcode_libdir_separator"; then 4428357bfbb2Smrg if test -z "$hardcode_libdirs"; then 4429357bfbb2Smrg hardcode_libdirs="$libdir" 4430357bfbb2Smrg else 4431357bfbb2Smrg # Just accumulate the unique libdirs. 4432357bfbb2Smrg case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 4433357bfbb2Smrg *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 4434357bfbb2Smrg ;; 4435357bfbb2Smrg *) 4436357bfbb2Smrg hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 4437357bfbb2Smrg ;; 4438357bfbb2Smrg esac 4439357bfbb2Smrg fi 4440357bfbb2Smrg else 4441357bfbb2Smrg eval flag=\"$hardcode_libdir_flag_spec\" 4442357bfbb2Smrg rpath="$rpath $flag" 4443357bfbb2Smrg fi 4444357bfbb2Smrg elif test -n "$runpath_var"; then 4445357bfbb2Smrg case "$perm_rpath " in 4446357bfbb2Smrg *" $libdir "*) ;; 4447357bfbb2Smrg *) perm_rpath="$perm_rpath $libdir" ;; 4448357bfbb2Smrg esac 4449357bfbb2Smrg fi 4450357bfbb2Smrg case $host in 4451357bfbb2Smrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) 4452357bfbb2Smrg testbindir=`$echo "X$libdir" | $Xsed -e 's*/lib$*/bin*'` 4453357bfbb2Smrg case :$dllsearchpath: in 4454357bfbb2Smrg *":$libdir:"*) ;; 4455357bfbb2Smrg *) dllsearchpath="$dllsearchpath:$libdir";; 4456357bfbb2Smrg esac 4457357bfbb2Smrg case :$dllsearchpath: in 4458357bfbb2Smrg *":$testbindir:"*) ;; 4459357bfbb2Smrg *) dllsearchpath="$dllsearchpath:$testbindir";; 4460357bfbb2Smrg esac 4461357bfbb2Smrg ;; 4462357bfbb2Smrg esac 4463357bfbb2Smrg done 4464357bfbb2Smrg # Substitute the hardcoded libdirs into the rpath. 4465357bfbb2Smrg if test -n "$hardcode_libdir_separator" && 4466357bfbb2Smrg test -n "$hardcode_libdirs"; then 4467357bfbb2Smrg libdir="$hardcode_libdirs" 4468357bfbb2Smrg eval rpath=\" $hardcode_libdir_flag_spec\" 4469357bfbb2Smrg fi 4470357bfbb2Smrg compile_rpath="$rpath" 4471357bfbb2Smrg 4472357bfbb2Smrg rpath= 4473357bfbb2Smrg hardcode_libdirs= 4474357bfbb2Smrg for libdir in $finalize_rpath; do 4475357bfbb2Smrg if test -n "$hardcode_libdir_flag_spec"; then 4476357bfbb2Smrg if test -n "$hardcode_libdir_separator"; then 4477357bfbb2Smrg if test -z "$hardcode_libdirs"; then 4478357bfbb2Smrg hardcode_libdirs="$libdir" 4479357bfbb2Smrg else 4480357bfbb2Smrg # Just accumulate the unique libdirs. 4481357bfbb2Smrg case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 4482357bfbb2Smrg *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 4483357bfbb2Smrg ;; 4484357bfbb2Smrg *) 4485357bfbb2Smrg hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 4486357bfbb2Smrg ;; 4487357bfbb2Smrg esac 4488357bfbb2Smrg fi 4489357bfbb2Smrg else 4490357bfbb2Smrg eval flag=\"$hardcode_libdir_flag_spec\" 4491357bfbb2Smrg rpath="$rpath $flag" 4492357bfbb2Smrg fi 4493357bfbb2Smrg elif test -n "$runpath_var"; then 4494357bfbb2Smrg case "$finalize_perm_rpath " in 4495357bfbb2Smrg *" $libdir "*) ;; 4496357bfbb2Smrg *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; 4497357bfbb2Smrg esac 4498357bfbb2Smrg fi 4499357bfbb2Smrg done 4500357bfbb2Smrg # Substitute the hardcoded libdirs into the rpath. 4501357bfbb2Smrg if test -n "$hardcode_libdir_separator" && 4502357bfbb2Smrg test -n "$hardcode_libdirs"; then 4503357bfbb2Smrg libdir="$hardcode_libdirs" 4504357bfbb2Smrg eval rpath=\" $hardcode_libdir_flag_spec\" 4505357bfbb2Smrg fi 4506357bfbb2Smrg finalize_rpath="$rpath" 4507357bfbb2Smrg 4508357bfbb2Smrg if test -n "$libobjs" && test "$build_old_libs" = yes; then 4509357bfbb2Smrg # Transform all the library objects into standard objects. 4510357bfbb2Smrg compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 4511357bfbb2Smrg finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 4512357bfbb2Smrg fi 4513357bfbb2Smrg 4514357bfbb2Smrg dlsyms= 4515357bfbb2Smrg if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 4516357bfbb2Smrg if test -n "$NM" && test -n "$global_symbol_pipe"; then 4517357bfbb2Smrg dlsyms="${outputname}S.c" 4518357bfbb2Smrg else 4519357bfbb2Smrg $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2 4520357bfbb2Smrg fi 4521357bfbb2Smrg fi 4522357bfbb2Smrg 4523357bfbb2Smrg if test -n "$dlsyms"; then 4524357bfbb2Smrg case $dlsyms in 4525357bfbb2Smrg "") ;; 4526357bfbb2Smrg *.c) 4527357bfbb2Smrg # Discover the nlist of each of the dlfiles. 4528357bfbb2Smrg nlist="$output_objdir/${outputname}.nm" 4529357bfbb2Smrg 4530357bfbb2Smrg $show "$rm $nlist ${nlist}S ${nlist}T" 4531357bfbb2Smrg $run $rm "$nlist" "${nlist}S" "${nlist}T" 4532357bfbb2Smrg 4533357bfbb2Smrg # Parse the name list into a source file. 4534357bfbb2Smrg $show "creating $output_objdir/$dlsyms" 4535357bfbb2Smrg 4536357bfbb2Smrg test -z "$run" && $echo > "$output_objdir/$dlsyms" "\ 4537357bfbb2Smrg/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */ 4538357bfbb2Smrg/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */ 4539357bfbb2Smrg 4540357bfbb2Smrg#ifdef __cplusplus 4541357bfbb2Smrgextern \"C\" { 4542357bfbb2Smrg#endif 4543357bfbb2Smrg 4544357bfbb2Smrg/* Prevent the only kind of declaration conflicts we can make. */ 4545357bfbb2Smrg#define lt_preloaded_symbols some_other_symbol 4546357bfbb2Smrg 4547357bfbb2Smrg/* External symbol declarations for the compiler. */\ 4548357bfbb2Smrg" 4549357bfbb2Smrg 4550357bfbb2Smrg if test "$dlself" = yes; then 4551357bfbb2Smrg $show "generating symbol list for \`$output'" 4552357bfbb2Smrg 4553357bfbb2Smrg test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist" 4554357bfbb2Smrg 4555357bfbb2Smrg # Add our own program objects to the symbol list. 4556357bfbb2Smrg progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 4557357bfbb2Smrg for arg in $progfiles; do 4558357bfbb2Smrg $show "extracting global C symbols from \`$arg'" 4559357bfbb2Smrg $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" 4560357bfbb2Smrg done 4561357bfbb2Smrg 4562357bfbb2Smrg if test -n "$exclude_expsyms"; then 4563357bfbb2Smrg $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' 4564357bfbb2Smrg $run eval '$mv "$nlist"T "$nlist"' 4565357bfbb2Smrg fi 4566357bfbb2Smrg 4567357bfbb2Smrg if test -n "$export_symbols_regex"; then 4568357bfbb2Smrg $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' 4569357bfbb2Smrg $run eval '$mv "$nlist"T "$nlist"' 4570357bfbb2Smrg fi 4571357bfbb2Smrg 4572357bfbb2Smrg # Prepare the list of exported symbols 4573357bfbb2Smrg if test -z "$export_symbols"; then 4574357bfbb2Smrg export_symbols="$output_objdir/$outputname.exp" 4575357bfbb2Smrg $run $rm $export_symbols 4576357bfbb2Smrg $run eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' 4577357bfbb2Smrg case $host in 4578357bfbb2Smrg *cygwin* | *mingw* ) 4579357bfbb2Smrg $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 4580357bfbb2Smrg $run eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' 4581357bfbb2Smrg ;; 4582357bfbb2Smrg esac 4583357bfbb2Smrg else 4584357bfbb2Smrg $run eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' 4585357bfbb2Smrg $run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' 4586357bfbb2Smrg $run eval 'mv "$nlist"T "$nlist"' 4587357bfbb2Smrg case $host in 4588357bfbb2Smrg *cygwin* | *mingw* ) 4589357bfbb2Smrg $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 4590357bfbb2Smrg $run eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' 4591357bfbb2Smrg ;; 4592357bfbb2Smrg esac 4593357bfbb2Smrg fi 4594357bfbb2Smrg fi 4595357bfbb2Smrg 4596357bfbb2Smrg for arg in $dlprefiles; do 4597357bfbb2Smrg $show "extracting global C symbols from \`$arg'" 4598357bfbb2Smrg name=`$echo "$arg" | ${SED} -e 's%^.*/%%'` 4599357bfbb2Smrg $run eval '$echo ": $name " >> "$nlist"' 4600357bfbb2Smrg $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" 4601357bfbb2Smrg done 4602357bfbb2Smrg 4603357bfbb2Smrg if test -z "$run"; then 4604357bfbb2Smrg # Make sure we have at least an empty file. 4605357bfbb2Smrg test -f "$nlist" || : > "$nlist" 4606357bfbb2Smrg 4607357bfbb2Smrg if test -n "$exclude_expsyms"; then 4608357bfbb2Smrg $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T 4609357bfbb2Smrg $mv "$nlist"T "$nlist" 4610357bfbb2Smrg fi 4611357bfbb2Smrg 4612357bfbb2Smrg # Try sorting and uniquifying the output. 4613357bfbb2Smrg if grep -v "^: " < "$nlist" | 4614357bfbb2Smrg if sort -k 3 </dev/null >/dev/null 2>&1; then 4615357bfbb2Smrg sort -k 3 4616357bfbb2Smrg else 4617357bfbb2Smrg sort +2 4618357bfbb2Smrg fi | 4619357bfbb2Smrg uniq > "$nlist"S; then 4620357bfbb2Smrg : 4621357bfbb2Smrg else 4622357bfbb2Smrg grep -v "^: " < "$nlist" > "$nlist"S 4623357bfbb2Smrg fi 4624357bfbb2Smrg 4625357bfbb2Smrg if test -f "$nlist"S; then 4626357bfbb2Smrg eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"' 4627357bfbb2Smrg else 4628357bfbb2Smrg $echo '/* NONE */' >> "$output_objdir/$dlsyms" 4629357bfbb2Smrg fi 4630357bfbb2Smrg 4631357bfbb2Smrg $echo >> "$output_objdir/$dlsyms" "\ 4632357bfbb2Smrg 4633357bfbb2Smrg#undef lt_preloaded_symbols 4634357bfbb2Smrg 4635357bfbb2Smrg#if defined (__STDC__) && __STDC__ 4636357bfbb2Smrg# define lt_ptr void * 4637357bfbb2Smrg#else 4638357bfbb2Smrg# define lt_ptr char * 4639357bfbb2Smrg# define const 4640357bfbb2Smrg#endif 4641357bfbb2Smrg 4642357bfbb2Smrg/* The mapping between symbol names and symbols. */ 4643357bfbb2Smrg" 4644357bfbb2Smrg 4645357bfbb2Smrg case $host in 4646357bfbb2Smrg *cygwin* | *mingw* ) 4647357bfbb2Smrg $echo >> "$output_objdir/$dlsyms" "\ 4648357bfbb2Smrg/* DATA imports from DLLs on WIN32 can't be const, because 4649357bfbb2Smrg runtime relocations are performed -- see ld's documentation 4650357bfbb2Smrg on pseudo-relocs */ 4651357bfbb2Smrgstruct { 4652357bfbb2Smrg" 4653357bfbb2Smrg ;; 4654357bfbb2Smrg * ) 4655357bfbb2Smrg $echo >> "$output_objdir/$dlsyms" "\ 4656357bfbb2Smrgconst struct { 4657357bfbb2Smrg" 4658357bfbb2Smrg ;; 4659357bfbb2Smrg esac 4660357bfbb2Smrg 4661357bfbb2Smrg 4662357bfbb2Smrg $echo >> "$output_objdir/$dlsyms" "\ 4663357bfbb2Smrg const char *name; 4664357bfbb2Smrg lt_ptr address; 4665357bfbb2Smrg} 4666357bfbb2Smrglt_preloaded_symbols[] = 4667357bfbb2Smrg{\ 4668357bfbb2Smrg" 4669357bfbb2Smrg 4670357bfbb2Smrg eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms" 4671357bfbb2Smrg 4672357bfbb2Smrg $echo >> "$output_objdir/$dlsyms" "\ 4673357bfbb2Smrg {0, (lt_ptr) 0} 4674357bfbb2Smrg}; 4675357bfbb2Smrg 4676357bfbb2Smrg/* This works around a problem in FreeBSD linker */ 4677357bfbb2Smrg#ifdef FREEBSD_WORKAROUND 4678357bfbb2Smrgstatic const void *lt_preloaded_setup() { 4679357bfbb2Smrg return lt_preloaded_symbols; 4680357bfbb2Smrg} 4681357bfbb2Smrg#endif 4682357bfbb2Smrg 4683357bfbb2Smrg#ifdef __cplusplus 4684357bfbb2Smrg} 4685357bfbb2Smrg#endif\ 4686357bfbb2Smrg" 4687357bfbb2Smrg fi 4688357bfbb2Smrg 4689357bfbb2Smrg pic_flag_for_symtable= 4690357bfbb2Smrg case $host in 4691357bfbb2Smrg # compiling the symbol table file with pic_flag works around 4692357bfbb2Smrg # a FreeBSD bug that causes programs to crash when -lm is 4693357bfbb2Smrg # linked before any other PIC object. But we must not use 4694357bfbb2Smrg # pic_flag when linking with -static. The problem exists in 4695357bfbb2Smrg # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. 4696357bfbb2Smrg *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) 4697357bfbb2Smrg case "$compile_command " in 4698357bfbb2Smrg *" -static "*) ;; 4699357bfbb2Smrg *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";; 4700357bfbb2Smrg esac;; 4701357bfbb2Smrg *-*-hpux*) 4702357bfbb2Smrg case "$compile_command " in 4703357bfbb2Smrg *" -static "*) ;; 4704357bfbb2Smrg *) pic_flag_for_symtable=" $pic_flag";; 4705357bfbb2Smrg esac 4706357bfbb2Smrg esac 4707357bfbb2Smrg 4708357bfbb2Smrg # Now compile the dynamic symbol file. 4709357bfbb2Smrg $show "(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" 4710357bfbb2Smrg $run eval '(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? 4711357bfbb2Smrg 4712357bfbb2Smrg # Clean up the generated files. 4713357bfbb2Smrg $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T" 4714357bfbb2Smrg $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T" 4715357bfbb2Smrg 4716357bfbb2Smrg # Transform the symbol file into the correct name. 4717357bfbb2Smrg case $host in 4718357bfbb2Smrg *cygwin* | *mingw* ) 4719357bfbb2Smrg if test -f "$output_objdir/${outputname}.def" ; then 4720357bfbb2Smrg compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%"` 4721357bfbb2Smrg finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%"` 4722357bfbb2Smrg else 4723357bfbb2Smrg compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` 4724357bfbb2Smrg finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` 4725357bfbb2Smrg fi 4726357bfbb2Smrg ;; 4727357bfbb2Smrg * ) 4728357bfbb2Smrg compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` 4729357bfbb2Smrg finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` 4730357bfbb2Smrg ;; 4731357bfbb2Smrg esac 4732357bfbb2Smrg ;; 4733357bfbb2Smrg *) 4734357bfbb2Smrg $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 4735357bfbb2Smrg exit $EXIT_FAILURE 4736357bfbb2Smrg ;; 4737357bfbb2Smrg esac 4738357bfbb2Smrg else 4739357bfbb2Smrg # We keep going just in case the user didn't refer to 4740357bfbb2Smrg # lt_preloaded_symbols. The linker will fail if global_symbol_pipe 4741357bfbb2Smrg # really was required. 4742357bfbb2Smrg 4743357bfbb2Smrg # Nullify the symbol file. 4744357bfbb2Smrg compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` 4745357bfbb2Smrg finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` 4746357bfbb2Smrg fi 4747357bfbb2Smrg 4748357bfbb2Smrg if test "$need_relink" = no || test "$build_libtool_libs" != yes; then 4749357bfbb2Smrg # Replace the output file specification. 4750357bfbb2Smrg compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` 4751357bfbb2Smrg link_command="$compile_command$compile_rpath" 4752357bfbb2Smrg 4753357bfbb2Smrg # We have no uninstalled library dependencies, so finalize right now. 4754357bfbb2Smrg $show "$link_command" 4755357bfbb2Smrg $run eval "$link_command" 4756357bfbb2Smrg exit_status=$? 4757357bfbb2Smrg 4758357bfbb2Smrg # Delete the generated files. 4759357bfbb2Smrg if test -n "$dlsyms"; then 4760357bfbb2Smrg $show "$rm $output_objdir/${outputname}S.${objext}" 4761357bfbb2Smrg $run $rm "$output_objdir/${outputname}S.${objext}" 4762357bfbb2Smrg fi 4763357bfbb2Smrg 4764357bfbb2Smrg exit $exit_status 4765357bfbb2Smrg fi 4766357bfbb2Smrg 4767357bfbb2Smrg if test -n "$shlibpath_var"; then 4768357bfbb2Smrg # We should set the shlibpath_var 4769357bfbb2Smrg rpath= 4770357bfbb2Smrg for dir in $temp_rpath; do 4771357bfbb2Smrg case $dir in 4772357bfbb2Smrg [\\/]* | [A-Za-z]:[\\/]*) 4773357bfbb2Smrg # Absolute path. 4774357bfbb2Smrg rpath="$rpath$dir:" 4775357bfbb2Smrg ;; 4776357bfbb2Smrg *) 4777357bfbb2Smrg # Relative path: add a thisdir entry. 4778357bfbb2Smrg rpath="$rpath\$thisdir/$dir:" 4779357bfbb2Smrg ;; 4780357bfbb2Smrg esac 4781357bfbb2Smrg done 4782357bfbb2Smrg temp_rpath="$rpath" 4783357bfbb2Smrg fi 4784357bfbb2Smrg 4785357bfbb2Smrg if test -n "$compile_shlibpath$finalize_shlibpath"; then 4786357bfbb2Smrg compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" 4787357bfbb2Smrg fi 4788357bfbb2Smrg if test -n "$finalize_shlibpath"; then 4789357bfbb2Smrg finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" 4790357bfbb2Smrg fi 4791357bfbb2Smrg 4792357bfbb2Smrg compile_var= 4793357bfbb2Smrg finalize_var= 4794357bfbb2Smrg if test -n "$runpath_var"; then 4795357bfbb2Smrg if test -n "$perm_rpath"; then 4796357bfbb2Smrg # We should set the runpath_var. 4797357bfbb2Smrg rpath= 4798357bfbb2Smrg for dir in $perm_rpath; do 4799357bfbb2Smrg rpath="$rpath$dir:" 4800357bfbb2Smrg done 4801357bfbb2Smrg compile_var="$runpath_var=\"$rpath\$$runpath_var\" " 4802357bfbb2Smrg fi 4803357bfbb2Smrg if test -n "$finalize_perm_rpath"; then 4804357bfbb2Smrg # We should set the runpath_var. 4805357bfbb2Smrg rpath= 4806357bfbb2Smrg for dir in $finalize_perm_rpath; do 4807357bfbb2Smrg rpath="$rpath$dir:" 4808357bfbb2Smrg done 4809357bfbb2Smrg finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " 4810357bfbb2Smrg fi 4811357bfbb2Smrg fi 4812357bfbb2Smrg 4813357bfbb2Smrg if test "$no_install" = yes; then 4814357bfbb2Smrg # We don't need to create a wrapper script. 4815357bfbb2Smrg link_command="$compile_var$compile_command$compile_rpath" 4816357bfbb2Smrg # Replace the output file specification. 4817357bfbb2Smrg link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` 4818357bfbb2Smrg # Delete the old output file. 4819357bfbb2Smrg $run $rm $output 4820357bfbb2Smrg # Link the executable and exit 4821357bfbb2Smrg $show "$link_command" 4822357bfbb2Smrg $run eval "$link_command" || exit $? 4823357bfbb2Smrg exit $EXIT_SUCCESS 4824357bfbb2Smrg fi 4825357bfbb2Smrg 4826357bfbb2Smrg if test "$hardcode_action" = relink; then 4827357bfbb2Smrg # Fast installation is not supported 4828357bfbb2Smrg link_command="$compile_var$compile_command$compile_rpath" 4829357bfbb2Smrg relink_command="$finalize_var$finalize_command$finalize_rpath" 4830357bfbb2Smrg 4831357bfbb2Smrg $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2 4832357bfbb2Smrg $echo "$modename: \`$output' will be relinked during installation" 1>&2 4833357bfbb2Smrg else 4834357bfbb2Smrg if test "$fast_install" != no; then 4835357bfbb2Smrg link_command="$finalize_var$compile_command$finalize_rpath" 4836357bfbb2Smrg if test "$fast_install" = yes; then 4837357bfbb2Smrg relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` 4838357bfbb2Smrg else 4839357bfbb2Smrg # fast_install is set to needless 4840357bfbb2Smrg relink_command= 4841357bfbb2Smrg fi 4842357bfbb2Smrg else 4843357bfbb2Smrg link_command="$compile_var$compile_command$compile_rpath" 4844357bfbb2Smrg relink_command="$finalize_var$finalize_command$finalize_rpath" 4845357bfbb2Smrg fi 4846357bfbb2Smrg fi 4847357bfbb2Smrg 4848357bfbb2Smrg # Replace the output file specification. 4849357bfbb2Smrg link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` 4850357bfbb2Smrg 4851357bfbb2Smrg # Delete the old output files. 4852357bfbb2Smrg $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname 4853357bfbb2Smrg 4854357bfbb2Smrg $show "$link_command" 4855357bfbb2Smrg $run eval "$link_command" || exit $? 4856357bfbb2Smrg 4857357bfbb2Smrg # Now create the wrapper script. 4858357bfbb2Smrg $show "creating $output" 4859357bfbb2Smrg 4860357bfbb2Smrg # Quote the relink command for shipping. 4861357bfbb2Smrg if test -n "$relink_command"; then 4862357bfbb2Smrg # Preserve any variables that may affect compiler behavior 4863357bfbb2Smrg for var in $variables_saved_for_relink; do 4864357bfbb2Smrg if eval test -z \"\${$var+set}\"; then 4865357bfbb2Smrg relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" 4866357bfbb2Smrg elif eval var_value=\$$var; test -z "$var_value"; then 4867357bfbb2Smrg relink_command="$var=; export $var; $relink_command" 4868357bfbb2Smrg else 4869357bfbb2Smrg var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` 4870357bfbb2Smrg relink_command="$var=\"$var_value\"; export $var; $relink_command" 4871357bfbb2Smrg fi 4872357bfbb2Smrg done 4873357bfbb2Smrg relink_command="(cd `pwd`; $relink_command)" 4874357bfbb2Smrg relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` 4875357bfbb2Smrg fi 4876357bfbb2Smrg 4877357bfbb2Smrg # Quote $echo for shipping. 4878357bfbb2Smrg if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then 4879357bfbb2Smrg case $progpath in 4880357bfbb2Smrg [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; 4881357bfbb2Smrg *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; 4882357bfbb2Smrg esac 4883357bfbb2Smrg qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"` 4884357bfbb2Smrg else 4885357bfbb2Smrg qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"` 4886357bfbb2Smrg fi 4887357bfbb2Smrg 4888357bfbb2Smrg # Only actually do things if our run command is non-null. 4889357bfbb2Smrg if test -z "$run"; then 4890357bfbb2Smrg # win32 will think the script is a binary if it has 4891357bfbb2Smrg # a .exe suffix, so we strip it off here. 4892357bfbb2Smrg case $output in 4893357bfbb2Smrg *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;; 4894357bfbb2Smrg esac 4895357bfbb2Smrg # test for cygwin because mv fails w/o .exe extensions 4896357bfbb2Smrg case $host in 4897357bfbb2Smrg *cygwin*) 4898357bfbb2Smrg exeext=.exe 4899357bfbb2Smrg outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;; 4900357bfbb2Smrg *) exeext= ;; 4901357bfbb2Smrg esac 4902357bfbb2Smrg case $host in 4903357bfbb2Smrg *cygwin* | *mingw* ) 4904357bfbb2Smrg output_name=`basename $output` 4905357bfbb2Smrg output_path=`dirname $output` 4906357bfbb2Smrg cwrappersource="$output_path/$objdir/lt-$output_name.c" 4907357bfbb2Smrg cwrapper="$output_path/$output_name.exe" 4908357bfbb2Smrg $rm $cwrappersource $cwrapper 4909357bfbb2Smrg trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 4910357bfbb2Smrg 4911357bfbb2Smrg cat > $cwrappersource <<EOF 4912357bfbb2Smrg 4913357bfbb2Smrg/* $cwrappersource - temporary wrapper executable for $objdir/$outputname 4914357bfbb2Smrg Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP 4915357bfbb2Smrg 4916357bfbb2Smrg The $output program cannot be directly executed until all the libtool 4917357bfbb2Smrg libraries that it depends on are installed. 4918357bfbb2Smrg 4919357bfbb2Smrg This wrapper executable should never be moved out of the build directory. 4920357bfbb2Smrg If it is, it will not operate correctly. 4921357bfbb2Smrg 4922357bfbb2Smrg Currently, it simply execs the wrapper *script* "/bin/sh $output", 4923357bfbb2Smrg but could eventually absorb all of the scripts functionality and 4924357bfbb2Smrg exec $objdir/$outputname directly. 4925357bfbb2Smrg*/ 4926357bfbb2SmrgEOF 4927357bfbb2Smrg cat >> $cwrappersource<<"EOF" 4928357bfbb2Smrg#include <stdio.h> 4929357bfbb2Smrg#include <stdlib.h> 4930357bfbb2Smrg#include <unistd.h> 4931357bfbb2Smrg#include <malloc.h> 4932357bfbb2Smrg#include <stdarg.h> 4933357bfbb2Smrg#include <assert.h> 4934357bfbb2Smrg#include <string.h> 4935357bfbb2Smrg#include <ctype.h> 4936357bfbb2Smrg#include <sys/stat.h> 4937357bfbb2Smrg 4938357bfbb2Smrg#if defined(PATH_MAX) 4939357bfbb2Smrg# define LT_PATHMAX PATH_MAX 4940357bfbb2Smrg#elif defined(MAXPATHLEN) 4941357bfbb2Smrg# define LT_PATHMAX MAXPATHLEN 4942357bfbb2Smrg#else 4943357bfbb2Smrg# define LT_PATHMAX 1024 4944357bfbb2Smrg#endif 4945357bfbb2Smrg 4946357bfbb2Smrg#ifndef DIR_SEPARATOR 4947357bfbb2Smrg# define DIR_SEPARATOR '/' 4948357bfbb2Smrg# define PATH_SEPARATOR ':' 4949357bfbb2Smrg#endif 4950357bfbb2Smrg 4951357bfbb2Smrg#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ 4952357bfbb2Smrg defined (__OS2__) 4953357bfbb2Smrg# define HAVE_DOS_BASED_FILE_SYSTEM 4954357bfbb2Smrg# ifndef DIR_SEPARATOR_2 4955357bfbb2Smrg# define DIR_SEPARATOR_2 '\\' 4956357bfbb2Smrg# endif 4957357bfbb2Smrg# ifndef PATH_SEPARATOR_2 4958357bfbb2Smrg# define PATH_SEPARATOR_2 ';' 4959357bfbb2Smrg# endif 4960357bfbb2Smrg#endif 4961357bfbb2Smrg 4962357bfbb2Smrg#ifndef DIR_SEPARATOR_2 4963357bfbb2Smrg# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) 4964357bfbb2Smrg#else /* DIR_SEPARATOR_2 */ 4965357bfbb2Smrg# define IS_DIR_SEPARATOR(ch) \ 4966357bfbb2Smrg (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) 4967357bfbb2Smrg#endif /* DIR_SEPARATOR_2 */ 4968357bfbb2Smrg 4969357bfbb2Smrg#ifndef PATH_SEPARATOR_2 4970357bfbb2Smrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) 4971357bfbb2Smrg#else /* PATH_SEPARATOR_2 */ 4972357bfbb2Smrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) 4973357bfbb2Smrg#endif /* PATH_SEPARATOR_2 */ 4974357bfbb2Smrg 4975357bfbb2Smrg#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) 4976357bfbb2Smrg#define XFREE(stale) do { \ 4977357bfbb2Smrg if (stale) { free ((void *) stale); stale = 0; } \ 4978357bfbb2Smrg} while (0) 4979357bfbb2Smrg 4980357bfbb2Smrg/* -DDEBUG is fairly common in CFLAGS. */ 4981357bfbb2Smrg#undef DEBUG 4982357bfbb2Smrg#if defined DEBUGWRAPPER 4983357bfbb2Smrg# define DEBUG(format, ...) fprintf(stderr, format, __VA_ARGS__) 4984357bfbb2Smrg#else 4985357bfbb2Smrg# define DEBUG(format, ...) 4986357bfbb2Smrg#endif 4987357bfbb2Smrg 4988357bfbb2Smrgconst char *program_name = NULL; 4989357bfbb2Smrg 4990357bfbb2Smrgvoid * xmalloc (size_t num); 4991357bfbb2Smrgchar * xstrdup (const char *string); 4992357bfbb2Smrgconst char * base_name (const char *name); 4993357bfbb2Smrgchar * find_executable(const char *wrapper); 4994357bfbb2Smrgint check_executable(const char *path); 4995357bfbb2Smrgchar * strendzap(char *str, const char *pat); 4996357bfbb2Smrgvoid lt_fatal (const char *message, ...); 4997357bfbb2Smrg 4998357bfbb2Smrgint 4999357bfbb2Smrgmain (int argc, char *argv[]) 5000357bfbb2Smrg{ 5001357bfbb2Smrg char **newargz; 5002357bfbb2Smrg int i; 5003357bfbb2Smrg 5004357bfbb2Smrg program_name = (char *) xstrdup (base_name (argv[0])); 5005357bfbb2Smrg DEBUG("(main) argv[0] : %s\n",argv[0]); 5006357bfbb2Smrg DEBUG("(main) program_name : %s\n",program_name); 5007357bfbb2Smrg newargz = XMALLOC(char *, argc+2); 5008357bfbb2SmrgEOF 5009357bfbb2Smrg 5010357bfbb2Smrg cat >> $cwrappersource <<EOF 5011357bfbb2Smrg newargz[0] = (char *) xstrdup("$SHELL"); 5012357bfbb2SmrgEOF 5013357bfbb2Smrg 5014357bfbb2Smrg cat >> $cwrappersource <<"EOF" 5015357bfbb2Smrg newargz[1] = find_executable(argv[0]); 5016357bfbb2Smrg if (newargz[1] == NULL) 5017357bfbb2Smrg lt_fatal("Couldn't find %s", argv[0]); 5018357bfbb2Smrg DEBUG("(main) found exe at : %s\n",newargz[1]); 5019357bfbb2Smrg /* we know the script has the same name, without the .exe */ 5020357bfbb2Smrg /* so make sure newargz[1] doesn't end in .exe */ 5021357bfbb2Smrg strendzap(newargz[1],".exe"); 5022357bfbb2Smrg for (i = 1; i < argc; i++) 5023357bfbb2Smrg newargz[i+1] = xstrdup(argv[i]); 5024357bfbb2Smrg newargz[argc+1] = NULL; 5025357bfbb2Smrg 5026357bfbb2Smrg for (i=0; i<argc+1; i++) 5027357bfbb2Smrg { 5028357bfbb2Smrg DEBUG("(main) newargz[%d] : %s\n",i,newargz[i]); 5029357bfbb2Smrg ; 5030357bfbb2Smrg } 5031357bfbb2Smrg 5032357bfbb2SmrgEOF 5033357bfbb2Smrg 5034357bfbb2Smrg case $host_os in 5035357bfbb2Smrg mingw*) 5036357bfbb2Smrg cat >> $cwrappersource <<EOF 5037357bfbb2Smrg execv("$SHELL",(char const **)newargz); 5038357bfbb2SmrgEOF 5039357bfbb2Smrg ;; 5040357bfbb2Smrg *) 5041357bfbb2Smrg cat >> $cwrappersource <<EOF 5042357bfbb2Smrg execv("$SHELL",newargz); 5043357bfbb2SmrgEOF 5044357bfbb2Smrg ;; 5045357bfbb2Smrg esac 5046357bfbb2Smrg 5047357bfbb2Smrg cat >> $cwrappersource <<"EOF" 5048357bfbb2Smrg return 127; 5049357bfbb2Smrg} 5050357bfbb2Smrg 5051357bfbb2Smrgvoid * 5052357bfbb2Smrgxmalloc (size_t num) 5053357bfbb2Smrg{ 5054357bfbb2Smrg void * p = (void *) malloc (num); 5055357bfbb2Smrg if (!p) 5056357bfbb2Smrg lt_fatal ("Memory exhausted"); 5057357bfbb2Smrg 5058357bfbb2Smrg return p; 5059357bfbb2Smrg} 5060357bfbb2Smrg 5061357bfbb2Smrgchar * 5062357bfbb2Smrgxstrdup (const char *string) 5063357bfbb2Smrg{ 5064357bfbb2Smrg return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL 5065357bfbb2Smrg; 5066357bfbb2Smrg} 5067357bfbb2Smrg 5068357bfbb2Smrgconst char * 5069357bfbb2Smrgbase_name (const char *name) 5070357bfbb2Smrg{ 5071357bfbb2Smrg const char *base; 5072357bfbb2Smrg 5073357bfbb2Smrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 5074357bfbb2Smrg /* Skip over the disk name in MSDOS pathnames. */ 5075357bfbb2Smrg if (isalpha ((unsigned char)name[0]) && name[1] == ':') 5076357bfbb2Smrg name += 2; 5077357bfbb2Smrg#endif 5078357bfbb2Smrg 5079357bfbb2Smrg for (base = name; *name; name++) 5080357bfbb2Smrg if (IS_DIR_SEPARATOR (*name)) 5081357bfbb2Smrg base = name + 1; 5082357bfbb2Smrg return base; 5083357bfbb2Smrg} 5084357bfbb2Smrg 5085357bfbb2Smrgint 5086357bfbb2Smrgcheck_executable(const char * path) 5087357bfbb2Smrg{ 5088357bfbb2Smrg struct stat st; 5089357bfbb2Smrg 5090357bfbb2Smrg DEBUG("(check_executable) : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!"); 5091357bfbb2Smrg if ((!path) || (!*path)) 5092357bfbb2Smrg return 0; 5093357bfbb2Smrg 5094357bfbb2Smrg if ((stat (path, &st) >= 0) && 5095357bfbb2Smrg ( 5096357bfbb2Smrg /* MinGW & native WIN32 do not support S_IXOTH or S_IXGRP */ 5097357bfbb2Smrg#if defined (S_IXOTH) 5098357bfbb2Smrg ((st.st_mode & S_IXOTH) == S_IXOTH) || 5099357bfbb2Smrg#endif 5100357bfbb2Smrg#if defined (S_IXGRP) 5101357bfbb2Smrg ((st.st_mode & S_IXGRP) == S_IXGRP) || 5102357bfbb2Smrg#endif 5103357bfbb2Smrg ((st.st_mode & S_IXUSR) == S_IXUSR)) 5104357bfbb2Smrg ) 5105357bfbb2Smrg return 1; 5106357bfbb2Smrg else 5107357bfbb2Smrg return 0; 5108357bfbb2Smrg} 5109357bfbb2Smrg 5110357bfbb2Smrg/* Searches for the full path of the wrapper. Returns 5111357bfbb2Smrg newly allocated full path name if found, NULL otherwise */ 5112357bfbb2Smrgchar * 5113357bfbb2Smrgfind_executable (const char* wrapper) 5114357bfbb2Smrg{ 5115357bfbb2Smrg int has_slash = 0; 5116357bfbb2Smrg const char* p; 5117357bfbb2Smrg const char* p_next; 5118357bfbb2Smrg /* static buffer for getcwd */ 5119357bfbb2Smrg char tmp[LT_PATHMAX + 1]; 5120357bfbb2Smrg int tmp_len; 5121357bfbb2Smrg char* concat_name; 5122357bfbb2Smrg 5123357bfbb2Smrg DEBUG("(find_executable) : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!"); 5124357bfbb2Smrg 5125357bfbb2Smrg if ((wrapper == NULL) || (*wrapper == '\0')) 5126357bfbb2Smrg return NULL; 5127357bfbb2Smrg 5128357bfbb2Smrg /* Absolute path? */ 5129357bfbb2Smrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 5130357bfbb2Smrg if (isalpha ((unsigned char)wrapper[0]) && wrapper[1] == ':') 5131357bfbb2Smrg { 5132357bfbb2Smrg concat_name = xstrdup (wrapper); 5133357bfbb2Smrg if (check_executable(concat_name)) 5134357bfbb2Smrg return concat_name; 5135357bfbb2Smrg XFREE(concat_name); 5136357bfbb2Smrg } 5137357bfbb2Smrg else 5138357bfbb2Smrg { 5139357bfbb2Smrg#endif 5140357bfbb2Smrg if (IS_DIR_SEPARATOR (wrapper[0])) 5141357bfbb2Smrg { 5142357bfbb2Smrg concat_name = xstrdup (wrapper); 5143357bfbb2Smrg if (check_executable(concat_name)) 5144357bfbb2Smrg return concat_name; 5145357bfbb2Smrg XFREE(concat_name); 5146357bfbb2Smrg } 5147357bfbb2Smrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 5148357bfbb2Smrg } 5149357bfbb2Smrg#endif 5150357bfbb2Smrg 5151357bfbb2Smrg for (p = wrapper; *p; p++) 5152357bfbb2Smrg if (*p == '/') 5153357bfbb2Smrg { 5154357bfbb2Smrg has_slash = 1; 5155357bfbb2Smrg break; 5156357bfbb2Smrg } 5157357bfbb2Smrg if (!has_slash) 5158357bfbb2Smrg { 5159357bfbb2Smrg /* no slashes; search PATH */ 5160357bfbb2Smrg const char* path = getenv ("PATH"); 5161357bfbb2Smrg if (path != NULL) 5162357bfbb2Smrg { 5163357bfbb2Smrg for (p = path; *p; p = p_next) 5164357bfbb2Smrg { 5165357bfbb2Smrg const char* q; 5166357bfbb2Smrg size_t p_len; 5167357bfbb2Smrg for (q = p; *q; q++) 5168357bfbb2Smrg if (IS_PATH_SEPARATOR(*q)) 5169357bfbb2Smrg break; 5170357bfbb2Smrg p_len = q - p; 5171357bfbb2Smrg p_next = (*q == '\0' ? q : q + 1); 5172357bfbb2Smrg if (p_len == 0) 5173357bfbb2Smrg { 5174357bfbb2Smrg /* empty path: current directory */ 5175357bfbb2Smrg if (getcwd (tmp, LT_PATHMAX) == NULL) 5176357bfbb2Smrg lt_fatal ("getcwd failed"); 5177357bfbb2Smrg tmp_len = strlen(tmp); 5178357bfbb2Smrg concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1); 5179357bfbb2Smrg memcpy (concat_name, tmp, tmp_len); 5180357bfbb2Smrg concat_name[tmp_len] = '/'; 5181357bfbb2Smrg strcpy (concat_name + tmp_len + 1, wrapper); 5182357bfbb2Smrg } 5183357bfbb2Smrg else 5184357bfbb2Smrg { 5185357bfbb2Smrg concat_name = XMALLOC(char, p_len + 1 + strlen(wrapper) + 1); 5186357bfbb2Smrg memcpy (concat_name, p, p_len); 5187357bfbb2Smrg concat_name[p_len] = '/'; 5188357bfbb2Smrg strcpy (concat_name + p_len + 1, wrapper); 5189357bfbb2Smrg } 5190357bfbb2Smrg if (check_executable(concat_name)) 5191357bfbb2Smrg return concat_name; 5192357bfbb2Smrg XFREE(concat_name); 5193357bfbb2Smrg } 5194357bfbb2Smrg } 5195357bfbb2Smrg /* not found in PATH; assume curdir */ 5196357bfbb2Smrg } 5197357bfbb2Smrg /* Relative path | not found in path: prepend cwd */ 5198357bfbb2Smrg if (getcwd (tmp, LT_PATHMAX) == NULL) 5199357bfbb2Smrg lt_fatal ("getcwd failed"); 5200357bfbb2Smrg tmp_len = strlen(tmp); 5201357bfbb2Smrg concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1); 5202357bfbb2Smrg memcpy (concat_name, tmp, tmp_len); 5203357bfbb2Smrg concat_name[tmp_len] = '/'; 5204357bfbb2Smrg strcpy (concat_name + tmp_len + 1, wrapper); 5205357bfbb2Smrg 5206357bfbb2Smrg if (check_executable(concat_name)) 5207357bfbb2Smrg return concat_name; 5208357bfbb2Smrg XFREE(concat_name); 5209357bfbb2Smrg return NULL; 5210357bfbb2Smrg} 5211357bfbb2Smrg 5212357bfbb2Smrgchar * 5213357bfbb2Smrgstrendzap(char *str, const char *pat) 5214357bfbb2Smrg{ 5215357bfbb2Smrg size_t len, patlen; 5216357bfbb2Smrg 5217357bfbb2Smrg assert(str != NULL); 5218357bfbb2Smrg assert(pat != NULL); 5219357bfbb2Smrg 5220357bfbb2Smrg len = strlen(str); 5221357bfbb2Smrg patlen = strlen(pat); 5222357bfbb2Smrg 5223357bfbb2Smrg if (patlen <= len) 5224357bfbb2Smrg { 5225357bfbb2Smrg str += len - patlen; 5226357bfbb2Smrg if (strcmp(str, pat) == 0) 5227357bfbb2Smrg *str = '\0'; 5228357bfbb2Smrg } 5229357bfbb2Smrg return str; 5230357bfbb2Smrg} 5231357bfbb2Smrg 5232357bfbb2Smrgstatic void 5233357bfbb2Smrglt_error_core (int exit_status, const char * mode, 5234357bfbb2Smrg const char * message, va_list ap) 5235357bfbb2Smrg{ 5236357bfbb2Smrg fprintf (stderr, "%s: %s: ", program_name, mode); 5237357bfbb2Smrg vfprintf (stderr, message, ap); 5238357bfbb2Smrg fprintf (stderr, ".\n"); 5239357bfbb2Smrg 5240357bfbb2Smrg if (exit_status >= 0) 5241357bfbb2Smrg exit (exit_status); 5242357bfbb2Smrg} 5243357bfbb2Smrg 5244357bfbb2Smrgvoid 5245357bfbb2Smrglt_fatal (const char *message, ...) 5246357bfbb2Smrg{ 5247357bfbb2Smrg va_list ap; 5248357bfbb2Smrg va_start (ap, message); 5249357bfbb2Smrg lt_error_core (EXIT_FAILURE, "FATAL", message, ap); 5250357bfbb2Smrg va_end (ap); 5251357bfbb2Smrg} 5252357bfbb2SmrgEOF 5253357bfbb2Smrg # we should really use a build-platform specific compiler 5254357bfbb2Smrg # here, but OTOH, the wrappers (shell script and this C one) 5255357bfbb2Smrg # are only useful if you want to execute the "real" binary. 5256357bfbb2Smrg # Since the "real" binary is built for $host, then this 5257357bfbb2Smrg # wrapper might as well be built for $host, too. 5258357bfbb2Smrg $run $LTCC $LTCFLAGS -s -o $cwrapper $cwrappersource 5259357bfbb2Smrg ;; 5260357bfbb2Smrg esac 5261357bfbb2Smrg $rm $output 5262357bfbb2Smrg trap "$rm $output; exit $EXIT_FAILURE" 1 2 15 5263357bfbb2Smrg 5264357bfbb2Smrg $echo > $output "\ 5265357bfbb2Smrg#! $SHELL 5266357bfbb2Smrg 5267357bfbb2Smrg# $output - temporary wrapper script for $objdir/$outputname 5268357bfbb2Smrg# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP 5269357bfbb2Smrg# 5270357bfbb2Smrg# The $output program cannot be directly executed until all the libtool 5271357bfbb2Smrg# libraries that it depends on are installed. 5272357bfbb2Smrg# 5273357bfbb2Smrg# This wrapper script should never be moved out of the build directory. 5274357bfbb2Smrg# If it is, it will not operate correctly. 5275357bfbb2Smrg 5276357bfbb2Smrg# Sed substitution that helps us do robust quoting. It backslashifies 5277357bfbb2Smrg# metacharacters that are still active within double-quoted strings. 5278357bfbb2SmrgXsed='${SED} -e 1s/^X//' 5279357bfbb2Smrgsed_quote_subst='$sed_quote_subst' 5280357bfbb2Smrg 5281357bfbb2Smrg# The HP-UX ksh and POSIX shell print the target directory to stdout 5282357bfbb2Smrg# if CDPATH is set. 5283357bfbb2Smrg(unset CDPATH) >/dev/null 2>&1 && unset CDPATH 5284357bfbb2Smrg 5285357bfbb2Smrgrelink_command=\"$relink_command\" 5286357bfbb2Smrg 5287357bfbb2Smrg# This environment variable determines our operation mode. 5288357bfbb2Smrgif test \"\$libtool_install_magic\" = \"$magic\"; then 5289357bfbb2Smrg # install mode needs the following variable: 5290357bfbb2Smrg notinst_deplibs='$notinst_deplibs' 5291357bfbb2Smrgelse 5292357bfbb2Smrg # When we are sourced in execute mode, \$file and \$echo are already set. 5293357bfbb2Smrg if test \"\$libtool_execute_magic\" != \"$magic\"; then 5294357bfbb2Smrg echo=\"$qecho\" 5295357bfbb2Smrg file=\"\$0\" 5296357bfbb2Smrg # Make sure echo works. 5297357bfbb2Smrg if test \"X\$1\" = X--no-reexec; then 5298357bfbb2Smrg # Discard the --no-reexec flag, and continue. 5299357bfbb2Smrg shift 5300357bfbb2Smrg elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then 5301357bfbb2Smrg # Yippee, \$echo works! 5302357bfbb2Smrg : 5303357bfbb2Smrg else 5304357bfbb2Smrg # Restart under the correct shell, and then maybe \$echo will work. 5305357bfbb2Smrg exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} 5306357bfbb2Smrg fi 5307357bfbb2Smrg fi\ 5308357bfbb2Smrg" 5309357bfbb2Smrg $echo >> $output "\ 5310357bfbb2Smrg 5311357bfbb2Smrg # Find the directory that this script lives in. 5312357bfbb2Smrg thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` 5313357bfbb2Smrg test \"x\$thisdir\" = \"x\$file\" && thisdir=. 5314357bfbb2Smrg 5315357bfbb2Smrg # Follow symbolic links until we get to the real thisdir. 5316357bfbb2Smrg file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` 5317357bfbb2Smrg while test -n \"\$file\"; do 5318357bfbb2Smrg destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` 5319357bfbb2Smrg 5320357bfbb2Smrg # If there was a directory component, then change thisdir. 5321357bfbb2Smrg if test \"x\$destdir\" != \"x\$file\"; then 5322357bfbb2Smrg case \"\$destdir\" in 5323357bfbb2Smrg [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; 5324357bfbb2Smrg *) thisdir=\"\$thisdir/\$destdir\" ;; 5325357bfbb2Smrg esac 5326357bfbb2Smrg fi 5327357bfbb2Smrg 5328357bfbb2Smrg file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` 5329357bfbb2Smrg file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` 5330357bfbb2Smrg done 5331357bfbb2Smrg 5332357bfbb2Smrg # Try to get the absolute directory name. 5333357bfbb2Smrg absdir=\`cd \"\$thisdir\" && pwd\` 5334357bfbb2Smrg test -n \"\$absdir\" && thisdir=\"\$absdir\" 5335357bfbb2Smrg" 5336357bfbb2Smrg 5337357bfbb2Smrg if test "$fast_install" = yes; then 5338357bfbb2Smrg $echo >> $output "\ 5339357bfbb2Smrg program=lt-'$outputname'$exeext 5340357bfbb2Smrg progdir=\"\$thisdir/$objdir\" 5341357bfbb2Smrg 5342357bfbb2Smrg if test ! -f \"\$progdir/\$program\" || \\ 5343357bfbb2Smrg { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ 5344357bfbb2Smrg test \"X\$file\" != \"X\$progdir/\$program\"; }; then 5345357bfbb2Smrg 5346357bfbb2Smrg file=\"\$\$-\$program\" 5347357bfbb2Smrg 5348357bfbb2Smrg if test ! -d \"\$progdir\"; then 5349357bfbb2Smrg $mkdir \"\$progdir\" 5350357bfbb2Smrg else 5351357bfbb2Smrg $rm \"\$progdir/\$file\" 5352357bfbb2Smrg fi" 5353357bfbb2Smrg 5354357bfbb2Smrg $echo >> $output "\ 5355357bfbb2Smrg 5356357bfbb2Smrg # relink executable if necessary 5357357bfbb2Smrg if test -n \"\$relink_command\"; then 5358357bfbb2Smrg if relink_command_output=\`eval \$relink_command 2>&1\`; then : 5359357bfbb2Smrg else 5360357bfbb2Smrg $echo \"\$relink_command_output\" >&2 5361357bfbb2Smrg $rm \"\$progdir/\$file\" 5362357bfbb2Smrg exit $EXIT_FAILURE 5363357bfbb2Smrg fi 5364357bfbb2Smrg fi 5365357bfbb2Smrg 5366357bfbb2Smrg $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || 5367357bfbb2Smrg { $rm \"\$progdir/\$program\"; 5368357bfbb2Smrg $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; } 5369357bfbb2Smrg $rm \"\$progdir/\$file\" 5370357bfbb2Smrg fi" 5371357bfbb2Smrg else 5372357bfbb2Smrg $echo >> $output "\ 5373357bfbb2Smrg program='$outputname' 5374357bfbb2Smrg progdir=\"\$thisdir/$objdir\" 5375357bfbb2Smrg" 5376357bfbb2Smrg fi 5377357bfbb2Smrg 5378357bfbb2Smrg $echo >> $output "\ 5379357bfbb2Smrg 5380357bfbb2Smrg if test -f \"\$progdir/\$program\"; then" 5381357bfbb2Smrg 5382357bfbb2Smrg # Export our shlibpath_var if we have one. 5383357bfbb2Smrg if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 5384357bfbb2Smrg $echo >> $output "\ 5385357bfbb2Smrg # Add our own library path to $shlibpath_var 5386357bfbb2Smrg $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" 5387357bfbb2Smrg 5388357bfbb2Smrg # Some systems cannot cope with colon-terminated $shlibpath_var 5389357bfbb2Smrg # The second colon is a workaround for a bug in BeOS R4 sed 5390357bfbb2Smrg $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` 5391357bfbb2Smrg 5392357bfbb2Smrg export $shlibpath_var 5393357bfbb2Smrg" 5394357bfbb2Smrg fi 5395357bfbb2Smrg 5396357bfbb2Smrg # fixup the dll searchpath if we need to. 5397357bfbb2Smrg if test -n "$dllsearchpath"; then 5398357bfbb2Smrg $echo >> $output "\ 5399357bfbb2Smrg # Add the dll search path components to the executable PATH 5400357bfbb2Smrg PATH=$dllsearchpath:\$PATH 5401357bfbb2Smrg" 5402357bfbb2Smrg fi 5403357bfbb2Smrg 5404357bfbb2Smrg $echo >> $output "\ 5405357bfbb2Smrg if test \"\$libtool_execute_magic\" != \"$magic\"; then 5406357bfbb2Smrg # Run the actual program with our arguments. 5407357bfbb2Smrg" 5408357bfbb2Smrg case $host in 5409357bfbb2Smrg # Backslashes separate directories on plain windows 5410357bfbb2Smrg *-*-mingw | *-*-os2*) 5411357bfbb2Smrg $echo >> $output "\ 5412357bfbb2Smrg exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} 5413357bfbb2Smrg" 5414357bfbb2Smrg ;; 5415357bfbb2Smrg 5416357bfbb2Smrg *) 5417357bfbb2Smrg $echo >> $output "\ 5418357bfbb2Smrg exec \"\$progdir/\$program\" \${1+\"\$@\"} 5419357bfbb2Smrg" 5420357bfbb2Smrg ;; 5421357bfbb2Smrg esac 5422357bfbb2Smrg $echo >> $output "\ 5423357bfbb2Smrg \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\" 5424357bfbb2Smrg exit $EXIT_FAILURE 5425357bfbb2Smrg fi 5426357bfbb2Smrg else 5427357bfbb2Smrg # The program doesn't exist. 5428357bfbb2Smrg \$echo \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 5429357bfbb2Smrg \$echo \"This script is just a wrapper for \$program.\" 1>&2 5430357bfbb2Smrg $echo \"See the $PACKAGE documentation for more information.\" 1>&2 5431357bfbb2Smrg exit $EXIT_FAILURE 5432357bfbb2Smrg fi 5433357bfbb2Smrgfi\ 5434357bfbb2Smrg" 5435357bfbb2Smrg chmod +x $output 5436357bfbb2Smrg fi 5437357bfbb2Smrg exit $EXIT_SUCCESS 5438357bfbb2Smrg ;; 5439357bfbb2Smrg esac 5440357bfbb2Smrg 5441357bfbb2Smrg # See if we need to build an old-fashioned archive. 5442357bfbb2Smrg for oldlib in $oldlibs; do 5443357bfbb2Smrg 5444357bfbb2Smrg if test "$build_libtool_libs" = convenience; then 5445357bfbb2Smrg oldobjs="$libobjs_save" 5446357bfbb2Smrg addlibs="$convenience" 5447357bfbb2Smrg build_libtool_libs=no 5448357bfbb2Smrg else 5449357bfbb2Smrg if test "$build_libtool_libs" = module; then 5450357bfbb2Smrg oldobjs="$libobjs_save" 5451357bfbb2Smrg build_libtool_libs=no 5452357bfbb2Smrg else 5453357bfbb2Smrg oldobjs="$old_deplibs $non_pic_objects" 5454357bfbb2Smrg fi 5455357bfbb2Smrg addlibs="$old_convenience" 5456357bfbb2Smrg fi 5457357bfbb2Smrg 5458357bfbb2Smrg if test -n "$addlibs"; then 5459357bfbb2Smrg gentop="$output_objdir/${outputname}x" 5460357bfbb2Smrg generated="$generated $gentop" 5461357bfbb2Smrg 5462357bfbb2Smrg func_extract_archives $gentop $addlibs 5463357bfbb2Smrg oldobjs="$oldobjs $func_extract_archives_result" 5464357bfbb2Smrg fi 5465357bfbb2Smrg 5466357bfbb2Smrg # Do each command in the archive commands. 5467357bfbb2Smrg if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then 5468357bfbb2Smrg cmds=$old_archive_from_new_cmds 5469357bfbb2Smrg else 5470357bfbb2Smrg # POSIX demands no paths to be encoded in archives. We have 5471357bfbb2Smrg # to avoid creating archives with duplicate basenames if we 5472357bfbb2Smrg # might have to extract them afterwards, e.g., when creating a 5473357bfbb2Smrg # static archive out of a convenience library, or when linking 5474357bfbb2Smrg # the entirety of a libtool archive into another (currently 5475357bfbb2Smrg # not supported by libtool). 5476357bfbb2Smrg if (for obj in $oldobjs 5477357bfbb2Smrg do 5478357bfbb2Smrg $echo "X$obj" | $Xsed -e 's%^.*/%%' 5479357bfbb2Smrg done | sort | sort -uc >/dev/null 2>&1); then 5480357bfbb2Smrg : 5481357bfbb2Smrg else 5482357bfbb2Smrg $echo "copying selected object files to avoid basename conflicts..." 5483357bfbb2Smrg 5484357bfbb2Smrg if test -z "$gentop"; then 5485357bfbb2Smrg gentop="$output_objdir/${outputname}x" 5486357bfbb2Smrg generated="$generated $gentop" 5487357bfbb2Smrg 5488357bfbb2Smrg $show "${rm}r $gentop" 5489357bfbb2Smrg $run ${rm}r "$gentop" 5490357bfbb2Smrg $show "$mkdir $gentop" 5491357bfbb2Smrg $run $mkdir "$gentop" 5492357bfbb2Smrg exit_status=$? 5493357bfbb2Smrg if test "$exit_status" -ne 0 && test ! -d "$gentop"; then 5494357bfbb2Smrg exit $exit_status 5495357bfbb2Smrg fi 5496357bfbb2Smrg fi 5497357bfbb2Smrg 5498357bfbb2Smrg save_oldobjs=$oldobjs 5499357bfbb2Smrg oldobjs= 5500357bfbb2Smrg counter=1 5501357bfbb2Smrg for obj in $save_oldobjs 5502357bfbb2Smrg do 5503357bfbb2Smrg objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` 5504357bfbb2Smrg case " $oldobjs " in 5505357bfbb2Smrg " ") oldobjs=$obj ;; 5506357bfbb2Smrg *[\ /]"$objbase "*) 5507357bfbb2Smrg while :; do 5508357bfbb2Smrg # Make sure we don't pick an alternate name that also 5509357bfbb2Smrg # overlaps. 5510357bfbb2Smrg newobj=lt$counter-$objbase 5511357bfbb2Smrg counter=`expr $counter + 1` 5512357bfbb2Smrg case " $oldobjs " in 5513357bfbb2Smrg *[\ /]"$newobj "*) ;; 5514357bfbb2Smrg *) if test ! -f "$gentop/$newobj"; then break; fi ;; 5515357bfbb2Smrg esac 5516357bfbb2Smrg done 5517357bfbb2Smrg $show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" 5518357bfbb2Smrg $run ln "$obj" "$gentop/$newobj" || 5519357bfbb2Smrg $run cp "$obj" "$gentop/$newobj" 5520357bfbb2Smrg oldobjs="$oldobjs $gentop/$newobj" 5521357bfbb2Smrg ;; 5522357bfbb2Smrg *) oldobjs="$oldobjs $obj" ;; 5523357bfbb2Smrg esac 5524357bfbb2Smrg done 5525357bfbb2Smrg fi 5526357bfbb2Smrg 5527357bfbb2Smrg eval cmds=\"$old_archive_cmds\" 5528357bfbb2Smrg 5529357bfbb2Smrg if len=`expr "X$cmds" : ".*"` && 5530357bfbb2Smrg test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then 5531357bfbb2Smrg cmds=$old_archive_cmds 5532357bfbb2Smrg else 5533357bfbb2Smrg # the command line is too long to link in one step, link in parts 5534357bfbb2Smrg $echo "using piecewise archive linking..." 5535357bfbb2Smrg save_RANLIB=$RANLIB 5536357bfbb2Smrg RANLIB=: 5537357bfbb2Smrg objlist= 5538357bfbb2Smrg concat_cmds= 5539357bfbb2Smrg save_oldobjs=$oldobjs 5540357bfbb2Smrg 5541357bfbb2Smrg # Is there a better way of finding the last object in the list? 5542357bfbb2Smrg for obj in $save_oldobjs 5543357bfbb2Smrg do 5544357bfbb2Smrg last_oldobj=$obj 5545357bfbb2Smrg done 5546357bfbb2Smrg for obj in $save_oldobjs 5547357bfbb2Smrg do 5548357bfbb2Smrg oldobjs="$objlist $obj" 5549357bfbb2Smrg objlist="$objlist $obj" 5550357bfbb2Smrg eval test_cmds=\"$old_archive_cmds\" 5551357bfbb2Smrg if len=`expr "X$test_cmds" : ".*" 2>/dev/null` && 5552357bfbb2Smrg test "$len" -le "$max_cmd_len"; then 5553357bfbb2Smrg : 5554357bfbb2Smrg else 5555357bfbb2Smrg # the above command should be used before it gets too long 5556357bfbb2Smrg oldobjs=$objlist 5557357bfbb2Smrg if test "$obj" = "$last_oldobj" ; then 5558357bfbb2Smrg RANLIB=$save_RANLIB 5559357bfbb2Smrg fi 5560357bfbb2Smrg test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 5561357bfbb2Smrg eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" 5562357bfbb2Smrg objlist= 5563357bfbb2Smrg fi 5564357bfbb2Smrg done 5565357bfbb2Smrg RANLIB=$save_RANLIB 5566357bfbb2Smrg oldobjs=$objlist 5567357bfbb2Smrg if test "X$oldobjs" = "X" ; then 5568357bfbb2Smrg eval cmds=\"\$concat_cmds\" 5569357bfbb2Smrg else 5570357bfbb2Smrg eval cmds=\"\$concat_cmds~\$old_archive_cmds\" 5571357bfbb2Smrg fi 5572357bfbb2Smrg fi 5573357bfbb2Smrg fi 5574357bfbb2Smrg save_ifs="$IFS"; IFS='~' 5575357bfbb2Smrg for cmd in $cmds; do 5576357bfbb2Smrg eval cmd=\"$cmd\" 5577357bfbb2Smrg IFS="$save_ifs" 5578357bfbb2Smrg $show "$cmd" 5579357bfbb2Smrg $run eval "$cmd" || exit $? 5580357bfbb2Smrg done 5581357bfbb2Smrg IFS="$save_ifs" 5582357bfbb2Smrg done 5583357bfbb2Smrg 5584357bfbb2Smrg if test -n "$generated"; then 5585357bfbb2Smrg $show "${rm}r$generated" 5586357bfbb2Smrg $run ${rm}r$generated 5587357bfbb2Smrg fi 5588357bfbb2Smrg 5589357bfbb2Smrg # Now create the libtool archive. 5590357bfbb2Smrg case $output in 5591357bfbb2Smrg *.la) 5592357bfbb2Smrg old_library= 5593357bfbb2Smrg test "$build_old_libs" = yes && old_library="$libname.$libext" 5594357bfbb2Smrg $show "creating $output" 5595357bfbb2Smrg 5596357bfbb2Smrg # Preserve any variables that may affect compiler behavior 5597357bfbb2Smrg for var in $variables_saved_for_relink; do 5598357bfbb2Smrg if eval test -z \"\${$var+set}\"; then 5599357bfbb2Smrg relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" 5600357bfbb2Smrg elif eval var_value=\$$var; test -z "$var_value"; then 5601357bfbb2Smrg relink_command="$var=; export $var; $relink_command" 5602357bfbb2Smrg else 5603357bfbb2Smrg var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` 5604357bfbb2Smrg relink_command="$var=\"$var_value\"; export $var; $relink_command" 5605357bfbb2Smrg fi 5606357bfbb2Smrg done 5607357bfbb2Smrg # Quote the link command for shipping. 5608357bfbb2Smrg relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" 5609357bfbb2Smrg relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` 5610357bfbb2Smrg if test "$hardcode_automatic" = yes ; then 5611357bfbb2Smrg relink_command= 5612357bfbb2Smrg fi 5613357bfbb2Smrg 5614357bfbb2Smrg 5615357bfbb2Smrg # Only create the output if not a dry run. 5616357bfbb2Smrg if test -z "$run"; then 5617357bfbb2Smrg for installed in no yes; do 5618357bfbb2Smrg if test "$installed" = yes; then 5619357bfbb2Smrg if test -z "$install_libdir"; then 5620357bfbb2Smrg break 5621357bfbb2Smrg fi 5622357bfbb2Smrg output="$output_objdir/$outputname"i 5623357bfbb2Smrg # Replace all uninstalled libtool libraries with the installed ones 5624357bfbb2Smrg newdependency_libs= 5625357bfbb2Smrg for deplib in $dependency_libs; do 5626357bfbb2Smrg case $deplib in 5627357bfbb2Smrg *.la) 5628357bfbb2Smrg name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'` 5629357bfbb2Smrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 5630357bfbb2Smrg if test -z "$libdir"; then 5631357bfbb2Smrg $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 5632357bfbb2Smrg exit $EXIT_FAILURE 5633357bfbb2Smrg fi 5634357bfbb2Smrg newdependency_libs="$newdependency_libs $libdir/$name" 5635357bfbb2Smrg ;; 5636357bfbb2Smrg *) newdependency_libs="$newdependency_libs $deplib" ;; 5637357bfbb2Smrg esac 5638357bfbb2Smrg done 5639357bfbb2Smrg dependency_libs="$newdependency_libs" 5640357bfbb2Smrg newdlfiles= 5641357bfbb2Smrg for lib in $dlfiles; do 5642357bfbb2Smrg name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` 5643357bfbb2Smrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 5644357bfbb2Smrg if test -z "$libdir"; then 5645357bfbb2Smrg $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 5646357bfbb2Smrg exit $EXIT_FAILURE 5647357bfbb2Smrg fi 5648357bfbb2Smrg newdlfiles="$newdlfiles $libdir/$name" 5649357bfbb2Smrg done 5650357bfbb2Smrg dlfiles="$newdlfiles" 5651357bfbb2Smrg newdlprefiles= 5652357bfbb2Smrg for lib in $dlprefiles; do 5653357bfbb2Smrg name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` 5654357bfbb2Smrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 5655357bfbb2Smrg if test -z "$libdir"; then 5656357bfbb2Smrg $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 5657357bfbb2Smrg exit $EXIT_FAILURE 5658357bfbb2Smrg fi 5659357bfbb2Smrg newdlprefiles="$newdlprefiles $libdir/$name" 5660357bfbb2Smrg done 5661357bfbb2Smrg dlprefiles="$newdlprefiles" 5662357bfbb2Smrg else 5663357bfbb2Smrg newdlfiles= 5664357bfbb2Smrg for lib in $dlfiles; do 5665357bfbb2Smrg case $lib in 5666357bfbb2Smrg [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 5667357bfbb2Smrg *) abs=`pwd`"/$lib" ;; 5668357bfbb2Smrg esac 5669357bfbb2Smrg newdlfiles="$newdlfiles $abs" 5670357bfbb2Smrg done 5671357bfbb2Smrg dlfiles="$newdlfiles" 5672357bfbb2Smrg newdlprefiles= 5673357bfbb2Smrg for lib in $dlprefiles; do 5674357bfbb2Smrg case $lib in 5675357bfbb2Smrg [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 5676357bfbb2Smrg *) abs=`pwd`"/$lib" ;; 5677357bfbb2Smrg esac 5678357bfbb2Smrg newdlprefiles="$newdlprefiles $abs" 5679357bfbb2Smrg done 5680357bfbb2Smrg dlprefiles="$newdlprefiles" 5681357bfbb2Smrg fi 5682357bfbb2Smrg $rm $output 5683357bfbb2Smrg # place dlname in correct position for cygwin 5684357bfbb2Smrg tdlname=$dlname 5685357bfbb2Smrg case $host,$output,$installed,$module,$dlname in 5686357bfbb2Smrg *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; 5687357bfbb2Smrg esac 5688357bfbb2Smrg $echo > $output "\ 5689357bfbb2Smrg# $outputname - a libtool library file 5690357bfbb2Smrg# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP 5691357bfbb2Smrg# 5692357bfbb2Smrg# Please DO NOT delete this file! 5693357bfbb2Smrg# It is necessary for linking the library. 5694357bfbb2Smrg 5695357bfbb2Smrg# The name that we can dlopen(3). 5696357bfbb2Smrgdlname='$tdlname' 5697357bfbb2Smrg 5698357bfbb2Smrg# Names of this library. 5699357bfbb2Smrglibrary_names='$library_names' 5700357bfbb2Smrg 5701357bfbb2Smrg# The name of the static archive. 5702357bfbb2Smrgold_library='$old_library' 5703357bfbb2Smrg 5704357bfbb2Smrg# Libraries that this one depends upon. 5705357bfbb2Smrgdependency_libs='$dependency_libs' 5706357bfbb2Smrg 5707357bfbb2Smrg# Version information for $libname. 5708357bfbb2Smrgcurrent=$current 5709357bfbb2Smrgage=$age 5710357bfbb2Smrgrevision=$revision 5711357bfbb2Smrg 5712357bfbb2Smrg# Is this an already installed library? 5713357bfbb2Smrginstalled=$installed 5714357bfbb2Smrg 5715357bfbb2Smrg# Should we warn about portability when linking against -modules? 5716357bfbb2Smrgshouldnotlink=$module 5717357bfbb2Smrg 5718357bfbb2Smrg# Files to dlopen/dlpreopen 5719357bfbb2Smrgdlopen='$dlfiles' 5720357bfbb2Smrgdlpreopen='$dlprefiles' 5721357bfbb2Smrg 5722357bfbb2Smrg# Directory that this library needs to be installed in: 5723357bfbb2Smrglibdir='$install_libdir'" 5724357bfbb2Smrg if test "$installed" = no && test "$need_relink" = yes; then 5725357bfbb2Smrg $echo >> $output "\ 5726357bfbb2Smrgrelink_command=\"$relink_command\"" 5727357bfbb2Smrg fi 5728357bfbb2Smrg done 5729357bfbb2Smrg fi 5730357bfbb2Smrg 5731357bfbb2Smrg # Do a symbolic link so that the libtool archive can be found in 5732357bfbb2Smrg # LD_LIBRARY_PATH before the program is installed. 5733357bfbb2Smrg $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" 5734357bfbb2Smrg $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $? 5735357bfbb2Smrg ;; 5736357bfbb2Smrg esac 5737357bfbb2Smrg exit $EXIT_SUCCESS 5738357bfbb2Smrg ;; 5739357bfbb2Smrg 5740357bfbb2Smrg # libtool install mode 5741357bfbb2Smrg install) 5742357bfbb2Smrg modename="$modename: install" 5743357bfbb2Smrg 5744357bfbb2Smrg # There may be an optional sh(1) argument at the beginning of 5745357bfbb2Smrg # install_prog (especially on Windows NT). 5746357bfbb2Smrg if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || 5747357bfbb2Smrg # Allow the use of GNU shtool's install command. 5748357bfbb2Smrg $echo "X$nonopt" | grep shtool > /dev/null; then 5749357bfbb2Smrg # Aesthetically quote it. 5750357bfbb2Smrg arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` 5751357bfbb2Smrg case $arg in 5752357bfbb2Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 5753357bfbb2Smrg arg="\"$arg\"" 5754357bfbb2Smrg ;; 5755357bfbb2Smrg esac 5756357bfbb2Smrg install_prog="$arg " 5757357bfbb2Smrg arg="$1" 5758357bfbb2Smrg shift 5759357bfbb2Smrg else 5760357bfbb2Smrg install_prog= 5761357bfbb2Smrg arg=$nonopt 5762357bfbb2Smrg fi 5763357bfbb2Smrg 5764357bfbb2Smrg # The real first argument should be the name of the installation program. 5765357bfbb2Smrg # Aesthetically quote it. 5766357bfbb2Smrg arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 5767357bfbb2Smrg case $arg in 5768357bfbb2Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 5769357bfbb2Smrg arg="\"$arg\"" 5770357bfbb2Smrg ;; 5771357bfbb2Smrg esac 5772357bfbb2Smrg install_prog="$install_prog$arg" 5773357bfbb2Smrg 5774357bfbb2Smrg # We need to accept at least all the BSD install flags. 5775357bfbb2Smrg dest= 5776357bfbb2Smrg files= 5777357bfbb2Smrg opts= 5778357bfbb2Smrg prev= 5779357bfbb2Smrg install_type= 5780357bfbb2Smrg isdir=no 5781357bfbb2Smrg stripme= 5782357bfbb2Smrg for arg 5783357bfbb2Smrg do 5784357bfbb2Smrg if test -n "$dest"; then 5785357bfbb2Smrg files="$files $dest" 5786357bfbb2Smrg dest=$arg 5787357bfbb2Smrg continue 5788357bfbb2Smrg fi 5789357bfbb2Smrg 5790357bfbb2Smrg case $arg in 5791357bfbb2Smrg -d) isdir=yes ;; 5792357bfbb2Smrg -f) 5793357bfbb2Smrg case " $install_prog " in 5794357bfbb2Smrg *[\\\ /]cp\ *) ;; 5795357bfbb2Smrg *) prev=$arg ;; 5796357bfbb2Smrg esac 5797357bfbb2Smrg ;; 5798357bfbb2Smrg -g | -m | -o) prev=$arg ;; 5799357bfbb2Smrg -s) 5800357bfbb2Smrg stripme=" -s" 5801357bfbb2Smrg continue 5802357bfbb2Smrg ;; 5803357bfbb2Smrg -*) 5804357bfbb2Smrg ;; 5805357bfbb2Smrg *) 5806357bfbb2Smrg # If the previous option needed an argument, then skip it. 5807357bfbb2Smrg if test -n "$prev"; then 5808357bfbb2Smrg prev= 5809357bfbb2Smrg else 5810357bfbb2Smrg dest=$arg 5811357bfbb2Smrg continue 5812357bfbb2Smrg fi 5813357bfbb2Smrg ;; 5814357bfbb2Smrg esac 5815357bfbb2Smrg 5816357bfbb2Smrg # Aesthetically quote the argument. 5817357bfbb2Smrg arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 5818357bfbb2Smrg case $arg in 5819357bfbb2Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 5820357bfbb2Smrg arg="\"$arg\"" 5821357bfbb2Smrg ;; 5822357bfbb2Smrg esac 5823357bfbb2Smrg install_prog="$install_prog $arg" 5824357bfbb2Smrg done 5825357bfbb2Smrg 5826357bfbb2Smrg if test -z "$install_prog"; then 5827357bfbb2Smrg $echo "$modename: you must specify an install program" 1>&2 5828357bfbb2Smrg $echo "$help" 1>&2 5829357bfbb2Smrg exit $EXIT_FAILURE 5830357bfbb2Smrg fi 5831357bfbb2Smrg 5832357bfbb2Smrg if test -n "$prev"; then 5833357bfbb2Smrg $echo "$modename: the \`$prev' option requires an argument" 1>&2 5834357bfbb2Smrg $echo "$help" 1>&2 5835357bfbb2Smrg exit $EXIT_FAILURE 5836357bfbb2Smrg fi 5837357bfbb2Smrg 5838357bfbb2Smrg if test -z "$files"; then 5839357bfbb2Smrg if test -z "$dest"; then 5840357bfbb2Smrg $echo "$modename: no file or destination specified" 1>&2 5841357bfbb2Smrg else 5842357bfbb2Smrg $echo "$modename: you must specify a destination" 1>&2 5843357bfbb2Smrg fi 5844357bfbb2Smrg $echo "$help" 1>&2 5845357bfbb2Smrg exit $EXIT_FAILURE 5846357bfbb2Smrg fi 5847357bfbb2Smrg 5848357bfbb2Smrg # Strip any trailing slash from the destination. 5849357bfbb2Smrg dest=`$echo "X$dest" | $Xsed -e 's%/$%%'` 5850357bfbb2Smrg 5851357bfbb2Smrg # Check to see that the destination is a directory. 5852357bfbb2Smrg test -d "$dest" && isdir=yes 5853357bfbb2Smrg if test "$isdir" = yes; then 5854357bfbb2Smrg destdir="$dest" 5855357bfbb2Smrg destname= 5856357bfbb2Smrg else 5857357bfbb2Smrg destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'` 5858357bfbb2Smrg test "X$destdir" = "X$dest" && destdir=. 5859357bfbb2Smrg destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'` 5860357bfbb2Smrg 5861357bfbb2Smrg # Not a directory, so check to see that there is only one file specified. 5862357bfbb2Smrg set dummy $files 5863357bfbb2Smrg if test "$#" -gt 2; then 5864357bfbb2Smrg $echo "$modename: \`$dest' is not a directory" 1>&2 5865357bfbb2Smrg $echo "$help" 1>&2 5866357bfbb2Smrg exit $EXIT_FAILURE 5867357bfbb2Smrg fi 5868357bfbb2Smrg fi 5869357bfbb2Smrg case $destdir in 5870357bfbb2Smrg [\\/]* | [A-Za-z]:[\\/]*) ;; 5871357bfbb2Smrg *) 5872357bfbb2Smrg for file in $files; do 5873357bfbb2Smrg case $file in 5874357bfbb2Smrg *.lo) ;; 5875357bfbb2Smrg *) 5876357bfbb2Smrg $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 5877357bfbb2Smrg $echo "$help" 1>&2 5878357bfbb2Smrg exit $EXIT_FAILURE 5879357bfbb2Smrg ;; 5880357bfbb2Smrg esac 5881357bfbb2Smrg done 5882357bfbb2Smrg ;; 5883357bfbb2Smrg esac 5884357bfbb2Smrg 5885357bfbb2Smrg # This variable tells wrapper scripts just to set variables rather 5886357bfbb2Smrg # than running their programs. 5887357bfbb2Smrg libtool_install_magic="$magic" 5888357bfbb2Smrg 5889357bfbb2Smrg staticlibs= 5890357bfbb2Smrg future_libdirs= 5891357bfbb2Smrg current_libdirs= 5892357bfbb2Smrg for file in $files; do 5893357bfbb2Smrg 5894357bfbb2Smrg # Do each installation. 5895357bfbb2Smrg case $file in 5896357bfbb2Smrg *.$libext) 5897357bfbb2Smrg # Do the static libraries later. 5898357bfbb2Smrg staticlibs="$staticlibs $file" 5899357bfbb2Smrg ;; 5900357bfbb2Smrg 5901357bfbb2Smrg *.la) 5902357bfbb2Smrg # Check to see that this really is a libtool archive. 5903357bfbb2Smrg if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : 5904357bfbb2Smrg else 5905357bfbb2Smrg $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 5906357bfbb2Smrg $echo "$help" 1>&2 5907357bfbb2Smrg exit $EXIT_FAILURE 5908357bfbb2Smrg fi 5909357bfbb2Smrg 5910357bfbb2Smrg library_names= 5911357bfbb2Smrg old_library= 5912357bfbb2Smrg relink_command= 5913357bfbb2Smrg # If there is no directory component, then add one. 5914357bfbb2Smrg case $file in 5915357bfbb2Smrg */* | *\\*) . $file ;; 5916357bfbb2Smrg *) . ./$file ;; 5917357bfbb2Smrg esac 5918357bfbb2Smrg 5919357bfbb2Smrg # Add the libdir to current_libdirs if it is the destination. 5920357bfbb2Smrg if test "X$destdir" = "X$libdir"; then 5921357bfbb2Smrg case "$current_libdirs " in 5922357bfbb2Smrg *" $libdir "*) ;; 5923357bfbb2Smrg *) current_libdirs="$current_libdirs $libdir" ;; 5924357bfbb2Smrg esac 5925357bfbb2Smrg else 5926357bfbb2Smrg # Note the libdir as a future libdir. 5927357bfbb2Smrg case "$future_libdirs " in 5928357bfbb2Smrg *" $libdir "*) ;; 5929357bfbb2Smrg *) future_libdirs="$future_libdirs $libdir" ;; 5930357bfbb2Smrg esac 5931357bfbb2Smrg fi 5932357bfbb2Smrg 5933357bfbb2Smrg dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/ 5934357bfbb2Smrg test "X$dir" = "X$file/" && dir= 5935357bfbb2Smrg dir="$dir$objdir" 5936357bfbb2Smrg 5937357bfbb2Smrg if test -n "$relink_command"; then 5938357bfbb2Smrg # Determine the prefix the user has applied to our future dir. 5939357bfbb2Smrg inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"` 5940357bfbb2Smrg 5941357bfbb2Smrg # Don't allow the user to place us outside of our expected 5942357bfbb2Smrg # location b/c this prevents finding dependent libraries that 5943357bfbb2Smrg # are installed to the same prefix. 5944357bfbb2Smrg # At present, this check doesn't affect windows .dll's that 5945357bfbb2Smrg # are installed into $libdir/../bin (currently, that works fine) 5946357bfbb2Smrg # but it's something to keep an eye on. 5947357bfbb2Smrg if test "$inst_prefix_dir" = "$destdir"; then 5948357bfbb2Smrg $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2 5949357bfbb2Smrg exit $EXIT_FAILURE 5950357bfbb2Smrg fi 5951357bfbb2Smrg 5952357bfbb2Smrg if test -n "$inst_prefix_dir"; then 5953357bfbb2Smrg # Stick the inst_prefix_dir data into the link command. 5954357bfbb2Smrg relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` 5955357bfbb2Smrg else 5956357bfbb2Smrg relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%%"` 5957357bfbb2Smrg fi 5958357bfbb2Smrg 5959357bfbb2Smrg $echo "$modename: warning: relinking \`$file'" 1>&2 5960357bfbb2Smrg $show "$relink_command" 5961357bfbb2Smrg if $run eval "$relink_command"; then : 5962357bfbb2Smrg else 5963357bfbb2Smrg $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 5964357bfbb2Smrg exit $EXIT_FAILURE 5965357bfbb2Smrg fi 5966357bfbb2Smrg fi 5967357bfbb2Smrg 5968357bfbb2Smrg # See the names of the shared library. 5969357bfbb2Smrg set dummy $library_names 5970357bfbb2Smrg if test -n "$2"; then 5971357bfbb2Smrg realname="$2" 5972357bfbb2Smrg shift 5973357bfbb2Smrg shift 5974357bfbb2Smrg 5975357bfbb2Smrg srcname="$realname" 5976357bfbb2Smrg test -n "$relink_command" && srcname="$realname"T 5977357bfbb2Smrg 5978357bfbb2Smrg # Install the shared library and build the symlinks. 5979357bfbb2Smrg $show "$install_prog $dir/$srcname $destdir/$realname" 5980357bfbb2Smrg $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $? 5981357bfbb2Smrg if test -n "$stripme" && test -n "$striplib"; then 5982357bfbb2Smrg $show "$striplib $destdir/$realname" 5983357bfbb2Smrg $run eval "$striplib $destdir/$realname" || exit $? 5984357bfbb2Smrg fi 5985357bfbb2Smrg 5986357bfbb2Smrg if test "$#" -gt 0; then 5987357bfbb2Smrg # Delete the old symlinks, and create new ones. 5988357bfbb2Smrg # Try `ln -sf' first, because the `ln' binary might depend on 5989357bfbb2Smrg # the symlink we replace! Solaris /bin/ln does not understand -f, 5990357bfbb2Smrg # so we also need to try rm && ln -s. 5991357bfbb2Smrg for linkname 5992357bfbb2Smrg do 5993357bfbb2Smrg if test "$linkname" != "$realname"; then 5994357bfbb2Smrg $show "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })" 5995357bfbb2Smrg $run eval "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })" 5996357bfbb2Smrg fi 5997357bfbb2Smrg done 5998357bfbb2Smrg fi 5999357bfbb2Smrg 6000357bfbb2Smrg # Do each command in the postinstall commands. 6001357bfbb2Smrg lib="$destdir/$realname" 6002357bfbb2Smrg cmds=$postinstall_cmds 6003357bfbb2Smrg save_ifs="$IFS"; IFS='~' 6004357bfbb2Smrg for cmd in $cmds; do 6005357bfbb2Smrg IFS="$save_ifs" 6006357bfbb2Smrg eval cmd=\"$cmd\" 6007357bfbb2Smrg $show "$cmd" 6008357bfbb2Smrg $run eval "$cmd" || { 6009357bfbb2Smrg lt_exit=$? 6010357bfbb2Smrg 6011357bfbb2Smrg # Restore the uninstalled library and exit 6012357bfbb2Smrg if test "$mode" = relink; then 6013357bfbb2Smrg $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)' 6014357bfbb2Smrg fi 6015357bfbb2Smrg 6016357bfbb2Smrg exit $lt_exit 6017357bfbb2Smrg } 6018357bfbb2Smrg done 6019357bfbb2Smrg IFS="$save_ifs" 6020357bfbb2Smrg fi 6021357bfbb2Smrg 6022357bfbb2Smrg # Install the pseudo-library for information purposes. 6023357bfbb2Smrg name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 6024357bfbb2Smrg instname="$dir/$name"i 6025357bfbb2Smrg $show "$install_prog $instname $destdir/$name" 6026357bfbb2Smrg $run eval "$install_prog $instname $destdir/$name" || exit $? 6027357bfbb2Smrg 6028357bfbb2Smrg # Maybe install the static library, too. 6029357bfbb2Smrg test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" 6030357bfbb2Smrg ;; 6031357bfbb2Smrg 6032357bfbb2Smrg *.lo) 6033357bfbb2Smrg # Install (i.e. copy) a libtool object. 6034357bfbb2Smrg 6035357bfbb2Smrg # Figure out destination file name, if it wasn't already specified. 6036357bfbb2Smrg if test -n "$destname"; then 6037357bfbb2Smrg destfile="$destdir/$destname" 6038357bfbb2Smrg else 6039357bfbb2Smrg destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 6040357bfbb2Smrg destfile="$destdir/$destfile" 6041357bfbb2Smrg fi 6042357bfbb2Smrg 6043357bfbb2Smrg # Deduce the name of the destination old-style object file. 6044357bfbb2Smrg case $destfile in 6045357bfbb2Smrg *.lo) 6046357bfbb2Smrg staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"` 6047357bfbb2Smrg ;; 6048357bfbb2Smrg *.$objext) 6049357bfbb2Smrg staticdest="$destfile" 6050357bfbb2Smrg destfile= 6051357bfbb2Smrg ;; 6052357bfbb2Smrg *) 6053357bfbb2Smrg $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 6054357bfbb2Smrg $echo "$help" 1>&2 6055357bfbb2Smrg exit $EXIT_FAILURE 6056357bfbb2Smrg ;; 6057357bfbb2Smrg esac 6058357bfbb2Smrg 6059357bfbb2Smrg # Install the libtool object if requested. 6060357bfbb2Smrg if test -n "$destfile"; then 6061357bfbb2Smrg $show "$install_prog $file $destfile" 6062357bfbb2Smrg $run eval "$install_prog $file $destfile" || exit $? 6063357bfbb2Smrg fi 6064357bfbb2Smrg 6065357bfbb2Smrg # Install the old object if enabled. 6066357bfbb2Smrg if test "$build_old_libs" = yes; then 6067357bfbb2Smrg # Deduce the name of the old-style object file. 6068357bfbb2Smrg staticobj=`$echo "X$file" | $Xsed -e "$lo2o"` 6069357bfbb2Smrg 6070357bfbb2Smrg $show "$install_prog $staticobj $staticdest" 6071357bfbb2Smrg $run eval "$install_prog \$staticobj \$staticdest" || exit $? 6072357bfbb2Smrg fi 6073357bfbb2Smrg exit $EXIT_SUCCESS 6074357bfbb2Smrg ;; 6075357bfbb2Smrg 6076357bfbb2Smrg *) 6077357bfbb2Smrg # Figure out destination file name, if it wasn't already specified. 6078357bfbb2Smrg if test -n "$destname"; then 6079357bfbb2Smrg destfile="$destdir/$destname" 6080357bfbb2Smrg else 6081357bfbb2Smrg destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 6082357bfbb2Smrg destfile="$destdir/$destfile" 6083357bfbb2Smrg fi 6084357bfbb2Smrg 6085357bfbb2Smrg # If the file is missing, and there is a .exe on the end, strip it 6086357bfbb2Smrg # because it is most likely a libtool script we actually want to 6087357bfbb2Smrg # install 6088357bfbb2Smrg stripped_ext="" 6089357bfbb2Smrg case $file in 6090357bfbb2Smrg *.exe) 6091357bfbb2Smrg if test ! -f "$file"; then 6092357bfbb2Smrg file=`$echo $file|${SED} 's,.exe$,,'` 6093357bfbb2Smrg stripped_ext=".exe" 6094357bfbb2Smrg fi 6095357bfbb2Smrg ;; 6096357bfbb2Smrg esac 6097357bfbb2Smrg 6098357bfbb2Smrg # Do a test to see if this is really a libtool program. 6099357bfbb2Smrg case $host in 6100357bfbb2Smrg *cygwin*|*mingw*) 6101357bfbb2Smrg wrapper=`$echo $file | ${SED} -e 's,.exe$,,'` 6102357bfbb2Smrg ;; 6103357bfbb2Smrg *) 6104357bfbb2Smrg wrapper=$file 6105357bfbb2Smrg ;; 6106357bfbb2Smrg esac 6107357bfbb2Smrg if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then 6108357bfbb2Smrg notinst_deplibs= 6109357bfbb2Smrg relink_command= 6110357bfbb2Smrg 6111357bfbb2Smrg # Note that it is not necessary on cygwin/mingw to append a dot to 6112357bfbb2Smrg # foo even if both foo and FILE.exe exist: automatic-append-.exe 6113357bfbb2Smrg # behavior happens only for exec(3), not for open(2)! Also, sourcing 6114357bfbb2Smrg # `FILE.' does not work on cygwin managed mounts. 6115357bfbb2Smrg # 6116357bfbb2Smrg # If there is no directory component, then add one. 6117357bfbb2Smrg case $wrapper in 6118357bfbb2Smrg */* | *\\*) . ${wrapper} ;; 6119357bfbb2Smrg *) . ./${wrapper} ;; 6120357bfbb2Smrg esac 6121357bfbb2Smrg 6122357bfbb2Smrg # Check the variables that should have been set. 6123357bfbb2Smrg if test -z "$notinst_deplibs"; then 6124357bfbb2Smrg $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2 6125357bfbb2Smrg exit $EXIT_FAILURE 6126357bfbb2Smrg fi 6127357bfbb2Smrg 6128357bfbb2Smrg finalize=yes 6129357bfbb2Smrg for lib in $notinst_deplibs; do 6130357bfbb2Smrg # Check to see that each library is installed. 6131357bfbb2Smrg libdir= 6132357bfbb2Smrg if test -f "$lib"; then 6133357bfbb2Smrg # If there is no directory component, then add one. 6134357bfbb2Smrg case $lib in 6135357bfbb2Smrg */* | *\\*) . $lib ;; 6136357bfbb2Smrg *) . ./$lib ;; 6137357bfbb2Smrg esac 6138357bfbb2Smrg fi 6139357bfbb2Smrg libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test 6140357bfbb2Smrg if test -n "$libdir" && test ! -f "$libfile"; then 6141357bfbb2Smrg $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 6142357bfbb2Smrg finalize=no 6143357bfbb2Smrg fi 6144357bfbb2Smrg done 6145357bfbb2Smrg 6146357bfbb2Smrg relink_command= 6147357bfbb2Smrg # Note that it is not necessary on cygwin/mingw to append a dot to 6148357bfbb2Smrg # foo even if both foo and FILE.exe exist: automatic-append-.exe 6149357bfbb2Smrg # behavior happens only for exec(3), not for open(2)! Also, sourcing 6150357bfbb2Smrg # `FILE.' does not work on cygwin managed mounts. 6151357bfbb2Smrg # 6152357bfbb2Smrg # If there is no directory component, then add one. 6153357bfbb2Smrg case $wrapper in 6154357bfbb2Smrg */* | *\\*) . ${wrapper} ;; 6155357bfbb2Smrg *) . ./${wrapper} ;; 6156357bfbb2Smrg esac 6157357bfbb2Smrg 6158357bfbb2Smrg outputname= 6159357bfbb2Smrg if test "$fast_install" = no && test -n "$relink_command"; then 6160357bfbb2Smrg if test "$finalize" = yes && test -z "$run"; then 6161357bfbb2Smrg tmpdir=`func_mktempdir` 6162357bfbb2Smrg file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'` 6163357bfbb2Smrg outputname="$tmpdir/$file" 6164357bfbb2Smrg # Replace the output file specification. 6165357bfbb2Smrg relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` 6166357bfbb2Smrg 6167357bfbb2Smrg $show "$relink_command" 6168357bfbb2Smrg if $run eval "$relink_command"; then : 6169357bfbb2Smrg else 6170357bfbb2Smrg $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 6171357bfbb2Smrg ${rm}r "$tmpdir" 6172357bfbb2Smrg continue 6173357bfbb2Smrg fi 6174357bfbb2Smrg file="$outputname" 6175357bfbb2Smrg else 6176357bfbb2Smrg $echo "$modename: warning: cannot relink \`$file'" 1>&2 6177357bfbb2Smrg fi 6178357bfbb2Smrg else 6179357bfbb2Smrg # Install the binary that we compiled earlier. 6180357bfbb2Smrg file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` 6181357bfbb2Smrg fi 6182357bfbb2Smrg fi 6183357bfbb2Smrg 6184357bfbb2Smrg # remove .exe since cygwin /usr/bin/install will append another 6185357bfbb2Smrg # one anyway 6186357bfbb2Smrg case $install_prog,$host in 6187357bfbb2Smrg */usr/bin/install*,*cygwin*) 6188357bfbb2Smrg case $file:$destfile in 6189357bfbb2Smrg *.exe:*.exe) 6190357bfbb2Smrg # this is ok 6191357bfbb2Smrg ;; 6192357bfbb2Smrg *.exe:*) 6193357bfbb2Smrg destfile=$destfile.exe 6194357bfbb2Smrg ;; 6195357bfbb2Smrg *:*.exe) 6196357bfbb2Smrg destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'` 6197357bfbb2Smrg ;; 6198357bfbb2Smrg esac 6199357bfbb2Smrg ;; 6200357bfbb2Smrg esac 6201357bfbb2Smrg $show "$install_prog$stripme $file $destfile" 6202357bfbb2Smrg $run eval "$install_prog\$stripme \$file \$destfile" || exit $? 6203357bfbb2Smrg test -n "$outputname" && ${rm}r "$tmpdir" 6204357bfbb2Smrg ;; 6205357bfbb2Smrg esac 6206357bfbb2Smrg done 6207357bfbb2Smrg 6208357bfbb2Smrg for file in $staticlibs; do 6209357bfbb2Smrg name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 6210357bfbb2Smrg 6211357bfbb2Smrg # Set up the ranlib parameters. 6212357bfbb2Smrg oldlib="$destdir/$name" 6213357bfbb2Smrg 6214357bfbb2Smrg $show "$install_prog $file $oldlib" 6215357bfbb2Smrg $run eval "$install_prog \$file \$oldlib" || exit $? 6216357bfbb2Smrg 6217357bfbb2Smrg if test -n "$stripme" && test -n "$old_striplib"; then 6218357bfbb2Smrg $show "$old_striplib $oldlib" 6219357bfbb2Smrg $run eval "$old_striplib $oldlib" || exit $? 6220357bfbb2Smrg fi 6221357bfbb2Smrg 6222357bfbb2Smrg # Do each command in the postinstall commands. 6223357bfbb2Smrg cmds=$old_postinstall_cmds 6224357bfbb2Smrg save_ifs="$IFS"; IFS='~' 6225357bfbb2Smrg for cmd in $cmds; do 6226357bfbb2Smrg IFS="$save_ifs" 6227357bfbb2Smrg eval cmd=\"$cmd\" 6228357bfbb2Smrg $show "$cmd" 6229357bfbb2Smrg $run eval "$cmd" || exit $? 6230357bfbb2Smrg done 6231357bfbb2Smrg IFS="$save_ifs" 6232357bfbb2Smrg done 6233357bfbb2Smrg 6234357bfbb2Smrg if test -n "$future_libdirs"; then 6235357bfbb2Smrg $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2 6236357bfbb2Smrg fi 6237357bfbb2Smrg 6238357bfbb2Smrg if test -n "$current_libdirs"; then 6239357bfbb2Smrg # Maybe just do a dry run. 6240357bfbb2Smrg test -n "$run" && current_libdirs=" -n$current_libdirs" 6241357bfbb2Smrg exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' 6242357bfbb2Smrg else 6243357bfbb2Smrg exit $EXIT_SUCCESS 6244357bfbb2Smrg fi 6245357bfbb2Smrg ;; 6246357bfbb2Smrg 6247357bfbb2Smrg # libtool finish mode 6248357bfbb2Smrg finish) 6249357bfbb2Smrg modename="$modename: finish" 6250357bfbb2Smrg libdirs="$nonopt" 6251357bfbb2Smrg admincmds= 6252357bfbb2Smrg 6253357bfbb2Smrg if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then 6254357bfbb2Smrg for dir 6255357bfbb2Smrg do 6256357bfbb2Smrg libdirs="$libdirs $dir" 6257357bfbb2Smrg done 6258357bfbb2Smrg 6259357bfbb2Smrg for libdir in $libdirs; do 6260357bfbb2Smrg if test -n "$finish_cmds"; then 6261357bfbb2Smrg # Do each command in the finish commands. 6262357bfbb2Smrg cmds=$finish_cmds 6263357bfbb2Smrg save_ifs="$IFS"; IFS='~' 6264357bfbb2Smrg for cmd in $cmds; do 6265357bfbb2Smrg IFS="$save_ifs" 6266357bfbb2Smrg eval cmd=\"$cmd\" 6267357bfbb2Smrg $show "$cmd" 6268357bfbb2Smrg $run eval "$cmd" || admincmds="$admincmds 6269357bfbb2Smrg $cmd" 6270357bfbb2Smrg done 6271357bfbb2Smrg IFS="$save_ifs" 6272357bfbb2Smrg fi 6273357bfbb2Smrg if test -n "$finish_eval"; then 6274357bfbb2Smrg # Do the single finish_eval. 6275357bfbb2Smrg eval cmds=\"$finish_eval\" 6276357bfbb2Smrg $run eval "$cmds" || admincmds="$admincmds 6277357bfbb2Smrg $cmds" 6278357bfbb2Smrg fi 6279357bfbb2Smrg done 6280357bfbb2Smrg fi 6281357bfbb2Smrg 6282357bfbb2Smrg # Exit here if they wanted silent mode. 6283357bfbb2Smrg test "$show" = : && exit $EXIT_SUCCESS 6284357bfbb2Smrg 6285357bfbb2Smrg exit $EXIT_SUCCESS 6286357bfbb2Smrg ;; 6287357bfbb2Smrg 6288357bfbb2Smrg # libtool execute mode 6289357bfbb2Smrg execute) 6290357bfbb2Smrg modename="$modename: execute" 6291357bfbb2Smrg 6292357bfbb2Smrg # The first argument is the command name. 6293357bfbb2Smrg cmd="$nonopt" 6294357bfbb2Smrg if test -z "$cmd"; then 6295357bfbb2Smrg $echo "$modename: you must specify a COMMAND" 1>&2 6296357bfbb2Smrg $echo "$help" 6297357bfbb2Smrg exit $EXIT_FAILURE 6298357bfbb2Smrg fi 6299357bfbb2Smrg 6300357bfbb2Smrg # Handle -dlopen flags immediately. 6301357bfbb2Smrg for file in $execute_dlfiles; do 6302357bfbb2Smrg if test ! -f "$file"; then 6303357bfbb2Smrg $echo "$modename: \`$file' is not a file" 1>&2 6304357bfbb2Smrg $echo "$help" 1>&2 6305357bfbb2Smrg exit $EXIT_FAILURE 6306357bfbb2Smrg fi 6307357bfbb2Smrg 6308357bfbb2Smrg dir= 6309357bfbb2Smrg case $file in 6310357bfbb2Smrg *.la) 6311357bfbb2Smrg # Check to see that this really is a libtool archive. 6312357bfbb2Smrg if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : 6313357bfbb2Smrg else 6314357bfbb2Smrg $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 6315357bfbb2Smrg $echo "$help" 1>&2 6316357bfbb2Smrg exit $EXIT_FAILURE 6317357bfbb2Smrg fi 6318357bfbb2Smrg 6319357bfbb2Smrg # Read the libtool library. 6320357bfbb2Smrg dlname= 6321357bfbb2Smrg library_names= 6322357bfbb2Smrg 6323357bfbb2Smrg # If there is no directory component, then add one. 6324357bfbb2Smrg case $file in 6325357bfbb2Smrg */* | *\\*) . $file ;; 6326357bfbb2Smrg *) . ./$file ;; 6327357bfbb2Smrg esac 6328357bfbb2Smrg 6329357bfbb2Smrg # Skip this library if it cannot be dlopened. 6330357bfbb2Smrg if test -z "$dlname"; then 6331357bfbb2Smrg # Warn if it was a shared library. 6332357bfbb2Smrg test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'" 6333357bfbb2Smrg continue 6334357bfbb2Smrg fi 6335357bfbb2Smrg 6336357bfbb2Smrg dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` 6337357bfbb2Smrg test "X$dir" = "X$file" && dir=. 6338357bfbb2Smrg 6339357bfbb2Smrg if test -f "$dir/$objdir/$dlname"; then 6340357bfbb2Smrg dir="$dir/$objdir" 6341357bfbb2Smrg else 6342357bfbb2Smrg $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 6343357bfbb2Smrg exit $EXIT_FAILURE 6344357bfbb2Smrg fi 6345357bfbb2Smrg ;; 6346357bfbb2Smrg 6347357bfbb2Smrg *.lo) 6348357bfbb2Smrg # Just add the directory containing the .lo file. 6349357bfbb2Smrg dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` 6350357bfbb2Smrg test "X$dir" = "X$file" && dir=. 6351357bfbb2Smrg ;; 6352357bfbb2Smrg 6353357bfbb2Smrg *) 6354357bfbb2Smrg $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2 6355357bfbb2Smrg continue 6356357bfbb2Smrg ;; 6357357bfbb2Smrg esac 6358357bfbb2Smrg 6359357bfbb2Smrg # Get the absolute pathname. 6360357bfbb2Smrg absdir=`cd "$dir" && pwd` 6361357bfbb2Smrg test -n "$absdir" && dir="$absdir" 6362357bfbb2Smrg 6363357bfbb2Smrg # Now add the directory to shlibpath_var. 6364357bfbb2Smrg if eval "test -z \"\$$shlibpath_var\""; then 6365357bfbb2Smrg eval "$shlibpath_var=\"\$dir\"" 6366357bfbb2Smrg else 6367357bfbb2Smrg eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" 6368357bfbb2Smrg fi 6369357bfbb2Smrg done 6370357bfbb2Smrg 6371357bfbb2Smrg # This variable tells wrapper scripts just to set shlibpath_var 6372357bfbb2Smrg # rather than running their programs. 6373357bfbb2Smrg libtool_execute_magic="$magic" 6374357bfbb2Smrg 6375357bfbb2Smrg # Check if any of the arguments is a wrapper script. 6376357bfbb2Smrg args= 6377357bfbb2Smrg for file 6378357bfbb2Smrg do 6379357bfbb2Smrg case $file in 6380357bfbb2Smrg -*) ;; 6381357bfbb2Smrg *) 6382357bfbb2Smrg # Do a test to see if this is really a libtool program. 6383357bfbb2Smrg if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 6384357bfbb2Smrg # If there is no directory component, then add one. 6385357bfbb2Smrg case $file in 6386357bfbb2Smrg */* | *\\*) . $file ;; 6387357bfbb2Smrg *) . ./$file ;; 6388357bfbb2Smrg esac 6389357bfbb2Smrg 6390357bfbb2Smrg # Transform arg to wrapped name. 6391357bfbb2Smrg file="$progdir/$program" 6392357bfbb2Smrg fi 6393357bfbb2Smrg ;; 6394357bfbb2Smrg esac 6395357bfbb2Smrg # Quote arguments (to preserve shell metacharacters). 6396357bfbb2Smrg file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"` 6397357bfbb2Smrg args="$args \"$file\"" 6398357bfbb2Smrg done 6399357bfbb2Smrg 6400357bfbb2Smrg if test -z "$run"; then 6401357bfbb2Smrg if test -n "$shlibpath_var"; then 6402357bfbb2Smrg # Export the shlibpath_var. 6403357bfbb2Smrg eval "export $shlibpath_var" 6404357bfbb2Smrg fi 6405357bfbb2Smrg 6406357bfbb2Smrg # Restore saved environment variables 6407357bfbb2Smrg if test "${save_LC_ALL+set}" = set; then 6408357bfbb2Smrg LC_ALL="$save_LC_ALL"; export LC_ALL 6409357bfbb2Smrg fi 6410357bfbb2Smrg if test "${save_LANG+set}" = set; then 6411357bfbb2Smrg LANG="$save_LANG"; export LANG 6412357bfbb2Smrg fi 6413357bfbb2Smrg 6414357bfbb2Smrg # Now prepare to actually exec the command. 6415357bfbb2Smrg exec_cmd="\$cmd$args" 6416357bfbb2Smrg else 6417357bfbb2Smrg # Display what would be done. 6418357bfbb2Smrg if test -n "$shlibpath_var"; then 6419357bfbb2Smrg eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\"" 6420357bfbb2Smrg $echo "export $shlibpath_var" 6421357bfbb2Smrg fi 6422357bfbb2Smrg $echo "$cmd$args" 6423357bfbb2Smrg exit $EXIT_SUCCESS 6424357bfbb2Smrg fi 6425357bfbb2Smrg ;; 6426357bfbb2Smrg 6427357bfbb2Smrg # libtool clean and uninstall mode 6428357bfbb2Smrg clean | uninstall) 6429357bfbb2Smrg modename="$modename: $mode" 6430357bfbb2Smrg rm="$nonopt" 6431357bfbb2Smrg files= 6432357bfbb2Smrg rmforce= 6433357bfbb2Smrg exit_status=0 6434357bfbb2Smrg 6435357bfbb2Smrg # This variable tells wrapper scripts just to set variables rather 6436357bfbb2Smrg # than running their programs. 6437357bfbb2Smrg libtool_install_magic="$magic" 6438357bfbb2Smrg 6439357bfbb2Smrg for arg 6440357bfbb2Smrg do 6441357bfbb2Smrg case $arg in 6442357bfbb2Smrg -f) rm="$rm $arg"; rmforce=yes ;; 6443357bfbb2Smrg -*) rm="$rm $arg" ;; 6444357bfbb2Smrg *) files="$files $arg" ;; 6445357bfbb2Smrg esac 6446357bfbb2Smrg done 6447357bfbb2Smrg 6448357bfbb2Smrg if test -z "$rm"; then 6449357bfbb2Smrg $echo "$modename: you must specify an RM program" 1>&2 6450357bfbb2Smrg $echo "$help" 1>&2 6451357bfbb2Smrg exit $EXIT_FAILURE 6452357bfbb2Smrg fi 6453357bfbb2Smrg 6454357bfbb2Smrg rmdirs= 6455357bfbb2Smrg 6456357bfbb2Smrg origobjdir="$objdir" 6457357bfbb2Smrg for file in $files; do 6458357bfbb2Smrg dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` 6459357bfbb2Smrg if test "X$dir" = "X$file"; then 6460357bfbb2Smrg dir=. 6461357bfbb2Smrg objdir="$origobjdir" 6462357bfbb2Smrg else 6463357bfbb2Smrg objdir="$dir/$origobjdir" 6464357bfbb2Smrg fi 6465357bfbb2Smrg name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 6466357bfbb2Smrg test "$mode" = uninstall && objdir="$dir" 6467357bfbb2Smrg 6468357bfbb2Smrg # Remember objdir for removal later, being careful to avoid duplicates 6469357bfbb2Smrg if test "$mode" = clean; then 6470357bfbb2Smrg case " $rmdirs " in 6471357bfbb2Smrg *" $objdir "*) ;; 6472357bfbb2Smrg *) rmdirs="$rmdirs $objdir" ;; 6473357bfbb2Smrg esac 6474357bfbb2Smrg fi 6475357bfbb2Smrg 6476357bfbb2Smrg # Don't error if the file doesn't exist and rm -f was used. 6477357bfbb2Smrg if (test -L "$file") >/dev/null 2>&1 \ 6478357bfbb2Smrg || (test -h "$file") >/dev/null 2>&1 \ 6479357bfbb2Smrg || test -f "$file"; then 6480357bfbb2Smrg : 6481357bfbb2Smrg elif test -d "$file"; then 6482357bfbb2Smrg exit_status=1 6483357bfbb2Smrg continue 6484357bfbb2Smrg elif test "$rmforce" = yes; then 6485357bfbb2Smrg continue 6486357bfbb2Smrg fi 6487357bfbb2Smrg 6488357bfbb2Smrg rmfiles="$file" 6489357bfbb2Smrg 6490357bfbb2Smrg case $name in 6491357bfbb2Smrg *.la) 6492357bfbb2Smrg # Possibly a libtool archive, so verify it. 6493357bfbb2Smrg if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 6494357bfbb2Smrg . $dir/$name 6495357bfbb2Smrg 6496357bfbb2Smrg # Delete the libtool libraries and symlinks. 6497357bfbb2Smrg for n in $library_names; do 6498357bfbb2Smrg rmfiles="$rmfiles $objdir/$n" 6499357bfbb2Smrg done 6500357bfbb2Smrg test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" 6501357bfbb2Smrg 6502357bfbb2Smrg case "$mode" in 6503357bfbb2Smrg clean) 6504357bfbb2Smrg case " $library_names " in 6505357bfbb2Smrg # " " in the beginning catches empty $dlname 6506357bfbb2Smrg *" $dlname "*) ;; 6507357bfbb2Smrg *) rmfiles="$rmfiles $objdir/$dlname" ;; 6508357bfbb2Smrg esac 6509357bfbb2Smrg test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" 6510357bfbb2Smrg ;; 6511357bfbb2Smrg uninstall) 6512357bfbb2Smrg if test -n "$library_names"; then 6513357bfbb2Smrg # Do each command in the postuninstall commands. 6514357bfbb2Smrg cmds=$postuninstall_cmds 6515357bfbb2Smrg save_ifs="$IFS"; IFS='~' 6516357bfbb2Smrg for cmd in $cmds; do 6517357bfbb2Smrg IFS="$save_ifs" 6518357bfbb2Smrg eval cmd=\"$cmd\" 6519357bfbb2Smrg $show "$cmd" 6520357bfbb2Smrg $run eval "$cmd" 6521357bfbb2Smrg if test "$?" -ne 0 && test "$rmforce" != yes; then 6522357bfbb2Smrg exit_status=1 6523357bfbb2Smrg fi 6524357bfbb2Smrg done 6525357bfbb2Smrg IFS="$save_ifs" 6526357bfbb2Smrg fi 6527357bfbb2Smrg 6528357bfbb2Smrg if test -n "$old_library"; then 6529357bfbb2Smrg # Do each command in the old_postuninstall commands. 6530357bfbb2Smrg cmds=$old_postuninstall_cmds 6531357bfbb2Smrg save_ifs="$IFS"; IFS='~' 6532357bfbb2Smrg for cmd in $cmds; do 6533357bfbb2Smrg IFS="$save_ifs" 6534357bfbb2Smrg eval cmd=\"$cmd\" 6535357bfbb2Smrg $show "$cmd" 6536357bfbb2Smrg $run eval "$cmd" 6537357bfbb2Smrg if test "$?" -ne 0 && test "$rmforce" != yes; then 6538357bfbb2Smrg exit_status=1 6539357bfbb2Smrg fi 6540357bfbb2Smrg done 6541357bfbb2Smrg IFS="$save_ifs" 6542357bfbb2Smrg fi 6543357bfbb2Smrg # FIXME: should reinstall the best remaining shared library. 6544357bfbb2Smrg ;; 6545357bfbb2Smrg esac 6546357bfbb2Smrg fi 6547357bfbb2Smrg ;; 6548357bfbb2Smrg 6549357bfbb2Smrg *.lo) 6550357bfbb2Smrg # Possibly a libtool object, so verify it. 6551357bfbb2Smrg if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 6552357bfbb2Smrg 6553357bfbb2Smrg # Read the .lo file 6554357bfbb2Smrg . $dir/$name 6555357bfbb2Smrg 6556357bfbb2Smrg # Add PIC object to the list of files to remove. 6557357bfbb2Smrg if test -n "$pic_object" \ 6558357bfbb2Smrg && test "$pic_object" != none; then 6559357bfbb2Smrg rmfiles="$rmfiles $dir/$pic_object" 6560357bfbb2Smrg fi 6561357bfbb2Smrg 6562357bfbb2Smrg # Add non-PIC object to the list of files to remove. 6563357bfbb2Smrg if test -n "$non_pic_object" \ 6564357bfbb2Smrg && test "$non_pic_object" != none; then 6565357bfbb2Smrg rmfiles="$rmfiles $dir/$non_pic_object" 6566357bfbb2Smrg fi 6567357bfbb2Smrg fi 6568357bfbb2Smrg ;; 6569357bfbb2Smrg 6570357bfbb2Smrg *) 6571357bfbb2Smrg if test "$mode" = clean ; then 6572357bfbb2Smrg noexename=$name 6573357bfbb2Smrg case $file in 6574357bfbb2Smrg *.exe) 6575357bfbb2Smrg file=`$echo $file|${SED} 's,.exe$,,'` 6576357bfbb2Smrg noexename=`$echo $name|${SED} 's,.exe$,,'` 6577357bfbb2Smrg # $file with .exe has already been added to rmfiles, 6578357bfbb2Smrg # add $file without .exe 6579357bfbb2Smrg rmfiles="$rmfiles $file" 6580357bfbb2Smrg ;; 6581357bfbb2Smrg esac 6582357bfbb2Smrg # Do a test to see if this is a libtool program. 6583357bfbb2Smrg if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 6584357bfbb2Smrg relink_command= 6585357bfbb2Smrg . $dir/$noexename 6586357bfbb2Smrg 6587357bfbb2Smrg # note $name still contains .exe if it was in $file originally 6588357bfbb2Smrg # as does the version of $file that was added into $rmfiles 6589357bfbb2Smrg rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" 6590357bfbb2Smrg if test "$fast_install" = yes && test -n "$relink_command"; then 6591357bfbb2Smrg rmfiles="$rmfiles $objdir/lt-$name" 6592357bfbb2Smrg fi 6593357bfbb2Smrg if test "X$noexename" != "X$name" ; then 6594357bfbb2Smrg rmfiles="$rmfiles $objdir/lt-${noexename}.c" 6595357bfbb2Smrg fi 6596357bfbb2Smrg fi 6597357bfbb2Smrg fi 6598357bfbb2Smrg ;; 6599357bfbb2Smrg esac 6600357bfbb2Smrg $show "$rm $rmfiles" 6601357bfbb2Smrg $run $rm $rmfiles || exit_status=1 6602357bfbb2Smrg done 6603357bfbb2Smrg objdir="$origobjdir" 6604357bfbb2Smrg 6605357bfbb2Smrg # Try to remove the ${objdir}s in the directories where we deleted files 6606357bfbb2Smrg for dir in $rmdirs; do 6607357bfbb2Smrg if test -d "$dir"; then 6608357bfbb2Smrg $show "rmdir $dir" 6609357bfbb2Smrg $run rmdir $dir >/dev/null 2>&1 6610357bfbb2Smrg fi 6611357bfbb2Smrg done 6612357bfbb2Smrg 6613357bfbb2Smrg exit $exit_status 6614357bfbb2Smrg ;; 6615357bfbb2Smrg 6616357bfbb2Smrg "") 6617357bfbb2Smrg $echo "$modename: you must specify a MODE" 1>&2 6618357bfbb2Smrg $echo "$generic_help" 1>&2 6619357bfbb2Smrg exit $EXIT_FAILURE 6620357bfbb2Smrg ;; 6621357bfbb2Smrg esac 6622357bfbb2Smrg 6623357bfbb2Smrg if test -z "$exec_cmd"; then 6624357bfbb2Smrg $echo "$modename: invalid operation mode \`$mode'" 1>&2 6625357bfbb2Smrg $echo "$generic_help" 1>&2 6626357bfbb2Smrg exit $EXIT_FAILURE 6627357bfbb2Smrg fi 6628357bfbb2Smrgfi # test -z "$show_help" 6629357bfbb2Smrg 6630357bfbb2Smrgif test -n "$exec_cmd"; then 6631357bfbb2Smrg eval exec $exec_cmd 6632357bfbb2Smrg exit $EXIT_FAILURE 6633357bfbb2Smrgfi 6634357bfbb2Smrg 6635357bfbb2Smrg# We need to display help for each of the modes. 6636357bfbb2Smrgcase $mode in 6637357bfbb2Smrg"") $echo \ 6638357bfbb2Smrg"Usage: $modename [OPTION]... [MODE-ARG]... 6639357bfbb2Smrg 6640357bfbb2SmrgProvide generalized library-building support services. 6641357bfbb2Smrg 6642357bfbb2Smrg --config show all configuration variables 6643357bfbb2Smrg --debug enable verbose shell tracing 6644357bfbb2Smrg-n, --dry-run display commands without modifying any files 6645357bfbb2Smrg --features display basic configuration information and exit 6646357bfbb2Smrg --finish same as \`--mode=finish' 6647357bfbb2Smrg --help display this help message and exit 6648357bfbb2Smrg --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] 6649357bfbb2Smrg --quiet same as \`--silent' 6650357bfbb2Smrg --silent don't print informational messages 6651357bfbb2Smrg --tag=TAG use configuration variables from tag TAG 6652357bfbb2Smrg --version print version information 6653357bfbb2Smrg 6654357bfbb2SmrgMODE must be one of the following: 6655357bfbb2Smrg 6656357bfbb2Smrg clean remove files from the build directory 6657357bfbb2Smrg compile compile a source file into a libtool object 6658357bfbb2Smrg execute automatically set library path, then run a program 6659357bfbb2Smrg finish complete the installation of libtool libraries 6660357bfbb2Smrg install install libraries or executables 6661357bfbb2Smrg link create a library or an executable 6662357bfbb2Smrg uninstall remove libraries from an installed directory 6663357bfbb2Smrg 6664357bfbb2SmrgMODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for 6665357bfbb2Smrga more detailed description of MODE. 6666357bfbb2Smrg 6667357bfbb2SmrgReport bugs to <bug-libtool@gnu.org>." 6668357bfbb2Smrg exit $EXIT_SUCCESS 6669357bfbb2Smrg ;; 6670357bfbb2Smrg 6671357bfbb2Smrgclean) 6672357bfbb2Smrg $echo \ 6673357bfbb2Smrg"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE... 6674357bfbb2Smrg 6675357bfbb2SmrgRemove files from the build directory. 6676357bfbb2Smrg 6677357bfbb2SmrgRM is the name of the program to use to delete files associated with each FILE 6678357bfbb2Smrg(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 6679357bfbb2Smrgto RM. 6680357bfbb2Smrg 6681357bfbb2SmrgIf FILE is a libtool library, object or program, all the files associated 6682357bfbb2Smrgwith it are deleted. Otherwise, only FILE itself is deleted using RM." 6683357bfbb2Smrg ;; 6684357bfbb2Smrg 6685357bfbb2Smrgcompile) 6686357bfbb2Smrg $echo \ 6687357bfbb2Smrg"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE 6688357bfbb2Smrg 6689357bfbb2SmrgCompile a source file into a libtool library object. 6690357bfbb2Smrg 6691357bfbb2SmrgThis mode accepts the following additional options: 6692357bfbb2Smrg 6693357bfbb2Smrg -o OUTPUT-FILE set the output file name to OUTPUT-FILE 6694357bfbb2Smrg -prefer-pic try to building PIC objects only 6695357bfbb2Smrg -prefer-non-pic try to building non-PIC objects only 6696357bfbb2Smrg -static always build a \`.o' file suitable for static linking 6697357bfbb2Smrg 6698357bfbb2SmrgCOMPILE-COMMAND is a command to be used in creating a \`standard' object file 6699357bfbb2Smrgfrom the given SOURCEFILE. 6700357bfbb2Smrg 6701357bfbb2SmrgThe output file name is determined by removing the directory component from 6702357bfbb2SmrgSOURCEFILE, then substituting the C source code suffix \`.c' with the 6703357bfbb2Smrglibrary object suffix, \`.lo'." 6704357bfbb2Smrg ;; 6705357bfbb2Smrg 6706357bfbb2Smrgexecute) 6707357bfbb2Smrg $echo \ 6708357bfbb2Smrg"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]... 6709357bfbb2Smrg 6710357bfbb2SmrgAutomatically set library path, then run a program. 6711357bfbb2Smrg 6712357bfbb2SmrgThis mode accepts the following additional options: 6713357bfbb2Smrg 6714357bfbb2Smrg -dlopen FILE add the directory containing FILE to the library path 6715357bfbb2Smrg 6716357bfbb2SmrgThis mode sets the library path environment variable according to \`-dlopen' 6717357bfbb2Smrgflags. 6718357bfbb2Smrg 6719357bfbb2SmrgIf any of the ARGS are libtool executable wrappers, then they are translated 6720357bfbb2Smrginto their corresponding uninstalled binary, and any of their required library 6721357bfbb2Smrgdirectories are added to the library path. 6722357bfbb2Smrg 6723357bfbb2SmrgThen, COMMAND is executed, with ARGS as arguments." 6724357bfbb2Smrg ;; 6725357bfbb2Smrg 6726357bfbb2Smrgfinish) 6727357bfbb2Smrg $echo \ 6728357bfbb2Smrg"Usage: $modename [OPTION]... --mode=finish [LIBDIR]... 6729357bfbb2Smrg 6730357bfbb2SmrgComplete the installation of libtool libraries. 6731357bfbb2Smrg 6732357bfbb2SmrgEach LIBDIR is a directory that contains libtool libraries. 6733357bfbb2Smrg 6734357bfbb2SmrgThe commands that this mode executes may require superuser privileges. Use 6735357bfbb2Smrgthe \`--dry-run' option if you just want to see what would be executed." 6736357bfbb2Smrg ;; 6737357bfbb2Smrg 6738357bfbb2Smrginstall) 6739357bfbb2Smrg $echo \ 6740357bfbb2Smrg"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND... 6741357bfbb2Smrg 6742357bfbb2SmrgInstall executables or libraries. 6743357bfbb2Smrg 6744357bfbb2SmrgINSTALL-COMMAND is the installation command. The first component should be 6745357bfbb2Smrgeither the \`install' or \`cp' program. 6746357bfbb2Smrg 6747357bfbb2SmrgThe rest of the components are interpreted as arguments to that command (only 6748357bfbb2SmrgBSD-compatible install options are recognized)." 6749357bfbb2Smrg ;; 6750357bfbb2Smrg 6751357bfbb2Smrglink) 6752357bfbb2Smrg $echo \ 6753357bfbb2Smrg"Usage: $modename [OPTION]... --mode=link LINK-COMMAND... 6754357bfbb2Smrg 6755357bfbb2SmrgLink object files or libraries together to form another library, or to 6756357bfbb2Smrgcreate an executable program. 6757357bfbb2Smrg 6758357bfbb2SmrgLINK-COMMAND is a command using the C compiler that you would use to create 6759357bfbb2Smrga program from several object files. 6760357bfbb2Smrg 6761357bfbb2SmrgThe following components of LINK-COMMAND are treated specially: 6762357bfbb2Smrg 6763357bfbb2Smrg -all-static do not do any dynamic linking at all 6764357bfbb2Smrg -avoid-version do not add a version suffix if possible 6765357bfbb2Smrg -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime 6766357bfbb2Smrg -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols 6767357bfbb2Smrg -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) 6768357bfbb2Smrg -export-symbols SYMFILE 6769357bfbb2Smrg try to export only the symbols listed in SYMFILE 6770357bfbb2Smrg -export-symbols-regex REGEX 6771357bfbb2Smrg try to export only the symbols matching REGEX 6772357bfbb2Smrg -LLIBDIR search LIBDIR for required installed libraries 6773357bfbb2Smrg -lNAME OUTPUT-FILE requires the installed library libNAME 6774357bfbb2Smrg -module build a library that can dlopened 6775357bfbb2Smrg -no-fast-install disable the fast-install mode 6776357bfbb2Smrg -no-install link a not-installable executable 6777357bfbb2Smrg -no-undefined declare that a library does not refer to external symbols 6778357bfbb2Smrg -o OUTPUT-FILE create OUTPUT-FILE from the specified objects 6779357bfbb2Smrg -objectlist FILE Use a list of object files found in FILE to specify objects 6780357bfbb2Smrg -precious-files-regex REGEX 6781357bfbb2Smrg don't remove output files matching REGEX 6782357bfbb2Smrg -release RELEASE specify package release information 6783357bfbb2Smrg -rpath LIBDIR the created library will eventually be installed in LIBDIR 6784357bfbb2Smrg -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries 6785357bfbb2Smrg -static do not do any dynamic linking of libtool libraries 6786357bfbb2Smrg -version-info CURRENT[:REVISION[:AGE]] 6787357bfbb2Smrg specify library version info [each variable defaults to 0] 6788357bfbb2Smrg 6789357bfbb2SmrgAll other options (arguments beginning with \`-') are ignored. 6790357bfbb2Smrg 6791357bfbb2SmrgEvery other argument is treated as a filename. Files ending in \`.la' are 6792357bfbb2Smrgtreated as uninstalled libtool libraries, other files are standard or library 6793357bfbb2Smrgobject files. 6794357bfbb2Smrg 6795357bfbb2SmrgIf the OUTPUT-FILE ends in \`.la', then a libtool library is created, 6796357bfbb2Smrgonly library objects (\`.lo' files) may be specified, and \`-rpath' is 6797357bfbb2Smrgrequired, except when creating a convenience library. 6798357bfbb2Smrg 6799357bfbb2SmrgIf OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created 6800357bfbb2Smrgusing \`ar' and \`ranlib', or on Windows using \`lib'. 6801357bfbb2Smrg 6802357bfbb2SmrgIf OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file 6803357bfbb2Smrgis created, otherwise an executable program is created." 6804357bfbb2Smrg ;; 6805357bfbb2Smrg 6806357bfbb2Smrguninstall) 6807357bfbb2Smrg $echo \ 6808357bfbb2Smrg"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... 6809357bfbb2Smrg 6810357bfbb2SmrgRemove libraries from an installation directory. 6811357bfbb2Smrg 6812357bfbb2SmrgRM is the name of the program to use to delete files associated with each FILE 6813357bfbb2Smrg(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 6814357bfbb2Smrgto RM. 6815357bfbb2Smrg 6816357bfbb2SmrgIf FILE is a libtool library, all the files associated with it are deleted. 6817357bfbb2SmrgOtherwise, only FILE itself is deleted using RM." 6818357bfbb2Smrg ;; 6819357bfbb2Smrg 6820357bfbb2Smrg*) 6821357bfbb2Smrg $echo "$modename: invalid operation mode \`$mode'" 1>&2 6822357bfbb2Smrg $echo "$help" 1>&2 6823357bfbb2Smrg exit $EXIT_FAILURE 6824357bfbb2Smrg ;; 6825357bfbb2Smrgesac 6826357bfbb2Smrg 6827357bfbb2Smrg$echo 6828357bfbb2Smrg$echo "Try \`$modename --help' for more information about other modes." 6829357bfbb2Smrg 6830357bfbb2Smrgexit $? 6831357bfbb2Smrg 6832357bfbb2Smrg# The TAGs below are defined such that we never get into a situation 6833357bfbb2Smrg# in which we disable both kinds of libraries. Given conflicting 6834357bfbb2Smrg# choices, we go for a static library, that is the most portable, 6835357bfbb2Smrg# since we can't tell whether shared libraries were disabled because 6836357bfbb2Smrg# the user asked for that or because the platform doesn't support 6837357bfbb2Smrg# them. This is particularly important on AIX, because we don't 6838357bfbb2Smrg# support having both static and shared libraries enabled at the same 6839357bfbb2Smrg# time on that platform, so we default to a shared-only configuration. 6840357bfbb2Smrg# If a disable-shared tag is given, we'll fallback to a static-only 6841357bfbb2Smrg# configuration. But we'll never go from static-only to shared-only. 6842357bfbb2Smrg 6843357bfbb2Smrg# ### BEGIN LIBTOOL TAG CONFIG: disable-shared 6844357bfbb2Smrgdisable_libs=shared 6845357bfbb2Smrg# ### END LIBTOOL TAG CONFIG: disable-shared 6846357bfbb2Smrg 6847357bfbb2Smrg# ### BEGIN LIBTOOL TAG CONFIG: disable-static 6848357bfbb2Smrgdisable_libs=static 6849357bfbb2Smrg# ### END LIBTOOL TAG CONFIG: disable-static 6850357bfbb2Smrg 6851357bfbb2Smrg# Local Variables: 6852357bfbb2Smrg# mode:shell-script 6853357bfbb2Smrg# sh-indentation:2 6854357bfbb2Smrg# End: 6855