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