ltmain.sh revision ef6fb4a5
1ef6fb4a5Smrg# ltmain.sh - Provide generalized library-building support services. 2ef6fb4a5Smrg# NOTE: Changing this file will not affect anything until you rerun configure. 3ef6fb4a5Smrg# 4ef6fb4a5Smrg# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 5ef6fb4a5Smrg# 2007, 2008 Free Software Foundation, Inc. 6ef6fb4a5Smrg# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 7ef6fb4a5Smrg# 8ef6fb4a5Smrg# This program is free software; you can redistribute it and/or modify 9301ea0f4Smrg# it under the terms of the GNU General Public License as published by 10301ea0f4Smrg# the Free Software Foundation; either version 2 of the License, or 11301ea0f4Smrg# (at your option) any later version. 12301ea0f4Smrg# 13ef6fb4a5Smrg# This program is distributed in the hope that it will be useful, but 14301ea0f4Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of 15301ea0f4Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 16301ea0f4Smrg# General Public License for more details. 17301ea0f4Smrg# 18301ea0f4Smrg# You should have received a copy of the GNU General Public License 19ef6fb4a5Smrg# along with this program; if not, write to the Free Software 20ef6fb4a5Smrg# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 21301ea0f4Smrg# 22ef6fb4a5Smrg# As a special exception to the GNU General Public License, if you 23ef6fb4a5Smrg# distribute this file as part of a program that contains a 24ef6fb4a5Smrg# configuration script generated by Autoconf, you may include it under 25ef6fb4a5Smrg# the same distribution terms that you use for the rest of that program. 26ef6fb4a5Smrg 27ef6fb4a5Smrgbasename="s,^.*/,,g" 28ef6fb4a5Smrg 29ef6fb4a5Smrg# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh 30ef6fb4a5Smrg# is ksh but when the shell is invoked as "sh" and the current value of 31ef6fb4a5Smrg# the _XPG environment variable is not equal to 1 (one), the special 32ef6fb4a5Smrg# positional parameter $0, within a function call, is the name of the 33ef6fb4a5Smrg# function. 34ef6fb4a5Smrgprogpath="$0" 35ef6fb4a5Smrg 36ef6fb4a5Smrg# The name of this program: 37ef6fb4a5Smrgprogname=`echo "$progpath" | $SED $basename` 38ef6fb4a5Smrgmodename="$progname" 39ef6fb4a5Smrg 40ef6fb4a5Smrg# Global variables: 41ef6fb4a5SmrgEXIT_SUCCESS=0 42ef6fb4a5SmrgEXIT_FAILURE=1 430cc67336Smrg 440cc67336SmrgPROGRAM=ltmain.sh 450cc67336SmrgPACKAGE=libtool 46ef6fb4a5SmrgVERSION=1.5.26 47ef6fb4a5SmrgTIMESTAMP=" (1.1220.2.493 2008/02/01 16:58:18)" 480cc67336Smrg 49ef6fb4a5Smrg# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE). 500cc67336Smrgif test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then 510cc67336Smrg emulate sh 520cc67336Smrg NULLCMD=: 530cc67336Smrg # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which 540cc67336Smrg # is contrary to our usage. Disable this feature. 550cc67336Smrg alias -g '${1+"$@"}'='"$@"' 560cc67336Smrg setopt NO_GLOB_SUBST 570cc67336Smrgelse 580cc67336Smrg case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac 590cc67336Smrgfi 600cc67336SmrgBIN_SH=xpg4; export BIN_SH # for Tru64 610cc67336SmrgDUALCASE=1; export DUALCASE # for MKS sh 620cc67336Smrg 63ef6fb4a5Smrg# Check that we have a working $echo. 64ef6fb4a5Smrgif test "X$1" = X--no-reexec; then 65ef6fb4a5Smrg # Discard the --no-reexec flag, and continue. 66ef6fb4a5Smrg shift 67ef6fb4a5Smrgelif test "X$1" = X--fallback-echo; then 68ef6fb4a5Smrg # Avoid inline document here, it may be left over 69ef6fb4a5Smrg : 70ef6fb4a5Smrgelif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then 71ef6fb4a5Smrg # Yippee, $echo works! 72ef6fb4a5Smrg : 73ef6fb4a5Smrgelse 74ef6fb4a5Smrg # Restart under the correct shell, and then maybe $echo will work. 75ef6fb4a5Smrg exec $SHELL "$progpath" --no-reexec ${1+"$@"} 76ef6fb4a5Smrgfi 77ef6fb4a5Smrg 78ef6fb4a5Smrgif test "X$1" = X--fallback-echo; then 79ef6fb4a5Smrg # used as fallback echo 80ef6fb4a5Smrg shift 81ef6fb4a5Smrg cat <<EOF 82ef6fb4a5Smrg$* 83ef6fb4a5SmrgEOF 84ef6fb4a5Smrg exit $EXIT_SUCCESS 85ef6fb4a5Smrgfi 86ef6fb4a5Smrg 87ef6fb4a5Smrgdefault_mode= 88ef6fb4a5Smrghelp="Try \`$progname --help' for more information." 89ef6fb4a5Smrgmagic="%%%MAGIC variable%%%" 90ef6fb4a5Smrgmkdir="mkdir" 91ef6fb4a5Smrgmv="mv -f" 92ef6fb4a5Smrgrm="rm -f" 93ef6fb4a5Smrg 94ef6fb4a5Smrg# Sed substitution that helps us do robust quoting. It backslashifies 95ef6fb4a5Smrg# metacharacters that are still active within double-quoted strings. 96ef6fb4a5SmrgXsed="${SED}"' -e 1s/^X//' 97ef6fb4a5Smrgsed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g' 98ef6fb4a5Smrg# test EBCDIC or ASCII 99ef6fb4a5Smrgcase `echo X|tr X '\101'` in 100ef6fb4a5Smrg A) # ASCII based system 101ef6fb4a5Smrg # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr 102ef6fb4a5Smrg SP2NL='tr \040 \012' 103ef6fb4a5Smrg NL2SP='tr \015\012 \040\040' 104ef6fb4a5Smrg ;; 105ef6fb4a5Smrg *) # EBCDIC based system 106ef6fb4a5Smrg SP2NL='tr \100 \n' 107ef6fb4a5Smrg NL2SP='tr \r\n \100\100' 108ef6fb4a5Smrg ;; 109ef6fb4a5Smrgesac 110ef6fb4a5Smrg 111ef6fb4a5Smrg# NLS nuisances. 1120cc67336Smrg# Only set LANG and LC_ALL to C if already set. 1130cc67336Smrg# These must not be set unconditionally because not all systems understand 1140cc67336Smrg# e.g. LANG=C (notably SCO). 115ef6fb4a5Smrg# We save the old values to restore during execute mode. 116ef6fb4a5Smrglt_env= 1170cc67336Smrgfor lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 1180cc67336Smrgdo 1190cc67336Smrg eval "if test \"\${$lt_var+set}\" = set; then 120ef6fb4a5Smrg save_$lt_var=\$$lt_var 121ef6fb4a5Smrg lt_env=\"$lt_var=\$$lt_var \$lt_env\" 122ef6fb4a5Smrg $lt_var=C 1230cc67336Smrg export $lt_var 1240cc67336Smrg fi" 1250cc67336Smrgdone 1260cc67336Smrg 127ef6fb4a5Smrgif test -n "$lt_env"; then 128ef6fb4a5Smrg lt_env="env $lt_env" 129ef6fb4a5Smrgfi 1300cc67336Smrg 1310cc67336Smrg# Make sure IFS has a sensible default 1320cc67336Smrglt_nl=' 1330cc67336Smrg' 1340cc67336SmrgIFS=" $lt_nl" 1350cc67336Smrg 136ef6fb4a5Smrgif test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then 137ef6fb4a5Smrg $echo "$modename: not configured to build any kind of library" 1>&2 138ef6fb4a5Smrg $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 139ef6fb4a5Smrg exit $EXIT_FAILURE 140ef6fb4a5Smrgfi 1410cc67336Smrg 142ef6fb4a5Smrg# Global variables. 143ef6fb4a5Smrgmode=$default_mode 144ef6fb4a5Smrgnonopt= 145ef6fb4a5Smrgprev= 146ef6fb4a5Smrgprevopt= 147ef6fb4a5Smrgrun= 148ef6fb4a5Smrgshow="$echo" 149ef6fb4a5Smrgshow_help= 150ef6fb4a5Smrgexecute_dlfiles= 151ef6fb4a5Smrgduplicate_deps=no 152ef6fb4a5Smrgpreserve_args= 153ef6fb4a5Smrglo2o="s/\\.lo\$/.${objext}/" 154ef6fb4a5Smrgo2lo="s/\\.${objext}\$/.lo/" 155ef6fb4a5Smrgextracted_archives= 156ef6fb4a5Smrgextracted_serial=0 157301ea0f4Smrg 158ef6fb4a5Smrg##################################### 159ef6fb4a5Smrg# Shell function definitions: 160ef6fb4a5Smrg# This seems to be the best place for them 161301ea0f4Smrg 162301ea0f4Smrg# func_mktempdir [string] 163301ea0f4Smrg# Make a temporary directory that won't clash with other running 164301ea0f4Smrg# libtool processes, and avoids race conditions if possible. If 165301ea0f4Smrg# given, STRING is the basename for that directory. 166301ea0f4Smrgfunc_mktempdir () 167301ea0f4Smrg{ 168301ea0f4Smrg my_template="${TMPDIR-/tmp}/${1-$progname}" 169301ea0f4Smrg 170ef6fb4a5Smrg if test "$run" = ":"; then 171301ea0f4Smrg # Return a directory name, but don't create it in dry-run mode 172301ea0f4Smrg my_tmpdir="${my_template}-$$" 173301ea0f4Smrg else 174301ea0f4Smrg 175301ea0f4Smrg # If mktemp works, use that first and foremost 176301ea0f4Smrg my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` 177301ea0f4Smrg 178301ea0f4Smrg if test ! -d "$my_tmpdir"; then 179ef6fb4a5Smrg # Failing that, at least try and use $RANDOM to avoid a race 180ef6fb4a5Smrg my_tmpdir="${my_template}-${RANDOM-0}$$" 181301ea0f4Smrg 182ef6fb4a5Smrg save_mktempdir_umask=`umask` 183ef6fb4a5Smrg umask 0077 184ef6fb4a5Smrg $mkdir "$my_tmpdir" 185ef6fb4a5Smrg umask $save_mktempdir_umask 186301ea0f4Smrg fi 187301ea0f4Smrg 188301ea0f4Smrg # If we're not in dry-run mode, bomb out on failure 189ef6fb4a5Smrg test -d "$my_tmpdir" || { 190ef6fb4a5Smrg $echo "cannot create temporary directory \`$my_tmpdir'" 1>&2 191ef6fb4a5Smrg exit $EXIT_FAILURE 192ef6fb4a5Smrg } 193301ea0f4Smrg fi 194301ea0f4Smrg 195ef6fb4a5Smrg $echo "X$my_tmpdir" | $Xsed 196301ea0f4Smrg} 197301ea0f4Smrg 198301ea0f4Smrg 199ef6fb4a5Smrg# func_win32_libid arg 200ef6fb4a5Smrg# return the library type of file 'arg' 201ef6fb4a5Smrg# 202ef6fb4a5Smrg# Need a lot of goo to handle *both* DLLs and import libs 203ef6fb4a5Smrg# Has to be a shell function in order to 'eat' the argument 204ef6fb4a5Smrg# that is supplied when $file_magic_command is called. 205ef6fb4a5Smrgfunc_win32_libid () 206301ea0f4Smrg{ 207ef6fb4a5Smrg win32_libid_type="unknown" 208ef6fb4a5Smrg win32_fileres=`file -L $1 2>/dev/null` 209ef6fb4a5Smrg case $win32_fileres in 210ef6fb4a5Smrg *ar\ archive\ import\ library*) # definitely import 211ef6fb4a5Smrg win32_libid_type="x86 archive import" 212ef6fb4a5Smrg ;; 213ef6fb4a5Smrg *ar\ archive*) # could be an import, or static 214ef6fb4a5Smrg if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \ 215ef6fb4a5Smrg $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then 216ef6fb4a5Smrg win32_nmres=`eval $NM -f posix -A $1 | \ 217ef6fb4a5Smrg $SED -n -e '1,100{ 218ef6fb4a5Smrg / I /{ 219ef6fb4a5Smrg s,.*,import, 220ef6fb4a5Smrg p 221ef6fb4a5Smrg q 222ef6fb4a5Smrg } 223ef6fb4a5Smrg }'` 224ef6fb4a5Smrg case $win32_nmres in 225ef6fb4a5Smrg import*) win32_libid_type="x86 archive import";; 226ef6fb4a5Smrg *) win32_libid_type="x86 archive static";; 227ef6fb4a5Smrg esac 228ef6fb4a5Smrg fi 229ef6fb4a5Smrg ;; 230ef6fb4a5Smrg *DLL*) 231ef6fb4a5Smrg win32_libid_type="x86 DLL" 232ef6fb4a5Smrg ;; 233ef6fb4a5Smrg *executable*) # but shell scripts are "executable" too... 234ef6fb4a5Smrg case $win32_fileres in 235ef6fb4a5Smrg *MS\ Windows\ PE\ Intel*) 236ef6fb4a5Smrg win32_libid_type="x86 DLL" 237ef6fb4a5Smrg ;; 238301ea0f4Smrg esac 239ef6fb4a5Smrg ;; 240ef6fb4a5Smrg esac 241ef6fb4a5Smrg $echo $win32_libid_type 242301ea0f4Smrg} 243301ea0f4Smrg 244301ea0f4Smrg 245ef6fb4a5Smrg# func_infer_tag arg 246ef6fb4a5Smrg# Infer tagged configuration to use if any are available and 247ef6fb4a5Smrg# if one wasn't chosen via the "--tag" command line option. 248ef6fb4a5Smrg# Only attempt this if the compiler in the base compile 249ef6fb4a5Smrg# command doesn't match the default compiler. 250ef6fb4a5Smrg# arg is usually of the form 'gcc ...' 251ef6fb4a5Smrgfunc_infer_tag () 252301ea0f4Smrg{ 253ef6fb4a5Smrg if test -n "$available_tags" && test -z "$tagname"; then 254ef6fb4a5Smrg CC_quoted= 255ef6fb4a5Smrg for arg in $CC; do 256ef6fb4a5Smrg case $arg in 257ef6fb4a5Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 258ef6fb4a5Smrg arg="\"$arg\"" 259ef6fb4a5Smrg ;; 260ef6fb4a5Smrg esac 261ef6fb4a5Smrg CC_quoted="$CC_quoted $arg" 262ef6fb4a5Smrg done 263ef6fb4a5Smrg case $@ in 264ef6fb4a5Smrg # Blanks in the command may have been stripped by the calling shell, 265ef6fb4a5Smrg # but not from the CC environment variable when configure was run. 266ef6fb4a5Smrg " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;; 267ef6fb4a5Smrg # Blanks at the start of $base_compile will cause this to fail 268ef6fb4a5Smrg # if we don't check for them as well. 269301ea0f4Smrg *) 270ef6fb4a5Smrg for z in $available_tags; do 271ef6fb4a5Smrg if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then 272ef6fb4a5Smrg # Evaluate the configuration. 273ef6fb4a5Smrg eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" 274ef6fb4a5Smrg CC_quoted= 275ef6fb4a5Smrg for arg in $CC; do 276ef6fb4a5Smrg # Double-quote args containing other shell metacharacters. 277ef6fb4a5Smrg case $arg in 278ef6fb4a5Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 279ef6fb4a5Smrg arg="\"$arg\"" 280ef6fb4a5Smrg ;; 281ef6fb4a5Smrg esac 282ef6fb4a5Smrg CC_quoted="$CC_quoted $arg" 283ef6fb4a5Smrg done 284ef6fb4a5Smrg case "$@ " in 285ef6fb4a5Smrg " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) 286ef6fb4a5Smrg # The compiler in the base compile command matches 287ef6fb4a5Smrg # the one in the tagged configuration. 288ef6fb4a5Smrg # Assume this is the tagged configuration we want. 289ef6fb4a5Smrg tagname=$z 290ef6fb4a5Smrg break 291ef6fb4a5Smrg ;; 292ef6fb4a5Smrg esac 293ef6fb4a5Smrg fi 294ef6fb4a5Smrg done 295ef6fb4a5Smrg # If $tagname still isn't set, then no tagged configuration 296ef6fb4a5Smrg # was found and let the user know that the "--tag" command 297ef6fb4a5Smrg # line option must be used. 298ef6fb4a5Smrg if test -z "$tagname"; then 299ef6fb4a5Smrg $echo "$modename: unable to infer tagged configuration" 300ef6fb4a5Smrg $echo "$modename: specify a tag with \`--tag'" 1>&2 301ef6fb4a5Smrg exit $EXIT_FAILURE 302ef6fb4a5Smrg# else 303ef6fb4a5Smrg# $echo "$modename: using $tagname tagged configuration" 304ef6fb4a5Smrg fi 305ef6fb4a5Smrg ;; 306ef6fb4a5Smrg esac 307ef6fb4a5Smrg fi 308301ea0f4Smrg} 309301ea0f4Smrg 310301ea0f4Smrg 311ef6fb4a5Smrg# func_extract_an_archive dir oldlib 312ef6fb4a5Smrgfunc_extract_an_archive () 313301ea0f4Smrg{ 314ef6fb4a5Smrg f_ex_an_ar_dir="$1"; shift 315ef6fb4a5Smrg f_ex_an_ar_oldlib="$1" 3160cc67336Smrg 317ef6fb4a5Smrg $show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)" 318ef6fb4a5Smrg $run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" || exit $? 319ef6fb4a5Smrg if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then 320ef6fb4a5Smrg : 321ef6fb4a5Smrg else 322ef6fb4a5Smrg $echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 1>&2 323ef6fb4a5Smrg exit $EXIT_FAILURE 324301ea0f4Smrg fi 325301ea0f4Smrg} 326301ea0f4Smrg 327ef6fb4a5Smrg# func_extract_archives gentop oldlib ... 328ef6fb4a5Smrgfunc_extract_archives () 329301ea0f4Smrg{ 330ef6fb4a5Smrg my_gentop="$1"; shift 331ef6fb4a5Smrg my_oldlibs=${1+"$@"} 332ef6fb4a5Smrg my_oldobjs="" 333ef6fb4a5Smrg my_xlib="" 334ef6fb4a5Smrg my_xabs="" 335ef6fb4a5Smrg my_xdir="" 336ef6fb4a5Smrg my_status="" 337ef6fb4a5Smrg 338ef6fb4a5Smrg $show "${rm}r $my_gentop" 339ef6fb4a5Smrg $run ${rm}r "$my_gentop" 340ef6fb4a5Smrg $show "$mkdir $my_gentop" 341ef6fb4a5Smrg $run $mkdir "$my_gentop" 342ef6fb4a5Smrg my_status=$? 343ef6fb4a5Smrg if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then 344ef6fb4a5Smrg exit $my_status 3450cc67336Smrg fi 346301ea0f4Smrg 347ef6fb4a5Smrg for my_xlib in $my_oldlibs; do 348ef6fb4a5Smrg # Extract the objects. 349ef6fb4a5Smrg case $my_xlib in 350ef6fb4a5Smrg [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; 351ef6fb4a5Smrg *) my_xabs=`pwd`"/$my_xlib" ;; 352ef6fb4a5Smrg esac 353ef6fb4a5Smrg my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'` 354ef6fb4a5Smrg my_xlib_u=$my_xlib 355ef6fb4a5Smrg while :; do 356ef6fb4a5Smrg case " $extracted_archives " in 357ef6fb4a5Smrg *" $my_xlib_u "*) 358ef6fb4a5Smrg extracted_serial=`expr $extracted_serial + 1` 359ef6fb4a5Smrg my_xlib_u=lt$extracted_serial-$my_xlib ;; 360ef6fb4a5Smrg *) break ;; 361ef6fb4a5Smrg esac 362ef6fb4a5Smrg done 363ef6fb4a5Smrg extracted_archives="$extracted_archives $my_xlib_u" 364ef6fb4a5Smrg my_xdir="$my_gentop/$my_xlib_u" 365301ea0f4Smrg 366ef6fb4a5Smrg $show "${rm}r $my_xdir" 367ef6fb4a5Smrg $run ${rm}r "$my_xdir" 368ef6fb4a5Smrg $show "$mkdir $my_xdir" 369ef6fb4a5Smrg $run $mkdir "$my_xdir" 370ef6fb4a5Smrg exit_status=$? 371ef6fb4a5Smrg if test "$exit_status" -ne 0 && test ! -d "$my_xdir"; then 372ef6fb4a5Smrg exit $exit_status 373ef6fb4a5Smrg fi 374ef6fb4a5Smrg case $host in 375ef6fb4a5Smrg *-darwin*) 376ef6fb4a5Smrg $show "Extracting $my_xabs" 377ef6fb4a5Smrg # Do not bother doing anything if just a dry run 378ef6fb4a5Smrg if test -z "$run"; then 379ef6fb4a5Smrg darwin_orig_dir=`pwd` 380ef6fb4a5Smrg cd $my_xdir || exit $? 381ef6fb4a5Smrg darwin_archive=$my_xabs 382ef6fb4a5Smrg darwin_curdir=`pwd` 383ef6fb4a5Smrg darwin_base_archive=`$echo "X$darwin_archive" | $Xsed -e 's%^.*/%%'` 384ef6fb4a5Smrg darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null` 385ef6fb4a5Smrg if test -n "$darwin_arches"; then 386ef6fb4a5Smrg darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'` 387ef6fb4a5Smrg darwin_arch= 388ef6fb4a5Smrg $show "$darwin_base_archive has multiple architectures $darwin_arches" 389ef6fb4a5Smrg for darwin_arch in $darwin_arches ; do 390ef6fb4a5Smrg mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}" 391ef6fb4a5Smrg lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" 392ef6fb4a5Smrg cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" 393ef6fb4a5Smrg func_extract_an_archive "`pwd`" "${darwin_base_archive}" 394ef6fb4a5Smrg cd "$darwin_curdir" 395ef6fb4a5Smrg $rm "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" 396ef6fb4a5Smrg done # $darwin_arches 397ef6fb4a5Smrg ## Okay now we have a bunch of thin objects, gotta fatten them up :) 398ef6fb4a5Smrg darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP` 399ef6fb4a5Smrg darwin_file= 400ef6fb4a5Smrg darwin_files= 401ef6fb4a5Smrg for darwin_file in $darwin_filelist; do 402ef6fb4a5Smrg darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` 403ef6fb4a5Smrg lipo -create -output "$darwin_file" $darwin_files 404ef6fb4a5Smrg done # $darwin_filelist 405ef6fb4a5Smrg ${rm}r unfat-$$ 406ef6fb4a5Smrg cd "$darwin_orig_dir" 407ef6fb4a5Smrg else 408ef6fb4a5Smrg cd "$darwin_orig_dir" 409ef6fb4a5Smrg func_extract_an_archive "$my_xdir" "$my_xabs" 410ef6fb4a5Smrg fi # $darwin_arches 411ef6fb4a5Smrg fi # $run 412ef6fb4a5Smrg ;; 413ef6fb4a5Smrg *) 414ef6fb4a5Smrg func_extract_an_archive "$my_xdir" "$my_xabs" 415ef6fb4a5Smrg ;; 416ef6fb4a5Smrg esac 417ef6fb4a5Smrg my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` 418ef6fb4a5Smrg done 419ef6fb4a5Smrg func_extract_archives_result="$my_oldobjs" 4200cc67336Smrg} 421ef6fb4a5Smrg# End of Shell function definitions 422ef6fb4a5Smrg##################################### 4230cc67336Smrg 424ef6fb4a5Smrg# Darwin sucks 425ef6fb4a5Smrgeval std_shrext=\"$shrext_cmds\" 4260cc67336Smrg 427ef6fb4a5Smrgdisable_libs=no 4280cc67336Smrg 429ef6fb4a5Smrg# Parse our command line options once, thoroughly. 430ef6fb4a5Smrgwhile test "$#" -gt 0 431ef6fb4a5Smrgdo 432ef6fb4a5Smrg arg="$1" 4330cc67336Smrg shift 434301ea0f4Smrg 435ef6fb4a5Smrg case $arg in 436ef6fb4a5Smrg -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; 437ef6fb4a5Smrg *) optarg= ;; 438ef6fb4a5Smrg esac 439301ea0f4Smrg 440ef6fb4a5Smrg # If the previous option needs an argument, assign it. 441ef6fb4a5Smrg if test -n "$prev"; then 442ef6fb4a5Smrg case $prev in 443ef6fb4a5Smrg execute_dlfiles) 444ef6fb4a5Smrg execute_dlfiles="$execute_dlfiles $arg" 445ef6fb4a5Smrg ;; 446ef6fb4a5Smrg tag) 447ef6fb4a5Smrg tagname="$arg" 448ef6fb4a5Smrg preserve_args="${preserve_args}=$arg" 449ef6fb4a5Smrg 450ef6fb4a5Smrg # Check whether tagname contains only valid characters 451ef6fb4a5Smrg case $tagname in 452ef6fb4a5Smrg *[!-_A-Za-z0-9,/]*) 453ef6fb4a5Smrg $echo "$progname: invalid tag name: $tagname" 1>&2 454ef6fb4a5Smrg exit $EXIT_FAILURE 455ef6fb4a5Smrg ;; 456ef6fb4a5Smrg esac 457301ea0f4Smrg 458ef6fb4a5Smrg case $tagname in 459ef6fb4a5Smrg CC) 460ef6fb4a5Smrg # Don't test for the "default" C tag, as we know, it's there, but 461ef6fb4a5Smrg # not specially marked. 462ef6fb4a5Smrg ;; 463ef6fb4a5Smrg *) 464ef6fb4a5Smrg if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then 465ef6fb4a5Smrg taglist="$taglist $tagname" 466ef6fb4a5Smrg # Evaluate the configuration. 467ef6fb4a5Smrg eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`" 468ef6fb4a5Smrg else 469ef6fb4a5Smrg $echo "$progname: ignoring unknown tag $tagname" 1>&2 470ef6fb4a5Smrg fi 471ef6fb4a5Smrg ;; 472ef6fb4a5Smrg esac 473ef6fb4a5Smrg ;; 474ef6fb4a5Smrg *) 475ef6fb4a5Smrg eval "$prev=\$arg" 476ef6fb4a5Smrg ;; 477ef6fb4a5Smrg esac 478301ea0f4Smrg 479ef6fb4a5Smrg prev= 480ef6fb4a5Smrg prevopt= 481ef6fb4a5Smrg continue 482ef6fb4a5Smrg fi 4830cc67336Smrg 484ef6fb4a5Smrg # Have we seen a non-optional argument yet? 485ef6fb4a5Smrg case $arg in 486ef6fb4a5Smrg --help) 487ef6fb4a5Smrg show_help=yes 488ef6fb4a5Smrg ;; 4890cc67336Smrg 490ef6fb4a5Smrg --version) 491ef6fb4a5Smrg echo "\ 492ef6fb4a5Smrg$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP 4930cc67336Smrg 494ef6fb4a5SmrgCopyright (C) 2008 Free Software Foundation, Inc. 495ef6fb4a5SmrgThis is free software; see the source for copying conditions. There is NO 496ef6fb4a5Smrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 497ef6fb4a5Smrg exit $? 498ef6fb4a5Smrg ;; 499301ea0f4Smrg 500ef6fb4a5Smrg --config) 501ef6fb4a5Smrg ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath 502301ea0f4Smrg # Now print the configurations for the tags. 503301ea0f4Smrg for tagname in $taglist; do 504ef6fb4a5Smrg ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath" 505301ea0f4Smrg done 5060cc67336Smrg exit $? 507ef6fb4a5Smrg ;; 508301ea0f4Smrg 509ef6fb4a5Smrg --debug) 510ef6fb4a5Smrg $echo "$progname: enabling shell trace mode" 511ef6fb4a5Smrg set -x 512ef6fb4a5Smrg preserve_args="$preserve_args $arg" 513ef6fb4a5Smrg ;; 514ef6fb4a5Smrg 515ef6fb4a5Smrg --dry-run | -n) 516ef6fb4a5Smrg run=: 517ef6fb4a5Smrg ;; 518ef6fb4a5Smrg 519ef6fb4a5Smrg --features) 520ef6fb4a5Smrg $echo "host: $host" 521301ea0f4Smrg if test "$build_libtool_libs" = yes; then 522ef6fb4a5Smrg $echo "enable shared libraries" 523301ea0f4Smrg else 524ef6fb4a5Smrg $echo "disable shared libraries" 525301ea0f4Smrg fi 526301ea0f4Smrg if test "$build_old_libs" = yes; then 527ef6fb4a5Smrg $echo "enable static libraries" 528301ea0f4Smrg else 529ef6fb4a5Smrg $echo "disable static libraries" 530301ea0f4Smrg fi 531301ea0f4Smrg exit $? 532ef6fb4a5Smrg ;; 533301ea0f4Smrg 534ef6fb4a5Smrg --finish) mode="finish" ;; 535301ea0f4Smrg 536ef6fb4a5Smrg --mode) prevopt="--mode" prev=mode ;; 537ef6fb4a5Smrg --mode=*) mode="$optarg" ;; 538301ea0f4Smrg 539ef6fb4a5Smrg --preserve-dup-deps) duplicate_deps="yes" ;; 540301ea0f4Smrg 541ef6fb4a5Smrg --quiet | --silent) 542ef6fb4a5Smrg show=: 543ef6fb4a5Smrg preserve_args="$preserve_args $arg" 544301ea0f4Smrg ;; 545ef6fb4a5Smrg 546ef6fb4a5Smrg --tag) 547ef6fb4a5Smrg prevopt="--tag" 548ef6fb4a5Smrg prev=tag 549ef6fb4a5Smrg preserve_args="$preserve_args --tag" 550301ea0f4Smrg ;; 551ef6fb4a5Smrg --tag=*) 552ef6fb4a5Smrg set tag "$optarg" ${1+"$@"} 553ef6fb4a5Smrg shift 554ef6fb4a5Smrg prev=tag 555ef6fb4a5Smrg preserve_args="$preserve_args --tag" 556301ea0f4Smrg ;; 557ef6fb4a5Smrg 558ef6fb4a5Smrg -dlopen) 559ef6fb4a5Smrg prevopt="-dlopen" 560ef6fb4a5Smrg prev=execute_dlfiles 5610cc67336Smrg ;; 562ef6fb4a5Smrg 563ef6fb4a5Smrg -*) 564ef6fb4a5Smrg $echo "$modename: unrecognized option \`$arg'" 1>&2 565ef6fb4a5Smrg $echo "$help" 1>&2 566ef6fb4a5Smrg exit $EXIT_FAILURE 5670cc67336Smrg ;; 568ef6fb4a5Smrg 569ef6fb4a5Smrg *) 570ef6fb4a5Smrg nonopt="$arg" 571ef6fb4a5Smrg break 572301ea0f4Smrg ;; 573301ea0f4Smrg esac 574ef6fb4a5Smrgdone 575301ea0f4Smrg 576ef6fb4a5Smrgif test -n "$prevopt"; then 577ef6fb4a5Smrg $echo "$modename: option \`$prevopt' requires an argument" 1>&2 578ef6fb4a5Smrg $echo "$help" 1>&2 579ef6fb4a5Smrg exit $EXIT_FAILURE 580ef6fb4a5Smrgfi 5810cc67336Smrg 582ef6fb4a5Smrgcase $disable_libs in 583ef6fb4a5Smrgno) 584ef6fb4a5Smrg ;; 585ef6fb4a5Smrgshared) 586ef6fb4a5Smrg build_libtool_libs=no 587ef6fb4a5Smrg build_old_libs=yes 588ef6fb4a5Smrg ;; 589ef6fb4a5Smrgstatic) 590ef6fb4a5Smrg build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` 591ef6fb4a5Smrg ;; 592ef6fb4a5Smrgesac 5930cc67336Smrg 594ef6fb4a5Smrg# If this variable is set in any of the actions, the command in it 595ef6fb4a5Smrg# will be execed at the end. This prevents here-documents from being 596ef6fb4a5Smrg# left over by shells. 597ef6fb4a5Smrgexec_cmd= 5980cc67336Smrg 599ef6fb4a5Smrgif test -z "$show_help"; then 6000cc67336Smrg 601ef6fb4a5Smrg # Infer the operation mode. 602ef6fb4a5Smrg if test -z "$mode"; then 603ef6fb4a5Smrg $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2 604ef6fb4a5Smrg $echo "*** Future versions of Libtool will require --mode=MODE be specified." 1>&2 605ef6fb4a5Smrg case $nonopt in 606ef6fb4a5Smrg *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*) 607ef6fb4a5Smrg mode=link 608ef6fb4a5Smrg for arg 609ef6fb4a5Smrg do 610ef6fb4a5Smrg case $arg in 611ef6fb4a5Smrg -c) 612ef6fb4a5Smrg mode=compile 613ef6fb4a5Smrg break 614ef6fb4a5Smrg ;; 615ef6fb4a5Smrg esac 616ef6fb4a5Smrg done 617301ea0f4Smrg ;; 618ef6fb4a5Smrg *db | *dbx | *strace | *truss) 619ef6fb4a5Smrg mode=execute 6200cc67336Smrg ;; 621ef6fb4a5Smrg *install*|cp|mv) 622ef6fb4a5Smrg mode=install 623ef6fb4a5Smrg ;; 624ef6fb4a5Smrg *rm) 625ef6fb4a5Smrg mode=uninstall 626ef6fb4a5Smrg ;; 627ef6fb4a5Smrg *) 628ef6fb4a5Smrg # If we have no mode, but dlfiles were specified, then do execute mode. 629ef6fb4a5Smrg test -n "$execute_dlfiles" && mode=execute 6300cc67336Smrg 631ef6fb4a5Smrg # Just use the default operation mode. 632ef6fb4a5Smrg if test -z "$mode"; then 633ef6fb4a5Smrg if test -n "$nonopt"; then 634ef6fb4a5Smrg $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2 635ef6fb4a5Smrg else 636ef6fb4a5Smrg $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2 637ef6fb4a5Smrg fi 638301ea0f4Smrg fi 639ef6fb4a5Smrg ;; 640ef6fb4a5Smrg esac 641301ea0f4Smrg fi 642301ea0f4Smrg 643301ea0f4Smrg # Only execute mode is allowed to have -dlopen flags. 644301ea0f4Smrg if test -n "$execute_dlfiles" && test "$mode" != execute; then 645ef6fb4a5Smrg $echo "$modename: unrecognized option \`-dlopen'" 1>&2 646ef6fb4a5Smrg $echo "$help" 1>&2 647301ea0f4Smrg exit $EXIT_FAILURE 648301ea0f4Smrg fi 649301ea0f4Smrg 650301ea0f4Smrg # Change the help message to a mode-specific one. 651301ea0f4Smrg generic_help="$help" 652ef6fb4a5Smrg help="Try \`$modename --help --mode=$mode' for more information." 653301ea0f4Smrg 654ef6fb4a5Smrg # These modes are in order of execution frequency so that they run quickly. 655ef6fb4a5Smrg case $mode in 656ef6fb4a5Smrg # libtool compile mode 657ef6fb4a5Smrg compile) 658ef6fb4a5Smrg modename="$modename: compile" 659ef6fb4a5Smrg # Get the compilation command and the source file. 660ef6fb4a5Smrg base_compile= 661ef6fb4a5Smrg srcfile="$nonopt" # always keep a non-empty value in "srcfile" 662ef6fb4a5Smrg suppress_opt=yes 663ef6fb4a5Smrg suppress_output= 664ef6fb4a5Smrg arg_mode=normal 665ef6fb4a5Smrg libobj= 666ef6fb4a5Smrg later= 667301ea0f4Smrg 668ef6fb4a5Smrg for arg 669ef6fb4a5Smrg do 670ef6fb4a5Smrg case $arg_mode in 671ef6fb4a5Smrg arg ) 672ef6fb4a5Smrg # do not "continue". Instead, add this to base_compile 673ef6fb4a5Smrg lastarg="$arg" 674ef6fb4a5Smrg arg_mode=normal 675ef6fb4a5Smrg ;; 676301ea0f4Smrg 677ef6fb4a5Smrg target ) 678ef6fb4a5Smrg libobj="$arg" 679ef6fb4a5Smrg arg_mode=normal 680ef6fb4a5Smrg continue 681ef6fb4a5Smrg ;; 682301ea0f4Smrg 683ef6fb4a5Smrg normal ) 684ef6fb4a5Smrg # Accept any command-line options. 685ef6fb4a5Smrg case $arg in 686ef6fb4a5Smrg -o) 687ef6fb4a5Smrg if test -n "$libobj" ; then 688ef6fb4a5Smrg $echo "$modename: you cannot specify \`-o' more than once" 1>&2 689ef6fb4a5Smrg exit $EXIT_FAILURE 690ef6fb4a5Smrg fi 691ef6fb4a5Smrg arg_mode=target 692ef6fb4a5Smrg continue 693ef6fb4a5Smrg ;; 694301ea0f4Smrg 695ef6fb4a5Smrg -static | -prefer-pic | -prefer-non-pic) 696ef6fb4a5Smrg later="$later $arg" 697ef6fb4a5Smrg continue 698ef6fb4a5Smrg ;; 6990cc67336Smrg 7000cc67336Smrg -no-suppress) 7010cc67336Smrg suppress_opt=no 7020cc67336Smrg continue 7030cc67336Smrg ;; 7040cc67336Smrg 7050cc67336Smrg -Xcompiler) 7060cc67336Smrg arg_mode=arg # the next one goes into the "base_compile" arg list 7070cc67336Smrg continue # The current "srcfile" will either be retained or 7080cc67336Smrg ;; # replaced later. I would guess that would be a bug. 7090cc67336Smrg 7100cc67336Smrg -Wc,*) 711ef6fb4a5Smrg args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"` 7120cc67336Smrg lastarg= 7130cc67336Smrg save_ifs="$IFS"; IFS=',' 714ef6fb4a5Smrg for arg in $args; do 7150cc67336Smrg IFS="$save_ifs" 716ef6fb4a5Smrg 717ef6fb4a5Smrg # Double-quote args containing other shell metacharacters. 718ef6fb4a5Smrg # Many Bourne shells cannot handle close brackets correctly 719ef6fb4a5Smrg # in scan sets, so we specify it separately. 720ef6fb4a5Smrg case $arg in 721ef6fb4a5Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 722ef6fb4a5Smrg arg="\"$arg\"" 723ef6fb4a5Smrg ;; 724ef6fb4a5Smrg esac 725ef6fb4a5Smrg lastarg="$lastarg $arg" 726301ea0f4Smrg done 727301ea0f4Smrg IFS="$save_ifs" 728ef6fb4a5Smrg lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"` 729301ea0f4Smrg 730301ea0f4Smrg # Add the arguments to base_compile. 731301ea0f4Smrg base_compile="$base_compile $lastarg" 732301ea0f4Smrg continue 733301ea0f4Smrg ;; 734301ea0f4Smrg 735ef6fb4a5Smrg * ) 736301ea0f4Smrg # Accept the current argument as the source file. 737301ea0f4Smrg # The previous "srcfile" becomes the current argument. 738301ea0f4Smrg # 739301ea0f4Smrg lastarg="$srcfile" 740301ea0f4Smrg srcfile="$arg" 741301ea0f4Smrg ;; 742301ea0f4Smrg esac # case $arg 743301ea0f4Smrg ;; 744301ea0f4Smrg esac # case $arg_mode 745301ea0f4Smrg 746301ea0f4Smrg # Aesthetically quote the previous argument. 747ef6fb4a5Smrg lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` 748ef6fb4a5Smrg 749ef6fb4a5Smrg case $lastarg in 750ef6fb4a5Smrg # Double-quote args containing other shell metacharacters. 751ef6fb4a5Smrg # Many Bourne shells cannot handle close brackets correctly 752ef6fb4a5Smrg # in scan sets, and some SunOS ksh mistreat backslash-escaping 753ef6fb4a5Smrg # in scan sets (worked around with variable expansion), 754ef6fb4a5Smrg # and furthermore cannot handle '|' '&' '(' ')' in scan sets 755ef6fb4a5Smrg # at all, so we specify them separately. 756ef6fb4a5Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 757ef6fb4a5Smrg lastarg="\"$lastarg\"" 758ef6fb4a5Smrg ;; 759ef6fb4a5Smrg esac 760ef6fb4a5Smrg 761ef6fb4a5Smrg base_compile="$base_compile $lastarg" 762301ea0f4Smrg done # for arg 763301ea0f4Smrg 764301ea0f4Smrg case $arg_mode in 765301ea0f4Smrg arg) 766ef6fb4a5Smrg $echo "$modename: you must specify an argument for -Xcompile" 767ef6fb4a5Smrg exit $EXIT_FAILURE 768301ea0f4Smrg ;; 769301ea0f4Smrg target) 770ef6fb4a5Smrg $echo "$modename: you must specify a target with \`-o'" 1>&2 771ef6fb4a5Smrg exit $EXIT_FAILURE 772301ea0f4Smrg ;; 773301ea0f4Smrg *) 774301ea0f4Smrg # Get the name of the library object. 775ef6fb4a5Smrg [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` 776301ea0f4Smrg ;; 777301ea0f4Smrg esac 778301ea0f4Smrg 779301ea0f4Smrg # Recognize several different file suffixes. 780301ea0f4Smrg # If the user specifies -o file.o, it is replaced with file.lo 781ef6fb4a5Smrg xform='[cCFSifmso]' 782301ea0f4Smrg case $libobj in 783ef6fb4a5Smrg *.ada) xform=ada ;; 784ef6fb4a5Smrg *.adb) xform=adb ;; 785ef6fb4a5Smrg *.ads) xform=ads ;; 786ef6fb4a5Smrg *.asm) xform=asm ;; 787ef6fb4a5Smrg *.c++) xform=c++ ;; 788ef6fb4a5Smrg *.cc) xform=cc ;; 789ef6fb4a5Smrg *.ii) xform=ii ;; 790ef6fb4a5Smrg *.class) xform=class ;; 791ef6fb4a5Smrg *.cpp) xform=cpp ;; 792ef6fb4a5Smrg *.cxx) xform=cxx ;; 793ef6fb4a5Smrg *.[fF][09]?) xform=[fF][09]. ;; 794ef6fb4a5Smrg *.for) xform=for ;; 795ef6fb4a5Smrg *.java) xform=java ;; 796ef6fb4a5Smrg *.obj) xform=obj ;; 797ef6fb4a5Smrg *.sx) xform=sx ;; 798301ea0f4Smrg esac 799301ea0f4Smrg 800ef6fb4a5Smrg libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` 801ef6fb4a5Smrg 802301ea0f4Smrg case $libobj in 803ef6fb4a5Smrg *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; 804301ea0f4Smrg *) 805ef6fb4a5Smrg $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 806ef6fb4a5Smrg exit $EXIT_FAILURE 807301ea0f4Smrg ;; 808301ea0f4Smrg esac 809301ea0f4Smrg 810301ea0f4Smrg func_infer_tag $base_compile 811301ea0f4Smrg 812301ea0f4Smrg for arg in $later; do 813301ea0f4Smrg case $arg in 814301ea0f4Smrg -static) 815301ea0f4Smrg build_old_libs=yes 816301ea0f4Smrg continue 817301ea0f4Smrg ;; 818301ea0f4Smrg 819301ea0f4Smrg -prefer-pic) 820301ea0f4Smrg pic_mode=yes 821301ea0f4Smrg continue 822301ea0f4Smrg ;; 823301ea0f4Smrg 824301ea0f4Smrg -prefer-non-pic) 825301ea0f4Smrg pic_mode=no 826301ea0f4Smrg continue 827301ea0f4Smrg ;; 828301ea0f4Smrg esac 829301ea0f4Smrg done 830301ea0f4Smrg 831ef6fb4a5Smrg qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"` 832ef6fb4a5Smrg case $qlibobj in 833ef6fb4a5Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 834ef6fb4a5Smrg qlibobj="\"$qlibobj\"" ;; 835ef6fb4a5Smrg esac 836ef6fb4a5Smrg test "X$libobj" != "X$qlibobj" \ 837ef6fb4a5Smrg && $echo "X$libobj" | grep '[]~#^*{};<>?"'"'"' &()|`$[]' \ 838ef6fb4a5Smrg && $echo "$modename: libobj name \`$libobj' may not contain shell special characters." 839ef6fb4a5Smrg objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` 840ef6fb4a5Smrg xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` 841ef6fb4a5Smrg if test "X$xdir" = "X$obj"; then 842ef6fb4a5Smrg xdir= 843ef6fb4a5Smrg else 844ef6fb4a5Smrg xdir=$xdir/ 845ef6fb4a5Smrg fi 846301ea0f4Smrg lobj=${xdir}$objdir/$objname 847301ea0f4Smrg 848ef6fb4a5Smrg if test -z "$base_compile"; then 849ef6fb4a5Smrg $echo "$modename: you must specify a compilation command" 1>&2 850ef6fb4a5Smrg $echo "$help" 1>&2 851ef6fb4a5Smrg exit $EXIT_FAILURE 852ef6fb4a5Smrg fi 853301ea0f4Smrg 854301ea0f4Smrg # Delete any leftover library objects. 855301ea0f4Smrg if test "$build_old_libs" = yes; then 856301ea0f4Smrg removelist="$obj $lobj $libobj ${libobj}T" 857301ea0f4Smrg else 858301ea0f4Smrg removelist="$lobj $libobj ${libobj}T" 859301ea0f4Smrg fi 860301ea0f4Smrg 861ef6fb4a5Smrg $run $rm $removelist 862ef6fb4a5Smrg trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 863ef6fb4a5Smrg 864301ea0f4Smrg # On Cygwin there's no "real" PIC flag so we must build both object types 865301ea0f4Smrg case $host_os in 866ef6fb4a5Smrg cygwin* | mingw* | pw32* | os2*) 867301ea0f4Smrg pic_mode=default 868301ea0f4Smrg ;; 869301ea0f4Smrg esac 870301ea0f4Smrg if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then 871301ea0f4Smrg # non-PIC code in shared libraries is not supported 872301ea0f4Smrg pic_mode=default 873301ea0f4Smrg fi 874301ea0f4Smrg 875301ea0f4Smrg # Calculate the filename of the output object if compiler does 876301ea0f4Smrg # not support -o with -c 877301ea0f4Smrg if test "$compiler_c_o" = no; then 878ef6fb4a5Smrg output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} 879301ea0f4Smrg lockfile="$output_obj.lock" 880ef6fb4a5Smrg removelist="$removelist $output_obj $lockfile" 881ef6fb4a5Smrg trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 882301ea0f4Smrg else 883301ea0f4Smrg output_obj= 884301ea0f4Smrg need_locks=no 885301ea0f4Smrg lockfile= 886301ea0f4Smrg fi 887301ea0f4Smrg 888301ea0f4Smrg # Lock this critical section if it is needed 889301ea0f4Smrg # We use this script file to make the link, it avoids creating a new file 890301ea0f4Smrg if test "$need_locks" = yes; then 891ef6fb4a5Smrg until $run ln "$progpath" "$lockfile" 2>/dev/null; do 892ef6fb4a5Smrg $show "Waiting for $lockfile to be removed" 893301ea0f4Smrg sleep 2 894301ea0f4Smrg done 895301ea0f4Smrg elif test "$need_locks" = warn; then 896301ea0f4Smrg if test -f "$lockfile"; then 897ef6fb4a5Smrg $echo "\ 898301ea0f4Smrg*** ERROR, $lockfile exists and contains: 899301ea0f4Smrg`cat $lockfile 2>/dev/null` 900301ea0f4Smrg 901301ea0f4SmrgThis indicates that another process is trying to use the same 902301ea0f4Smrgtemporary object file, and libtool could not work around it because 903301ea0f4Smrgyour compiler does not support \`-c' and \`-o' together. If you 904301ea0f4Smrgrepeat this compilation, it may succeed, by chance, but you had better 905301ea0f4Smrgavoid parallel builds (make -j) in this platform, or get a better 906301ea0f4Smrgcompiler." 907301ea0f4Smrg 908ef6fb4a5Smrg $run $rm $removelist 909301ea0f4Smrg exit $EXIT_FAILURE 910301ea0f4Smrg fi 911ef6fb4a5Smrg $echo "$srcfile" > "$lockfile" 912301ea0f4Smrg fi 913301ea0f4Smrg 914301ea0f4Smrg if test -n "$fix_srcfile_path"; then 915301ea0f4Smrg eval srcfile=\"$fix_srcfile_path\" 916301ea0f4Smrg fi 917ef6fb4a5Smrg qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"` 918ef6fb4a5Smrg case $qsrcfile in 919ef6fb4a5Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 920ef6fb4a5Smrg qsrcfile="\"$qsrcfile\"" ;; 921ef6fb4a5Smrg esac 922ef6fb4a5Smrg 923ef6fb4a5Smrg $run $rm "$libobj" "${libobj}T" 924ef6fb4a5Smrg 925ef6fb4a5Smrg # Create a libtool object file (analogous to a ".la" file), 926ef6fb4a5Smrg # but don't create it if we're doing a dry run. 927ef6fb4a5Smrg test -z "$run" && cat > ${libobj}T <<EOF 928ef6fb4a5Smrg# $libobj - a libtool object file 929ef6fb4a5Smrg# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP 930ef6fb4a5Smrg# 931ef6fb4a5Smrg# Please DO NOT delete this file! 932ef6fb4a5Smrg# It is necessary for linking the library. 933ef6fb4a5Smrg 934ef6fb4a5Smrg# Name of the PIC object. 935ef6fb4a5SmrgEOF 936301ea0f4Smrg 937301ea0f4Smrg # Only build a PIC object if we are building libtool libraries. 938301ea0f4Smrg if test "$build_libtool_libs" = yes; then 939301ea0f4Smrg # Without this assignment, base_compile gets emptied. 940301ea0f4Smrg fbsd_hideous_sh_bug=$base_compile 941301ea0f4Smrg 942301ea0f4Smrg if test "$pic_mode" != no; then 943301ea0f4Smrg command="$base_compile $qsrcfile $pic_flag" 944301ea0f4Smrg else 945301ea0f4Smrg # Don't build PIC code 946301ea0f4Smrg command="$base_compile $qsrcfile" 947301ea0f4Smrg fi 948301ea0f4Smrg 949ef6fb4a5Smrg if test ! -d "${xdir}$objdir"; then 950ef6fb4a5Smrg $show "$mkdir ${xdir}$objdir" 951ef6fb4a5Smrg $run $mkdir ${xdir}$objdir 952ef6fb4a5Smrg exit_status=$? 953ef6fb4a5Smrg if test "$exit_status" -ne 0 && test ! -d "${xdir}$objdir"; then 954ef6fb4a5Smrg exit $exit_status 955ef6fb4a5Smrg fi 956ef6fb4a5Smrg fi 957301ea0f4Smrg 958301ea0f4Smrg if test -z "$output_obj"; then 959301ea0f4Smrg # Place PIC objects in $objdir 960301ea0f4Smrg command="$command -o $lobj" 961301ea0f4Smrg fi 962301ea0f4Smrg 963ef6fb4a5Smrg $run $rm "$lobj" "$output_obj" 964ef6fb4a5Smrg 965ef6fb4a5Smrg $show "$command" 966ef6fb4a5Smrg if $run eval $lt_env "$command"; then : 967ef6fb4a5Smrg else 968ef6fb4a5Smrg test -n "$output_obj" && $run $rm $removelist 969ef6fb4a5Smrg exit $EXIT_FAILURE 970ef6fb4a5Smrg fi 971301ea0f4Smrg 972301ea0f4Smrg if test "$need_locks" = warn && 973301ea0f4Smrg test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 974ef6fb4a5Smrg $echo "\ 975301ea0f4Smrg*** ERROR, $lockfile contains: 976301ea0f4Smrg`cat $lockfile 2>/dev/null` 977301ea0f4Smrg 978301ea0f4Smrgbut it should contain: 979301ea0f4Smrg$srcfile 980301ea0f4Smrg 981301ea0f4SmrgThis indicates that another process is trying to use the same 982301ea0f4Smrgtemporary object file, and libtool could not work around it because 983301ea0f4Smrgyour compiler does not support \`-c' and \`-o' together. If you 984301ea0f4Smrgrepeat this compilation, it may succeed, by chance, but you had better 985301ea0f4Smrgavoid parallel builds (make -j) in this platform, or get a better 986301ea0f4Smrgcompiler." 987301ea0f4Smrg 988ef6fb4a5Smrg $run $rm $removelist 989301ea0f4Smrg exit $EXIT_FAILURE 990301ea0f4Smrg fi 991301ea0f4Smrg 992301ea0f4Smrg # Just move the object if needed, then go on to compile the next one 993301ea0f4Smrg if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then 994ef6fb4a5Smrg $show "$mv $output_obj $lobj" 995ef6fb4a5Smrg if $run $mv $output_obj $lobj; then : 996ef6fb4a5Smrg else 997ef6fb4a5Smrg error=$? 998ef6fb4a5Smrg $run $rm $removelist 999ef6fb4a5Smrg exit $error 1000ef6fb4a5Smrg fi 1001301ea0f4Smrg fi 1002301ea0f4Smrg 1003ef6fb4a5Smrg # Append the name of the PIC object to the libtool object file. 1004ef6fb4a5Smrg test -z "$run" && cat >> ${libobj}T <<EOF 1005ef6fb4a5Smrgpic_object='$objdir/$objname' 1006ef6fb4a5Smrg 1007ef6fb4a5SmrgEOF 1008ef6fb4a5Smrg 1009301ea0f4Smrg # Allow error messages only from the first compilation. 1010301ea0f4Smrg if test "$suppress_opt" = yes; then 1011ef6fb4a5Smrg suppress_output=' >/dev/null 2>&1' 1012301ea0f4Smrg fi 1013ef6fb4a5Smrg else 1014ef6fb4a5Smrg # No PIC object so indicate it doesn't exist in the libtool 1015ef6fb4a5Smrg # object file. 1016ef6fb4a5Smrg test -z "$run" && cat >> ${libobj}T <<EOF 1017ef6fb4a5Smrgpic_object=none 1018ef6fb4a5Smrg 1019ef6fb4a5SmrgEOF 1020301ea0f4Smrg fi 1021301ea0f4Smrg 1022301ea0f4Smrg # Only build a position-dependent object if we build old libraries. 1023301ea0f4Smrg if test "$build_old_libs" = yes; then 1024301ea0f4Smrg if test "$pic_mode" != yes; then 1025301ea0f4Smrg # Don't build PIC code 1026ef6fb4a5Smrg command="$base_compile $qsrcfile" 1027301ea0f4Smrg else 1028301ea0f4Smrg command="$base_compile $qsrcfile $pic_flag" 1029301ea0f4Smrg fi 1030301ea0f4Smrg if test "$compiler_c_o" = yes; then 1031301ea0f4Smrg command="$command -o $obj" 1032301ea0f4Smrg fi 1033301ea0f4Smrg 1034301ea0f4Smrg # Suppress compiler output if we already did a PIC compilation. 1035301ea0f4Smrg command="$command$suppress_output" 1036ef6fb4a5Smrg $run $rm "$obj" "$output_obj" 1037ef6fb4a5Smrg $show "$command" 1038ef6fb4a5Smrg if $run eval $lt_env "$command"; then : 1039ef6fb4a5Smrg else 1040ef6fb4a5Smrg $run $rm $removelist 1041ef6fb4a5Smrg exit $EXIT_FAILURE 1042ef6fb4a5Smrg fi 1043301ea0f4Smrg 1044301ea0f4Smrg if test "$need_locks" = warn && 1045301ea0f4Smrg test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 1046ef6fb4a5Smrg $echo "\ 1047301ea0f4Smrg*** ERROR, $lockfile contains: 1048301ea0f4Smrg`cat $lockfile 2>/dev/null` 1049301ea0f4Smrg 1050301ea0f4Smrgbut it should contain: 1051301ea0f4Smrg$srcfile 1052301ea0f4Smrg 1053301ea0f4SmrgThis indicates that another process is trying to use the same 1054301ea0f4Smrgtemporary object file, and libtool could not work around it because 1055301ea0f4Smrgyour compiler does not support \`-c' and \`-o' together. If you 1056301ea0f4Smrgrepeat this compilation, it may succeed, by chance, but you had better 1057301ea0f4Smrgavoid parallel builds (make -j) in this platform, or get a better 1058301ea0f4Smrgcompiler." 1059301ea0f4Smrg 1060ef6fb4a5Smrg $run $rm $removelist 1061301ea0f4Smrg exit $EXIT_FAILURE 1062301ea0f4Smrg fi 1063301ea0f4Smrg 1064301ea0f4Smrg # Just move the object if needed 1065301ea0f4Smrg if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then 1066ef6fb4a5Smrg $show "$mv $output_obj $obj" 1067ef6fb4a5Smrg if $run $mv $output_obj $obj; then : 1068ef6fb4a5Smrg else 1069ef6fb4a5Smrg error=$? 1070ef6fb4a5Smrg $run $rm $removelist 1071ef6fb4a5Smrg exit $error 1072ef6fb4a5Smrg fi 1073301ea0f4Smrg fi 1074ef6fb4a5Smrg 1075ef6fb4a5Smrg # Append the name of the non-PIC object the libtool object file. 1076ef6fb4a5Smrg # Only append if the libtool object file exists. 1077ef6fb4a5Smrg test -z "$run" && cat >> ${libobj}T <<EOF 1078ef6fb4a5Smrg# Name of the non-PIC object. 1079ef6fb4a5Smrgnon_pic_object='$objname' 1080ef6fb4a5Smrg 1081ef6fb4a5SmrgEOF 1082ef6fb4a5Smrg else 1083ef6fb4a5Smrg # Append the name of the non-PIC object the libtool object file. 1084ef6fb4a5Smrg # Only append if the libtool object file exists. 1085ef6fb4a5Smrg test -z "$run" && cat >> ${libobj}T <<EOF 1086ef6fb4a5Smrg# Name of the non-PIC object. 1087ef6fb4a5Smrgnon_pic_object=none 1088ef6fb4a5Smrg 1089ef6fb4a5SmrgEOF 1090301ea0f4Smrg fi 1091301ea0f4Smrg 1092ef6fb4a5Smrg $run $mv "${libobj}T" "${libobj}" 1093301ea0f4Smrg 1094ef6fb4a5Smrg # Unlock the critical section if it was locked 1095ef6fb4a5Smrg if test "$need_locks" != no; then 1096ef6fb4a5Smrg $run $rm "$lockfile" 1097ef6fb4a5Smrg fi 1098301ea0f4Smrg 1099301ea0f4Smrg exit $EXIT_SUCCESS 1100ef6fb4a5Smrg ;; 1101301ea0f4Smrg 1102ef6fb4a5Smrg # libtool link mode 1103ef6fb4a5Smrg link | relink) 1104ef6fb4a5Smrg modename="$modename: link" 1105ef6fb4a5Smrg case $host in 1106ef6fb4a5Smrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) 1107ef6fb4a5Smrg # It is impossible to link a dll without this setting, and 1108ef6fb4a5Smrg # we shouldn't force the makefile maintainer to figure out 1109ef6fb4a5Smrg # which system we are compiling for in order to pass an extra 1110ef6fb4a5Smrg # flag for every libtool invocation. 1111ef6fb4a5Smrg # allow_undefined=no 1112301ea0f4Smrg 1113ef6fb4a5Smrg # FIXME: Unfortunately, there are problems with the above when trying 1114ef6fb4a5Smrg # to make a dll which has undefined symbols, in which case not 1115ef6fb4a5Smrg # even a static library is built. For now, we need to specify 1116ef6fb4a5Smrg # -no-undefined on the libtool link line when we can be certain 1117ef6fb4a5Smrg # that all symbols are satisfied, otherwise we get a static library. 1118ef6fb4a5Smrg allow_undefined=yes 1119ef6fb4a5Smrg ;; 1120ef6fb4a5Smrg *) 1121ef6fb4a5Smrg allow_undefined=yes 1122ef6fb4a5Smrg ;; 1123ef6fb4a5Smrg esac 1124ef6fb4a5Smrg libtool_args="$nonopt" 1125ef6fb4a5Smrg base_compile="$nonopt $@" 1126ef6fb4a5Smrg compile_command="$nonopt" 1127ef6fb4a5Smrg finalize_command="$nonopt" 1128301ea0f4Smrg 1129ef6fb4a5Smrg compile_rpath= 1130ef6fb4a5Smrg finalize_rpath= 1131ef6fb4a5Smrg compile_shlibpath= 1132ef6fb4a5Smrg finalize_shlibpath= 1133ef6fb4a5Smrg convenience= 1134ef6fb4a5Smrg old_convenience= 1135ef6fb4a5Smrg deplibs= 1136ef6fb4a5Smrg old_deplibs= 1137ef6fb4a5Smrg compiler_flags= 1138ef6fb4a5Smrg linker_flags= 1139ef6fb4a5Smrg dllsearchpath= 1140ef6fb4a5Smrg lib_search_path=`pwd` 1141ef6fb4a5Smrg inst_prefix_dir= 1142301ea0f4Smrg 1143ef6fb4a5Smrg avoid_version=no 1144ef6fb4a5Smrg dlfiles= 1145ef6fb4a5Smrg dlprefiles= 1146ef6fb4a5Smrg dlself=no 1147ef6fb4a5Smrg export_dynamic=no 1148ef6fb4a5Smrg export_symbols= 1149ef6fb4a5Smrg export_symbols_regex= 1150ef6fb4a5Smrg generated= 1151ef6fb4a5Smrg libobjs= 1152ef6fb4a5Smrg ltlibs= 1153ef6fb4a5Smrg module=no 1154ef6fb4a5Smrg no_install=no 1155ef6fb4a5Smrg objs= 1156ef6fb4a5Smrg non_pic_objects= 1157ef6fb4a5Smrg notinst_path= # paths that contain not-installed libtool libraries 1158ef6fb4a5Smrg precious_files_regex= 1159ef6fb4a5Smrg prefer_static_libs=no 1160ef6fb4a5Smrg preload=no 1161ef6fb4a5Smrg prev= 1162ef6fb4a5Smrg prevarg= 1163ef6fb4a5Smrg release= 1164ef6fb4a5Smrg rpath= 1165ef6fb4a5Smrg xrpath= 1166ef6fb4a5Smrg perm_rpath= 1167ef6fb4a5Smrg temp_rpath= 1168ef6fb4a5Smrg thread_safe=no 1169ef6fb4a5Smrg vinfo= 1170ef6fb4a5Smrg vinfo_number=no 1171ef6fb4a5Smrg single_module="${wl}-single_module" 1172301ea0f4Smrg 1173ef6fb4a5Smrg func_infer_tag $base_compile 1174301ea0f4Smrg 1175ef6fb4a5Smrg # We need to know -static, to get the right output filenames. 1176ef6fb4a5Smrg for arg 1177ef6fb4a5Smrg do 1178ef6fb4a5Smrg case $arg in 1179ef6fb4a5Smrg -all-static | -static | -static-libtool-libs) 1180ef6fb4a5Smrg case $arg in 1181ef6fb4a5Smrg -all-static) 1182ef6fb4a5Smrg if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then 1183ef6fb4a5Smrg $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2 1184ef6fb4a5Smrg fi 1185ef6fb4a5Smrg if test -n "$link_static_flag"; then 1186ef6fb4a5Smrg dlopen_self=$dlopen_self_static 1187ef6fb4a5Smrg fi 1188ef6fb4a5Smrg prefer_static_libs=yes 1189ef6fb4a5Smrg ;; 1190ef6fb4a5Smrg -static) 1191ef6fb4a5Smrg if test -z "$pic_flag" && test -n "$link_static_flag"; then 1192ef6fb4a5Smrg dlopen_self=$dlopen_self_static 1193ef6fb4a5Smrg fi 1194ef6fb4a5Smrg prefer_static_libs=built 1195ef6fb4a5Smrg ;; 1196ef6fb4a5Smrg -static-libtool-libs) 1197ef6fb4a5Smrg if test -z "$pic_flag" && test -n "$link_static_flag"; then 1198ef6fb4a5Smrg dlopen_self=$dlopen_self_static 1199ef6fb4a5Smrg fi 1200ef6fb4a5Smrg prefer_static_libs=yes 1201ef6fb4a5Smrg ;; 1202ef6fb4a5Smrg esac 1203ef6fb4a5Smrg build_libtool_libs=no 1204ef6fb4a5Smrg build_old_libs=yes 1205ef6fb4a5Smrg break 1206ef6fb4a5Smrg ;; 1207ef6fb4a5Smrg esac 1208ef6fb4a5Smrg done 1209301ea0f4Smrg 1210ef6fb4a5Smrg # See if our shared archives depend on static archives. 1211ef6fb4a5Smrg test -n "$old_archive_from_new_cmds" && build_old_libs=yes 1212301ea0f4Smrg 1213ef6fb4a5Smrg # Go through the arguments, transforming them on the way. 1214ef6fb4a5Smrg while test "$#" -gt 0; do 1215ef6fb4a5Smrg arg="$1" 1216ef6fb4a5Smrg shift 1217ef6fb4a5Smrg case $arg in 1218ef6fb4a5Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 1219ef6fb4a5Smrg qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test 1220ef6fb4a5Smrg ;; 1221ef6fb4a5Smrg *) qarg=$arg ;; 1222ef6fb4a5Smrg esac 1223ef6fb4a5Smrg libtool_args="$libtool_args $qarg" 1224301ea0f4Smrg 1225ef6fb4a5Smrg # If the previous option needs an argument, assign it. 1226ef6fb4a5Smrg if test -n "$prev"; then 1227ef6fb4a5Smrg case $prev in 1228ef6fb4a5Smrg output) 1229ef6fb4a5Smrg compile_command="$compile_command @OUTPUT@" 1230ef6fb4a5Smrg finalize_command="$finalize_command @OUTPUT@" 1231ef6fb4a5Smrg ;; 1232ef6fb4a5Smrg esac 1233301ea0f4Smrg 1234ef6fb4a5Smrg case $prev in 1235ef6fb4a5Smrg dlfiles|dlprefiles) 1236ef6fb4a5Smrg if test "$preload" = no; then 1237ef6fb4a5Smrg # Add the symbol object into the linking commands. 1238ef6fb4a5Smrg compile_command="$compile_command @SYMFILE@" 1239ef6fb4a5Smrg finalize_command="$finalize_command @SYMFILE@" 1240ef6fb4a5Smrg preload=yes 1241ef6fb4a5Smrg fi 1242ef6fb4a5Smrg case $arg in 1243ef6fb4a5Smrg *.la | *.lo) ;; # We handle these cases below. 1244ef6fb4a5Smrg force) 1245ef6fb4a5Smrg if test "$dlself" = no; then 1246ef6fb4a5Smrg dlself=needless 1247ef6fb4a5Smrg export_dynamic=yes 1248ef6fb4a5Smrg fi 1249ef6fb4a5Smrg prev= 1250ef6fb4a5Smrg continue 1251ef6fb4a5Smrg ;; 1252ef6fb4a5Smrg self) 1253ef6fb4a5Smrg if test "$prev" = dlprefiles; then 1254ef6fb4a5Smrg dlself=yes 1255ef6fb4a5Smrg elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then 1256ef6fb4a5Smrg dlself=yes 1257ef6fb4a5Smrg else 1258ef6fb4a5Smrg dlself=needless 1259ef6fb4a5Smrg export_dynamic=yes 1260ef6fb4a5Smrg fi 1261ef6fb4a5Smrg prev= 1262ef6fb4a5Smrg continue 1263ef6fb4a5Smrg ;; 1264ef6fb4a5Smrg *) 1265ef6fb4a5Smrg if test "$prev" = dlfiles; then 1266ef6fb4a5Smrg dlfiles="$dlfiles $arg" 1267ef6fb4a5Smrg else 1268ef6fb4a5Smrg dlprefiles="$dlprefiles $arg" 1269ef6fb4a5Smrg fi 1270ef6fb4a5Smrg prev= 1271ef6fb4a5Smrg continue 1272ef6fb4a5Smrg ;; 1273ef6fb4a5Smrg esac 1274ef6fb4a5Smrg ;; 1275ef6fb4a5Smrg expsyms) 1276ef6fb4a5Smrg export_symbols="$arg" 1277ef6fb4a5Smrg if test ! -f "$arg"; then 1278ef6fb4a5Smrg $echo "$modename: symbol file \`$arg' does not exist" 1279ef6fb4a5Smrg exit $EXIT_FAILURE 1280ef6fb4a5Smrg fi 1281ef6fb4a5Smrg prev= 1282ef6fb4a5Smrg continue 1283ef6fb4a5Smrg ;; 1284ef6fb4a5Smrg expsyms_regex) 1285ef6fb4a5Smrg export_symbols_regex="$arg" 1286ef6fb4a5Smrg prev= 1287ef6fb4a5Smrg continue 1288ef6fb4a5Smrg ;; 1289ef6fb4a5Smrg inst_prefix) 1290ef6fb4a5Smrg inst_prefix_dir="$arg" 1291ef6fb4a5Smrg prev= 1292ef6fb4a5Smrg continue 1293ef6fb4a5Smrg ;; 1294ef6fb4a5Smrg precious_regex) 1295ef6fb4a5Smrg precious_files_regex="$arg" 1296ef6fb4a5Smrg prev= 1297ef6fb4a5Smrg continue 1298ef6fb4a5Smrg ;; 1299ef6fb4a5Smrg release) 1300ef6fb4a5Smrg release="-$arg" 1301ef6fb4a5Smrg prev= 1302ef6fb4a5Smrg continue 1303ef6fb4a5Smrg ;; 1304ef6fb4a5Smrg objectlist) 1305ef6fb4a5Smrg if test -f "$arg"; then 1306ef6fb4a5Smrg save_arg=$arg 1307ef6fb4a5Smrg moreargs= 1308ef6fb4a5Smrg for fil in `cat $save_arg` 1309ef6fb4a5Smrg do 1310ef6fb4a5Smrg# moreargs="$moreargs $fil" 1311ef6fb4a5Smrg arg=$fil 1312ef6fb4a5Smrg # A libtool-controlled object. 1313301ea0f4Smrg 1314ef6fb4a5Smrg # Check to see that this really is a libtool object. 1315ef6fb4a5Smrg if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 1316ef6fb4a5Smrg pic_object= 1317ef6fb4a5Smrg non_pic_object= 1318301ea0f4Smrg 1319ef6fb4a5Smrg # Read the .lo file 1320ef6fb4a5Smrg # If there is no directory component, then add one. 1321ef6fb4a5Smrg case $arg in 1322ef6fb4a5Smrg */* | *\\*) . $arg ;; 1323ef6fb4a5Smrg *) . ./$arg ;; 1324ef6fb4a5Smrg esac 1325301ea0f4Smrg 1326ef6fb4a5Smrg if test -z "$pic_object" || \ 1327ef6fb4a5Smrg test -z "$non_pic_object" || 1328ef6fb4a5Smrg test "$pic_object" = none && \ 1329ef6fb4a5Smrg test "$non_pic_object" = none; then 1330ef6fb4a5Smrg $echo "$modename: cannot find name of object for \`$arg'" 1>&2 1331ef6fb4a5Smrg exit $EXIT_FAILURE 1332ef6fb4a5Smrg fi 1333301ea0f4Smrg 1334ef6fb4a5Smrg # Extract subdirectory from the argument. 1335ef6fb4a5Smrg xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` 1336ef6fb4a5Smrg if test "X$xdir" = "X$arg"; then 1337ef6fb4a5Smrg xdir= 1338ef6fb4a5Smrg else 1339ef6fb4a5Smrg xdir="$xdir/" 1340ef6fb4a5Smrg fi 1341301ea0f4Smrg 1342ef6fb4a5Smrg if test "$pic_object" != none; then 1343ef6fb4a5Smrg # Prepend the subdirectory the object is found in. 1344ef6fb4a5Smrg pic_object="$xdir$pic_object" 1345301ea0f4Smrg 1346ef6fb4a5Smrg if test "$prev" = dlfiles; then 1347ef6fb4a5Smrg if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 1348ef6fb4a5Smrg dlfiles="$dlfiles $pic_object" 1349ef6fb4a5Smrg prev= 1350ef6fb4a5Smrg continue 1351ef6fb4a5Smrg else 1352ef6fb4a5Smrg # If libtool objects are unsupported, then we need to preload. 1353ef6fb4a5Smrg prev=dlprefiles 1354ef6fb4a5Smrg fi 1355ef6fb4a5Smrg fi 1356301ea0f4Smrg 1357ef6fb4a5Smrg # CHECK ME: I think I busted this. -Ossama 1358ef6fb4a5Smrg if test "$prev" = dlprefiles; then 1359ef6fb4a5Smrg # Preload the old-style object. 1360ef6fb4a5Smrg dlprefiles="$dlprefiles $pic_object" 1361ef6fb4a5Smrg prev= 1362ef6fb4a5Smrg fi 1363301ea0f4Smrg 1364ef6fb4a5Smrg # A PIC object. 1365ef6fb4a5Smrg libobjs="$libobjs $pic_object" 1366ef6fb4a5Smrg arg="$pic_object" 1367ef6fb4a5Smrg fi 1368301ea0f4Smrg 1369ef6fb4a5Smrg # Non-PIC object. 1370ef6fb4a5Smrg if test "$non_pic_object" != none; then 1371ef6fb4a5Smrg # Prepend the subdirectory the object is found in. 1372ef6fb4a5Smrg non_pic_object="$xdir$non_pic_object" 1373301ea0f4Smrg 1374ef6fb4a5Smrg # A standard non-PIC object 1375ef6fb4a5Smrg non_pic_objects="$non_pic_objects $non_pic_object" 1376ef6fb4a5Smrg if test -z "$pic_object" || test "$pic_object" = none ; then 1377ef6fb4a5Smrg arg="$non_pic_object" 1378ef6fb4a5Smrg fi 1379ef6fb4a5Smrg else 1380ef6fb4a5Smrg # If the PIC object exists, use it instead. 1381ef6fb4a5Smrg # $xdir was prepended to $pic_object above. 1382ef6fb4a5Smrg non_pic_object="$pic_object" 1383ef6fb4a5Smrg non_pic_objects="$non_pic_objects $non_pic_object" 1384ef6fb4a5Smrg fi 1385ef6fb4a5Smrg else 1386ef6fb4a5Smrg # Only an error if not doing a dry-run. 1387ef6fb4a5Smrg if test -z "$run"; then 1388ef6fb4a5Smrg $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 1389ef6fb4a5Smrg exit $EXIT_FAILURE 1390ef6fb4a5Smrg else 1391ef6fb4a5Smrg # Dry-run case. 1392301ea0f4Smrg 1393ef6fb4a5Smrg # Extract subdirectory from the argument. 1394ef6fb4a5Smrg xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` 1395ef6fb4a5Smrg if test "X$xdir" = "X$arg"; then 1396ef6fb4a5Smrg xdir= 1397ef6fb4a5Smrg else 1398ef6fb4a5Smrg xdir="$xdir/" 1399ef6fb4a5Smrg fi 1400301ea0f4Smrg 1401ef6fb4a5Smrg pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` 1402ef6fb4a5Smrg non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` 1403ef6fb4a5Smrg libobjs="$libobjs $pic_object" 1404ef6fb4a5Smrg non_pic_objects="$non_pic_objects $non_pic_object" 1405ef6fb4a5Smrg fi 1406ef6fb4a5Smrg fi 1407ef6fb4a5Smrg done 1408ef6fb4a5Smrg else 1409ef6fb4a5Smrg $echo "$modename: link input file \`$save_arg' does not exist" 1410ef6fb4a5Smrg exit $EXIT_FAILURE 1411ef6fb4a5Smrg fi 1412ef6fb4a5Smrg arg=$save_arg 1413ef6fb4a5Smrg prev= 1414ef6fb4a5Smrg continue 1415ef6fb4a5Smrg ;; 1416ef6fb4a5Smrg rpath | xrpath) 1417ef6fb4a5Smrg # We need an absolute path. 1418ef6fb4a5Smrg case $arg in 1419ef6fb4a5Smrg [\\/]* | [A-Za-z]:[\\/]*) ;; 1420ef6fb4a5Smrg *) 1421ef6fb4a5Smrg $echo "$modename: only absolute run-paths are allowed" 1>&2 1422ef6fb4a5Smrg exit $EXIT_FAILURE 1423ef6fb4a5Smrg ;; 1424ef6fb4a5Smrg esac 1425ef6fb4a5Smrg if test "$prev" = rpath; then 1426ef6fb4a5Smrg case "$rpath " in 1427ef6fb4a5Smrg *" $arg "*) ;; 1428ef6fb4a5Smrg *) rpath="$rpath $arg" ;; 1429ef6fb4a5Smrg esac 1430ef6fb4a5Smrg else 1431ef6fb4a5Smrg case "$xrpath " in 1432ef6fb4a5Smrg *" $arg "*) ;; 1433ef6fb4a5Smrg *) xrpath="$xrpath $arg" ;; 1434ef6fb4a5Smrg esac 1435ef6fb4a5Smrg fi 1436ef6fb4a5Smrg prev= 1437ef6fb4a5Smrg continue 1438ef6fb4a5Smrg ;; 1439ef6fb4a5Smrg xcompiler) 1440ef6fb4a5Smrg compiler_flags="$compiler_flags $qarg" 1441ef6fb4a5Smrg prev= 1442ef6fb4a5Smrg compile_command="$compile_command $qarg" 1443ef6fb4a5Smrg finalize_command="$finalize_command $qarg" 1444ef6fb4a5Smrg continue 1445ef6fb4a5Smrg ;; 1446ef6fb4a5Smrg xlinker) 1447ef6fb4a5Smrg linker_flags="$linker_flags $qarg" 1448ef6fb4a5Smrg compiler_flags="$compiler_flags $wl$qarg" 1449ef6fb4a5Smrg prev= 1450ef6fb4a5Smrg compile_command="$compile_command $wl$qarg" 1451ef6fb4a5Smrg finalize_command="$finalize_command $wl$qarg" 1452ef6fb4a5Smrg continue 1453ef6fb4a5Smrg ;; 1454ef6fb4a5Smrg xcclinker) 1455ef6fb4a5Smrg linker_flags="$linker_flags $qarg" 1456ef6fb4a5Smrg compiler_flags="$compiler_flags $qarg" 1457ef6fb4a5Smrg prev= 1458ef6fb4a5Smrg compile_command="$compile_command $qarg" 1459ef6fb4a5Smrg finalize_command="$finalize_command $qarg" 1460ef6fb4a5Smrg continue 1461ef6fb4a5Smrg ;; 1462ef6fb4a5Smrg shrext) 1463ef6fb4a5Smrg shrext_cmds="$arg" 1464ef6fb4a5Smrg prev= 1465ef6fb4a5Smrg continue 1466ef6fb4a5Smrg ;; 1467ef6fb4a5Smrg darwin_framework|darwin_framework_skip) 1468ef6fb4a5Smrg test "$prev" = "darwin_framework" && compiler_flags="$compiler_flags $arg" 1469ef6fb4a5Smrg compile_command="$compile_command $arg" 1470ef6fb4a5Smrg finalize_command="$finalize_command $arg" 1471ef6fb4a5Smrg prev= 1472ef6fb4a5Smrg continue 1473ef6fb4a5Smrg ;; 1474ef6fb4a5Smrg *) 1475ef6fb4a5Smrg eval "$prev=\"\$arg\"" 1476ef6fb4a5Smrg prev= 1477ef6fb4a5Smrg continue 1478ef6fb4a5Smrg ;; 1479ef6fb4a5Smrg esac 1480ef6fb4a5Smrg fi # test -n "$prev" 1481301ea0f4Smrg 1482ef6fb4a5Smrg prevarg="$arg" 1483301ea0f4Smrg 1484ef6fb4a5Smrg case $arg in 1485ef6fb4a5Smrg -all-static) 1486ef6fb4a5Smrg if test -n "$link_static_flag"; then 1487ef6fb4a5Smrg compile_command="$compile_command $link_static_flag" 1488ef6fb4a5Smrg finalize_command="$finalize_command $link_static_flag" 1489ef6fb4a5Smrg fi 1490ef6fb4a5Smrg continue 1491ef6fb4a5Smrg ;; 1492301ea0f4Smrg 1493ef6fb4a5Smrg -allow-undefined) 1494ef6fb4a5Smrg # FIXME: remove this flag sometime in the future. 1495ef6fb4a5Smrg $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2 1496ef6fb4a5Smrg continue 1497ef6fb4a5Smrg ;; 1498301ea0f4Smrg 1499ef6fb4a5Smrg -avoid-version) 1500ef6fb4a5Smrg avoid_version=yes 1501ef6fb4a5Smrg continue 1502ef6fb4a5Smrg ;; 1503301ea0f4Smrg 1504ef6fb4a5Smrg -dlopen) 1505ef6fb4a5Smrg prev=dlfiles 1506ef6fb4a5Smrg continue 1507ef6fb4a5Smrg ;; 1508301ea0f4Smrg 1509ef6fb4a5Smrg -dlpreopen) 1510ef6fb4a5Smrg prev=dlprefiles 1511ef6fb4a5Smrg continue 1512ef6fb4a5Smrg ;; 1513301ea0f4Smrg 1514ef6fb4a5Smrg -export-dynamic) 1515ef6fb4a5Smrg export_dynamic=yes 1516ef6fb4a5Smrg continue 1517ef6fb4a5Smrg ;; 1518301ea0f4Smrg 1519ef6fb4a5Smrg -export-symbols | -export-symbols-regex) 1520ef6fb4a5Smrg if test -n "$export_symbols" || test -n "$export_symbols_regex"; then 1521ef6fb4a5Smrg $echo "$modename: more than one -exported-symbols argument is not allowed" 1522ef6fb4a5Smrg exit $EXIT_FAILURE 1523ef6fb4a5Smrg fi 1524ef6fb4a5Smrg if test "X$arg" = "X-export-symbols"; then 1525ef6fb4a5Smrg prev=expsyms 1526ef6fb4a5Smrg else 1527ef6fb4a5Smrg prev=expsyms_regex 1528ef6fb4a5Smrg fi 1529ef6fb4a5Smrg continue 1530ef6fb4a5Smrg ;; 1531301ea0f4Smrg 1532ef6fb4a5Smrg -framework|-arch|-isysroot) 1533ef6fb4a5Smrg case " $CC " in 1534ef6fb4a5Smrg *" ${arg} ${1} "* | *" ${arg} ${1} "*) 1535ef6fb4a5Smrg prev=darwin_framework_skip ;; 1536ef6fb4a5Smrg *) compiler_flags="$compiler_flags $arg" 1537ef6fb4a5Smrg prev=darwin_framework ;; 1538ef6fb4a5Smrg esac 1539ef6fb4a5Smrg compile_command="$compile_command $arg" 1540ef6fb4a5Smrg finalize_command="$finalize_command $arg" 1541ef6fb4a5Smrg continue 1542ef6fb4a5Smrg ;; 1543301ea0f4Smrg 1544ef6fb4a5Smrg -inst-prefix-dir) 1545ef6fb4a5Smrg prev=inst_prefix 1546ef6fb4a5Smrg continue 1547ef6fb4a5Smrg ;; 1548301ea0f4Smrg 1549ef6fb4a5Smrg # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* 1550ef6fb4a5Smrg # so, if we see these flags be careful not to treat them like -L 1551ef6fb4a5Smrg -L[A-Z][A-Z]*:*) 1552ef6fb4a5Smrg case $with_gcc/$host in 1553ef6fb4a5Smrg no/*-*-irix* | /*-*-irix*) 1554ef6fb4a5Smrg compile_command="$compile_command $arg" 1555ef6fb4a5Smrg finalize_command="$finalize_command $arg" 1556ef6fb4a5Smrg ;; 1557ef6fb4a5Smrg esac 1558ef6fb4a5Smrg continue 1559ef6fb4a5Smrg ;; 1560301ea0f4Smrg 1561ef6fb4a5Smrg -L*) 1562ef6fb4a5Smrg dir=`$echo "X$arg" | $Xsed -e 's/^-L//'` 1563ef6fb4a5Smrg # We need an absolute path. 1564ef6fb4a5Smrg case $dir in 1565ef6fb4a5Smrg [\\/]* | [A-Za-z]:[\\/]*) ;; 1566ef6fb4a5Smrg *) 1567ef6fb4a5Smrg absdir=`cd "$dir" && pwd` 1568ef6fb4a5Smrg if test -z "$absdir"; then 1569ef6fb4a5Smrg $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2 1570ef6fb4a5Smrg absdir="$dir" 1571ef6fb4a5Smrg notinst_path="$notinst_path $dir" 1572ef6fb4a5Smrg fi 1573ef6fb4a5Smrg dir="$absdir" 1574ef6fb4a5Smrg ;; 1575ef6fb4a5Smrg esac 1576ef6fb4a5Smrg case "$deplibs " in 1577ef6fb4a5Smrg *" -L$dir "*) ;; 1578ef6fb4a5Smrg *) 1579ef6fb4a5Smrg deplibs="$deplibs -L$dir" 1580ef6fb4a5Smrg lib_search_path="$lib_search_path $dir" 1581ef6fb4a5Smrg ;; 1582ef6fb4a5Smrg esac 1583ef6fb4a5Smrg case $host in 1584ef6fb4a5Smrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) 1585ef6fb4a5Smrg testbindir=`$echo "X$dir" | $Xsed -e 's*/lib$*/bin*'` 1586ef6fb4a5Smrg case :$dllsearchpath: in 1587ef6fb4a5Smrg *":$dir:"*) ;; 1588ef6fb4a5Smrg *) dllsearchpath="$dllsearchpath:$dir";; 1589ef6fb4a5Smrg esac 1590ef6fb4a5Smrg case :$dllsearchpath: in 1591ef6fb4a5Smrg *":$testbindir:"*) ;; 1592ef6fb4a5Smrg *) dllsearchpath="$dllsearchpath:$testbindir";; 1593ef6fb4a5Smrg esac 1594ef6fb4a5Smrg ;; 1595ef6fb4a5Smrg esac 1596ef6fb4a5Smrg continue 1597ef6fb4a5Smrg ;; 1598301ea0f4Smrg 1599ef6fb4a5Smrg -l*) 1600ef6fb4a5Smrg if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then 1601ef6fb4a5Smrg case $host in 1602ef6fb4a5Smrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos*) 1603ef6fb4a5Smrg # These systems don't actually have a C or math library (as such) 1604ef6fb4a5Smrg continue 1605ef6fb4a5Smrg ;; 1606ef6fb4a5Smrg *-*-os2*) 1607ef6fb4a5Smrg # These systems don't actually have a C library (as such) 1608ef6fb4a5Smrg test "X$arg" = "X-lc" && continue 1609ef6fb4a5Smrg ;; 1610ef6fb4a5Smrg *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 1611ef6fb4a5Smrg # Do not include libc due to us having libc/libc_r. 1612ef6fb4a5Smrg test "X$arg" = "X-lc" && continue 1613ef6fb4a5Smrg ;; 1614ef6fb4a5Smrg *-*-rhapsody* | *-*-darwin1.[012]) 1615ef6fb4a5Smrg # Rhapsody C and math libraries are in the System framework 1616ef6fb4a5Smrg deplibs="$deplibs -framework System" 1617ef6fb4a5Smrg continue 1618ef6fb4a5Smrg ;; 1619ef6fb4a5Smrg *-*-sco3.2v5* | *-*-sco5v6*) 1620ef6fb4a5Smrg # Causes problems with __ctype 1621ef6fb4a5Smrg test "X$arg" = "X-lc" && continue 1622ef6fb4a5Smrg ;; 1623ef6fb4a5Smrg *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 1624ef6fb4a5Smrg # Compiler inserts libc in the correct place for threads to work 1625ef6fb4a5Smrg test "X$arg" = "X-lc" && continue 1626ef6fb4a5Smrg ;; 1627ef6fb4a5Smrg esac 1628ef6fb4a5Smrg elif test "X$arg" = "X-lc_r"; then 1629ef6fb4a5Smrg case $host in 1630ef6fb4a5Smrg *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 1631ef6fb4a5Smrg # Do not include libc_r directly, use -pthread flag. 1632ef6fb4a5Smrg continue 1633ef6fb4a5Smrg ;; 1634ef6fb4a5Smrg esac 16350cc67336Smrg fi 1636ef6fb4a5Smrg deplibs="$deplibs $arg" 1637ef6fb4a5Smrg continue 1638ef6fb4a5Smrg ;; 1639301ea0f4Smrg 1640ef6fb4a5Smrg # Tru64 UNIX uses -model [arg] to determine the layout of C++ 1641ef6fb4a5Smrg # classes, name mangling, and exception handling. 1642ef6fb4a5Smrg -model) 1643ef6fb4a5Smrg compile_command="$compile_command $arg" 1644ef6fb4a5Smrg compiler_flags="$compiler_flags $arg" 1645ef6fb4a5Smrg finalize_command="$finalize_command $arg" 1646ef6fb4a5Smrg prev=xcompiler 1647ef6fb4a5Smrg continue 1648301ea0f4Smrg ;; 1649301ea0f4Smrg 1650ef6fb4a5Smrg -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) 1651ef6fb4a5Smrg compiler_flags="$compiler_flags $arg" 1652ef6fb4a5Smrg compile_command="$compile_command $arg" 1653ef6fb4a5Smrg finalize_command="$finalize_command $arg" 1654ef6fb4a5Smrg continue 1655301ea0f4Smrg ;; 1656301ea0f4Smrg 1657ef6fb4a5Smrg -multi_module) 1658ef6fb4a5Smrg single_module="${wl}-multi_module" 1659301ea0f4Smrg continue 1660301ea0f4Smrg ;; 1661301ea0f4Smrg 1662ef6fb4a5Smrg -module) 1663ef6fb4a5Smrg module=yes 1664ef6fb4a5Smrg continue 1665ef6fb4a5Smrg ;; 1666301ea0f4Smrg 1667ef6fb4a5Smrg # -64, -mips[0-9] enable 64-bit mode on the SGI compiler 1668ef6fb4a5Smrg # -r[0-9][0-9]* specifies the processor on the SGI compiler 1669ef6fb4a5Smrg # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler 1670ef6fb4a5Smrg # +DA*, +DD* enable 64-bit mode on the HP compiler 1671ef6fb4a5Smrg # -q* pass through compiler args for the IBM compiler 1672ef6fb4a5Smrg # -m* pass through architecture-specific compiler args for GCC 1673ef6fb4a5Smrg # -m*, -t[45]*, -txscale* pass through architecture-specific 1674ef6fb4a5Smrg # compiler args for GCC 1675ef6fb4a5Smrg # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC 1676ef6fb4a5Smrg # -F/path gives path to uninstalled frameworks, gcc on darwin 1677ef6fb4a5Smrg # @file GCC response files 1678ef6fb4a5Smrg -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ 1679ef6fb4a5Smrg -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*) 1680301ea0f4Smrg 1681ef6fb4a5Smrg # Unknown arguments in both finalize_command and compile_command need 1682ef6fb4a5Smrg # to be aesthetically quoted because they are evaled later. 1683ef6fb4a5Smrg arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 1684ef6fb4a5Smrg case $arg in 1685ef6fb4a5Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 1686ef6fb4a5Smrg arg="\"$arg\"" 1687ef6fb4a5Smrg ;; 1688ef6fb4a5Smrg esac 1689ef6fb4a5Smrg compile_command="$compile_command $arg" 1690ef6fb4a5Smrg finalize_command="$finalize_command $arg" 1691ef6fb4a5Smrg compiler_flags="$compiler_flags $arg" 1692ef6fb4a5Smrg continue 1693ef6fb4a5Smrg ;; 1694301ea0f4Smrg 1695ef6fb4a5Smrg -shrext) 1696ef6fb4a5Smrg prev=shrext 1697ef6fb4a5Smrg continue 16980cc67336Smrg ;; 1699301ea0f4Smrg 1700ef6fb4a5Smrg -no-fast-install) 1701ef6fb4a5Smrg fast_install=no 1702ef6fb4a5Smrg continue 1703ef6fb4a5Smrg ;; 1704301ea0f4Smrg 1705ef6fb4a5Smrg -no-install) 1706ef6fb4a5Smrg case $host in 1707ef6fb4a5Smrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin*) 1708ef6fb4a5Smrg # The PATH hackery in wrapper scripts is required on Windows 1709ef6fb4a5Smrg # and Darwin in order for the loader to find any dlls it needs. 1710ef6fb4a5Smrg $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2 1711ef6fb4a5Smrg $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2 1712ef6fb4a5Smrg fast_install=no 1713ef6fb4a5Smrg ;; 1714ef6fb4a5Smrg *) no_install=yes ;; 1715ef6fb4a5Smrg esac 1716ef6fb4a5Smrg continue 1717ef6fb4a5Smrg ;; 1718301ea0f4Smrg 1719ef6fb4a5Smrg -no-undefined) 1720ef6fb4a5Smrg allow_undefined=no 1721ef6fb4a5Smrg continue 1722ef6fb4a5Smrg ;; 1723301ea0f4Smrg 1724ef6fb4a5Smrg -objectlist) 1725ef6fb4a5Smrg prev=objectlist 1726ef6fb4a5Smrg continue 1727301ea0f4Smrg ;; 1728301ea0f4Smrg 1729ef6fb4a5Smrg -o) prev=output ;; 1730301ea0f4Smrg 1731ef6fb4a5Smrg -precious-files-regex) 1732ef6fb4a5Smrg prev=precious_regex 1733ef6fb4a5Smrg continue 1734ef6fb4a5Smrg ;; 1735301ea0f4Smrg 1736ef6fb4a5Smrg -release) 1737ef6fb4a5Smrg prev=release 1738ef6fb4a5Smrg continue 1739ef6fb4a5Smrg ;; 1740301ea0f4Smrg 1741ef6fb4a5Smrg -rpath) 1742ef6fb4a5Smrg prev=rpath 1743ef6fb4a5Smrg continue 1744ef6fb4a5Smrg ;; 17450cc67336Smrg 1746ef6fb4a5Smrg -R) 1747ef6fb4a5Smrg prev=xrpath 17480cc67336Smrg continue 1749ef6fb4a5Smrg ;; 1750301ea0f4Smrg 1751ef6fb4a5Smrg -R*) 1752ef6fb4a5Smrg dir=`$echo "X$arg" | $Xsed -e 's/^-R//'` 1753ef6fb4a5Smrg # We need an absolute path. 1754ef6fb4a5Smrg case $dir in 1755ef6fb4a5Smrg [\\/]* | [A-Za-z]:[\\/]*) ;; 1756ef6fb4a5Smrg *) 1757ef6fb4a5Smrg $echo "$modename: only absolute run-paths are allowed" 1>&2 1758ef6fb4a5Smrg exit $EXIT_FAILURE 1759ef6fb4a5Smrg ;; 1760ef6fb4a5Smrg esac 1761ef6fb4a5Smrg case "$xrpath " in 1762ef6fb4a5Smrg *" $dir "*) ;; 1763ef6fb4a5Smrg *) xrpath="$xrpath $dir" ;; 17640cc67336Smrg esac 1765ef6fb4a5Smrg continue 17660cc67336Smrg ;; 1767ef6fb4a5Smrg 1768ef6fb4a5Smrg -static | -static-libtool-libs) 1769ef6fb4a5Smrg # The effects of -static are defined in a previous loop. 1770ef6fb4a5Smrg # We used to do the same as -all-static on platforms that 1771ef6fb4a5Smrg # didn't have a PIC flag, but the assumption that the effects 1772ef6fb4a5Smrg # would be equivalent was wrong. It would break on at least 1773ef6fb4a5Smrg # Digital Unix and AIX. 1774ef6fb4a5Smrg continue 17750cc67336Smrg ;; 1776ef6fb4a5Smrg 1777ef6fb4a5Smrg -thread-safe) 1778ef6fb4a5Smrg thread_safe=yes 17790cc67336Smrg continue 17800cc67336Smrg ;; 1781ef6fb4a5Smrg 1782ef6fb4a5Smrg -version-info) 1783ef6fb4a5Smrg prev=vinfo 1784ef6fb4a5Smrg continue 17850cc67336Smrg ;; 1786ef6fb4a5Smrg -version-number) 1787ef6fb4a5Smrg prev=vinfo 1788ef6fb4a5Smrg vinfo_number=yes 1789ef6fb4a5Smrg continue 17900cc67336Smrg ;; 1791301ea0f4Smrg 1792ef6fb4a5Smrg -Wc,*) 1793ef6fb4a5Smrg args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'` 1794ef6fb4a5Smrg arg= 1795ef6fb4a5Smrg save_ifs="$IFS"; IFS=',' 1796ef6fb4a5Smrg for flag in $args; do 1797ef6fb4a5Smrg IFS="$save_ifs" 1798ef6fb4a5Smrg case $flag in 1799ef6fb4a5Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 1800ef6fb4a5Smrg flag="\"$flag\"" 1801ef6fb4a5Smrg ;; 1802ef6fb4a5Smrg esac 1803ef6fb4a5Smrg arg="$arg $wl$flag" 1804ef6fb4a5Smrg compiler_flags="$compiler_flags $flag" 1805ef6fb4a5Smrg done 1806ef6fb4a5Smrg IFS="$save_ifs" 1807ef6fb4a5Smrg arg=`$echo "X$arg" | $Xsed -e "s/^ //"` 1808ef6fb4a5Smrg ;; 1809301ea0f4Smrg 1810ef6fb4a5Smrg -Wl,*) 1811ef6fb4a5Smrg args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'` 1812ef6fb4a5Smrg arg= 1813ef6fb4a5Smrg save_ifs="$IFS"; IFS=',' 1814ef6fb4a5Smrg for flag in $args; do 1815ef6fb4a5Smrg IFS="$save_ifs" 1816ef6fb4a5Smrg case $flag in 1817ef6fb4a5Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 1818ef6fb4a5Smrg flag="\"$flag\"" 1819ef6fb4a5Smrg ;; 1820ef6fb4a5Smrg esac 1821ef6fb4a5Smrg arg="$arg $wl$flag" 1822ef6fb4a5Smrg compiler_flags="$compiler_flags $wl$flag" 1823ef6fb4a5Smrg linker_flags="$linker_flags $flag" 1824ef6fb4a5Smrg done 1825ef6fb4a5Smrg IFS="$save_ifs" 1826ef6fb4a5Smrg arg=`$echo "X$arg" | $Xsed -e "s/^ //"` 1827ef6fb4a5Smrg ;; 1828301ea0f4Smrg 1829ef6fb4a5Smrg -Xcompiler) 1830ef6fb4a5Smrg prev=xcompiler 1831ef6fb4a5Smrg continue 1832ef6fb4a5Smrg ;; 1833301ea0f4Smrg 1834ef6fb4a5Smrg -Xlinker) 1835ef6fb4a5Smrg prev=xlinker 1836ef6fb4a5Smrg continue 1837ef6fb4a5Smrg ;; 1838301ea0f4Smrg 1839ef6fb4a5Smrg -XCClinker) 1840ef6fb4a5Smrg prev=xcclinker 1841ef6fb4a5Smrg continue 1842ef6fb4a5Smrg ;; 18430cc67336Smrg 1844ef6fb4a5Smrg # Some other compiler flag. 1845ef6fb4a5Smrg -* | +*) 1846ef6fb4a5Smrg # Unknown arguments in both finalize_command and compile_command need 1847ef6fb4a5Smrg # to be aesthetically quoted because they are evaled later. 1848ef6fb4a5Smrg arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 1849ef6fb4a5Smrg case $arg in 1850ef6fb4a5Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 1851ef6fb4a5Smrg arg="\"$arg\"" 18520cc67336Smrg ;; 18530cc67336Smrg esac 1854ef6fb4a5Smrg ;; 1855301ea0f4Smrg 1856ef6fb4a5Smrg *.$objext) 1857ef6fb4a5Smrg # A standard object. 1858ef6fb4a5Smrg objs="$objs $arg" 18590cc67336Smrg ;; 18600cc67336Smrg 1861ef6fb4a5Smrg *.lo) 1862ef6fb4a5Smrg # A libtool-controlled object. 18630cc67336Smrg 1864ef6fb4a5Smrg # Check to see that this really is a libtool object. 1865ef6fb4a5Smrg if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 1866ef6fb4a5Smrg pic_object= 1867ef6fb4a5Smrg non_pic_object= 18680cc67336Smrg 1869ef6fb4a5Smrg # Read the .lo file 1870ef6fb4a5Smrg # If there is no directory component, then add one. 1871ef6fb4a5Smrg case $arg in 1872ef6fb4a5Smrg */* | *\\*) . $arg ;; 1873ef6fb4a5Smrg *) . ./$arg ;; 18740cc67336Smrg esac 18750cc67336Smrg 1876ef6fb4a5Smrg if test -z "$pic_object" || \ 1877ef6fb4a5Smrg test -z "$non_pic_object" || 1878ef6fb4a5Smrg test "$pic_object" = none && \ 1879ef6fb4a5Smrg test "$non_pic_object" = none; then 1880ef6fb4a5Smrg $echo "$modename: cannot find name of object for \`$arg'" 1>&2 1881ef6fb4a5Smrg exit $EXIT_FAILURE 1882ef6fb4a5Smrg fi 18830cc67336Smrg 1884ef6fb4a5Smrg # Extract subdirectory from the argument. 1885ef6fb4a5Smrg xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` 1886ef6fb4a5Smrg if test "X$xdir" = "X$arg"; then 1887ef6fb4a5Smrg xdir= 1888ef6fb4a5Smrg else 1889ef6fb4a5Smrg xdir="$xdir/" 18900cc67336Smrg fi 18910cc67336Smrg 1892ef6fb4a5Smrg if test "$pic_object" != none; then 1893ef6fb4a5Smrg # Prepend the subdirectory the object is found in. 1894ef6fb4a5Smrg pic_object="$xdir$pic_object" 18950cc67336Smrg 1896ef6fb4a5Smrg if test "$prev" = dlfiles; then 1897ef6fb4a5Smrg if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 1898ef6fb4a5Smrg dlfiles="$dlfiles $pic_object" 1899ef6fb4a5Smrg prev= 1900ef6fb4a5Smrg continue 1901ef6fb4a5Smrg else 1902ef6fb4a5Smrg # If libtool objects are unsupported, then we need to preload. 1903ef6fb4a5Smrg prev=dlprefiles 1904ef6fb4a5Smrg fi 1905ef6fb4a5Smrg fi 19060cc67336Smrg 1907ef6fb4a5Smrg # CHECK ME: I think I busted this. -Ossama 1908ef6fb4a5Smrg if test "$prev" = dlprefiles; then 1909ef6fb4a5Smrg # Preload the old-style object. 1910ef6fb4a5Smrg dlprefiles="$dlprefiles $pic_object" 1911ef6fb4a5Smrg prev= 1912ef6fb4a5Smrg fi 19130cc67336Smrg 1914ef6fb4a5Smrg # A PIC object. 1915ef6fb4a5Smrg libobjs="$libobjs $pic_object" 1916ef6fb4a5Smrg arg="$pic_object" 1917301ea0f4Smrg fi 19180cc67336Smrg 1919ef6fb4a5Smrg # Non-PIC object. 1920ef6fb4a5Smrg if test "$non_pic_object" != none; then 1921ef6fb4a5Smrg # Prepend the subdirectory the object is found in. 1922ef6fb4a5Smrg non_pic_object="$xdir$non_pic_object" 1923ef6fb4a5Smrg 1924ef6fb4a5Smrg # A standard non-PIC object 1925ef6fb4a5Smrg non_pic_objects="$non_pic_objects $non_pic_object" 1926ef6fb4a5Smrg if test -z "$pic_object" || test "$pic_object" = none ; then 1927ef6fb4a5Smrg arg="$non_pic_object" 1928ef6fb4a5Smrg fi 1929ef6fb4a5Smrg else 1930ef6fb4a5Smrg # If the PIC object exists, use it instead. 1931ef6fb4a5Smrg # $xdir was prepended to $pic_object above. 1932ef6fb4a5Smrg non_pic_object="$pic_object" 1933ef6fb4a5Smrg non_pic_objects="$non_pic_objects $non_pic_object" 1934301ea0f4Smrg fi 1935ef6fb4a5Smrg else 1936ef6fb4a5Smrg # Only an error if not doing a dry-run. 1937ef6fb4a5Smrg if test -z "$run"; then 1938ef6fb4a5Smrg $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 1939ef6fb4a5Smrg exit $EXIT_FAILURE 1940ef6fb4a5Smrg else 1941ef6fb4a5Smrg # Dry-run case. 1942301ea0f4Smrg 1943ef6fb4a5Smrg # Extract subdirectory from the argument. 1944ef6fb4a5Smrg xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` 1945ef6fb4a5Smrg if test "X$xdir" = "X$arg"; then 1946ef6fb4a5Smrg xdir= 1947ef6fb4a5Smrg else 1948ef6fb4a5Smrg xdir="$xdir/" 1949ef6fb4a5Smrg fi 1950301ea0f4Smrg 1951ef6fb4a5Smrg pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` 1952ef6fb4a5Smrg non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` 1953ef6fb4a5Smrg libobjs="$libobjs $pic_object" 1954ef6fb4a5Smrg non_pic_objects="$non_pic_objects $non_pic_object" 1955ef6fb4a5Smrg fi 1956ef6fb4a5Smrg fi 1957ef6fb4a5Smrg ;; 1958301ea0f4Smrg 1959ef6fb4a5Smrg *.$libext) 1960ef6fb4a5Smrg # An archive. 1961ef6fb4a5Smrg deplibs="$deplibs $arg" 1962ef6fb4a5Smrg old_deplibs="$old_deplibs $arg" 1963ef6fb4a5Smrg continue 19640cc67336Smrg ;; 1965301ea0f4Smrg 1966ef6fb4a5Smrg *.la) 1967ef6fb4a5Smrg # A libtool-controlled library. 1968301ea0f4Smrg 1969ef6fb4a5Smrg if test "$prev" = dlfiles; then 1970ef6fb4a5Smrg # This library was specified with -dlopen. 1971ef6fb4a5Smrg dlfiles="$dlfiles $arg" 1972ef6fb4a5Smrg prev= 1973ef6fb4a5Smrg elif test "$prev" = dlprefiles; then 1974ef6fb4a5Smrg # The library was specified with -dlpreopen. 1975ef6fb4a5Smrg dlprefiles="$dlprefiles $arg" 1976ef6fb4a5Smrg prev= 19770cc67336Smrg else 1978ef6fb4a5Smrg deplibs="$deplibs $arg" 19790cc67336Smrg fi 1980ef6fb4a5Smrg continue 1981ef6fb4a5Smrg ;; 19820cc67336Smrg 1983ef6fb4a5Smrg # Some other compiler argument. 1984ef6fb4a5Smrg *) 1985ef6fb4a5Smrg # Unknown arguments in both finalize_command and compile_command need 1986ef6fb4a5Smrg # to be aesthetically quoted because they are evaled later. 1987ef6fb4a5Smrg arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 1988ef6fb4a5Smrg case $arg in 1989ef6fb4a5Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 1990ef6fb4a5Smrg arg="\"$arg\"" 19910cc67336Smrg ;; 1992301ea0f4Smrg esac 19930cc67336Smrg ;; 1994ef6fb4a5Smrg esac # arg 1995301ea0f4Smrg 1996ef6fb4a5Smrg # Now actually substitute the argument into the commands. 1997ef6fb4a5Smrg if test -n "$arg"; then 1998ef6fb4a5Smrg compile_command="$compile_command $arg" 1999ef6fb4a5Smrg finalize_command="$finalize_command $arg" 2000ef6fb4a5Smrg fi 2001ef6fb4a5Smrg done # argument parsing loop 20020cc67336Smrg 2003ef6fb4a5Smrg if test -n "$prev"; then 2004ef6fb4a5Smrg $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 2005ef6fb4a5Smrg $echo "$help" 1>&2 2006ef6fb4a5Smrg exit $EXIT_FAILURE 2007ef6fb4a5Smrg fi 2008301ea0f4Smrg 2009ef6fb4a5Smrg if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then 2010ef6fb4a5Smrg eval arg=\"$export_dynamic_flag_spec\" 2011ef6fb4a5Smrg compile_command="$compile_command $arg" 2012ef6fb4a5Smrg finalize_command="$finalize_command $arg" 2013ef6fb4a5Smrg fi 2014301ea0f4Smrg 2015ef6fb4a5Smrg oldlibs= 2016ef6fb4a5Smrg # calculate the name of the file, without its directory 2017ef6fb4a5Smrg outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'` 2018ef6fb4a5Smrg libobjs_save="$libobjs" 2019301ea0f4Smrg 2020ef6fb4a5Smrg if test -n "$shlibpath_var"; then 2021ef6fb4a5Smrg # get the directories listed in $shlibpath_var 2022ef6fb4a5Smrg eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` 2023ef6fb4a5Smrg else 2024ef6fb4a5Smrg shlib_search_path= 2025ef6fb4a5Smrg fi 2026ef6fb4a5Smrg eval sys_lib_search_path=\"$sys_lib_search_path_spec\" 2027ef6fb4a5Smrg eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" 20280cc67336Smrg 2029ef6fb4a5Smrg output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` 2030ef6fb4a5Smrg if test "X$output_objdir" = "X$output"; then 2031ef6fb4a5Smrg output_objdir="$objdir" 20320cc67336Smrg else 2033ef6fb4a5Smrg output_objdir="$output_objdir/$objdir" 20340cc67336Smrg fi 2035ef6fb4a5Smrg # Create the object directory. 2036ef6fb4a5Smrg if test ! -d "$output_objdir"; then 2037ef6fb4a5Smrg $show "$mkdir $output_objdir" 2038ef6fb4a5Smrg $run $mkdir $output_objdir 2039ef6fb4a5Smrg exit_status=$? 2040ef6fb4a5Smrg if test "$exit_status" -ne 0 && test ! -d "$output_objdir"; then 2041ef6fb4a5Smrg exit $exit_status 20420cc67336Smrg fi 20430cc67336Smrg fi 2044301ea0f4Smrg 2045ef6fb4a5Smrg # Determine the type of output 2046ef6fb4a5Smrg case $output in 2047ef6fb4a5Smrg "") 2048ef6fb4a5Smrg $echo "$modename: you must specify an output file" 1>&2 2049ef6fb4a5Smrg $echo "$help" 1>&2 2050ef6fb4a5Smrg exit $EXIT_FAILURE 2051ef6fb4a5Smrg ;; 2052ef6fb4a5Smrg *.$libext) linkmode=oldlib ;; 2053ef6fb4a5Smrg *.lo | *.$objext) linkmode=obj ;; 2054ef6fb4a5Smrg *.la) linkmode=lib ;; 2055ef6fb4a5Smrg *) linkmode=prog ;; # Anything else should be a program. 2056ef6fb4a5Smrg esac 2057301ea0f4Smrg 2058ef6fb4a5Smrg case $host in 2059ef6fb4a5Smrg *cygwin* | *mingw* | *pw32*) 2060ef6fb4a5Smrg # don't eliminate duplications in $postdeps and $predeps 2061ef6fb4a5Smrg duplicate_compiler_generated_deps=yes 2062ef6fb4a5Smrg ;; 2063ef6fb4a5Smrg *) 2064ef6fb4a5Smrg duplicate_compiler_generated_deps=$duplicate_deps 2065ef6fb4a5Smrg ;; 2066ef6fb4a5Smrg esac 2067ef6fb4a5Smrg specialdeplibs= 2068301ea0f4Smrg 2069ef6fb4a5Smrg libs= 2070ef6fb4a5Smrg # Find all interdependent deplibs by searching for libraries 2071ef6fb4a5Smrg # that are linked more than once (e.g. -la -lb -la) 2072ef6fb4a5Smrg for deplib in $deplibs; do 2073ef6fb4a5Smrg if test "X$duplicate_deps" = "Xyes" ; then 2074ef6fb4a5Smrg case "$libs " in 2075ef6fb4a5Smrg *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 2076ef6fb4a5Smrg esac 2077ef6fb4a5Smrg fi 2078ef6fb4a5Smrg libs="$libs $deplib" 2079ef6fb4a5Smrg done 20800cc67336Smrg 2081ef6fb4a5Smrg if test "$linkmode" = lib; then 2082ef6fb4a5Smrg libs="$predeps $libs $compiler_lib_search_path $postdeps" 20830cc67336Smrg 2084ef6fb4a5Smrg # Compute libraries that are listed more than once in $predeps 2085ef6fb4a5Smrg # $postdeps and mark them as special (i.e., whose duplicates are 2086ef6fb4a5Smrg # not to be eliminated). 2087ef6fb4a5Smrg pre_post_deps= 2088ef6fb4a5Smrg if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then 2089ef6fb4a5Smrg for pre_post_dep in $predeps $postdeps; do 2090ef6fb4a5Smrg case "$pre_post_deps " in 2091ef6fb4a5Smrg *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; 20920cc67336Smrg esac 2093ef6fb4a5Smrg pre_post_deps="$pre_post_deps $pre_post_dep" 2094ef6fb4a5Smrg done 2095ef6fb4a5Smrg fi 2096ef6fb4a5Smrg pre_post_deps= 2097ef6fb4a5Smrg fi 20980cc67336Smrg 2099ef6fb4a5Smrg deplibs= 2100ef6fb4a5Smrg newdependency_libs= 2101ef6fb4a5Smrg newlib_search_path= 2102ef6fb4a5Smrg need_relink=no # whether we're linking any uninstalled libtool libraries 2103ef6fb4a5Smrg notinst_deplibs= # not-installed libtool libraries 2104ef6fb4a5Smrg case $linkmode in 2105ef6fb4a5Smrg lib) 2106ef6fb4a5Smrg passes="conv link" 2107ef6fb4a5Smrg for file in $dlfiles $dlprefiles; do 2108ef6fb4a5Smrg case $file in 2109ef6fb4a5Smrg *.la) ;; 21100cc67336Smrg *) 2111ef6fb4a5Smrg $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2 2112ef6fb4a5Smrg exit $EXIT_FAILURE 21130cc67336Smrg ;; 21140cc67336Smrg esac 21150cc67336Smrg done 21160cc67336Smrg ;; 2117ef6fb4a5Smrg prog) 2118ef6fb4a5Smrg compile_deplibs= 2119ef6fb4a5Smrg finalize_deplibs= 2120ef6fb4a5Smrg alldeplibs=no 2121ef6fb4a5Smrg newdlfiles= 2122ef6fb4a5Smrg newdlprefiles= 2123ef6fb4a5Smrg passes="conv scan dlopen dlpreopen link" 2124ef6fb4a5Smrg ;; 2125ef6fb4a5Smrg *) passes="conv" 21260cc67336Smrg ;; 21270cc67336Smrg esac 2128ef6fb4a5Smrg for pass in $passes; do 2129ef6fb4a5Smrg if test "$linkmode,$pass" = "lib,link" || 2130ef6fb4a5Smrg test "$linkmode,$pass" = "prog,scan"; then 2131ef6fb4a5Smrg libs="$deplibs" 2132ef6fb4a5Smrg deplibs= 2133ef6fb4a5Smrg fi 2134ef6fb4a5Smrg if test "$linkmode" = prog; then 2135ef6fb4a5Smrg case $pass in 2136ef6fb4a5Smrg dlopen) libs="$dlfiles" ;; 2137ef6fb4a5Smrg dlpreopen) libs="$dlprefiles" ;; 2138ef6fb4a5Smrg link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; 2139ef6fb4a5Smrg esac 2140ef6fb4a5Smrg fi 2141ef6fb4a5Smrg if test "$pass" = dlopen; then 2142ef6fb4a5Smrg # Collect dlpreopened libraries 2143ef6fb4a5Smrg save_deplibs="$deplibs" 2144ef6fb4a5Smrg deplibs= 2145ef6fb4a5Smrg fi 2146ef6fb4a5Smrg for deplib in $libs; do 2147ef6fb4a5Smrg lib= 2148ef6fb4a5Smrg found=no 2149ef6fb4a5Smrg case $deplib in 2150ef6fb4a5Smrg -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) 2151ef6fb4a5Smrg if test "$linkmode,$pass" = "prog,link"; then 2152ef6fb4a5Smrg compile_deplibs="$deplib $compile_deplibs" 2153ef6fb4a5Smrg finalize_deplibs="$deplib $finalize_deplibs" 2154ef6fb4a5Smrg else 2155ef6fb4a5Smrg compiler_flags="$compiler_flags $deplib" 2156ef6fb4a5Smrg fi 2157ef6fb4a5Smrg continue 2158ef6fb4a5Smrg ;; 2159ef6fb4a5Smrg -l*) 2160ef6fb4a5Smrg if test "$linkmode" != lib && test "$linkmode" != prog; then 2161ef6fb4a5Smrg $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2 2162ef6fb4a5Smrg continue 2163ef6fb4a5Smrg fi 2164ef6fb4a5Smrg name=`$echo "X$deplib" | $Xsed -e 's/^-l//'` 2165ef6fb4a5Smrg if test "$linkmode" = lib; then 2166ef6fb4a5Smrg searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" 2167ef6fb4a5Smrg else 2168ef6fb4a5Smrg searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" 2169ef6fb4a5Smrg fi 2170ef6fb4a5Smrg for searchdir in $searchdirs; do 2171ef6fb4a5Smrg for search_ext in .la $std_shrext .so .a; do 2172ef6fb4a5Smrg # Search the libtool library 2173ef6fb4a5Smrg lib="$searchdir/lib${name}${search_ext}" 2174ef6fb4a5Smrg if test -f "$lib"; then 2175ef6fb4a5Smrg if test "$search_ext" = ".la"; then 2176ef6fb4a5Smrg found=yes 2177ef6fb4a5Smrg else 2178ef6fb4a5Smrg found=no 2179ef6fb4a5Smrg fi 2180ef6fb4a5Smrg break 2 2181ef6fb4a5Smrg fi 2182ef6fb4a5Smrg done 2183ef6fb4a5Smrg done 2184ef6fb4a5Smrg if test "$found" != yes; then 2185ef6fb4a5Smrg # deplib doesn't seem to be a libtool library 2186ef6fb4a5Smrg if test "$linkmode,$pass" = "prog,link"; then 2187ef6fb4a5Smrg compile_deplibs="$deplib $compile_deplibs" 2188ef6fb4a5Smrg finalize_deplibs="$deplib $finalize_deplibs" 2189ef6fb4a5Smrg else 2190ef6fb4a5Smrg deplibs="$deplib $deplibs" 2191ef6fb4a5Smrg test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 2192ef6fb4a5Smrg fi 2193ef6fb4a5Smrg continue 2194ef6fb4a5Smrg else # deplib is a libtool library 2195ef6fb4a5Smrg # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, 2196ef6fb4a5Smrg # We need to do some special things here, and not later. 2197ef6fb4a5Smrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 2198ef6fb4a5Smrg case " $predeps $postdeps " in 2199ef6fb4a5Smrg *" $deplib "*) 2200ef6fb4a5Smrg if (${SED} -e '2q' $lib | 2201ef6fb4a5Smrg grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 2202ef6fb4a5Smrg library_names= 2203ef6fb4a5Smrg old_library= 2204ef6fb4a5Smrg case $lib in 2205ef6fb4a5Smrg */* | *\\*) . $lib ;; 2206ef6fb4a5Smrg *) . ./$lib ;; 2207ef6fb4a5Smrg esac 2208ef6fb4a5Smrg for l in $old_library $library_names; do 2209ef6fb4a5Smrg ll="$l" 2210ef6fb4a5Smrg done 2211ef6fb4a5Smrg if test "X$ll" = "X$old_library" ; then # only static version available 2212ef6fb4a5Smrg found=no 2213ef6fb4a5Smrg ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` 2214ef6fb4a5Smrg test "X$ladir" = "X$lib" && ladir="." 2215ef6fb4a5Smrg lib=$ladir/$old_library 2216ef6fb4a5Smrg if test "$linkmode,$pass" = "prog,link"; then 2217ef6fb4a5Smrg compile_deplibs="$deplib $compile_deplibs" 2218ef6fb4a5Smrg finalize_deplibs="$deplib $finalize_deplibs" 2219ef6fb4a5Smrg else 2220ef6fb4a5Smrg deplibs="$deplib $deplibs" 2221ef6fb4a5Smrg test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 2222ef6fb4a5Smrg fi 2223ef6fb4a5Smrg continue 2224ef6fb4a5Smrg fi 2225ef6fb4a5Smrg fi 2226ef6fb4a5Smrg ;; 2227ef6fb4a5Smrg *) ;; 2228ef6fb4a5Smrg esac 2229ef6fb4a5Smrg fi 2230ef6fb4a5Smrg fi 2231ef6fb4a5Smrg ;; # -l 2232ef6fb4a5Smrg -L*) 2233ef6fb4a5Smrg case $linkmode in 2234ef6fb4a5Smrg lib) 2235ef6fb4a5Smrg deplibs="$deplib $deplibs" 2236ef6fb4a5Smrg test "$pass" = conv && continue 2237ef6fb4a5Smrg newdependency_libs="$deplib $newdependency_libs" 2238ef6fb4a5Smrg newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` 2239ef6fb4a5Smrg ;; 2240ef6fb4a5Smrg prog) 2241ef6fb4a5Smrg if test "$pass" = conv; then 2242ef6fb4a5Smrg deplibs="$deplib $deplibs" 2243ef6fb4a5Smrg continue 2244ef6fb4a5Smrg fi 2245ef6fb4a5Smrg if test "$pass" = scan; then 2246ef6fb4a5Smrg deplibs="$deplib $deplibs" 2247ef6fb4a5Smrg else 2248ef6fb4a5Smrg compile_deplibs="$deplib $compile_deplibs" 2249ef6fb4a5Smrg finalize_deplibs="$deplib $finalize_deplibs" 2250ef6fb4a5Smrg fi 2251ef6fb4a5Smrg newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` 2252ef6fb4a5Smrg ;; 2253ef6fb4a5Smrg *) 2254ef6fb4a5Smrg $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2 2255ef6fb4a5Smrg ;; 2256ef6fb4a5Smrg esac # linkmode 2257ef6fb4a5Smrg continue 2258ef6fb4a5Smrg ;; # -L 2259ef6fb4a5Smrg -R*) 2260ef6fb4a5Smrg if test "$pass" = link; then 2261ef6fb4a5Smrg dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'` 2262ef6fb4a5Smrg # Make sure the xrpath contains only unique directories. 2263ef6fb4a5Smrg case "$xrpath " in 2264ef6fb4a5Smrg *" $dir "*) ;; 2265ef6fb4a5Smrg *) xrpath="$xrpath $dir" ;; 2266ef6fb4a5Smrg esac 2267ef6fb4a5Smrg fi 2268ef6fb4a5Smrg deplibs="$deplib $deplibs" 2269ef6fb4a5Smrg continue 2270ef6fb4a5Smrg ;; 2271ef6fb4a5Smrg *.la) lib="$deplib" ;; 2272ef6fb4a5Smrg *.$libext) 2273ef6fb4a5Smrg if test "$pass" = conv; then 2274ef6fb4a5Smrg deplibs="$deplib $deplibs" 2275ef6fb4a5Smrg continue 2276ef6fb4a5Smrg fi 2277ef6fb4a5Smrg case $linkmode in 2278ef6fb4a5Smrg lib) 2279ef6fb4a5Smrg valid_a_lib=no 2280ef6fb4a5Smrg case $deplibs_check_method in 2281ef6fb4a5Smrg match_pattern*) 2282ef6fb4a5Smrg set dummy $deplibs_check_method 2283ef6fb4a5Smrg match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` 2284ef6fb4a5Smrg if eval $echo \"$deplib\" 2>/dev/null \ 2285ef6fb4a5Smrg | $SED 10q \ 2286ef6fb4a5Smrg | $EGREP "$match_pattern_regex" > /dev/null; then 2287ef6fb4a5Smrg valid_a_lib=yes 2288ef6fb4a5Smrg fi 2289ef6fb4a5Smrg ;; 2290ef6fb4a5Smrg pass_all) 2291ef6fb4a5Smrg valid_a_lib=yes 2292ef6fb4a5Smrg ;; 2293ef6fb4a5Smrg esac 2294ef6fb4a5Smrg if test "$valid_a_lib" != yes; then 2295ef6fb4a5Smrg $echo 2296ef6fb4a5Smrg $echo "*** Warning: Trying to link with static lib archive $deplib." 2297ef6fb4a5Smrg $echo "*** I have the capability to make that library automatically link in when" 2298ef6fb4a5Smrg $echo "*** you link to this library. But I can only do this if you have a" 2299ef6fb4a5Smrg $echo "*** shared version of the library, which you do not appear to have" 2300ef6fb4a5Smrg $echo "*** because the file extensions .$libext of this argument makes me believe" 2301ef6fb4a5Smrg $echo "*** that it is just a static archive that I should not used here." 2302ef6fb4a5Smrg else 2303ef6fb4a5Smrg $echo 2304ef6fb4a5Smrg $echo "*** Warning: Linking the shared library $output against the" 2305ef6fb4a5Smrg $echo "*** static library $deplib is not portable!" 2306ef6fb4a5Smrg deplibs="$deplib $deplibs" 2307ef6fb4a5Smrg fi 2308ef6fb4a5Smrg continue 2309ef6fb4a5Smrg ;; 2310ef6fb4a5Smrg prog) 2311ef6fb4a5Smrg if test "$pass" != link; then 2312ef6fb4a5Smrg deplibs="$deplib $deplibs" 2313ef6fb4a5Smrg else 2314ef6fb4a5Smrg compile_deplibs="$deplib $compile_deplibs" 2315ef6fb4a5Smrg finalize_deplibs="$deplib $finalize_deplibs" 2316ef6fb4a5Smrg fi 2317ef6fb4a5Smrg continue 2318ef6fb4a5Smrg ;; 2319ef6fb4a5Smrg esac # linkmode 2320ef6fb4a5Smrg ;; # *.$libext 2321ef6fb4a5Smrg *.lo | *.$objext) 2322ef6fb4a5Smrg if test "$pass" = conv; then 2323ef6fb4a5Smrg deplibs="$deplib $deplibs" 2324ef6fb4a5Smrg elif test "$linkmode" = prog; then 2325ef6fb4a5Smrg if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then 2326ef6fb4a5Smrg # If there is no dlopen support or we're linking statically, 2327ef6fb4a5Smrg # we need to preload. 2328ef6fb4a5Smrg newdlprefiles="$newdlprefiles $deplib" 2329ef6fb4a5Smrg compile_deplibs="$deplib $compile_deplibs" 2330ef6fb4a5Smrg finalize_deplibs="$deplib $finalize_deplibs" 2331ef6fb4a5Smrg else 2332ef6fb4a5Smrg newdlfiles="$newdlfiles $deplib" 2333ef6fb4a5Smrg fi 2334ef6fb4a5Smrg fi 2335ef6fb4a5Smrg continue 2336ef6fb4a5Smrg ;; 2337ef6fb4a5Smrg %DEPLIBS%) 2338ef6fb4a5Smrg alldeplibs=yes 2339ef6fb4a5Smrg continue 2340ef6fb4a5Smrg ;; 2341ef6fb4a5Smrg esac # case $deplib 2342ef6fb4a5Smrg if test "$found" = yes || test -f "$lib"; then : 2343ef6fb4a5Smrg else 2344ef6fb4a5Smrg $echo "$modename: cannot find the library \`$lib' or unhandled argument \`$deplib'" 1>&2 2345ef6fb4a5Smrg exit $EXIT_FAILURE 2346ef6fb4a5Smrg fi 2347301ea0f4Smrg 2348ef6fb4a5Smrg # Check to see that this really is a libtool archive. 2349ef6fb4a5Smrg if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : 2350ef6fb4a5Smrg else 2351ef6fb4a5Smrg $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 2352ef6fb4a5Smrg exit $EXIT_FAILURE 2353ef6fb4a5Smrg fi 2354301ea0f4Smrg 2355ef6fb4a5Smrg ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` 2356ef6fb4a5Smrg test "X$ladir" = "X$lib" && ladir="." 2357301ea0f4Smrg 2358ef6fb4a5Smrg dlname= 2359ef6fb4a5Smrg dlopen= 2360ef6fb4a5Smrg dlpreopen= 2361ef6fb4a5Smrg libdir= 2362ef6fb4a5Smrg library_names= 2363ef6fb4a5Smrg old_library= 2364ef6fb4a5Smrg # If the library was installed with an old release of libtool, 2365ef6fb4a5Smrg # it will not redefine variables installed, or shouldnotlink 2366ef6fb4a5Smrg installed=yes 2367ef6fb4a5Smrg shouldnotlink=no 2368ef6fb4a5Smrg avoidtemprpath= 2369301ea0f4Smrg 2370301ea0f4Smrg 2371ef6fb4a5Smrg # Read the .la file 2372ef6fb4a5Smrg case $lib in 2373ef6fb4a5Smrg */* | *\\*) . $lib ;; 2374ef6fb4a5Smrg *) . ./$lib ;; 23750cc67336Smrg esac 2376301ea0f4Smrg 2377ef6fb4a5Smrg if test "$linkmode,$pass" = "lib,link" || 2378ef6fb4a5Smrg test "$linkmode,$pass" = "prog,scan" || 2379ef6fb4a5Smrg { test "$linkmode" != prog && test "$linkmode" != lib; }; then 2380ef6fb4a5Smrg test -n "$dlopen" && dlfiles="$dlfiles $dlopen" 2381ef6fb4a5Smrg test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" 2382ef6fb4a5Smrg fi 2383301ea0f4Smrg 2384ef6fb4a5Smrg if test "$pass" = conv; then 2385ef6fb4a5Smrg # Only check for convenience libraries 2386ef6fb4a5Smrg deplibs="$lib $deplibs" 2387ef6fb4a5Smrg if test -z "$libdir"; then 2388ef6fb4a5Smrg if test -z "$old_library"; then 2389ef6fb4a5Smrg $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 2390ef6fb4a5Smrg exit $EXIT_FAILURE 2391ef6fb4a5Smrg fi 2392ef6fb4a5Smrg # It is a libtool convenience library, so add in its objects. 2393ef6fb4a5Smrg convenience="$convenience $ladir/$objdir/$old_library" 2394ef6fb4a5Smrg old_convenience="$old_convenience $ladir/$objdir/$old_library" 2395ef6fb4a5Smrg tmp_libs= 2396ef6fb4a5Smrg for deplib in $dependency_libs; do 2397ef6fb4a5Smrg deplibs="$deplib $deplibs" 2398ef6fb4a5Smrg if test "X$duplicate_deps" = "Xyes" ; then 2399ef6fb4a5Smrg case "$tmp_libs " in 2400ef6fb4a5Smrg *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 2401ef6fb4a5Smrg esac 2402ef6fb4a5Smrg fi 2403ef6fb4a5Smrg tmp_libs="$tmp_libs $deplib" 2404ef6fb4a5Smrg done 2405ef6fb4a5Smrg elif test "$linkmode" != prog && test "$linkmode" != lib; then 2406ef6fb4a5Smrg $echo "$modename: \`$lib' is not a convenience library" 1>&2 2407ef6fb4a5Smrg exit $EXIT_FAILURE 2408ef6fb4a5Smrg fi 2409ef6fb4a5Smrg continue 2410ef6fb4a5Smrg fi # $pass = conv 2411301ea0f4Smrg 2412301ea0f4Smrg 2413ef6fb4a5Smrg # Get the name of the library we link against. 2414ef6fb4a5Smrg linklib= 2415ef6fb4a5Smrg for l in $old_library $library_names; do 2416ef6fb4a5Smrg linklib="$l" 2417ef6fb4a5Smrg done 2418ef6fb4a5Smrg if test -z "$linklib"; then 2419ef6fb4a5Smrg $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 2420ef6fb4a5Smrg exit $EXIT_FAILURE 2421301ea0f4Smrg fi 2422301ea0f4Smrg 2423ef6fb4a5Smrg # This library was specified with -dlopen. 2424ef6fb4a5Smrg if test "$pass" = dlopen; then 2425ef6fb4a5Smrg if test -z "$libdir"; then 2426ef6fb4a5Smrg $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2 2427ef6fb4a5Smrg exit $EXIT_FAILURE 2428ef6fb4a5Smrg fi 2429ef6fb4a5Smrg if test -z "$dlname" || 2430ef6fb4a5Smrg test "$dlopen_support" != yes || 2431ef6fb4a5Smrg test "$build_libtool_libs" = no; then 2432ef6fb4a5Smrg # If there is no dlname, no dlopen support or we're linking 2433ef6fb4a5Smrg # statically, we need to preload. We also need to preload any 2434ef6fb4a5Smrg # dependent libraries so libltdl's deplib preloader doesn't 2435ef6fb4a5Smrg # bomb out in the load deplibs phase. 2436ef6fb4a5Smrg dlprefiles="$dlprefiles $lib $dependency_libs" 2437ef6fb4a5Smrg else 2438ef6fb4a5Smrg newdlfiles="$newdlfiles $lib" 2439ef6fb4a5Smrg fi 2440ef6fb4a5Smrg continue 2441ef6fb4a5Smrg fi # $pass = dlopen 2442301ea0f4Smrg 2443ef6fb4a5Smrg # We need an absolute path. 2444ef6fb4a5Smrg case $ladir in 2445ef6fb4a5Smrg [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; 2446ef6fb4a5Smrg *) 2447ef6fb4a5Smrg abs_ladir=`cd "$ladir" && pwd` 2448ef6fb4a5Smrg if test -z "$abs_ladir"; then 2449ef6fb4a5Smrg $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2 2450ef6fb4a5Smrg $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 2451ef6fb4a5Smrg abs_ladir="$ladir" 2452ef6fb4a5Smrg fi 2453ef6fb4a5Smrg ;; 2454ef6fb4a5Smrg esac 2455ef6fb4a5Smrg laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` 2456301ea0f4Smrg 2457ef6fb4a5Smrg # Find the relevant object directory and library name. 2458ef6fb4a5Smrg if test "X$installed" = Xyes; then 2459ef6fb4a5Smrg if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then 2460ef6fb4a5Smrg $echo "$modename: warning: library \`$lib' was moved." 1>&2 2461ef6fb4a5Smrg dir="$ladir" 2462ef6fb4a5Smrg absdir="$abs_ladir" 2463ef6fb4a5Smrg libdir="$abs_ladir" 2464ef6fb4a5Smrg else 2465ef6fb4a5Smrg dir="$libdir" 2466ef6fb4a5Smrg absdir="$libdir" 2467ef6fb4a5Smrg fi 2468ef6fb4a5Smrg test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes 2469ef6fb4a5Smrg else 2470ef6fb4a5Smrg if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then 2471ef6fb4a5Smrg dir="$ladir" 2472ef6fb4a5Smrg absdir="$abs_ladir" 2473ef6fb4a5Smrg # Remove this search path later 2474ef6fb4a5Smrg notinst_path="$notinst_path $abs_ladir" 2475ef6fb4a5Smrg else 2476ef6fb4a5Smrg dir="$ladir/$objdir" 2477ef6fb4a5Smrg absdir="$abs_ladir/$objdir" 2478ef6fb4a5Smrg # Remove this search path later 2479ef6fb4a5Smrg notinst_path="$notinst_path $abs_ladir" 2480ef6fb4a5Smrg fi 2481ef6fb4a5Smrg fi # $installed = yes 2482ef6fb4a5Smrg name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` 2483301ea0f4Smrg 2484ef6fb4a5Smrg # This library was specified with -dlpreopen. 2485ef6fb4a5Smrg if test "$pass" = dlpreopen; then 2486ef6fb4a5Smrg if test -z "$libdir"; then 2487ef6fb4a5Smrg $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2 2488ef6fb4a5Smrg exit $EXIT_FAILURE 2489ef6fb4a5Smrg fi 2490ef6fb4a5Smrg # Prefer using a static library (so that no silly _DYNAMIC symbols 2491ef6fb4a5Smrg # are required to link). 2492ef6fb4a5Smrg if test -n "$old_library"; then 2493ef6fb4a5Smrg newdlprefiles="$newdlprefiles $dir/$old_library" 2494ef6fb4a5Smrg # Otherwise, use the dlname, so that lt_dlopen finds it. 2495ef6fb4a5Smrg elif test -n "$dlname"; then 2496ef6fb4a5Smrg newdlprefiles="$newdlprefiles $dir/$dlname" 2497ef6fb4a5Smrg else 2498ef6fb4a5Smrg newdlprefiles="$newdlprefiles $dir/$linklib" 2499ef6fb4a5Smrg fi 2500ef6fb4a5Smrg fi # $pass = dlpreopen 2501301ea0f4Smrg 2502ef6fb4a5Smrg if test -z "$libdir"; then 2503ef6fb4a5Smrg # Link the convenience library 2504ef6fb4a5Smrg if test "$linkmode" = lib; then 2505ef6fb4a5Smrg deplibs="$dir/$old_library $deplibs" 2506ef6fb4a5Smrg elif test "$linkmode,$pass" = "prog,link"; then 2507ef6fb4a5Smrg compile_deplibs="$dir/$old_library $compile_deplibs" 2508ef6fb4a5Smrg finalize_deplibs="$dir/$old_library $finalize_deplibs" 2509ef6fb4a5Smrg else 2510ef6fb4a5Smrg deplibs="$lib $deplibs" # used for prog,scan pass 2511ef6fb4a5Smrg fi 2512ef6fb4a5Smrg continue 2513ef6fb4a5Smrg fi 2514301ea0f4Smrg 2515301ea0f4Smrg 2516ef6fb4a5Smrg if test "$linkmode" = prog && test "$pass" != link; then 2517ef6fb4a5Smrg newlib_search_path="$newlib_search_path $ladir" 2518ef6fb4a5Smrg deplibs="$lib $deplibs" 2519301ea0f4Smrg 2520ef6fb4a5Smrg linkalldeplibs=no 2521ef6fb4a5Smrg if test "$link_all_deplibs" != no || test -z "$library_names" || 2522ef6fb4a5Smrg test "$build_libtool_libs" = no; then 2523ef6fb4a5Smrg linkalldeplibs=yes 2524ef6fb4a5Smrg fi 2525301ea0f4Smrg 2526ef6fb4a5Smrg tmp_libs= 2527ef6fb4a5Smrg for deplib in $dependency_libs; do 2528ef6fb4a5Smrg case $deplib in 2529ef6fb4a5Smrg -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test 2530ef6fb4a5Smrg esac 2531ef6fb4a5Smrg # Need to link against all dependency_libs? 2532ef6fb4a5Smrg if test "$linkalldeplibs" = yes; then 2533ef6fb4a5Smrg deplibs="$deplib $deplibs" 2534ef6fb4a5Smrg else 2535ef6fb4a5Smrg # Need to hardcode shared library paths 2536ef6fb4a5Smrg # or/and link against static libraries 2537ef6fb4a5Smrg newdependency_libs="$deplib $newdependency_libs" 2538ef6fb4a5Smrg fi 2539ef6fb4a5Smrg if test "X$duplicate_deps" = "Xyes" ; then 2540ef6fb4a5Smrg case "$tmp_libs " in 2541ef6fb4a5Smrg *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 2542ef6fb4a5Smrg esac 2543ef6fb4a5Smrg fi 2544ef6fb4a5Smrg tmp_libs="$tmp_libs $deplib" 2545ef6fb4a5Smrg done # for deplib 2546ef6fb4a5Smrg continue 2547ef6fb4a5Smrg fi # $linkmode = prog... 2548301ea0f4Smrg 2549ef6fb4a5Smrg if test "$linkmode,$pass" = "prog,link"; then 2550ef6fb4a5Smrg if test -n "$library_names" && 2551ef6fb4a5Smrg { { test "$prefer_static_libs" = no || 2552ef6fb4a5Smrg test "$prefer_static_libs,$installed" = "built,yes"; } || 2553ef6fb4a5Smrg test -z "$old_library"; }; then 2554ef6fb4a5Smrg # We need to hardcode the library path 2555ef6fb4a5Smrg if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then 2556ef6fb4a5Smrg # Make sure the rpath contains only unique directories. 2557ef6fb4a5Smrg case "$temp_rpath " in 2558ef6fb4a5Smrg *" $dir "*) ;; 2559ef6fb4a5Smrg *" $absdir "*) ;; 2560ef6fb4a5Smrg *) temp_rpath="$temp_rpath $absdir" ;; 2561ef6fb4a5Smrg esac 2562ef6fb4a5Smrg fi 2563301ea0f4Smrg 2564ef6fb4a5Smrg # Hardcode the library path. 2565ef6fb4a5Smrg # Skip directories that are in the system default run-time 2566ef6fb4a5Smrg # search path. 2567ef6fb4a5Smrg case " $sys_lib_dlsearch_path " in 2568ef6fb4a5Smrg *" $absdir "*) ;; 2569ef6fb4a5Smrg *) 2570ef6fb4a5Smrg case "$compile_rpath " in 2571ef6fb4a5Smrg *" $absdir "*) ;; 2572ef6fb4a5Smrg *) compile_rpath="$compile_rpath $absdir" 2573ef6fb4a5Smrg esac 2574ef6fb4a5Smrg ;; 2575ef6fb4a5Smrg esac 2576ef6fb4a5Smrg case " $sys_lib_dlsearch_path " in 2577ef6fb4a5Smrg *" $libdir "*) ;; 2578ef6fb4a5Smrg *) 2579ef6fb4a5Smrg case "$finalize_rpath " in 2580ef6fb4a5Smrg *" $libdir "*) ;; 2581ef6fb4a5Smrg *) finalize_rpath="$finalize_rpath $libdir" 2582ef6fb4a5Smrg esac 2583ef6fb4a5Smrg ;; 2584ef6fb4a5Smrg esac 2585ef6fb4a5Smrg fi # $linkmode,$pass = prog,link... 2586301ea0f4Smrg 2587ef6fb4a5Smrg if test "$alldeplibs" = yes && 2588ef6fb4a5Smrg { test "$deplibs_check_method" = pass_all || 2589ef6fb4a5Smrg { test "$build_libtool_libs" = yes && 2590ef6fb4a5Smrg test -n "$library_names"; }; }; then 2591ef6fb4a5Smrg # We only need to search for static libraries 2592ef6fb4a5Smrg continue 2593ef6fb4a5Smrg fi 25940cc67336Smrg fi 2595301ea0f4Smrg 2596ef6fb4a5Smrg link_static=no # Whether the deplib will be linked statically 2597ef6fb4a5Smrg use_static_libs=$prefer_static_libs 2598ef6fb4a5Smrg if test "$use_static_libs" = built && test "$installed" = yes ; then 2599ef6fb4a5Smrg use_static_libs=no 2600ef6fb4a5Smrg fi 2601ef6fb4a5Smrg if test -n "$library_names" && 2602ef6fb4a5Smrg { test "$use_static_libs" = no || test -z "$old_library"; }; then 2603ef6fb4a5Smrg if test "$installed" = no; then 2604ef6fb4a5Smrg notinst_deplibs="$notinst_deplibs $lib" 2605ef6fb4a5Smrg need_relink=yes 2606ef6fb4a5Smrg fi 2607ef6fb4a5Smrg # This is a shared library 2608301ea0f4Smrg 2609ef6fb4a5Smrg # Warn about portability, can't link against -module's on 2610ef6fb4a5Smrg # some systems (darwin) 2611ef6fb4a5Smrg if test "$shouldnotlink" = yes && test "$pass" = link ; then 2612ef6fb4a5Smrg $echo 2613ef6fb4a5Smrg if test "$linkmode" = prog; then 2614ef6fb4a5Smrg $echo "*** Warning: Linking the executable $output against the loadable module" 2615ef6fb4a5Smrg else 2616ef6fb4a5Smrg $echo "*** Warning: Linking the shared library $output against the loadable module" 2617ef6fb4a5Smrg fi 2618ef6fb4a5Smrg $echo "*** $linklib is not portable!" 2619ef6fb4a5Smrg fi 2620ef6fb4a5Smrg if test "$linkmode" = lib && 2621ef6fb4a5Smrg test "$hardcode_into_libs" = yes; then 2622ef6fb4a5Smrg # Hardcode the library path. 2623ef6fb4a5Smrg # Skip directories that are in the system default run-time 2624ef6fb4a5Smrg # search path. 2625ef6fb4a5Smrg case " $sys_lib_dlsearch_path " in 2626ef6fb4a5Smrg *" $absdir "*) ;; 2627ef6fb4a5Smrg *) 2628ef6fb4a5Smrg case "$compile_rpath " in 2629ef6fb4a5Smrg *" $absdir "*) ;; 2630ef6fb4a5Smrg *) compile_rpath="$compile_rpath $absdir" 2631ef6fb4a5Smrg esac 2632ef6fb4a5Smrg ;; 2633ef6fb4a5Smrg esac 2634ef6fb4a5Smrg case " $sys_lib_dlsearch_path " in 2635ef6fb4a5Smrg *" $libdir "*) ;; 2636ef6fb4a5Smrg *) 2637ef6fb4a5Smrg case "$finalize_rpath " in 2638ef6fb4a5Smrg *" $libdir "*) ;; 2639ef6fb4a5Smrg *) finalize_rpath="$finalize_rpath $libdir" 2640ef6fb4a5Smrg esac 2641ef6fb4a5Smrg ;; 2642ef6fb4a5Smrg esac 2643ef6fb4a5Smrg fi 2644301ea0f4Smrg 2645ef6fb4a5Smrg if test -n "$old_archive_from_expsyms_cmds"; then 2646ef6fb4a5Smrg # figure out the soname 2647ef6fb4a5Smrg set dummy $library_names 2648ef6fb4a5Smrg realname="$2" 2649ef6fb4a5Smrg shift; shift 2650ef6fb4a5Smrg libname=`eval \\$echo \"$libname_spec\"` 2651ef6fb4a5Smrg # use dlname if we got it. it's perfectly good, no? 2652ef6fb4a5Smrg if test -n "$dlname"; then 2653ef6fb4a5Smrg soname="$dlname" 2654ef6fb4a5Smrg elif test -n "$soname_spec"; then 2655ef6fb4a5Smrg # bleh windows 2656ef6fb4a5Smrg case $host in 2657ef6fb4a5Smrg *cygwin* | mingw*) 2658ef6fb4a5Smrg major=`expr $current - $age` 2659ef6fb4a5Smrg versuffix="-$major" 2660ef6fb4a5Smrg ;; 2661ef6fb4a5Smrg esac 2662ef6fb4a5Smrg eval soname=\"$soname_spec\" 2663ef6fb4a5Smrg else 2664ef6fb4a5Smrg soname="$realname" 2665ef6fb4a5Smrg fi 2666301ea0f4Smrg 2667ef6fb4a5Smrg # Make a new name for the extract_expsyms_cmds to use 2668ef6fb4a5Smrg soroot="$soname" 2669ef6fb4a5Smrg soname=`$echo $soroot | ${SED} -e 's/^.*\///'` 2670ef6fb4a5Smrg newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a" 2671301ea0f4Smrg 2672ef6fb4a5Smrg # If the library has no export list, then create one now 2673ef6fb4a5Smrg if test -f "$output_objdir/$soname-def"; then : 2674ef6fb4a5Smrg else 2675ef6fb4a5Smrg $show "extracting exported symbol list from \`$soname'" 2676ef6fb4a5Smrg save_ifs="$IFS"; IFS='~' 2677ef6fb4a5Smrg cmds=$extract_expsyms_cmds 2678ef6fb4a5Smrg for cmd in $cmds; do 2679ef6fb4a5Smrg IFS="$save_ifs" 2680ef6fb4a5Smrg eval cmd=\"$cmd\" 2681ef6fb4a5Smrg $show "$cmd" 2682ef6fb4a5Smrg $run eval "$cmd" || exit $? 2683ef6fb4a5Smrg done 2684ef6fb4a5Smrg IFS="$save_ifs" 2685ef6fb4a5Smrg fi 2686301ea0f4Smrg 2687ef6fb4a5Smrg # Create $newlib 2688ef6fb4a5Smrg if test -f "$output_objdir/$newlib"; then :; else 2689ef6fb4a5Smrg $show "generating import library for \`$soname'" 2690ef6fb4a5Smrg save_ifs="$IFS"; IFS='~' 2691ef6fb4a5Smrg cmds=$old_archive_from_expsyms_cmds 2692ef6fb4a5Smrg for cmd in $cmds; do 2693ef6fb4a5Smrg IFS="$save_ifs" 2694ef6fb4a5Smrg eval cmd=\"$cmd\" 2695ef6fb4a5Smrg $show "$cmd" 2696ef6fb4a5Smrg $run eval "$cmd" || exit $? 2697ef6fb4a5Smrg done 2698ef6fb4a5Smrg IFS="$save_ifs" 2699ef6fb4a5Smrg fi 2700ef6fb4a5Smrg # make sure the library variables are pointing to the new library 2701ef6fb4a5Smrg dir=$output_objdir 2702ef6fb4a5Smrg linklib=$newlib 2703ef6fb4a5Smrg fi # test -n "$old_archive_from_expsyms_cmds" 2704301ea0f4Smrg 2705ef6fb4a5Smrg if test "$linkmode" = prog || test "$mode" != relink; then 2706ef6fb4a5Smrg add_shlibpath= 2707ef6fb4a5Smrg add_dir= 2708ef6fb4a5Smrg add= 2709ef6fb4a5Smrg lib_linked=yes 2710ef6fb4a5Smrg case $hardcode_action in 2711ef6fb4a5Smrg immediate | unsupported) 2712ef6fb4a5Smrg if test "$hardcode_direct" = no; then 2713ef6fb4a5Smrg add="$dir/$linklib" 2714ef6fb4a5Smrg case $host in 2715ef6fb4a5Smrg *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; 2716ef6fb4a5Smrg *-*-sysv4*uw2*) add_dir="-L$dir" ;; 2717ef6fb4a5Smrg *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ 2718ef6fb4a5Smrg *-*-unixware7*) add_dir="-L$dir" ;; 2719ef6fb4a5Smrg *-*-darwin* ) 2720ef6fb4a5Smrg # if the lib is a module then we can not link against 2721ef6fb4a5Smrg # it, someone is ignoring the new warnings I added 2722ef6fb4a5Smrg if /usr/bin/file -L $add 2> /dev/null | 2723ef6fb4a5Smrg $EGREP ": [^:]* bundle" >/dev/null ; then 2724ef6fb4a5Smrg $echo "** Warning, lib $linklib is a module, not a shared library" 2725ef6fb4a5Smrg if test -z "$old_library" ; then 2726ef6fb4a5Smrg $echo 2727ef6fb4a5Smrg $echo "** And there doesn't seem to be a static archive available" 2728ef6fb4a5Smrg $echo "** The link will probably fail, sorry" 2729ef6fb4a5Smrg else 2730ef6fb4a5Smrg add="$dir/$old_library" 2731ef6fb4a5Smrg fi 2732ef6fb4a5Smrg fi 2733ef6fb4a5Smrg esac 2734ef6fb4a5Smrg elif test "$hardcode_minus_L" = no; then 2735ef6fb4a5Smrg case $host in 2736ef6fb4a5Smrg *-*-sunos*) add_shlibpath="$dir" ;; 2737ef6fb4a5Smrg esac 2738ef6fb4a5Smrg add_dir="-L$dir" 2739ef6fb4a5Smrg add="-l$name" 2740ef6fb4a5Smrg elif test "$hardcode_shlibpath_var" = no; then 2741ef6fb4a5Smrg add_shlibpath="$dir" 2742ef6fb4a5Smrg add="-l$name" 2743ef6fb4a5Smrg else 2744ef6fb4a5Smrg lib_linked=no 2745ef6fb4a5Smrg fi 2746ef6fb4a5Smrg ;; 2747ef6fb4a5Smrg relink) 2748ef6fb4a5Smrg if test "$hardcode_direct" = yes; then 2749ef6fb4a5Smrg add="$dir/$linklib" 2750ef6fb4a5Smrg elif test "$hardcode_minus_L" = yes; then 2751ef6fb4a5Smrg add_dir="-L$dir" 2752ef6fb4a5Smrg # Try looking first in the location we're being installed to. 2753ef6fb4a5Smrg if test -n "$inst_prefix_dir"; then 2754ef6fb4a5Smrg case $libdir in 2755ef6fb4a5Smrg [\\/]*) 2756ef6fb4a5Smrg add_dir="$add_dir -L$inst_prefix_dir$libdir" 2757ef6fb4a5Smrg ;; 2758ef6fb4a5Smrg esac 2759ef6fb4a5Smrg fi 2760ef6fb4a5Smrg add="-l$name" 2761ef6fb4a5Smrg elif test "$hardcode_shlibpath_var" = yes; then 2762ef6fb4a5Smrg add_shlibpath="$dir" 2763ef6fb4a5Smrg add="-l$name" 2764ef6fb4a5Smrg else 2765ef6fb4a5Smrg lib_linked=no 2766ef6fb4a5Smrg fi 2767ef6fb4a5Smrg ;; 2768ef6fb4a5Smrg *) lib_linked=no ;; 2769ef6fb4a5Smrg esac 2770301ea0f4Smrg 2771ef6fb4a5Smrg if test "$lib_linked" != yes; then 2772ef6fb4a5Smrg $echo "$modename: configuration error: unsupported hardcode properties" 2773ef6fb4a5Smrg exit $EXIT_FAILURE 2774ef6fb4a5Smrg fi 2775301ea0f4Smrg 2776ef6fb4a5Smrg if test -n "$add_shlibpath"; then 2777ef6fb4a5Smrg case :$compile_shlibpath: in 2778ef6fb4a5Smrg *":$add_shlibpath:"*) ;; 2779ef6fb4a5Smrg *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; 2780ef6fb4a5Smrg esac 2781ef6fb4a5Smrg fi 2782ef6fb4a5Smrg if test "$linkmode" = prog; then 2783ef6fb4a5Smrg test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" 2784ef6fb4a5Smrg test -n "$add" && compile_deplibs="$add $compile_deplibs" 2785ef6fb4a5Smrg else 2786ef6fb4a5Smrg test -n "$add_dir" && deplibs="$add_dir $deplibs" 2787ef6fb4a5Smrg test -n "$add" && deplibs="$add $deplibs" 2788ef6fb4a5Smrg if test "$hardcode_direct" != yes && \ 2789ef6fb4a5Smrg test "$hardcode_minus_L" != yes && \ 2790ef6fb4a5Smrg test "$hardcode_shlibpath_var" = yes; then 2791ef6fb4a5Smrg case :$finalize_shlibpath: in 2792ef6fb4a5Smrg *":$libdir:"*) ;; 2793ef6fb4a5Smrg *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; 2794ef6fb4a5Smrg esac 2795ef6fb4a5Smrg fi 2796ef6fb4a5Smrg fi 2797ef6fb4a5Smrg fi 2798301ea0f4Smrg 2799ef6fb4a5Smrg if test "$linkmode" = prog || test "$mode" = relink; then 2800ef6fb4a5Smrg add_shlibpath= 2801ef6fb4a5Smrg add_dir= 2802ef6fb4a5Smrg add= 2803ef6fb4a5Smrg # Finalize command for both is simple: just hardcode it. 2804ef6fb4a5Smrg if test "$hardcode_direct" = yes; then 2805ef6fb4a5Smrg add="$libdir/$linklib" 2806ef6fb4a5Smrg elif test "$hardcode_minus_L" = yes; then 2807ef6fb4a5Smrg add_dir="-L$libdir" 2808ef6fb4a5Smrg add="-l$name" 2809ef6fb4a5Smrg elif test "$hardcode_shlibpath_var" = yes; then 2810ef6fb4a5Smrg case :$finalize_shlibpath: in 2811ef6fb4a5Smrg *":$libdir:"*) ;; 2812ef6fb4a5Smrg *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; 2813ef6fb4a5Smrg esac 2814ef6fb4a5Smrg add="-l$name" 2815ef6fb4a5Smrg elif test "$hardcode_automatic" = yes; then 2816ef6fb4a5Smrg if test -n "$inst_prefix_dir" && 2817ef6fb4a5Smrg test -f "$inst_prefix_dir$libdir/$linklib" ; then 2818ef6fb4a5Smrg add="$inst_prefix_dir$libdir/$linklib" 2819ef6fb4a5Smrg else 2820ef6fb4a5Smrg add="$libdir/$linklib" 2821ef6fb4a5Smrg fi 2822ef6fb4a5Smrg else 2823ef6fb4a5Smrg # We cannot seem to hardcode it, guess we'll fake it. 2824ef6fb4a5Smrg add_dir="-L$libdir" 2825ef6fb4a5Smrg # Try looking first in the location we're being installed to. 2826ef6fb4a5Smrg if test -n "$inst_prefix_dir"; then 2827ef6fb4a5Smrg case $libdir in 2828ef6fb4a5Smrg [\\/]*) 2829ef6fb4a5Smrg add_dir="$add_dir -L$inst_prefix_dir$libdir" 2830ef6fb4a5Smrg ;; 2831ef6fb4a5Smrg esac 2832ef6fb4a5Smrg fi 2833ef6fb4a5Smrg add="-l$name" 2834ef6fb4a5Smrg fi 2835301ea0f4Smrg 2836ef6fb4a5Smrg if test "$linkmode" = prog; then 2837ef6fb4a5Smrg test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" 2838ef6fb4a5Smrg test -n "$add" && finalize_deplibs="$add $finalize_deplibs" 2839ef6fb4a5Smrg else 2840ef6fb4a5Smrg test -n "$add_dir" && deplibs="$add_dir $deplibs" 2841ef6fb4a5Smrg test -n "$add" && deplibs="$add $deplibs" 2842ef6fb4a5Smrg fi 2843ef6fb4a5Smrg fi 2844ef6fb4a5Smrg elif test "$linkmode" = prog; then 2845ef6fb4a5Smrg # Here we assume that one of hardcode_direct or hardcode_minus_L 2846ef6fb4a5Smrg # is not unsupported. This is valid on all known static and 2847ef6fb4a5Smrg # shared platforms. 2848ef6fb4a5Smrg if test "$hardcode_direct" != unsupported; then 2849ef6fb4a5Smrg test -n "$old_library" && linklib="$old_library" 2850ef6fb4a5Smrg compile_deplibs="$dir/$linklib $compile_deplibs" 2851ef6fb4a5Smrg finalize_deplibs="$dir/$linklib $finalize_deplibs" 2852ef6fb4a5Smrg else 2853ef6fb4a5Smrg compile_deplibs="-l$name -L$dir $compile_deplibs" 2854ef6fb4a5Smrg finalize_deplibs="-l$name -L$dir $finalize_deplibs" 2855ef6fb4a5Smrg fi 2856ef6fb4a5Smrg elif test "$build_libtool_libs" = yes; then 2857ef6fb4a5Smrg # Not a shared library 2858ef6fb4a5Smrg if test "$deplibs_check_method" != pass_all; then 2859ef6fb4a5Smrg # We're trying link a shared library against a static one 2860ef6fb4a5Smrg # but the system doesn't support it. 2861301ea0f4Smrg 2862ef6fb4a5Smrg # Just print a warning and add the library to dependency_libs so 2863ef6fb4a5Smrg # that the program can be linked against the static library. 2864ef6fb4a5Smrg $echo 2865ef6fb4a5Smrg $echo "*** Warning: This system can not link to static lib archive $lib." 2866ef6fb4a5Smrg $echo "*** I have the capability to make that library automatically link in when" 2867ef6fb4a5Smrg $echo "*** you link to this library. But I can only do this if you have a" 2868ef6fb4a5Smrg $echo "*** shared version of the library, which you do not appear to have." 2869ef6fb4a5Smrg if test "$module" = yes; then 2870ef6fb4a5Smrg $echo "*** But as you try to build a module library, libtool will still create " 2871ef6fb4a5Smrg $echo "*** a static module, that should work as long as the dlopening application" 2872ef6fb4a5Smrg $echo "*** is linked with the -dlopen flag to resolve symbols at runtime." 2873ef6fb4a5Smrg if test -z "$global_symbol_pipe"; then 2874ef6fb4a5Smrg $echo 2875ef6fb4a5Smrg $echo "*** However, this would only work if libtool was able to extract symbol" 2876ef6fb4a5Smrg $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" 2877ef6fb4a5Smrg $echo "*** not find such a program. So, this module is probably useless." 2878ef6fb4a5Smrg $echo "*** \`nm' from GNU binutils and a full rebuild may help." 2879ef6fb4a5Smrg fi 2880ef6fb4a5Smrg if test "$build_old_libs" = no; then 2881ef6fb4a5Smrg build_libtool_libs=module 2882ef6fb4a5Smrg build_old_libs=yes 2883ef6fb4a5Smrg else 2884ef6fb4a5Smrg build_libtool_libs=no 2885ef6fb4a5Smrg fi 2886ef6fb4a5Smrg fi 2887ef6fb4a5Smrg else 2888ef6fb4a5Smrg deplibs="$dir/$old_library $deplibs" 2889ef6fb4a5Smrg link_static=yes 2890ef6fb4a5Smrg fi 2891ef6fb4a5Smrg fi # link shared/static library? 2892301ea0f4Smrg 2893ef6fb4a5Smrg if test "$linkmode" = lib; then 2894ef6fb4a5Smrg if test -n "$dependency_libs" && 2895ef6fb4a5Smrg { test "$hardcode_into_libs" != yes || 2896ef6fb4a5Smrg test "$build_old_libs" = yes || 2897ef6fb4a5Smrg test "$link_static" = yes; }; then 2898ef6fb4a5Smrg # Extract -R from dependency_libs 2899ef6fb4a5Smrg temp_deplibs= 2900ef6fb4a5Smrg for libdir in $dependency_libs; do 2901ef6fb4a5Smrg case $libdir in 2902ef6fb4a5Smrg -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'` 2903ef6fb4a5Smrg case " $xrpath " in 2904ef6fb4a5Smrg *" $temp_xrpath "*) ;; 2905ef6fb4a5Smrg *) xrpath="$xrpath $temp_xrpath";; 2906ef6fb4a5Smrg esac;; 2907ef6fb4a5Smrg *) temp_deplibs="$temp_deplibs $libdir";; 2908ef6fb4a5Smrg esac 2909ef6fb4a5Smrg done 2910ef6fb4a5Smrg dependency_libs="$temp_deplibs" 2911ef6fb4a5Smrg fi 2912301ea0f4Smrg 2913ef6fb4a5Smrg newlib_search_path="$newlib_search_path $absdir" 2914ef6fb4a5Smrg # Link against this library 2915ef6fb4a5Smrg test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" 2916ef6fb4a5Smrg # ... and its dependency_libs 2917ef6fb4a5Smrg tmp_libs= 2918ef6fb4a5Smrg for deplib in $dependency_libs; do 2919ef6fb4a5Smrg newdependency_libs="$deplib $newdependency_libs" 2920ef6fb4a5Smrg if test "X$duplicate_deps" = "Xyes" ; then 2921ef6fb4a5Smrg case "$tmp_libs " in 2922ef6fb4a5Smrg *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 2923ef6fb4a5Smrg esac 2924ef6fb4a5Smrg fi 2925ef6fb4a5Smrg tmp_libs="$tmp_libs $deplib" 2926ef6fb4a5Smrg done 29270cc67336Smrg 2928ef6fb4a5Smrg if test "$link_all_deplibs" != no; then 2929ef6fb4a5Smrg # Add the search paths of all dependency libraries 2930ef6fb4a5Smrg for deplib in $dependency_libs; do 2931ef6fb4a5Smrg case $deplib in 2932ef6fb4a5Smrg -L*) path="$deplib" ;; 2933ef6fb4a5Smrg *.la) 2934ef6fb4a5Smrg dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'` 2935ef6fb4a5Smrg test "X$dir" = "X$deplib" && dir="." 2936ef6fb4a5Smrg # We need an absolute path. 2937ef6fb4a5Smrg case $dir in 2938ef6fb4a5Smrg [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; 2939ef6fb4a5Smrg *) 2940ef6fb4a5Smrg absdir=`cd "$dir" && pwd` 2941ef6fb4a5Smrg if test -z "$absdir"; then 2942ef6fb4a5Smrg $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 2943ef6fb4a5Smrg absdir="$dir" 2944ef6fb4a5Smrg fi 2945ef6fb4a5Smrg ;; 2946ef6fb4a5Smrg esac 2947ef6fb4a5Smrg if grep "^installed=no" $deplib > /dev/null; then 2948ef6fb4a5Smrg path="$absdir/$objdir" 2949ef6fb4a5Smrg else 2950ef6fb4a5Smrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 2951ef6fb4a5Smrg if test -z "$libdir"; then 2952ef6fb4a5Smrg $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 2953ef6fb4a5Smrg exit $EXIT_FAILURE 2954ef6fb4a5Smrg fi 2955ef6fb4a5Smrg if test "$absdir" != "$libdir"; then 2956ef6fb4a5Smrg $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2 2957ef6fb4a5Smrg fi 2958ef6fb4a5Smrg path="$absdir" 2959ef6fb4a5Smrg fi 2960ef6fb4a5Smrg depdepl= 2961ef6fb4a5Smrg case $host in 2962ef6fb4a5Smrg *-*-darwin*) 2963ef6fb4a5Smrg # we do not want to link against static libs, 2964ef6fb4a5Smrg # but need to link against shared 2965ef6fb4a5Smrg eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` 2966ef6fb4a5Smrg eval deplibdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 2967ef6fb4a5Smrg if test -n "$deplibrary_names" ; then 2968ef6fb4a5Smrg for tmp in $deplibrary_names ; do 2969ef6fb4a5Smrg depdepl=$tmp 2970ef6fb4a5Smrg done 2971ef6fb4a5Smrg if test -f "$deplibdir/$depdepl" ; then 2972ef6fb4a5Smrg depdepl="$deplibdir/$depdepl" 2973ef6fb4a5Smrg elif test -f "$path/$depdepl" ; then 2974ef6fb4a5Smrg depdepl="$path/$depdepl" 2975ef6fb4a5Smrg else 2976ef6fb4a5Smrg # Can't find it, oh well... 2977ef6fb4a5Smrg depdepl= 2978ef6fb4a5Smrg fi 2979ef6fb4a5Smrg # do not add paths which are already there 2980ef6fb4a5Smrg case " $newlib_search_path " in 2981ef6fb4a5Smrg *" $path "*) ;; 2982ef6fb4a5Smrg *) newlib_search_path="$newlib_search_path $path";; 2983ef6fb4a5Smrg esac 2984ef6fb4a5Smrg fi 2985ef6fb4a5Smrg path="" 2986ef6fb4a5Smrg ;; 2987ef6fb4a5Smrg *) 2988ef6fb4a5Smrg path="-L$path" 2989ef6fb4a5Smrg ;; 2990ef6fb4a5Smrg esac 2991ef6fb4a5Smrg ;; 2992ef6fb4a5Smrg -l*) 2993ef6fb4a5Smrg case $host in 2994ef6fb4a5Smrg *-*-darwin*) 2995ef6fb4a5Smrg # Again, we only want to link against shared libraries 2996ef6fb4a5Smrg eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"` 2997ef6fb4a5Smrg for tmp in $newlib_search_path ; do 2998ef6fb4a5Smrg if test -f "$tmp/lib$tmp_libs.dylib" ; then 2999ef6fb4a5Smrg eval depdepl="$tmp/lib$tmp_libs.dylib" 3000ef6fb4a5Smrg break 3001ef6fb4a5Smrg fi 3002ef6fb4a5Smrg done 3003ef6fb4a5Smrg path="" 3004ef6fb4a5Smrg ;; 3005ef6fb4a5Smrg *) continue ;; 3006ef6fb4a5Smrg esac 3007ef6fb4a5Smrg ;; 3008ef6fb4a5Smrg *) continue ;; 3009ef6fb4a5Smrg esac 3010ef6fb4a5Smrg case " $deplibs " in 3011ef6fb4a5Smrg *" $path "*) ;; 3012ef6fb4a5Smrg *) deplibs="$path $deplibs" ;; 3013ef6fb4a5Smrg esac 3014ef6fb4a5Smrg case " $deplibs " in 3015ef6fb4a5Smrg *" $depdepl "*) ;; 3016ef6fb4a5Smrg *) deplibs="$depdepl $deplibs" ;; 3017ef6fb4a5Smrg esac 3018ef6fb4a5Smrg done 3019ef6fb4a5Smrg fi # link_all_deplibs != no 3020ef6fb4a5Smrg fi # linkmode = lib 3021ef6fb4a5Smrg done # for deplib in $libs 3022ef6fb4a5Smrg dependency_libs="$newdependency_libs" 3023ef6fb4a5Smrg if test "$pass" = dlpreopen; then 3024ef6fb4a5Smrg # Link the dlpreopened libraries before other libraries 3025ef6fb4a5Smrg for deplib in $save_deplibs; do 3026ef6fb4a5Smrg deplibs="$deplib $deplibs" 3027ef6fb4a5Smrg done 3028ef6fb4a5Smrg fi 3029ef6fb4a5Smrg if test "$pass" != dlopen; then 3030ef6fb4a5Smrg if test "$pass" != conv; then 3031ef6fb4a5Smrg # Make sure lib_search_path contains only unique directories. 3032ef6fb4a5Smrg lib_search_path= 3033ef6fb4a5Smrg for dir in $newlib_search_path; do 3034ef6fb4a5Smrg case "$lib_search_path " in 3035ef6fb4a5Smrg *" $dir "*) ;; 3036ef6fb4a5Smrg *) lib_search_path="$lib_search_path $dir" ;; 3037ef6fb4a5Smrg esac 3038ef6fb4a5Smrg done 3039ef6fb4a5Smrg newlib_search_path= 3040ef6fb4a5Smrg fi 3041ef6fb4a5Smrg 3042ef6fb4a5Smrg if test "$linkmode,$pass" != "prog,link"; then 3043ef6fb4a5Smrg vars="deplibs" 3044ef6fb4a5Smrg else 3045ef6fb4a5Smrg vars="compile_deplibs finalize_deplibs" 3046ef6fb4a5Smrg fi 3047ef6fb4a5Smrg for var in $vars dependency_libs; do 3048ef6fb4a5Smrg # Add libraries to $var in reverse order 3049ef6fb4a5Smrg eval tmp_libs=\"\$$var\" 3050ef6fb4a5Smrg new_libs= 3051ef6fb4a5Smrg for deplib in $tmp_libs; do 3052ef6fb4a5Smrg # FIXME: Pedantically, this is the right thing to do, so 3053ef6fb4a5Smrg # that some nasty dependency loop isn't accidentally 3054ef6fb4a5Smrg # broken: 3055ef6fb4a5Smrg #new_libs="$deplib $new_libs" 3056ef6fb4a5Smrg # Pragmatically, this seems to cause very few problems in 3057ef6fb4a5Smrg # practice: 3058ef6fb4a5Smrg case $deplib in 3059ef6fb4a5Smrg -L*) new_libs="$deplib $new_libs" ;; 3060ef6fb4a5Smrg -R*) ;; 3061ef6fb4a5Smrg *) 3062ef6fb4a5Smrg # And here is the reason: when a library appears more 3063ef6fb4a5Smrg # than once as an explicit dependence of a library, or 3064ef6fb4a5Smrg # is implicitly linked in more than once by the 3065ef6fb4a5Smrg # compiler, it is considered special, and multiple 3066ef6fb4a5Smrg # occurrences thereof are not removed. Compare this 3067ef6fb4a5Smrg # with having the same library being listed as a 3068ef6fb4a5Smrg # dependency of multiple other libraries: in this case, 3069ef6fb4a5Smrg # we know (pedantically, we assume) the library does not 3070ef6fb4a5Smrg # need to be listed more than once, so we keep only the 3071ef6fb4a5Smrg # last copy. This is not always right, but it is rare 3072ef6fb4a5Smrg # enough that we require users that really mean to play 3073ef6fb4a5Smrg # such unportable linking tricks to link the library 3074ef6fb4a5Smrg # using -Wl,-lname, so that libtool does not consider it 3075ef6fb4a5Smrg # for duplicate removal. 3076ef6fb4a5Smrg case " $specialdeplibs " in 3077ef6fb4a5Smrg *" $deplib "*) new_libs="$deplib $new_libs" ;; 3078ef6fb4a5Smrg *) 3079ef6fb4a5Smrg case " $new_libs " in 3080ef6fb4a5Smrg *" $deplib "*) ;; 3081ef6fb4a5Smrg *) new_libs="$deplib $new_libs" ;; 3082ef6fb4a5Smrg esac 3083ef6fb4a5Smrg ;; 3084ef6fb4a5Smrg esac 3085ef6fb4a5Smrg ;; 3086ef6fb4a5Smrg esac 3087ef6fb4a5Smrg done 3088ef6fb4a5Smrg tmp_libs= 3089ef6fb4a5Smrg for deplib in $new_libs; do 3090ef6fb4a5Smrg case $deplib in 3091ef6fb4a5Smrg -L*) 3092ef6fb4a5Smrg case " $tmp_libs " in 3093ef6fb4a5Smrg *" $deplib "*) ;; 3094ef6fb4a5Smrg *) tmp_libs="$tmp_libs $deplib" ;; 3095ef6fb4a5Smrg esac 3096ef6fb4a5Smrg ;; 3097ef6fb4a5Smrg *) tmp_libs="$tmp_libs $deplib" ;; 3098ef6fb4a5Smrg esac 3099ef6fb4a5Smrg done 3100ef6fb4a5Smrg eval $var=\"$tmp_libs\" 3101ef6fb4a5Smrg done # for var 3102ef6fb4a5Smrg fi 3103ef6fb4a5Smrg # Last step: remove runtime libs from dependency_libs 3104ef6fb4a5Smrg # (they stay in deplibs) 3105ef6fb4a5Smrg tmp_libs= 3106ef6fb4a5Smrg for i in $dependency_libs ; do 3107ef6fb4a5Smrg case " $predeps $postdeps $compiler_lib_search_path " in 3108ef6fb4a5Smrg *" $i "*) 3109ef6fb4a5Smrg i="" 31100cc67336Smrg ;; 31110cc67336Smrg esac 3112ef6fb4a5Smrg if test -n "$i" ; then 3113ef6fb4a5Smrg tmp_libs="$tmp_libs $i" 3114ef6fb4a5Smrg fi 3115ef6fb4a5Smrg done 3116ef6fb4a5Smrg dependency_libs=$tmp_libs 3117ef6fb4a5Smrg done # for pass 3118ef6fb4a5Smrg if test "$linkmode" = prog; then 3119ef6fb4a5Smrg dlfiles="$newdlfiles" 3120ef6fb4a5Smrg dlprefiles="$newdlprefiles" 31210cc67336Smrg fi 31220cc67336Smrg 3123ef6fb4a5Smrg case $linkmode in 3124ef6fb4a5Smrg oldlib) 3125ef6fb4a5Smrg case " $deplibs" in 3126ef6fb4a5Smrg *\ -l* | *\ -L*) 3127ef6fb4a5Smrg $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 ;; 3128ef6fb4a5Smrg esac 31290cc67336Smrg 3130ef6fb4a5Smrg if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 3131ef6fb4a5Smrg $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2 3132ef6fb4a5Smrg fi 3133301ea0f4Smrg 3134ef6fb4a5Smrg if test -n "$rpath"; then 3135ef6fb4a5Smrg $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2 3136ef6fb4a5Smrg fi 3137301ea0f4Smrg 3138ef6fb4a5Smrg if test -n "$xrpath"; then 3139ef6fb4a5Smrg $echo "$modename: warning: \`-R' is ignored for archives" 1>&2 3140ef6fb4a5Smrg fi 3141301ea0f4Smrg 3142ef6fb4a5Smrg if test -n "$vinfo"; then 3143ef6fb4a5Smrg $echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2 3144ef6fb4a5Smrg fi 3145301ea0f4Smrg 3146ef6fb4a5Smrg if test -n "$release"; then 3147ef6fb4a5Smrg $echo "$modename: warning: \`-release' is ignored for archives" 1>&2 3148ef6fb4a5Smrg fi 3149301ea0f4Smrg 3150ef6fb4a5Smrg if test -n "$export_symbols" || test -n "$export_symbols_regex"; then 3151ef6fb4a5Smrg $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2 3152ef6fb4a5Smrg fi 3153301ea0f4Smrg 3154ef6fb4a5Smrg # Now set the variables for building old libraries. 3155ef6fb4a5Smrg build_libtool_libs=no 3156ef6fb4a5Smrg oldlibs="$output" 3157ef6fb4a5Smrg objs="$objs$old_deplibs" 3158ef6fb4a5Smrg ;; 3159301ea0f4Smrg 3160ef6fb4a5Smrg lib) 3161ef6fb4a5Smrg # Make sure we only generate libraries of the form `libNAME.la'. 3162ef6fb4a5Smrg case $outputname in 3163ef6fb4a5Smrg lib*) 3164ef6fb4a5Smrg name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` 3165ef6fb4a5Smrg eval shared_ext=\"$shrext_cmds\" 3166ef6fb4a5Smrg eval libname=\"$libname_spec\" 3167ef6fb4a5Smrg ;; 3168ef6fb4a5Smrg *) 3169ef6fb4a5Smrg if test "$module" = no; then 3170ef6fb4a5Smrg $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2 3171ef6fb4a5Smrg $echo "$help" 1>&2 3172ef6fb4a5Smrg exit $EXIT_FAILURE 3173ef6fb4a5Smrg fi 3174ef6fb4a5Smrg if test "$need_lib_prefix" != no; then 3175ef6fb4a5Smrg # Add the "lib" prefix for modules if required 3176ef6fb4a5Smrg name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` 3177ef6fb4a5Smrg eval shared_ext=\"$shrext_cmds\" 3178ef6fb4a5Smrg eval libname=\"$libname_spec\" 3179ef6fb4a5Smrg else 3180ef6fb4a5Smrg libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` 3181ef6fb4a5Smrg fi 3182ef6fb4a5Smrg ;; 3183ef6fb4a5Smrg esac 31840cc67336Smrg 3185ef6fb4a5Smrg if test -n "$objs"; then 3186ef6fb4a5Smrg if test "$deplibs_check_method" != pass_all; then 3187ef6fb4a5Smrg $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1 3188ef6fb4a5Smrg exit $EXIT_FAILURE 3189ef6fb4a5Smrg else 3190ef6fb4a5Smrg $echo 3191ef6fb4a5Smrg $echo "*** Warning: Linking the shared library $output against the non-libtool" 3192ef6fb4a5Smrg $echo "*** objects $objs is not portable!" 3193ef6fb4a5Smrg libobjs="$libobjs $objs" 3194ef6fb4a5Smrg fi 3195ef6fb4a5Smrg fi 31960cc67336Smrg 3197ef6fb4a5Smrg if test "$dlself" != no; then 3198ef6fb4a5Smrg $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2 3199ef6fb4a5Smrg fi 32000cc67336Smrg 3201ef6fb4a5Smrg set dummy $rpath 3202ef6fb4a5Smrg if test "$#" -gt 2; then 3203ef6fb4a5Smrg $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2 3204ef6fb4a5Smrg fi 3205ef6fb4a5Smrg install_libdir="$2" 32060cc67336Smrg 3207ef6fb4a5Smrg oldlibs= 3208ef6fb4a5Smrg if test -z "$rpath"; then 3209ef6fb4a5Smrg if test "$build_libtool_libs" = yes; then 3210ef6fb4a5Smrg # Building a libtool convenience library. 3211ef6fb4a5Smrg # Some compilers have problems with a `.al' extension so 3212ef6fb4a5Smrg # convenience libraries should have the same extension an 3213ef6fb4a5Smrg # archive normally would. 3214ef6fb4a5Smrg oldlibs="$output_objdir/$libname.$libext $oldlibs" 3215ef6fb4a5Smrg build_libtool_libs=convenience 3216ef6fb4a5Smrg build_old_libs=yes 3217ef6fb4a5Smrg fi 32180cc67336Smrg 3219ef6fb4a5Smrg if test -n "$vinfo"; then 3220ef6fb4a5Smrg $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2 3221ef6fb4a5Smrg fi 32220cc67336Smrg 3223ef6fb4a5Smrg if test -n "$release"; then 3224ef6fb4a5Smrg $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2 3225ef6fb4a5Smrg fi 3226ef6fb4a5Smrg else 32270cc67336Smrg 3228ef6fb4a5Smrg # Parse the version information argument. 3229ef6fb4a5Smrg save_ifs="$IFS"; IFS=':' 3230ef6fb4a5Smrg set dummy $vinfo 0 0 0 3231ef6fb4a5Smrg IFS="$save_ifs" 32320cc67336Smrg 3233ef6fb4a5Smrg if test -n "$8"; then 3234ef6fb4a5Smrg $echo "$modename: too many parameters to \`-version-info'" 1>&2 3235ef6fb4a5Smrg $echo "$help" 1>&2 3236ef6fb4a5Smrg exit $EXIT_FAILURE 3237ef6fb4a5Smrg fi 32380cc67336Smrg 3239ef6fb4a5Smrg # convert absolute version numbers to libtool ages 3240ef6fb4a5Smrg # this retains compatibility with .la files and attempts 3241ef6fb4a5Smrg # to make the code below a bit more comprehensible 32420cc67336Smrg 3243ef6fb4a5Smrg case $vinfo_number in 3244ef6fb4a5Smrg yes) 3245ef6fb4a5Smrg number_major="$2" 3246ef6fb4a5Smrg number_minor="$3" 3247ef6fb4a5Smrg number_revision="$4" 3248ef6fb4a5Smrg # 3249ef6fb4a5Smrg # There are really only two kinds -- those that 3250ef6fb4a5Smrg # use the current revision as the major version 3251ef6fb4a5Smrg # and those that subtract age and use age as 3252ef6fb4a5Smrg # a minor version. But, then there is irix 3253ef6fb4a5Smrg # which has an extra 1 added just for fun 3254ef6fb4a5Smrg # 3255ef6fb4a5Smrg case $version_type in 3256ef6fb4a5Smrg darwin|linux|osf|windows|none) 3257ef6fb4a5Smrg current=`expr $number_major + $number_minor` 3258ef6fb4a5Smrg age="$number_minor" 3259ef6fb4a5Smrg revision="$number_revision" 3260ef6fb4a5Smrg ;; 3261ef6fb4a5Smrg freebsd-aout|freebsd-elf|sunos) 3262ef6fb4a5Smrg current="$number_major" 3263ef6fb4a5Smrg revision="$number_minor" 3264ef6fb4a5Smrg age="0" 3265ef6fb4a5Smrg ;; 3266ef6fb4a5Smrg irix|nonstopux) 3267ef6fb4a5Smrg current=`expr $number_major + $number_minor` 3268ef6fb4a5Smrg age="$number_minor" 3269ef6fb4a5Smrg revision="$number_minor" 3270ef6fb4a5Smrg lt_irix_increment=no 3271ef6fb4a5Smrg ;; 3272ef6fb4a5Smrg esac 3273ef6fb4a5Smrg ;; 3274ef6fb4a5Smrg no) 3275ef6fb4a5Smrg current="$2" 3276ef6fb4a5Smrg revision="$3" 3277ef6fb4a5Smrg age="$4" 3278ef6fb4a5Smrg ;; 3279ef6fb4a5Smrg esac 32800cc67336Smrg 3281ef6fb4a5Smrg # Check that each of the things are valid numbers. 3282ef6fb4a5Smrg case $current in 3283ef6fb4a5Smrg 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]) ;; 3284ef6fb4a5Smrg *) 3285ef6fb4a5Smrg $echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2 3286ef6fb4a5Smrg $echo "$modename: \`$vinfo' is not valid version information" 1>&2 3287ef6fb4a5Smrg exit $EXIT_FAILURE 3288ef6fb4a5Smrg ;; 3289ef6fb4a5Smrg esac 32900cc67336Smrg 3291ef6fb4a5Smrg case $revision in 3292ef6fb4a5Smrg 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]) ;; 3293ef6fb4a5Smrg *) 3294ef6fb4a5Smrg $echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2 3295ef6fb4a5Smrg $echo "$modename: \`$vinfo' is not valid version information" 1>&2 3296ef6fb4a5Smrg exit $EXIT_FAILURE 3297ef6fb4a5Smrg ;; 3298ef6fb4a5Smrg esac 32990cc67336Smrg 3300ef6fb4a5Smrg case $age in 3301ef6fb4a5Smrg 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]) ;; 3302ef6fb4a5Smrg *) 3303ef6fb4a5Smrg $echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2 3304ef6fb4a5Smrg $echo "$modename: \`$vinfo' is not valid version information" 1>&2 3305ef6fb4a5Smrg exit $EXIT_FAILURE 3306ef6fb4a5Smrg ;; 3307ef6fb4a5Smrg esac 33080cc67336Smrg 3309ef6fb4a5Smrg if test "$age" -gt "$current"; then 3310ef6fb4a5Smrg $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 3311ef6fb4a5Smrg $echo "$modename: \`$vinfo' is not valid version information" 1>&2 3312ef6fb4a5Smrg exit $EXIT_FAILURE 3313ef6fb4a5Smrg fi 33140cc67336Smrg 3315ef6fb4a5Smrg # Calculate the version variables. 3316ef6fb4a5Smrg major= 3317ef6fb4a5Smrg versuffix= 3318ef6fb4a5Smrg verstring= 3319ef6fb4a5Smrg case $version_type in 3320ef6fb4a5Smrg none) ;; 33210cc67336Smrg 3322ef6fb4a5Smrg darwin) 3323ef6fb4a5Smrg # Like Linux, but with the current version available in 3324ef6fb4a5Smrg # verstring for coding it into the library header 3325ef6fb4a5Smrg major=.`expr $current - $age` 3326ef6fb4a5Smrg versuffix="$major.$age.$revision" 3327ef6fb4a5Smrg # Darwin ld doesn't like 0 for these options... 3328ef6fb4a5Smrg minor_current=`expr $current + 1` 3329ef6fb4a5Smrg xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" 3330ef6fb4a5Smrg verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" 3331ef6fb4a5Smrg ;; 33320cc67336Smrg 3333ef6fb4a5Smrg freebsd-aout) 3334ef6fb4a5Smrg major=".$current" 3335ef6fb4a5Smrg versuffix=".$current.$revision"; 3336ef6fb4a5Smrg ;; 33370cc67336Smrg 3338ef6fb4a5Smrg freebsd-elf) 3339ef6fb4a5Smrg major=".$current" 3340ef6fb4a5Smrg versuffix=".$current"; 3341ef6fb4a5Smrg ;; 33420cc67336Smrg 3343ef6fb4a5Smrg irix | nonstopux) 3344ef6fb4a5Smrg if test "X$lt_irix_increment" = "Xno"; then 3345ef6fb4a5Smrg major=`expr $current - $age` 3346ef6fb4a5Smrg else 3347ef6fb4a5Smrg major=`expr $current - $age + 1` 3348ef6fb4a5Smrg fi 3349ef6fb4a5Smrg case $version_type in 3350ef6fb4a5Smrg nonstopux) verstring_prefix=nonstopux ;; 3351ef6fb4a5Smrg *) verstring_prefix=sgi ;; 3352ef6fb4a5Smrg esac 3353ef6fb4a5Smrg verstring="$verstring_prefix$major.$revision" 3354301ea0f4Smrg 3355ef6fb4a5Smrg # Add in all the interfaces that we are compatible with. 3356ef6fb4a5Smrg loop=$revision 3357ef6fb4a5Smrg while test "$loop" -ne 0; do 3358ef6fb4a5Smrg iface=`expr $revision - $loop` 3359ef6fb4a5Smrg loop=`expr $loop - 1` 3360ef6fb4a5Smrg verstring="$verstring_prefix$major.$iface:$verstring" 3361ef6fb4a5Smrg done 3362301ea0f4Smrg 3363ef6fb4a5Smrg # Before this point, $major must not contain `.'. 3364ef6fb4a5Smrg major=.$major 3365ef6fb4a5Smrg versuffix="$major.$revision" 3366ef6fb4a5Smrg ;; 3367301ea0f4Smrg 3368ef6fb4a5Smrg linux) 3369ef6fb4a5Smrg major=.`expr $current - $age` 3370ef6fb4a5Smrg versuffix="$major.$age.$revision" 3371ef6fb4a5Smrg ;; 3372301ea0f4Smrg 3373ef6fb4a5Smrg osf) 3374ef6fb4a5Smrg major=.`expr $current - $age` 3375ef6fb4a5Smrg versuffix=".$current.$age.$revision" 3376ef6fb4a5Smrg verstring="$current.$age.$revision" 3377301ea0f4Smrg 3378ef6fb4a5Smrg # Add in all the interfaces that we are compatible with. 3379ef6fb4a5Smrg loop=$age 3380ef6fb4a5Smrg while test "$loop" -ne 0; do 3381ef6fb4a5Smrg iface=`expr $current - $loop` 3382ef6fb4a5Smrg loop=`expr $loop - 1` 3383ef6fb4a5Smrg verstring="$verstring:${iface}.0" 3384ef6fb4a5Smrg done 3385301ea0f4Smrg 3386ef6fb4a5Smrg # Make executables depend on our current version. 3387ef6fb4a5Smrg verstring="$verstring:${current}.0" 3388ef6fb4a5Smrg ;; 3389301ea0f4Smrg 3390ef6fb4a5Smrg sunos) 3391ef6fb4a5Smrg major=".$current" 3392ef6fb4a5Smrg versuffix=".$current.$revision" 3393ef6fb4a5Smrg ;; 3394301ea0f4Smrg 3395ef6fb4a5Smrg windows) 3396ef6fb4a5Smrg # Use '-' rather than '.', since we only want one 3397ef6fb4a5Smrg # extension on DOS 8.3 filesystems. 3398ef6fb4a5Smrg major=`expr $current - $age` 3399ef6fb4a5Smrg versuffix="-$major" 3400ef6fb4a5Smrg ;; 3401301ea0f4Smrg 3402ef6fb4a5Smrg *) 3403ef6fb4a5Smrg $echo "$modename: unknown library version type \`$version_type'" 1>&2 3404ef6fb4a5Smrg $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 3405ef6fb4a5Smrg exit $EXIT_FAILURE 3406ef6fb4a5Smrg ;; 3407ef6fb4a5Smrg esac 3408301ea0f4Smrg 3409ef6fb4a5Smrg # Clear the version info if we defaulted, and they specified a release. 3410ef6fb4a5Smrg if test -z "$vinfo" && test -n "$release"; then 3411ef6fb4a5Smrg major= 3412ef6fb4a5Smrg case $version_type in 3413ef6fb4a5Smrg darwin) 3414ef6fb4a5Smrg # we can't check for "0.0" in archive_cmds due to quoting 3415ef6fb4a5Smrg # problems, so we reset it completely 3416ef6fb4a5Smrg verstring= 34170cc67336Smrg ;; 3418ef6fb4a5Smrg *) 3419ef6fb4a5Smrg verstring="0.0" 3420ef6fb4a5Smrg ;; 3421ef6fb4a5Smrg esac 3422ef6fb4a5Smrg if test "$need_version" = no; then 3423ef6fb4a5Smrg versuffix= 3424ef6fb4a5Smrg else 3425ef6fb4a5Smrg versuffix=".0.0" 3426ef6fb4a5Smrg fi 3427ef6fb4a5Smrg fi 3428301ea0f4Smrg 3429ef6fb4a5Smrg # Remove version info from name if versioning should be avoided 3430ef6fb4a5Smrg if test "$avoid_version" = yes && test "$need_version" = no; then 3431ef6fb4a5Smrg major= 3432ef6fb4a5Smrg versuffix= 3433ef6fb4a5Smrg verstring="" 3434ef6fb4a5Smrg fi 3435301ea0f4Smrg 3436ef6fb4a5Smrg # Check to see if the archive will have undefined symbols. 3437ef6fb4a5Smrg if test "$allow_undefined" = yes; then 3438ef6fb4a5Smrg if test "$allow_undefined_flag" = unsupported; then 3439ef6fb4a5Smrg $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2 3440ef6fb4a5Smrg build_libtool_libs=no 3441ef6fb4a5Smrg build_old_libs=yes 3442ef6fb4a5Smrg fi 3443ef6fb4a5Smrg else 3444ef6fb4a5Smrg # Don't allow undefined symbols. 3445ef6fb4a5Smrg allow_undefined_flag="$no_undefined_flag" 3446ef6fb4a5Smrg fi 3447ef6fb4a5Smrg fi 3448301ea0f4Smrg 3449ef6fb4a5Smrg if test "$mode" != relink; then 3450ef6fb4a5Smrg # Remove our outputs, but don't remove object files since they 3451ef6fb4a5Smrg # may have been created when compiling PIC objects. 3452ef6fb4a5Smrg removelist= 3453ef6fb4a5Smrg tempremovelist=`$echo "$output_objdir/*"` 3454ef6fb4a5Smrg for p in $tempremovelist; do 3455ef6fb4a5Smrg case $p in 3456ef6fb4a5Smrg *.$objext) 3457ef6fb4a5Smrg ;; 3458ef6fb4a5Smrg $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) 3459ef6fb4a5Smrg if test "X$precious_files_regex" != "X"; then 3460ef6fb4a5Smrg if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 3461ef6fb4a5Smrg then 3462ef6fb4a5Smrg continue 3463ef6fb4a5Smrg fi 3464ef6fb4a5Smrg fi 3465ef6fb4a5Smrg removelist="$removelist $p" 3466ef6fb4a5Smrg ;; 3467ef6fb4a5Smrg *) ;; 3468ef6fb4a5Smrg esac 3469ef6fb4a5Smrg done 3470ef6fb4a5Smrg if test -n "$removelist"; then 3471ef6fb4a5Smrg $show "${rm}r $removelist" 3472ef6fb4a5Smrg $run ${rm}r $removelist 3473ef6fb4a5Smrg fi 3474ef6fb4a5Smrg fi 3475301ea0f4Smrg 3476ef6fb4a5Smrg # Now set the variables for building old libraries. 3477ef6fb4a5Smrg if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then 3478ef6fb4a5Smrg oldlibs="$oldlibs $output_objdir/$libname.$libext" 3479301ea0f4Smrg 3480ef6fb4a5Smrg # Transform .lo files to .o files. 3481ef6fb4a5Smrg oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` 3482ef6fb4a5Smrg fi 3483301ea0f4Smrg 3484ef6fb4a5Smrg # Eliminate all temporary directories. 3485ef6fb4a5Smrg #for path in $notinst_path; do 3486ef6fb4a5Smrg # lib_search_path=`$echo "$lib_search_path " | ${SED} -e "s% $path % %g"` 3487ef6fb4a5Smrg # deplibs=`$echo "$deplibs " | ${SED} -e "s% -L$path % %g"` 3488ef6fb4a5Smrg # dependency_libs=`$echo "$dependency_libs " | ${SED} -e "s% -L$path % %g"` 3489ef6fb4a5Smrg #done 3490301ea0f4Smrg 3491ef6fb4a5Smrg if test -n "$xrpath"; then 3492ef6fb4a5Smrg # If the user specified any rpath flags, then add them. 3493ef6fb4a5Smrg temp_xrpath= 3494ef6fb4a5Smrg for libdir in $xrpath; do 3495ef6fb4a5Smrg temp_xrpath="$temp_xrpath -R$libdir" 3496ef6fb4a5Smrg case "$finalize_rpath " in 3497ef6fb4a5Smrg *" $libdir "*) ;; 3498ef6fb4a5Smrg *) finalize_rpath="$finalize_rpath $libdir" ;; 3499ef6fb4a5Smrg esac 3500ef6fb4a5Smrg done 3501ef6fb4a5Smrg if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then 3502ef6fb4a5Smrg dependency_libs="$temp_xrpath $dependency_libs" 3503ef6fb4a5Smrg fi 3504ef6fb4a5Smrg fi 3505301ea0f4Smrg 3506ef6fb4a5Smrg # Make sure dlfiles contains only unique files that won't be dlpreopened 3507ef6fb4a5Smrg old_dlfiles="$dlfiles" 3508ef6fb4a5Smrg dlfiles= 3509ef6fb4a5Smrg for lib in $old_dlfiles; do 3510ef6fb4a5Smrg case " $dlprefiles $dlfiles " in 3511ef6fb4a5Smrg *" $lib "*) ;; 3512ef6fb4a5Smrg *) dlfiles="$dlfiles $lib" ;; 3513ef6fb4a5Smrg esac 3514ef6fb4a5Smrg done 3515301ea0f4Smrg 3516ef6fb4a5Smrg # Make sure dlprefiles contains only unique files 3517ef6fb4a5Smrg old_dlprefiles="$dlprefiles" 3518ef6fb4a5Smrg dlprefiles= 3519ef6fb4a5Smrg for lib in $old_dlprefiles; do 3520ef6fb4a5Smrg case "$dlprefiles " in 3521ef6fb4a5Smrg *" $lib "*) ;; 3522ef6fb4a5Smrg *) dlprefiles="$dlprefiles $lib" ;; 3523ef6fb4a5Smrg esac 3524ef6fb4a5Smrg done 3525301ea0f4Smrg 3526ef6fb4a5Smrg if test "$build_libtool_libs" = yes; then 3527ef6fb4a5Smrg if test -n "$rpath"; then 3528ef6fb4a5Smrg case $host in 3529ef6fb4a5Smrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*) 3530ef6fb4a5Smrg # these systems don't actually have a c library (as such)! 3531ef6fb4a5Smrg ;; 3532ef6fb4a5Smrg *-*-rhapsody* | *-*-darwin1.[012]) 3533ef6fb4a5Smrg # Rhapsody C library is in the System framework 3534ef6fb4a5Smrg deplibs="$deplibs -framework System" 3535ef6fb4a5Smrg ;; 3536ef6fb4a5Smrg *-*-netbsd*) 3537ef6fb4a5Smrg # Don't link with libc until the a.out ld.so is fixed. 3538ef6fb4a5Smrg ;; 3539ef6fb4a5Smrg *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 3540ef6fb4a5Smrg # Do not include libc due to us having libc/libc_r. 3541ef6fb4a5Smrg ;; 3542ef6fb4a5Smrg *-*-sco3.2v5* | *-*-sco5v6*) 3543ef6fb4a5Smrg # Causes problems with __ctype 3544ef6fb4a5Smrg ;; 3545ef6fb4a5Smrg *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 3546ef6fb4a5Smrg # Compiler inserts libc in the correct place for threads to work 3547ef6fb4a5Smrg ;; 3548ef6fb4a5Smrg *) 3549ef6fb4a5Smrg # Add libc to deplibs on all other systems if necessary. 3550ef6fb4a5Smrg if test "$build_libtool_need_lc" = "yes"; then 3551ef6fb4a5Smrg deplibs="$deplibs -lc" 3552ef6fb4a5Smrg fi 3553ef6fb4a5Smrg ;; 3554ef6fb4a5Smrg esac 3555ef6fb4a5Smrg fi 3556301ea0f4Smrg 3557ef6fb4a5Smrg # Transform deplibs into only deplibs that can be linked in shared. 3558ef6fb4a5Smrg name_save=$name 3559ef6fb4a5Smrg libname_save=$libname 3560ef6fb4a5Smrg release_save=$release 3561ef6fb4a5Smrg versuffix_save=$versuffix 3562ef6fb4a5Smrg major_save=$major 3563ef6fb4a5Smrg # I'm not sure if I'm treating the release correctly. I think 3564ef6fb4a5Smrg # release should show up in the -l (ie -lgmp5) so we don't want to 3565ef6fb4a5Smrg # add it in twice. Is that correct? 3566ef6fb4a5Smrg release="" 3567ef6fb4a5Smrg versuffix="" 3568ef6fb4a5Smrg major="" 3569ef6fb4a5Smrg newdeplibs= 3570ef6fb4a5Smrg droppeddeps=no 3571ef6fb4a5Smrg case $deplibs_check_method in 3572ef6fb4a5Smrg pass_all) 3573ef6fb4a5Smrg # Don't check for shared/static. Everything works. 3574ef6fb4a5Smrg # This might be a little naive. We might want to check 3575ef6fb4a5Smrg # whether the library exists or not. But this is on 3576ef6fb4a5Smrg # osf3 & osf4 and I'm not really sure... Just 3577ef6fb4a5Smrg # implementing what was already the behavior. 3578ef6fb4a5Smrg newdeplibs=$deplibs 3579ef6fb4a5Smrg ;; 3580ef6fb4a5Smrg test_compile) 3581ef6fb4a5Smrg # This code stresses the "libraries are programs" paradigm to its 3582ef6fb4a5Smrg # limits. Maybe even breaks it. We compile a program, linking it 3583ef6fb4a5Smrg # against the deplibs as a proxy for the library. Then we can check 3584ef6fb4a5Smrg # whether they linked in statically or dynamically with ldd. 3585ef6fb4a5Smrg $rm conftest.c 3586ef6fb4a5Smrg cat > conftest.c <<EOF 3587ef6fb4a5Smrg int main() { return 0; } 3588ef6fb4a5SmrgEOF 3589ef6fb4a5Smrg $rm conftest 3590ef6fb4a5Smrg if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then 3591ef6fb4a5Smrg ldd_output=`ldd conftest` 3592ef6fb4a5Smrg for i in $deplibs; do 3593ef6fb4a5Smrg name=`expr $i : '-l\(.*\)'` 3594ef6fb4a5Smrg # If $name is empty we are operating on a -L argument. 3595ef6fb4a5Smrg if test "$name" != "" && test "$name" != "0"; then 3596ef6fb4a5Smrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 3597ef6fb4a5Smrg case " $predeps $postdeps " in 3598ef6fb4a5Smrg *" $i "*) 3599ef6fb4a5Smrg newdeplibs="$newdeplibs $i" 3600ef6fb4a5Smrg i="" 3601ef6fb4a5Smrg ;; 3602ef6fb4a5Smrg esac 3603ef6fb4a5Smrg fi 3604ef6fb4a5Smrg if test -n "$i" ; then 3605ef6fb4a5Smrg libname=`eval \\$echo \"$libname_spec\"` 3606ef6fb4a5Smrg deplib_matches=`eval \\$echo \"$library_names_spec\"` 3607ef6fb4a5Smrg set dummy $deplib_matches 3608ef6fb4a5Smrg deplib_match=$2 3609ef6fb4a5Smrg if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 3610ef6fb4a5Smrg newdeplibs="$newdeplibs $i" 3611ef6fb4a5Smrg else 3612ef6fb4a5Smrg droppeddeps=yes 3613ef6fb4a5Smrg $echo 3614ef6fb4a5Smrg $echo "*** Warning: dynamic linker does not accept needed library $i." 3615ef6fb4a5Smrg $echo "*** I have the capability to make that library automatically link in when" 3616ef6fb4a5Smrg $echo "*** you link to this library. But I can only do this if you have a" 3617ef6fb4a5Smrg $echo "*** shared version of the library, which I believe you do not have" 3618ef6fb4a5Smrg $echo "*** because a test_compile did reveal that the linker did not use it for" 3619ef6fb4a5Smrg $echo "*** its dynamic dependency list that programs get resolved with at runtime." 3620ef6fb4a5Smrg fi 3621ef6fb4a5Smrg fi 3622ef6fb4a5Smrg else 3623ef6fb4a5Smrg newdeplibs="$newdeplibs $i" 3624ef6fb4a5Smrg fi 3625ef6fb4a5Smrg done 3626ef6fb4a5Smrg else 3627ef6fb4a5Smrg # Error occurred in the first compile. Let's try to salvage 3628ef6fb4a5Smrg # the situation: Compile a separate program for each library. 3629ef6fb4a5Smrg for i in $deplibs; do 3630ef6fb4a5Smrg name=`expr $i : '-l\(.*\)'` 3631ef6fb4a5Smrg # If $name is empty we are operating on a -L argument. 3632ef6fb4a5Smrg if test "$name" != "" && test "$name" != "0"; then 3633ef6fb4a5Smrg $rm conftest 3634ef6fb4a5Smrg if $LTCC $LTCFLAGS -o conftest conftest.c $i; then 3635ef6fb4a5Smrg ldd_output=`ldd conftest` 3636ef6fb4a5Smrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 3637ef6fb4a5Smrg case " $predeps $postdeps " in 3638ef6fb4a5Smrg *" $i "*) 3639ef6fb4a5Smrg newdeplibs="$newdeplibs $i" 3640ef6fb4a5Smrg i="" 3641ef6fb4a5Smrg ;; 3642ef6fb4a5Smrg esac 3643ef6fb4a5Smrg fi 3644ef6fb4a5Smrg if test -n "$i" ; then 3645ef6fb4a5Smrg libname=`eval \\$echo \"$libname_spec\"` 3646ef6fb4a5Smrg deplib_matches=`eval \\$echo \"$library_names_spec\"` 3647ef6fb4a5Smrg set dummy $deplib_matches 3648ef6fb4a5Smrg deplib_match=$2 3649ef6fb4a5Smrg if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 3650ef6fb4a5Smrg newdeplibs="$newdeplibs $i" 3651ef6fb4a5Smrg else 3652ef6fb4a5Smrg droppeddeps=yes 3653ef6fb4a5Smrg $echo 3654ef6fb4a5Smrg $echo "*** Warning: dynamic linker does not accept needed library $i." 3655ef6fb4a5Smrg $echo "*** I have the capability to make that library automatically link in when" 3656ef6fb4a5Smrg $echo "*** you link to this library. But I can only do this if you have a" 3657ef6fb4a5Smrg $echo "*** shared version of the library, which you do not appear to have" 3658ef6fb4a5Smrg $echo "*** because a test_compile did reveal that the linker did not use this one" 3659ef6fb4a5Smrg $echo "*** as a dynamic dependency that programs can get resolved with at runtime." 3660ef6fb4a5Smrg fi 3661ef6fb4a5Smrg fi 3662ef6fb4a5Smrg else 3663ef6fb4a5Smrg droppeddeps=yes 3664ef6fb4a5Smrg $echo 3665ef6fb4a5Smrg $echo "*** Warning! Library $i is needed by this library but I was not able to" 3666ef6fb4a5Smrg $echo "*** make it link in! You will probably need to install it or some" 3667ef6fb4a5Smrg $echo "*** library that it depends on before this library will be fully" 3668ef6fb4a5Smrg $echo "*** functional. Installing it before continuing would be even better." 3669ef6fb4a5Smrg fi 3670ef6fb4a5Smrg else 3671ef6fb4a5Smrg newdeplibs="$newdeplibs $i" 3672ef6fb4a5Smrg fi 3673ef6fb4a5Smrg done 3674ef6fb4a5Smrg fi 3675ef6fb4a5Smrg ;; 3676ef6fb4a5Smrg file_magic*) 3677ef6fb4a5Smrg set dummy $deplibs_check_method 3678ef6fb4a5Smrg file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` 3679ef6fb4a5Smrg for a_deplib in $deplibs; do 3680ef6fb4a5Smrg name=`expr $a_deplib : '-l\(.*\)'` 3681ef6fb4a5Smrg # If $name is empty we are operating on a -L argument. 3682ef6fb4a5Smrg if test "$name" != "" && test "$name" != "0"; then 3683ef6fb4a5Smrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 3684ef6fb4a5Smrg case " $predeps $postdeps " in 3685ef6fb4a5Smrg *" $a_deplib "*) 3686ef6fb4a5Smrg newdeplibs="$newdeplibs $a_deplib" 3687ef6fb4a5Smrg a_deplib="" 3688ef6fb4a5Smrg ;; 3689ef6fb4a5Smrg esac 3690ef6fb4a5Smrg fi 3691ef6fb4a5Smrg if test -n "$a_deplib" ; then 3692ef6fb4a5Smrg libname=`eval \\$echo \"$libname_spec\"` 3693ef6fb4a5Smrg for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 3694ef6fb4a5Smrg potential_libs=`ls $i/$libname[.-]* 2>/dev/null` 3695ef6fb4a5Smrg for potent_lib in $potential_libs; do 3696ef6fb4a5Smrg # Follow soft links. 3697ef6fb4a5Smrg if ls -lLd "$potent_lib" 2>/dev/null \ 3698ef6fb4a5Smrg | grep " -> " >/dev/null; then 3699ef6fb4a5Smrg continue 3700ef6fb4a5Smrg fi 3701ef6fb4a5Smrg # The statement above tries to avoid entering an 3702ef6fb4a5Smrg # endless loop below, in case of cyclic links. 3703ef6fb4a5Smrg # We might still enter an endless loop, since a link 3704ef6fb4a5Smrg # loop can be closed while we follow links, 3705ef6fb4a5Smrg # but so what? 3706ef6fb4a5Smrg potlib="$potent_lib" 3707ef6fb4a5Smrg while test -h "$potlib" 2>/dev/null; do 3708ef6fb4a5Smrg potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` 3709ef6fb4a5Smrg case $potliblink in 3710ef6fb4a5Smrg [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; 3711ef6fb4a5Smrg *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; 3712ef6fb4a5Smrg esac 3713ef6fb4a5Smrg done 3714ef6fb4a5Smrg if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \ 3715ef6fb4a5Smrg | ${SED} 10q \ 3716ef6fb4a5Smrg | $EGREP "$file_magic_regex" > /dev/null; then 3717ef6fb4a5Smrg newdeplibs="$newdeplibs $a_deplib" 3718ef6fb4a5Smrg a_deplib="" 3719ef6fb4a5Smrg break 2 3720ef6fb4a5Smrg fi 3721ef6fb4a5Smrg done 3722ef6fb4a5Smrg done 3723ef6fb4a5Smrg fi 3724ef6fb4a5Smrg if test -n "$a_deplib" ; then 3725ef6fb4a5Smrg droppeddeps=yes 3726ef6fb4a5Smrg $echo 3727ef6fb4a5Smrg $echo "*** Warning: linker path does not have real file for library $a_deplib." 3728ef6fb4a5Smrg $echo "*** I have the capability to make that library automatically link in when" 3729ef6fb4a5Smrg $echo "*** you link to this library. But I can only do this if you have a" 3730ef6fb4a5Smrg $echo "*** shared version of the library, which you do not appear to have" 3731ef6fb4a5Smrg $echo "*** because I did check the linker path looking for a file starting" 3732ef6fb4a5Smrg if test -z "$potlib" ; then 3733ef6fb4a5Smrg $echo "*** with $libname but no candidates were found. (...for file magic test)" 3734ef6fb4a5Smrg else 3735ef6fb4a5Smrg $echo "*** with $libname and none of the candidates passed a file format test" 3736ef6fb4a5Smrg $echo "*** using a file magic. Last file checked: $potlib" 3737ef6fb4a5Smrg fi 3738ef6fb4a5Smrg fi 3739ef6fb4a5Smrg else 3740ef6fb4a5Smrg # Add a -L argument. 3741ef6fb4a5Smrg newdeplibs="$newdeplibs $a_deplib" 3742ef6fb4a5Smrg fi 3743ef6fb4a5Smrg done # Gone through all deplibs. 3744ef6fb4a5Smrg ;; 3745ef6fb4a5Smrg match_pattern*) 3746ef6fb4a5Smrg set dummy $deplibs_check_method 3747ef6fb4a5Smrg match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` 3748ef6fb4a5Smrg for a_deplib in $deplibs; do 3749ef6fb4a5Smrg name=`expr $a_deplib : '-l\(.*\)'` 3750ef6fb4a5Smrg # If $name is empty we are operating on a -L argument. 3751ef6fb4a5Smrg if test -n "$name" && test "$name" != "0"; then 3752ef6fb4a5Smrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 3753ef6fb4a5Smrg case " $predeps $postdeps " in 3754ef6fb4a5Smrg *" $a_deplib "*) 3755ef6fb4a5Smrg newdeplibs="$newdeplibs $a_deplib" 3756ef6fb4a5Smrg a_deplib="" 3757ef6fb4a5Smrg ;; 3758ef6fb4a5Smrg esac 3759ef6fb4a5Smrg fi 3760ef6fb4a5Smrg if test -n "$a_deplib" ; then 3761ef6fb4a5Smrg libname=`eval \\$echo \"$libname_spec\"` 3762ef6fb4a5Smrg for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 3763ef6fb4a5Smrg potential_libs=`ls $i/$libname[.-]* 2>/dev/null` 3764ef6fb4a5Smrg for potent_lib in $potential_libs; do 3765ef6fb4a5Smrg potlib="$potent_lib" # see symlink-check above in file_magic test 3766ef6fb4a5Smrg if eval $echo \"$potent_lib\" 2>/dev/null \ 3767ef6fb4a5Smrg | ${SED} 10q \ 3768ef6fb4a5Smrg | $EGREP "$match_pattern_regex" > /dev/null; then 3769ef6fb4a5Smrg newdeplibs="$newdeplibs $a_deplib" 3770ef6fb4a5Smrg a_deplib="" 3771ef6fb4a5Smrg break 2 3772ef6fb4a5Smrg fi 3773ef6fb4a5Smrg done 3774ef6fb4a5Smrg done 3775ef6fb4a5Smrg fi 3776ef6fb4a5Smrg if test -n "$a_deplib" ; then 3777ef6fb4a5Smrg droppeddeps=yes 3778ef6fb4a5Smrg $echo 3779ef6fb4a5Smrg $echo "*** Warning: linker path does not have real file for library $a_deplib." 3780ef6fb4a5Smrg $echo "*** I have the capability to make that library automatically link in when" 3781ef6fb4a5Smrg $echo "*** you link to this library. But I can only do this if you have a" 3782ef6fb4a5Smrg $echo "*** shared version of the library, which you do not appear to have" 3783ef6fb4a5Smrg $echo "*** because I did check the linker path looking for a file starting" 3784ef6fb4a5Smrg if test -z "$potlib" ; then 3785ef6fb4a5Smrg $echo "*** with $libname but no candidates were found. (...for regex pattern test)" 3786ef6fb4a5Smrg else 3787ef6fb4a5Smrg $echo "*** with $libname and none of the candidates passed a file format test" 3788ef6fb4a5Smrg $echo "*** using a regex pattern. Last file checked: $potlib" 3789ef6fb4a5Smrg fi 3790ef6fb4a5Smrg fi 3791ef6fb4a5Smrg else 3792ef6fb4a5Smrg # Add a -L argument. 3793ef6fb4a5Smrg newdeplibs="$newdeplibs $a_deplib" 3794ef6fb4a5Smrg fi 3795ef6fb4a5Smrg done # Gone through all deplibs. 3796ef6fb4a5Smrg ;; 3797ef6fb4a5Smrg none | unknown | *) 3798ef6fb4a5Smrg newdeplibs="" 3799ef6fb4a5Smrg tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ 3800ef6fb4a5Smrg -e 's/ -[LR][^ ]*//g'` 3801ef6fb4a5Smrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 3802ef6fb4a5Smrg for i in $predeps $postdeps ; do 3803ef6fb4a5Smrg # can't use Xsed below, because $i might contain '/' 3804ef6fb4a5Smrg tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"` 3805ef6fb4a5Smrg done 3806ef6fb4a5Smrg fi 3807ef6fb4a5Smrg if $echo "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' \ 3808ef6fb4a5Smrg | grep . >/dev/null; then 3809ef6fb4a5Smrg $echo 3810ef6fb4a5Smrg if test "X$deplibs_check_method" = "Xnone"; then 3811ef6fb4a5Smrg $echo "*** Warning: inter-library dependencies are not supported in this platform." 3812ef6fb4a5Smrg else 3813ef6fb4a5Smrg $echo "*** Warning: inter-library dependencies are not known to be supported." 3814ef6fb4a5Smrg fi 3815ef6fb4a5Smrg $echo "*** All declared inter-library dependencies are being dropped." 3816ef6fb4a5Smrg droppeddeps=yes 3817ef6fb4a5Smrg fi 3818ef6fb4a5Smrg ;; 3819ef6fb4a5Smrg esac 3820ef6fb4a5Smrg versuffix=$versuffix_save 3821ef6fb4a5Smrg major=$major_save 3822ef6fb4a5Smrg release=$release_save 3823ef6fb4a5Smrg libname=$libname_save 3824ef6fb4a5Smrg name=$name_save 3825301ea0f4Smrg 3826ef6fb4a5Smrg case $host in 3827ef6fb4a5Smrg *-*-rhapsody* | *-*-darwin1.[012]) 3828ef6fb4a5Smrg # On Rhapsody replace the C library is the System framework 3829ef6fb4a5Smrg newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'` 3830ef6fb4a5Smrg ;; 3831ef6fb4a5Smrg esac 3832301ea0f4Smrg 3833ef6fb4a5Smrg if test "$droppeddeps" = yes; then 3834ef6fb4a5Smrg if test "$module" = yes; then 3835ef6fb4a5Smrg $echo 3836ef6fb4a5Smrg $echo "*** Warning: libtool could not satisfy all declared inter-library" 3837ef6fb4a5Smrg $echo "*** dependencies of module $libname. Therefore, libtool will create" 3838ef6fb4a5Smrg $echo "*** a static module, that should work as long as the dlopening" 3839ef6fb4a5Smrg $echo "*** application is linked with the -dlopen flag." 3840ef6fb4a5Smrg if test -z "$global_symbol_pipe"; then 3841ef6fb4a5Smrg $echo 3842ef6fb4a5Smrg $echo "*** However, this would only work if libtool was able to extract symbol" 3843ef6fb4a5Smrg $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" 3844ef6fb4a5Smrg $echo "*** not find such a program. So, this module is probably useless." 3845ef6fb4a5Smrg $echo "*** \`nm' from GNU binutils and a full rebuild may help." 3846ef6fb4a5Smrg fi 3847ef6fb4a5Smrg if test "$build_old_libs" = no; then 3848ef6fb4a5Smrg oldlibs="$output_objdir/$libname.$libext" 3849ef6fb4a5Smrg build_libtool_libs=module 3850ef6fb4a5Smrg build_old_libs=yes 3851ef6fb4a5Smrg else 3852ef6fb4a5Smrg build_libtool_libs=no 3853ef6fb4a5Smrg fi 3854ef6fb4a5Smrg else 3855ef6fb4a5Smrg $echo "*** The inter-library dependencies that have been dropped here will be" 3856ef6fb4a5Smrg $echo "*** automatically added whenever a program is linked with this library" 3857ef6fb4a5Smrg $echo "*** or is declared to -dlopen it." 3858301ea0f4Smrg 3859ef6fb4a5Smrg if test "$allow_undefined" = no; then 3860ef6fb4a5Smrg $echo 3861ef6fb4a5Smrg $echo "*** Since this library must not contain undefined symbols," 3862ef6fb4a5Smrg $echo "*** because either the platform does not support them or" 3863ef6fb4a5Smrg $echo "*** it was explicitly requested with -no-undefined," 3864ef6fb4a5Smrg $echo "*** libtool will only create a static version of it." 3865ef6fb4a5Smrg if test "$build_old_libs" = no; then 3866ef6fb4a5Smrg oldlibs="$output_objdir/$libname.$libext" 3867ef6fb4a5Smrg build_libtool_libs=module 3868ef6fb4a5Smrg build_old_libs=yes 3869ef6fb4a5Smrg else 3870ef6fb4a5Smrg build_libtool_libs=no 3871ef6fb4a5Smrg fi 3872ef6fb4a5Smrg fi 3873ef6fb4a5Smrg fi 3874ef6fb4a5Smrg fi 3875ef6fb4a5Smrg # Done checking deplibs! 3876ef6fb4a5Smrg deplibs=$newdeplibs 3877ef6fb4a5Smrg fi 3878301ea0f4Smrg 3879301ea0f4Smrg 3880ef6fb4a5Smrg # move library search paths that coincide with paths to not yet 3881ef6fb4a5Smrg # installed libraries to the beginning of the library search list 3882ef6fb4a5Smrg new_libs= 3883ef6fb4a5Smrg for path in $notinst_path; do 3884ef6fb4a5Smrg case " $new_libs " in 3885ef6fb4a5Smrg *" -L$path/$objdir "*) ;; 3886ef6fb4a5Smrg *) 3887ef6fb4a5Smrg case " $deplibs " in 3888ef6fb4a5Smrg *" -L$path/$objdir "*) 3889ef6fb4a5Smrg new_libs="$new_libs -L$path/$objdir" ;; 3890ef6fb4a5Smrg esac 3891ef6fb4a5Smrg ;; 3892ef6fb4a5Smrg esac 3893ef6fb4a5Smrg done 3894ef6fb4a5Smrg for deplib in $deplibs; do 3895ef6fb4a5Smrg case $deplib in 3896ef6fb4a5Smrg -L*) 3897ef6fb4a5Smrg case " $new_libs " in 3898ef6fb4a5Smrg *" $deplib "*) ;; 3899ef6fb4a5Smrg *) new_libs="$new_libs $deplib" ;; 3900ef6fb4a5Smrg esac 3901ef6fb4a5Smrg ;; 3902ef6fb4a5Smrg *) new_libs="$new_libs $deplib" ;; 3903ef6fb4a5Smrg esac 3904ef6fb4a5Smrg done 3905ef6fb4a5Smrg deplibs="$new_libs" 3906301ea0f4Smrg 3907301ea0f4Smrg 3908ef6fb4a5Smrg # All the library-specific variables (install_libdir is set above). 3909ef6fb4a5Smrg library_names= 3910ef6fb4a5Smrg old_library= 3911ef6fb4a5Smrg dlname= 3912301ea0f4Smrg 3913ef6fb4a5Smrg # Test again, we may have decided not to build it any more 3914ef6fb4a5Smrg if test "$build_libtool_libs" = yes; then 3915ef6fb4a5Smrg if test "$hardcode_into_libs" = yes; then 3916ef6fb4a5Smrg # Hardcode the library paths 3917ef6fb4a5Smrg hardcode_libdirs= 3918ef6fb4a5Smrg dep_rpath= 3919ef6fb4a5Smrg rpath="$finalize_rpath" 3920ef6fb4a5Smrg test "$mode" != relink && rpath="$compile_rpath$rpath" 3921ef6fb4a5Smrg for libdir in $rpath; do 3922ef6fb4a5Smrg if test -n "$hardcode_libdir_flag_spec"; then 3923ef6fb4a5Smrg if test -n "$hardcode_libdir_separator"; then 3924ef6fb4a5Smrg if test -z "$hardcode_libdirs"; then 3925ef6fb4a5Smrg hardcode_libdirs="$libdir" 3926ef6fb4a5Smrg else 3927ef6fb4a5Smrg # Just accumulate the unique libdirs. 3928ef6fb4a5Smrg case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 3929ef6fb4a5Smrg *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 3930ef6fb4a5Smrg ;; 3931ef6fb4a5Smrg *) 3932ef6fb4a5Smrg hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 3933ef6fb4a5Smrg ;; 3934ef6fb4a5Smrg esac 3935ef6fb4a5Smrg fi 3936ef6fb4a5Smrg else 3937ef6fb4a5Smrg eval flag=\"$hardcode_libdir_flag_spec\" 3938ef6fb4a5Smrg dep_rpath="$dep_rpath $flag" 3939ef6fb4a5Smrg fi 3940ef6fb4a5Smrg elif test -n "$runpath_var"; then 3941ef6fb4a5Smrg case "$perm_rpath " in 3942ef6fb4a5Smrg *" $libdir "*) ;; 3943ef6fb4a5Smrg *) perm_rpath="$perm_rpath $libdir" ;; 3944ef6fb4a5Smrg esac 3945ef6fb4a5Smrg fi 3946ef6fb4a5Smrg done 3947ef6fb4a5Smrg # Substitute the hardcoded libdirs into the rpath. 3948ef6fb4a5Smrg if test -n "$hardcode_libdir_separator" && 3949ef6fb4a5Smrg test -n "$hardcode_libdirs"; then 3950ef6fb4a5Smrg libdir="$hardcode_libdirs" 3951ef6fb4a5Smrg if test -n "$hardcode_libdir_flag_spec_ld"; then 3952ef6fb4a5Smrg case $archive_cmds in 3953ef6fb4a5Smrg *\$LD*) eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" ;; 3954ef6fb4a5Smrg *) eval dep_rpath=\"$hardcode_libdir_flag_spec\" ;; 3955ef6fb4a5Smrg esac 3956ef6fb4a5Smrg else 3957ef6fb4a5Smrg eval dep_rpath=\"$hardcode_libdir_flag_spec\" 3958ef6fb4a5Smrg fi 3959ef6fb4a5Smrg fi 3960ef6fb4a5Smrg if test -n "$runpath_var" && test -n "$perm_rpath"; then 3961ef6fb4a5Smrg # We should set the runpath_var. 3962ef6fb4a5Smrg rpath= 3963ef6fb4a5Smrg for dir in $perm_rpath; do 3964ef6fb4a5Smrg rpath="$rpath$dir:" 3965ef6fb4a5Smrg done 3966ef6fb4a5Smrg eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" 3967ef6fb4a5Smrg fi 3968ef6fb4a5Smrg test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" 3969ef6fb4a5Smrg fi 3970301ea0f4Smrg 3971ef6fb4a5Smrg shlibpath="$finalize_shlibpath" 3972ef6fb4a5Smrg test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" 3973ef6fb4a5Smrg if test -n "$shlibpath"; then 3974ef6fb4a5Smrg eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" 3975ef6fb4a5Smrg fi 3976301ea0f4Smrg 3977ef6fb4a5Smrg # Get the real and link names of the library. 3978ef6fb4a5Smrg eval shared_ext=\"$shrext_cmds\" 3979ef6fb4a5Smrg eval library_names=\"$library_names_spec\" 3980ef6fb4a5Smrg set dummy $library_names 3981ef6fb4a5Smrg realname="$2" 3982ef6fb4a5Smrg shift; shift 3983301ea0f4Smrg 3984ef6fb4a5Smrg if test -n "$soname_spec"; then 3985ef6fb4a5Smrg eval soname=\"$soname_spec\" 3986ef6fb4a5Smrg else 3987ef6fb4a5Smrg soname="$realname" 3988ef6fb4a5Smrg fi 3989ef6fb4a5Smrg if test -z "$dlname"; then 3990ef6fb4a5Smrg dlname=$soname 3991ef6fb4a5Smrg fi 3992301ea0f4Smrg 3993ef6fb4a5Smrg lib="$output_objdir/$realname" 3994ef6fb4a5Smrg linknames= 3995ef6fb4a5Smrg for link 3996ef6fb4a5Smrg do 3997ef6fb4a5Smrg linknames="$linknames $link" 3998ef6fb4a5Smrg done 3999301ea0f4Smrg 4000ef6fb4a5Smrg # Use standard objects if they are pic 4001ef6fb4a5Smrg test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 4002301ea0f4Smrg 4003ef6fb4a5Smrg # Prepare the list of exported symbols 4004ef6fb4a5Smrg if test -z "$export_symbols"; then 4005ef6fb4a5Smrg if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then 4006ef6fb4a5Smrg $show "generating symbol list for \`$libname.la'" 4007ef6fb4a5Smrg export_symbols="$output_objdir/$libname.exp" 4008ef6fb4a5Smrg $run $rm $export_symbols 4009ef6fb4a5Smrg cmds=$export_symbols_cmds 4010ef6fb4a5Smrg save_ifs="$IFS"; IFS='~' 4011ef6fb4a5Smrg for cmd in $cmds; do 4012ef6fb4a5Smrg IFS="$save_ifs" 4013ef6fb4a5Smrg eval cmd=\"$cmd\" 4014ef6fb4a5Smrg if len=`expr "X$cmd" : ".*"` && 4015ef6fb4a5Smrg test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then 4016ef6fb4a5Smrg $show "$cmd" 4017ef6fb4a5Smrg $run eval "$cmd" || exit $? 4018ef6fb4a5Smrg skipped_export=false 4019ef6fb4a5Smrg else 4020ef6fb4a5Smrg # The command line is too long to execute in one step. 4021ef6fb4a5Smrg $show "using reloadable object file for export list..." 4022ef6fb4a5Smrg skipped_export=: 4023ef6fb4a5Smrg # Break out early, otherwise skipped_export may be 4024ef6fb4a5Smrg # set to false by a later but shorter cmd. 4025ef6fb4a5Smrg break 4026ef6fb4a5Smrg fi 4027ef6fb4a5Smrg done 4028ef6fb4a5Smrg IFS="$save_ifs" 4029ef6fb4a5Smrg if test -n "$export_symbols_regex"; then 4030ef6fb4a5Smrg $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\"" 4031ef6fb4a5Smrg $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' 4032ef6fb4a5Smrg $show "$mv \"${export_symbols}T\" \"$export_symbols\"" 4033ef6fb4a5Smrg $run eval '$mv "${export_symbols}T" "$export_symbols"' 4034ef6fb4a5Smrg fi 4035ef6fb4a5Smrg fi 4036ef6fb4a5Smrg fi 4037301ea0f4Smrg 4038ef6fb4a5Smrg if test -n "$export_symbols" && test -n "$include_expsyms"; then 4039ef6fb4a5Smrg $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"' 4040ef6fb4a5Smrg fi 4041301ea0f4Smrg 4042ef6fb4a5Smrg tmp_deplibs= 4043ef6fb4a5Smrg for test_deplib in $deplibs; do 4044ef6fb4a5Smrg case " $convenience " in 4045ef6fb4a5Smrg *" $test_deplib "*) ;; 4046ef6fb4a5Smrg *) 4047ef6fb4a5Smrg tmp_deplibs="$tmp_deplibs $test_deplib" 4048ef6fb4a5Smrg ;; 4049ef6fb4a5Smrg esac 4050ef6fb4a5Smrg done 4051ef6fb4a5Smrg deplibs="$tmp_deplibs" 4052301ea0f4Smrg 4053ef6fb4a5Smrg if test -n "$convenience"; then 4054ef6fb4a5Smrg if test -n "$whole_archive_flag_spec"; then 4055ef6fb4a5Smrg save_libobjs=$libobjs 4056ef6fb4a5Smrg eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 4057ef6fb4a5Smrg else 4058ef6fb4a5Smrg gentop="$output_objdir/${outputname}x" 4059ef6fb4a5Smrg generated="$generated $gentop" 4060301ea0f4Smrg 4061ef6fb4a5Smrg func_extract_archives $gentop $convenience 4062ef6fb4a5Smrg libobjs="$libobjs $func_extract_archives_result" 4063ef6fb4a5Smrg fi 4064ef6fb4a5Smrg fi 4065ef6fb4a5Smrg 4066ef6fb4a5Smrg if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then 4067ef6fb4a5Smrg eval flag=\"$thread_safe_flag_spec\" 4068ef6fb4a5Smrg linker_flags="$linker_flags $flag" 4069ef6fb4a5Smrg fi 4070301ea0f4Smrg 4071ef6fb4a5Smrg # Make a backup of the uninstalled library when relinking 4072ef6fb4a5Smrg if test "$mode" = relink; then 4073ef6fb4a5Smrg $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $? 4074ef6fb4a5Smrg fi 4075301ea0f4Smrg 4076ef6fb4a5Smrg # Do each of the archive commands. 4077ef6fb4a5Smrg if test "$module" = yes && test -n "$module_cmds" ; then 4078ef6fb4a5Smrg if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 4079ef6fb4a5Smrg eval test_cmds=\"$module_expsym_cmds\" 4080ef6fb4a5Smrg cmds=$module_expsym_cmds 4081ef6fb4a5Smrg else 4082ef6fb4a5Smrg eval test_cmds=\"$module_cmds\" 4083ef6fb4a5Smrg cmds=$module_cmds 4084ef6fb4a5Smrg fi 4085ef6fb4a5Smrg else 4086ef6fb4a5Smrg if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 4087ef6fb4a5Smrg eval test_cmds=\"$archive_expsym_cmds\" 4088ef6fb4a5Smrg cmds=$archive_expsym_cmds 4089ef6fb4a5Smrg else 4090ef6fb4a5Smrg eval test_cmds=\"$archive_cmds\" 4091ef6fb4a5Smrg cmds=$archive_cmds 4092ef6fb4a5Smrg fi 4093ef6fb4a5Smrg fi 4094301ea0f4Smrg 4095ef6fb4a5Smrg if test "X$skipped_export" != "X:" && 4096ef6fb4a5Smrg len=`expr "X$test_cmds" : ".*" 2>/dev/null` && 4097ef6fb4a5Smrg test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then 4098ef6fb4a5Smrg : 4099ef6fb4a5Smrg else 4100ef6fb4a5Smrg # The command line is too long to link in one step, link piecewise. 4101ef6fb4a5Smrg $echo "creating reloadable object files..." 4102301ea0f4Smrg 4103ef6fb4a5Smrg # Save the value of $output and $libobjs because we want to 4104ef6fb4a5Smrg # use them later. If we have whole_archive_flag_spec, we 4105ef6fb4a5Smrg # want to use save_libobjs as it was before 4106ef6fb4a5Smrg # whole_archive_flag_spec was expanded, because we can't 4107ef6fb4a5Smrg # assume the linker understands whole_archive_flag_spec. 4108ef6fb4a5Smrg # This may have to be revisited, in case too many 4109ef6fb4a5Smrg # convenience libraries get linked in and end up exceeding 4110ef6fb4a5Smrg # the spec. 4111ef6fb4a5Smrg if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then 4112ef6fb4a5Smrg save_libobjs=$libobjs 4113ef6fb4a5Smrg fi 4114ef6fb4a5Smrg save_output=$output 4115ef6fb4a5Smrg output_la=`$echo "X$output" | $Xsed -e "$basename"` 4116301ea0f4Smrg 4117ef6fb4a5Smrg # Clear the reloadable object creation command queue and 4118ef6fb4a5Smrg # initialize k to one. 4119ef6fb4a5Smrg test_cmds= 4120ef6fb4a5Smrg concat_cmds= 4121ef6fb4a5Smrg objlist= 4122ef6fb4a5Smrg delfiles= 4123ef6fb4a5Smrg last_robj= 4124ef6fb4a5Smrg k=1 4125ef6fb4a5Smrg output=$output_objdir/$output_la-${k}.$objext 4126ef6fb4a5Smrg # Loop over the list of objects to be linked. 4127ef6fb4a5Smrg for obj in $save_libobjs 4128ef6fb4a5Smrg do 4129ef6fb4a5Smrg eval test_cmds=\"$reload_cmds $objlist $last_robj\" 4130ef6fb4a5Smrg if test "X$objlist" = X || 4131ef6fb4a5Smrg { len=`expr "X$test_cmds" : ".*" 2>/dev/null` && 4132ef6fb4a5Smrg test "$len" -le "$max_cmd_len"; }; then 4133ef6fb4a5Smrg objlist="$objlist $obj" 4134ef6fb4a5Smrg else 4135ef6fb4a5Smrg # The command $test_cmds is almost too long, add a 4136ef6fb4a5Smrg # command to the queue. 4137ef6fb4a5Smrg if test "$k" -eq 1 ; then 4138ef6fb4a5Smrg # The first file doesn't have a previous command to add. 4139ef6fb4a5Smrg eval concat_cmds=\"$reload_cmds $objlist $last_robj\" 4140ef6fb4a5Smrg else 4141ef6fb4a5Smrg # All subsequent reloadable object files will link in 4142ef6fb4a5Smrg # the last one created. 4143ef6fb4a5Smrg eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\" 4144ef6fb4a5Smrg fi 4145ef6fb4a5Smrg last_robj=$output_objdir/$output_la-${k}.$objext 4146ef6fb4a5Smrg k=`expr $k + 1` 4147ef6fb4a5Smrg output=$output_objdir/$output_la-${k}.$objext 4148ef6fb4a5Smrg objlist=$obj 4149ef6fb4a5Smrg len=1 4150ef6fb4a5Smrg fi 4151ef6fb4a5Smrg done 4152ef6fb4a5Smrg # Handle the remaining objects by creating one last 4153ef6fb4a5Smrg # reloadable object file. All subsequent reloadable object 4154ef6fb4a5Smrg # files will link in the last one created. 4155ef6fb4a5Smrg test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 4156ef6fb4a5Smrg eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" 4157ef6fb4a5Smrg 4158ef6fb4a5Smrg if ${skipped_export-false}; then 4159ef6fb4a5Smrg $show "generating symbol list for \`$libname.la'" 4160ef6fb4a5Smrg export_symbols="$output_objdir/$libname.exp" 4161ef6fb4a5Smrg $run $rm $export_symbols 4162ef6fb4a5Smrg libobjs=$output 4163ef6fb4a5Smrg # Append the command to create the export file. 4164ef6fb4a5Smrg eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\" 4165ef6fb4a5Smrg fi 4166ef6fb4a5Smrg 4167ef6fb4a5Smrg # Set up a command to remove the reloadable object files 4168ef6fb4a5Smrg # after they are used. 4169ef6fb4a5Smrg i=0 4170ef6fb4a5Smrg while test "$i" -lt "$k" 4171ef6fb4a5Smrg do 4172ef6fb4a5Smrg i=`expr $i + 1` 4173ef6fb4a5Smrg delfiles="$delfiles $output_objdir/$output_la-${i}.$objext" 4174ef6fb4a5Smrg done 4175301ea0f4Smrg 4176ef6fb4a5Smrg $echo "creating a temporary reloadable object file: $output" 4177301ea0f4Smrg 4178ef6fb4a5Smrg # Loop through the commands generated above and execute them. 4179ef6fb4a5Smrg save_ifs="$IFS"; IFS='~' 4180ef6fb4a5Smrg for cmd in $concat_cmds; do 4181ef6fb4a5Smrg IFS="$save_ifs" 4182ef6fb4a5Smrg $show "$cmd" 4183ef6fb4a5Smrg $run eval "$cmd" || exit $? 4184ef6fb4a5Smrg done 4185ef6fb4a5Smrg IFS="$save_ifs" 4186301ea0f4Smrg 4187ef6fb4a5Smrg libobjs=$output 4188ef6fb4a5Smrg # Restore the value of output. 4189ef6fb4a5Smrg output=$save_output 4190301ea0f4Smrg 4191ef6fb4a5Smrg if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then 4192ef6fb4a5Smrg eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 4193ef6fb4a5Smrg fi 4194ef6fb4a5Smrg # Expand the library linking commands again to reset the 4195ef6fb4a5Smrg # value of $libobjs for piecewise linking. 4196301ea0f4Smrg 4197ef6fb4a5Smrg # Do each of the archive commands. 4198ef6fb4a5Smrg if test "$module" = yes && test -n "$module_cmds" ; then 4199ef6fb4a5Smrg if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 4200ef6fb4a5Smrg cmds=$module_expsym_cmds 4201ef6fb4a5Smrg else 4202ef6fb4a5Smrg cmds=$module_cmds 4203ef6fb4a5Smrg fi 4204ef6fb4a5Smrg else 4205ef6fb4a5Smrg if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 4206ef6fb4a5Smrg cmds=$archive_expsym_cmds 4207ef6fb4a5Smrg else 4208ef6fb4a5Smrg cmds=$archive_cmds 4209ef6fb4a5Smrg fi 4210ef6fb4a5Smrg fi 4211301ea0f4Smrg 4212ef6fb4a5Smrg # Append the command to remove the reloadable object files 4213ef6fb4a5Smrg # to the just-reset $cmds. 4214ef6fb4a5Smrg eval cmds=\"\$cmds~\$rm $delfiles\" 4215ef6fb4a5Smrg fi 4216ef6fb4a5Smrg save_ifs="$IFS"; IFS='~' 4217ef6fb4a5Smrg for cmd in $cmds; do 4218ef6fb4a5Smrg IFS="$save_ifs" 4219ef6fb4a5Smrg eval cmd=\"$cmd\" 4220ef6fb4a5Smrg $show "$cmd" 4221ef6fb4a5Smrg $run eval "$cmd" || { 4222ef6fb4a5Smrg lt_exit=$? 4223301ea0f4Smrg 4224ef6fb4a5Smrg # Restore the uninstalled library and exit 4225ef6fb4a5Smrg if test "$mode" = relink; then 4226ef6fb4a5Smrg $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)' 4227ef6fb4a5Smrg fi 4228301ea0f4Smrg 4229ef6fb4a5Smrg exit $lt_exit 4230ef6fb4a5Smrg } 4231ef6fb4a5Smrg done 4232ef6fb4a5Smrg IFS="$save_ifs" 4233ef6fb4a5Smrg 4234ef6fb4a5Smrg # Restore the uninstalled library and exit 4235ef6fb4a5Smrg if test "$mode" = relink; then 4236ef6fb4a5Smrg $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $? 4237ef6fb4a5Smrg 4238ef6fb4a5Smrg if test -n "$convenience"; then 4239ef6fb4a5Smrg if test -z "$whole_archive_flag_spec"; then 4240ef6fb4a5Smrg $show "${rm}r $gentop" 4241ef6fb4a5Smrg $run ${rm}r "$gentop" 4242ef6fb4a5Smrg fi 4243ef6fb4a5Smrg fi 4244ef6fb4a5Smrg 4245ef6fb4a5Smrg exit $EXIT_SUCCESS 4246ef6fb4a5Smrg fi 4247ef6fb4a5Smrg 4248ef6fb4a5Smrg # Create links to the real library. 4249ef6fb4a5Smrg for linkname in $linknames; do 4250ef6fb4a5Smrg if test "$realname" != "$linkname"; then 4251ef6fb4a5Smrg $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)" 4252ef6fb4a5Smrg $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $? 4253ef6fb4a5Smrg fi 4254ef6fb4a5Smrg done 4255ef6fb4a5Smrg 4256ef6fb4a5Smrg # If -module or -export-dynamic was specified, set the dlname. 4257ef6fb4a5Smrg if test "$module" = yes || test "$export_dynamic" = yes; then 4258ef6fb4a5Smrg # On all known operating systems, these are identical. 4259ef6fb4a5Smrg dlname="$soname" 4260ef6fb4a5Smrg fi 4261ef6fb4a5Smrg fi 42620cc67336Smrg ;; 4263301ea0f4Smrg 4264ef6fb4a5Smrg obj) 4265ef6fb4a5Smrg case " $deplibs" in 4266ef6fb4a5Smrg *\ -l* | *\ -L*) 4267ef6fb4a5Smrg $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 ;; 4268ef6fb4a5Smrg esac 4269301ea0f4Smrg 4270ef6fb4a5Smrg if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 4271ef6fb4a5Smrg $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2 4272ef6fb4a5Smrg fi 4273301ea0f4Smrg 4274ef6fb4a5Smrg if test -n "$rpath"; then 4275ef6fb4a5Smrg $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2 4276ef6fb4a5Smrg fi 4277ef6fb4a5Smrg 4278ef6fb4a5Smrg if test -n "$xrpath"; then 4279ef6fb4a5Smrg $echo "$modename: warning: \`-R' is ignored for objects" 1>&2 4280ef6fb4a5Smrg fi 4281ef6fb4a5Smrg 4282ef6fb4a5Smrg if test -n "$vinfo"; then 4283ef6fb4a5Smrg $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2 4284ef6fb4a5Smrg fi 4285ef6fb4a5Smrg 4286ef6fb4a5Smrg if test -n "$release"; then 4287ef6fb4a5Smrg $echo "$modename: warning: \`-release' is ignored for objects" 1>&2 4288ef6fb4a5Smrg fi 4289ef6fb4a5Smrg 4290ef6fb4a5Smrg case $output in 4291ef6fb4a5Smrg *.lo) 4292ef6fb4a5Smrg if test -n "$objs$old_deplibs"; then 4293ef6fb4a5Smrg $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 4294ef6fb4a5Smrg exit $EXIT_FAILURE 4295ef6fb4a5Smrg fi 4296ef6fb4a5Smrg libobj="$output" 4297ef6fb4a5Smrg obj=`$echo "X$output" | $Xsed -e "$lo2o"` 42980cc67336Smrg ;; 4299ef6fb4a5Smrg *) 4300ef6fb4a5Smrg libobj= 4301ef6fb4a5Smrg obj="$output" 43020cc67336Smrg ;; 43030cc67336Smrg esac 4304301ea0f4Smrg 4305ef6fb4a5Smrg # Delete the old objects. 4306ef6fb4a5Smrg $run $rm $obj $libobj 4307301ea0f4Smrg 4308ef6fb4a5Smrg # Objects from convenience libraries. This assumes 4309ef6fb4a5Smrg # single-version convenience libraries. Whenever we create 4310ef6fb4a5Smrg # different ones for PIC/non-PIC, this we'll have to duplicate 4311ef6fb4a5Smrg # the extraction. 4312ef6fb4a5Smrg reload_conv_objs= 4313ef6fb4a5Smrg gentop= 4314ef6fb4a5Smrg # reload_cmds runs $LD directly, so let us get rid of 4315ef6fb4a5Smrg # -Wl from whole_archive_flag_spec and hope we can get by with 4316ef6fb4a5Smrg # turning comma into space.. 4317ef6fb4a5Smrg wl= 4318301ea0f4Smrg 4319ef6fb4a5Smrg if test -n "$convenience"; then 4320ef6fb4a5Smrg if test -n "$whole_archive_flag_spec"; then 4321ef6fb4a5Smrg eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" 4322ef6fb4a5Smrg reload_conv_objs=$reload_objs\ `$echo "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'` 4323ef6fb4a5Smrg else 4324ef6fb4a5Smrg gentop="$output_objdir/${obj}x" 4325ef6fb4a5Smrg generated="$generated $gentop" 4326301ea0f4Smrg 4327ef6fb4a5Smrg func_extract_archives $gentop $convenience 4328ef6fb4a5Smrg reload_conv_objs="$reload_objs $func_extract_archives_result" 4329ef6fb4a5Smrg fi 4330ef6fb4a5Smrg fi 4331301ea0f4Smrg 4332ef6fb4a5Smrg # Create the old-style object. 4333ef6fb4a5Smrg 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 4334301ea0f4Smrg 4335ef6fb4a5Smrg output="$obj" 4336ef6fb4a5Smrg cmds=$reload_cmds 4337ef6fb4a5Smrg save_ifs="$IFS"; IFS='~' 4338ef6fb4a5Smrg for cmd in $cmds; do 4339ef6fb4a5Smrg IFS="$save_ifs" 4340ef6fb4a5Smrg eval cmd=\"$cmd\" 4341ef6fb4a5Smrg $show "$cmd" 4342ef6fb4a5Smrg $run eval "$cmd" || exit $? 4343ef6fb4a5Smrg done 4344ef6fb4a5Smrg IFS="$save_ifs" 4345301ea0f4Smrg 4346ef6fb4a5Smrg # Exit if we aren't doing a library object file. 4347ef6fb4a5Smrg if test -z "$libobj"; then 4348ef6fb4a5Smrg if test -n "$gentop"; then 4349ef6fb4a5Smrg $show "${rm}r $gentop" 4350ef6fb4a5Smrg $run ${rm}r $gentop 4351ef6fb4a5Smrg fi 4352301ea0f4Smrg 4353ef6fb4a5Smrg exit $EXIT_SUCCESS 4354ef6fb4a5Smrg fi 4355301ea0f4Smrg 4356ef6fb4a5Smrg if test "$build_libtool_libs" != yes; then 4357ef6fb4a5Smrg if test -n "$gentop"; then 4358ef6fb4a5Smrg $show "${rm}r $gentop" 4359ef6fb4a5Smrg $run ${rm}r $gentop 4360ef6fb4a5Smrg fi 4361301ea0f4Smrg 4362ef6fb4a5Smrg # Create an invalid libtool object if no PIC, so that we don't 4363ef6fb4a5Smrg # accidentally link it into a program. 4364ef6fb4a5Smrg # $show "echo timestamp > $libobj" 4365ef6fb4a5Smrg # $run eval "echo timestamp > $libobj" || exit $? 4366ef6fb4a5Smrg exit $EXIT_SUCCESS 4367ef6fb4a5Smrg fi 4368301ea0f4Smrg 4369ef6fb4a5Smrg if test -n "$pic_flag" || test "$pic_mode" != default; then 4370ef6fb4a5Smrg # Only do commands if we really have different PIC objects. 4371ef6fb4a5Smrg reload_objs="$libobjs $reload_conv_objs" 4372ef6fb4a5Smrg output="$libobj" 4373ef6fb4a5Smrg cmds=$reload_cmds 4374ef6fb4a5Smrg save_ifs="$IFS"; IFS='~' 4375ef6fb4a5Smrg for cmd in $cmds; do 4376ef6fb4a5Smrg IFS="$save_ifs" 4377ef6fb4a5Smrg eval cmd=\"$cmd\" 4378ef6fb4a5Smrg $show "$cmd" 4379ef6fb4a5Smrg $run eval "$cmd" || exit $? 4380ef6fb4a5Smrg done 4381ef6fb4a5Smrg IFS="$save_ifs" 4382ef6fb4a5Smrg fi 4383301ea0f4Smrg 4384ef6fb4a5Smrg if test -n "$gentop"; then 4385ef6fb4a5Smrg $show "${rm}r $gentop" 4386ef6fb4a5Smrg $run ${rm}r $gentop 4387ef6fb4a5Smrg fi 4388301ea0f4Smrg 4389ef6fb4a5Smrg exit $EXIT_SUCCESS 4390ef6fb4a5Smrg ;; 4391301ea0f4Smrg 4392ef6fb4a5Smrg prog) 4393ef6fb4a5Smrg case $host in 4394ef6fb4a5Smrg *cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;; 4395ef6fb4a5Smrg esac 4396ef6fb4a5Smrg if test -n "$vinfo"; then 4397ef6fb4a5Smrg $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2 4398ef6fb4a5Smrg fi 4399301ea0f4Smrg 4400ef6fb4a5Smrg if test -n "$release"; then 4401ef6fb4a5Smrg $echo "$modename: warning: \`-release' is ignored for programs" 1>&2 4402ef6fb4a5Smrg fi 4403301ea0f4Smrg 4404ef6fb4a5Smrg if test "$preload" = yes; then 4405ef6fb4a5Smrg if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown && 4406ef6fb4a5Smrg test "$dlopen_self_static" = unknown; then 4407ef6fb4a5Smrg $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support." 44080cc67336Smrg fi 4409ef6fb4a5Smrg fi 4410301ea0f4Smrg 4411ef6fb4a5Smrg case $host in 4412ef6fb4a5Smrg *-*-rhapsody* | *-*-darwin1.[012]) 4413ef6fb4a5Smrg # On Rhapsody replace the C library is the System framework 4414ef6fb4a5Smrg compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'` 4415ef6fb4a5Smrg finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'` 44160cc67336Smrg ;; 4417ef6fb4a5Smrg esac 4418301ea0f4Smrg 4419ef6fb4a5Smrg case $host in 4420ef6fb4a5Smrg *darwin*) 4421ef6fb4a5Smrg # Don't allow lazy linking, it breaks C++ global constructors 4422ef6fb4a5Smrg if test "$tagname" = CXX ; then 4423ef6fb4a5Smrg compile_command="$compile_command ${wl}-bind_at_load" 4424ef6fb4a5Smrg finalize_command="$finalize_command ${wl}-bind_at_load" 4425ef6fb4a5Smrg fi 4426ef6fb4a5Smrg ;; 4427ef6fb4a5Smrg esac 4428301ea0f4Smrg 4429301ea0f4Smrg 4430ef6fb4a5Smrg # move library search paths that coincide with paths to not yet 4431ef6fb4a5Smrg # installed libraries to the beginning of the library search list 4432ef6fb4a5Smrg new_libs= 4433ef6fb4a5Smrg for path in $notinst_path; do 4434ef6fb4a5Smrg case " $new_libs " in 4435ef6fb4a5Smrg *" -L$path/$objdir "*) ;; 4436ef6fb4a5Smrg *) 4437ef6fb4a5Smrg case " $compile_deplibs " in 4438ef6fb4a5Smrg *" -L$path/$objdir "*) 4439ef6fb4a5Smrg new_libs="$new_libs -L$path/$objdir" ;; 4440ef6fb4a5Smrg esac 4441ef6fb4a5Smrg ;; 4442ef6fb4a5Smrg esac 4443ef6fb4a5Smrg done 4444ef6fb4a5Smrg for deplib in $compile_deplibs; do 4445ef6fb4a5Smrg case $deplib in 4446ef6fb4a5Smrg -L*) 4447ef6fb4a5Smrg case " $new_libs " in 4448ef6fb4a5Smrg *" $deplib "*) ;; 4449ef6fb4a5Smrg *) new_libs="$new_libs $deplib" ;; 4450ef6fb4a5Smrg esac 4451ef6fb4a5Smrg ;; 4452ef6fb4a5Smrg *) new_libs="$new_libs $deplib" ;; 4453ef6fb4a5Smrg esac 4454ef6fb4a5Smrg done 4455ef6fb4a5Smrg compile_deplibs="$new_libs" 4456301ea0f4Smrg 4457301ea0f4Smrg 4458ef6fb4a5Smrg compile_command="$compile_command $compile_deplibs" 4459ef6fb4a5Smrg finalize_command="$finalize_command $finalize_deplibs" 4460301ea0f4Smrg 4461ef6fb4a5Smrg if test -n "$rpath$xrpath"; then 4462ef6fb4a5Smrg # If the user specified any rpath flags, then add them. 4463ef6fb4a5Smrg for libdir in $rpath $xrpath; do 4464ef6fb4a5Smrg # This is the magic to use -rpath. 4465ef6fb4a5Smrg case "$finalize_rpath " in 4466ef6fb4a5Smrg *" $libdir "*) ;; 4467ef6fb4a5Smrg *) finalize_rpath="$finalize_rpath $libdir" ;; 4468ef6fb4a5Smrg esac 4469ef6fb4a5Smrg done 4470ef6fb4a5Smrg fi 4471301ea0f4Smrg 4472ef6fb4a5Smrg # Now hardcode the library paths 4473ef6fb4a5Smrg rpath= 4474ef6fb4a5Smrg hardcode_libdirs= 4475ef6fb4a5Smrg for libdir in $compile_rpath $finalize_rpath; do 4476ef6fb4a5Smrg if test -n "$hardcode_libdir_flag_spec"; then 4477ef6fb4a5Smrg if test -n "$hardcode_libdir_separator"; then 4478ef6fb4a5Smrg if test -z "$hardcode_libdirs"; then 4479ef6fb4a5Smrg hardcode_libdirs="$libdir" 4480ef6fb4a5Smrg else 4481ef6fb4a5Smrg # Just accumulate the unique libdirs. 4482ef6fb4a5Smrg case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 4483ef6fb4a5Smrg *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 4484ef6fb4a5Smrg ;; 4485ef6fb4a5Smrg *) 4486ef6fb4a5Smrg hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 4487ef6fb4a5Smrg ;; 4488ef6fb4a5Smrg esac 4489ef6fb4a5Smrg fi 44900cc67336Smrg else 4491ef6fb4a5Smrg eval flag=\"$hardcode_libdir_flag_spec\" 4492ef6fb4a5Smrg rpath="$rpath $flag" 44930cc67336Smrg fi 4494ef6fb4a5Smrg elif test -n "$runpath_var"; then 4495ef6fb4a5Smrg case "$perm_rpath " in 4496ef6fb4a5Smrg *" $libdir "*) ;; 4497ef6fb4a5Smrg *) perm_rpath="$perm_rpath $libdir" ;; 4498ef6fb4a5Smrg esac 44990cc67336Smrg fi 45000cc67336Smrg case $host in 4501ef6fb4a5Smrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) 4502ef6fb4a5Smrg testbindir=`$echo "X$libdir" | $Xsed -e 's*/lib$*/bin*'` 45030cc67336Smrg case :$dllsearchpath: in 4504ef6fb4a5Smrg *":$libdir:"*) ;; 4505ef6fb4a5Smrg *) dllsearchpath="$dllsearchpath:$libdir";; 45060cc67336Smrg esac 45070cc67336Smrg case :$dllsearchpath: in 45080cc67336Smrg *":$testbindir:"*) ;; 45090cc67336Smrg *) dllsearchpath="$dllsearchpath:$testbindir";; 45100cc67336Smrg esac 45110cc67336Smrg ;; 45120cc67336Smrg esac 4513ef6fb4a5Smrg done 4514ef6fb4a5Smrg # Substitute the hardcoded libdirs into the rpath. 4515ef6fb4a5Smrg if test -n "$hardcode_libdir_separator" && 4516ef6fb4a5Smrg test -n "$hardcode_libdirs"; then 4517ef6fb4a5Smrg libdir="$hardcode_libdirs" 4518ef6fb4a5Smrg eval rpath=\" $hardcode_libdir_flag_spec\" 4519ef6fb4a5Smrg fi 4520ef6fb4a5Smrg compile_rpath="$rpath" 4521301ea0f4Smrg 4522ef6fb4a5Smrg rpath= 4523ef6fb4a5Smrg hardcode_libdirs= 4524ef6fb4a5Smrg for libdir in $finalize_rpath; do 4525ef6fb4a5Smrg if test -n "$hardcode_libdir_flag_spec"; then 4526ef6fb4a5Smrg if test -n "$hardcode_libdir_separator"; then 4527ef6fb4a5Smrg if test -z "$hardcode_libdirs"; then 4528ef6fb4a5Smrg hardcode_libdirs="$libdir" 4529ef6fb4a5Smrg else 4530ef6fb4a5Smrg # Just accumulate the unique libdirs. 4531ef6fb4a5Smrg case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 4532ef6fb4a5Smrg *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 4533ef6fb4a5Smrg ;; 4534ef6fb4a5Smrg *) 4535ef6fb4a5Smrg hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 4536ef6fb4a5Smrg ;; 4537ef6fb4a5Smrg esac 4538ef6fb4a5Smrg fi 4539ef6fb4a5Smrg else 4540ef6fb4a5Smrg eval flag=\"$hardcode_libdir_flag_spec\" 4541ef6fb4a5Smrg rpath="$rpath $flag" 4542ef6fb4a5Smrg fi 4543ef6fb4a5Smrg elif test -n "$runpath_var"; then 4544ef6fb4a5Smrg case "$finalize_perm_rpath " in 4545ef6fb4a5Smrg *" $libdir "*) ;; 4546ef6fb4a5Smrg *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; 45470cc67336Smrg esac 45480cc67336Smrg fi 4549ef6fb4a5Smrg done 4550ef6fb4a5Smrg # Substitute the hardcoded libdirs into the rpath. 4551ef6fb4a5Smrg if test -n "$hardcode_libdir_separator" && 4552ef6fb4a5Smrg test -n "$hardcode_libdirs"; then 4553ef6fb4a5Smrg libdir="$hardcode_libdirs" 4554ef6fb4a5Smrg eval rpath=\" $hardcode_libdir_flag_spec\" 4555ef6fb4a5Smrg fi 4556ef6fb4a5Smrg finalize_rpath="$rpath" 4557301ea0f4Smrg 4558ef6fb4a5Smrg if test -n "$libobjs" && test "$build_old_libs" = yes; then 4559ef6fb4a5Smrg # Transform all the library objects into standard objects. 4560ef6fb4a5Smrg compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 4561ef6fb4a5Smrg finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 4562ef6fb4a5Smrg fi 4563301ea0f4Smrg 4564ef6fb4a5Smrg dlsyms= 4565ef6fb4a5Smrg if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 4566ef6fb4a5Smrg if test -n "$NM" && test -n "$global_symbol_pipe"; then 4567ef6fb4a5Smrg dlsyms="${outputname}S.c" 4568ef6fb4a5Smrg else 4569ef6fb4a5Smrg $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2 4570ef6fb4a5Smrg fi 4571ef6fb4a5Smrg fi 4572301ea0f4Smrg 4573ef6fb4a5Smrg if test -n "$dlsyms"; then 4574ef6fb4a5Smrg case $dlsyms in 4575ef6fb4a5Smrg "") ;; 4576ef6fb4a5Smrg *.c) 4577ef6fb4a5Smrg # Discover the nlist of each of the dlfiles. 4578ef6fb4a5Smrg nlist="$output_objdir/${outputname}.nm" 4579301ea0f4Smrg 4580ef6fb4a5Smrg $show "$rm $nlist ${nlist}S ${nlist}T" 4581ef6fb4a5Smrg $run $rm "$nlist" "${nlist}S" "${nlist}T" 4582301ea0f4Smrg 4583ef6fb4a5Smrg # Parse the name list into a source file. 4584ef6fb4a5Smrg $show "creating $output_objdir/$dlsyms" 4585301ea0f4Smrg 4586ef6fb4a5Smrg test -z "$run" && $echo > "$output_objdir/$dlsyms" "\ 4587ef6fb4a5Smrg/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */ 4588ef6fb4a5Smrg/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */ 4589301ea0f4Smrg 4590ef6fb4a5Smrg#ifdef __cplusplus 4591ef6fb4a5Smrgextern \"C\" { 4592ef6fb4a5Smrg#endif 4593301ea0f4Smrg 4594ef6fb4a5Smrg/* Prevent the only kind of declaration conflicts we can make. */ 4595ef6fb4a5Smrg#define lt_preloaded_symbols some_other_symbol 4596301ea0f4Smrg 4597ef6fb4a5Smrg/* External symbol declarations for the compiler. */\ 4598ef6fb4a5Smrg" 4599301ea0f4Smrg 4600ef6fb4a5Smrg if test "$dlself" = yes; then 4601ef6fb4a5Smrg $show "generating symbol list for \`$output'" 4602301ea0f4Smrg 4603ef6fb4a5Smrg test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist" 4604301ea0f4Smrg 4605ef6fb4a5Smrg # Add our own program objects to the symbol list. 4606ef6fb4a5Smrg progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 4607ef6fb4a5Smrg for arg in $progfiles; do 4608ef6fb4a5Smrg $show "extracting global C symbols from \`$arg'" 4609ef6fb4a5Smrg $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" 4610ef6fb4a5Smrg done 4611301ea0f4Smrg 4612ef6fb4a5Smrg if test -n "$exclude_expsyms"; then 4613ef6fb4a5Smrg $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' 4614ef6fb4a5Smrg $run eval '$mv "$nlist"T "$nlist"' 4615ef6fb4a5Smrg fi 4616301ea0f4Smrg 4617ef6fb4a5Smrg if test -n "$export_symbols_regex"; then 4618ef6fb4a5Smrg $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' 4619ef6fb4a5Smrg $run eval '$mv "$nlist"T "$nlist"' 4620ef6fb4a5Smrg fi 4621301ea0f4Smrg 4622ef6fb4a5Smrg # Prepare the list of exported symbols 4623ef6fb4a5Smrg if test -z "$export_symbols"; then 4624ef6fb4a5Smrg export_symbols="$output_objdir/$outputname.exp" 4625ef6fb4a5Smrg $run $rm $export_symbols 4626ef6fb4a5Smrg $run eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' 4627ef6fb4a5Smrg case $host in 4628ef6fb4a5Smrg *cygwin* | *mingw* ) 4629ef6fb4a5Smrg $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 4630ef6fb4a5Smrg $run eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' 4631ef6fb4a5Smrg ;; 4632ef6fb4a5Smrg esac 4633ef6fb4a5Smrg else 4634ef6fb4a5Smrg $run eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' 4635ef6fb4a5Smrg $run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' 4636ef6fb4a5Smrg $run eval 'mv "$nlist"T "$nlist"' 4637ef6fb4a5Smrg case $host in 4638ef6fb4a5Smrg *cygwin* | *mingw* ) 4639ef6fb4a5Smrg $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 4640ef6fb4a5Smrg $run eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' 4641ef6fb4a5Smrg ;; 4642ef6fb4a5Smrg esac 4643ef6fb4a5Smrg fi 4644ef6fb4a5Smrg fi 4645301ea0f4Smrg 4646ef6fb4a5Smrg for arg in $dlprefiles; do 4647ef6fb4a5Smrg $show "extracting global C symbols from \`$arg'" 4648ef6fb4a5Smrg name=`$echo "$arg" | ${SED} -e 's%^.*/%%'` 4649ef6fb4a5Smrg $run eval '$echo ": $name " >> "$nlist"' 4650ef6fb4a5Smrg $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" 4651ef6fb4a5Smrg done 4652301ea0f4Smrg 4653ef6fb4a5Smrg if test -z "$run"; then 4654ef6fb4a5Smrg # Make sure we have at least an empty file. 4655ef6fb4a5Smrg test -f "$nlist" || : > "$nlist" 4656301ea0f4Smrg 4657ef6fb4a5Smrg if test -n "$exclude_expsyms"; then 4658ef6fb4a5Smrg $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T 4659ef6fb4a5Smrg $mv "$nlist"T "$nlist" 4660ef6fb4a5Smrg fi 4661301ea0f4Smrg 4662ef6fb4a5Smrg # Try sorting and uniquifying the output. 4663ef6fb4a5Smrg if grep -v "^: " < "$nlist" | 4664ef6fb4a5Smrg if sort -k 3 </dev/null >/dev/null 2>&1; then 4665ef6fb4a5Smrg sort -k 3 4666ef6fb4a5Smrg else 4667ef6fb4a5Smrg sort +2 4668ef6fb4a5Smrg fi | 4669ef6fb4a5Smrg uniq > "$nlist"S; then 4670ef6fb4a5Smrg : 4671ef6fb4a5Smrg else 4672ef6fb4a5Smrg grep -v "^: " < "$nlist" > "$nlist"S 4673ef6fb4a5Smrg fi 4674301ea0f4Smrg 4675ef6fb4a5Smrg if test -f "$nlist"S; then 4676ef6fb4a5Smrg eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"' 4677ef6fb4a5Smrg else 4678ef6fb4a5Smrg $echo '/* NONE */' >> "$output_objdir/$dlsyms" 4679ef6fb4a5Smrg fi 4680301ea0f4Smrg 4681ef6fb4a5Smrg $echo >> "$output_objdir/$dlsyms" "\ 4682301ea0f4Smrg 4683ef6fb4a5Smrg#undef lt_preloaded_symbols 4684301ea0f4Smrg 4685ef6fb4a5Smrg#if defined (__STDC__) && __STDC__ 4686ef6fb4a5Smrg# define lt_ptr void * 4687ef6fb4a5Smrg#else 4688ef6fb4a5Smrg# define lt_ptr char * 4689ef6fb4a5Smrg# define const 4690ef6fb4a5Smrg#endif 4691301ea0f4Smrg 4692ef6fb4a5Smrg/* The mapping between symbol names and symbols. */ 4693ef6fb4a5Smrg" 4694301ea0f4Smrg 4695ef6fb4a5Smrg case $host in 4696ef6fb4a5Smrg *cygwin* | *mingw* ) 4697ef6fb4a5Smrg $echo >> "$output_objdir/$dlsyms" "\ 4698ef6fb4a5Smrg/* DATA imports from DLLs on WIN32 can't be const, because 4699ef6fb4a5Smrg runtime relocations are performed -- see ld's documentation 4700ef6fb4a5Smrg on pseudo-relocs */ 4701ef6fb4a5Smrgstruct { 4702ef6fb4a5Smrg" 4703ef6fb4a5Smrg ;; 4704ef6fb4a5Smrg * ) 4705ef6fb4a5Smrg $echo >> "$output_objdir/$dlsyms" "\ 4706ef6fb4a5Smrgconst struct { 4707ef6fb4a5Smrg" 4708ef6fb4a5Smrg ;; 4709ef6fb4a5Smrg esac 4710301ea0f4Smrg 4711301ea0f4Smrg 4712ef6fb4a5Smrg $echo >> "$output_objdir/$dlsyms" "\ 4713ef6fb4a5Smrg const char *name; 4714ef6fb4a5Smrg lt_ptr address; 4715ef6fb4a5Smrg} 4716ef6fb4a5Smrglt_preloaded_symbols[] = 4717ef6fb4a5Smrg{\ 4718ef6fb4a5Smrg" 47190cc67336Smrg 4720ef6fb4a5Smrg eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms" 47210cc67336Smrg 4722ef6fb4a5Smrg $echo >> "$output_objdir/$dlsyms" "\ 4723ef6fb4a5Smrg {0, (lt_ptr) 0} 4724ef6fb4a5Smrg}; 47250cc67336Smrg 4726ef6fb4a5Smrg/* This works around a problem in FreeBSD linker */ 4727ef6fb4a5Smrg#ifdef FREEBSD_WORKAROUND 4728ef6fb4a5Smrgstatic const void *lt_preloaded_setup() { 4729ef6fb4a5Smrg return lt_preloaded_symbols; 4730ef6fb4a5Smrg} 4731ef6fb4a5Smrg#endif 47320cc67336Smrg 4733ef6fb4a5Smrg#ifdef __cplusplus 4734ef6fb4a5Smrg} 4735ef6fb4a5Smrg#endif\ 4736ef6fb4a5Smrg" 47370cc67336Smrg fi 47380cc67336Smrg 4739ef6fb4a5Smrg pic_flag_for_symtable= 4740ef6fb4a5Smrg case $host in 4741ef6fb4a5Smrg # compiling the symbol table file with pic_flag works around 4742ef6fb4a5Smrg # a FreeBSD bug that causes programs to crash when -lm is 4743ef6fb4a5Smrg # linked before any other PIC object. But we must not use 4744ef6fb4a5Smrg # pic_flag when linking with -static. The problem exists in 4745ef6fb4a5Smrg # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. 4746ef6fb4a5Smrg *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) 4747ef6fb4a5Smrg case "$compile_command " in 4748ef6fb4a5Smrg *" -static "*) ;; 4749ef6fb4a5Smrg *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";; 4750ef6fb4a5Smrg esac;; 4751ef6fb4a5Smrg *-*-hpux*) 4752ef6fb4a5Smrg case "$compile_command " in 4753ef6fb4a5Smrg *" -static "*) ;; 4754ef6fb4a5Smrg *) pic_flag_for_symtable=" $pic_flag";; 4755ef6fb4a5Smrg esac 4756ef6fb4a5Smrg esac 47570cc67336Smrg 4758ef6fb4a5Smrg # Now compile the dynamic symbol file. 4759ef6fb4a5Smrg $show "(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" 4760ef6fb4a5Smrg $run eval '(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? 47610cc67336Smrg 4762ef6fb4a5Smrg # Clean up the generated files. 4763ef6fb4a5Smrg $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T" 4764ef6fb4a5Smrg $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T" 47650cc67336Smrg 4766ef6fb4a5Smrg # Transform the symbol file into the correct name. 4767ef6fb4a5Smrg case $host in 4768ef6fb4a5Smrg *cygwin* | *mingw* ) 4769ef6fb4a5Smrg if test -f "$output_objdir/${outputname}.def" ; then 4770ef6fb4a5Smrg compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP` 4771ef6fb4a5Smrg finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP` 4772ef6fb4a5Smrg else 4773ef6fb4a5Smrg compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` 4774ef6fb4a5Smrg finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` 4775ef6fb4a5Smrg fi 4776ef6fb4a5Smrg ;; 4777ef6fb4a5Smrg * ) 4778ef6fb4a5Smrg compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` 4779ef6fb4a5Smrg finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` 4780ef6fb4a5Smrg ;; 4781ef6fb4a5Smrg esac 4782ef6fb4a5Smrg ;; 4783ef6fb4a5Smrg *) 4784ef6fb4a5Smrg $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 4785ef6fb4a5Smrg exit $EXIT_FAILURE 4786ef6fb4a5Smrg ;; 4787ef6fb4a5Smrg esac 4788ef6fb4a5Smrg else 4789ef6fb4a5Smrg # We keep going just in case the user didn't refer to 4790ef6fb4a5Smrg # lt_preloaded_symbols. The linker will fail if global_symbol_pipe 4791ef6fb4a5Smrg # really was required. 47920cc67336Smrg 4793ef6fb4a5Smrg # Nullify the symbol file. 4794ef6fb4a5Smrg compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP` 4795ef6fb4a5Smrg finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP` 4796ef6fb4a5Smrg fi 47970cc67336Smrg 4798ef6fb4a5Smrg if test "$need_relink" = no || test "$build_libtool_libs" != yes; then 4799ef6fb4a5Smrg # Replace the output file specification. 4800ef6fb4a5Smrg compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$output"'%g' | $NL2SP` 4801ef6fb4a5Smrg link_command="$compile_command$compile_rpath" 48020cc67336Smrg 4803ef6fb4a5Smrg # We have no uninstalled library dependencies, so finalize right now. 4804ef6fb4a5Smrg $show "$link_command" 4805ef6fb4a5Smrg $run eval "$link_command" 4806ef6fb4a5Smrg exit_status=$? 48070cc67336Smrg 4808ef6fb4a5Smrg # Delete the generated files. 4809ef6fb4a5Smrg if test -n "$dlsyms"; then 4810ef6fb4a5Smrg $show "$rm $output_objdir/${outputname}S.${objext}" 4811ef6fb4a5Smrg $run $rm "$output_objdir/${outputname}S.${objext}" 48120cc67336Smrg fi 48130cc67336Smrg 4814ef6fb4a5Smrg exit $exit_status 4815ef6fb4a5Smrg fi 48160cc67336Smrg 4817ef6fb4a5Smrg if test -n "$shlibpath_var"; then 4818ef6fb4a5Smrg # We should set the shlibpath_var 4819ef6fb4a5Smrg rpath= 4820ef6fb4a5Smrg for dir in $temp_rpath; do 4821ef6fb4a5Smrg case $dir in 4822ef6fb4a5Smrg [\\/]* | [A-Za-z]:[\\/]*) 4823ef6fb4a5Smrg # Absolute path. 4824ef6fb4a5Smrg rpath="$rpath$dir:" 4825ef6fb4a5Smrg ;; 4826ef6fb4a5Smrg *) 4827ef6fb4a5Smrg # Relative path: add a thisdir entry. 4828ef6fb4a5Smrg rpath="$rpath\$thisdir/$dir:" 4829ef6fb4a5Smrg ;; 4830ef6fb4a5Smrg esac 4831ef6fb4a5Smrg done 4832ef6fb4a5Smrg temp_rpath="$rpath" 48330cc67336Smrg fi 48340cc67336Smrg 4835ef6fb4a5Smrg if test -n "$compile_shlibpath$finalize_shlibpath"; then 4836ef6fb4a5Smrg compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" 4837ef6fb4a5Smrg fi 4838ef6fb4a5Smrg if test -n "$finalize_shlibpath"; then 4839ef6fb4a5Smrg finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" 4840ef6fb4a5Smrg fi 48410cc67336Smrg 4842ef6fb4a5Smrg compile_var= 4843ef6fb4a5Smrg finalize_var= 4844ef6fb4a5Smrg if test -n "$runpath_var"; then 4845ef6fb4a5Smrg if test -n "$perm_rpath"; then 4846ef6fb4a5Smrg # We should set the runpath_var. 4847ef6fb4a5Smrg rpath= 4848ef6fb4a5Smrg for dir in $perm_rpath; do 4849ef6fb4a5Smrg rpath="$rpath$dir:" 4850ef6fb4a5Smrg done 4851ef6fb4a5Smrg compile_var="$runpath_var=\"$rpath\$$runpath_var\" " 4852ef6fb4a5Smrg fi 4853ef6fb4a5Smrg if test -n "$finalize_perm_rpath"; then 4854ef6fb4a5Smrg # We should set the runpath_var. 4855ef6fb4a5Smrg rpath= 4856ef6fb4a5Smrg for dir in $finalize_perm_rpath; do 4857ef6fb4a5Smrg rpath="$rpath$dir:" 4858ef6fb4a5Smrg done 4859ef6fb4a5Smrg finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " 4860ef6fb4a5Smrg fi 4861ef6fb4a5Smrg fi 48620cc67336Smrg 4863ef6fb4a5Smrg if test "$no_install" = yes; then 4864ef6fb4a5Smrg # We don't need to create a wrapper script. 4865ef6fb4a5Smrg link_command="$compile_var$compile_command$compile_rpath" 4866ef6fb4a5Smrg # Replace the output file specification. 4867ef6fb4a5Smrg link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` 4868ef6fb4a5Smrg # Delete the old output file. 4869ef6fb4a5Smrg $run $rm $output 4870ef6fb4a5Smrg # Link the executable and exit 4871ef6fb4a5Smrg $show "$link_command" 4872ef6fb4a5Smrg $run eval "$link_command" || exit $? 4873ef6fb4a5Smrg exit $EXIT_SUCCESS 4874ef6fb4a5Smrg fi 48750cc67336Smrg 4876ef6fb4a5Smrg if test "$hardcode_action" = relink; then 4877ef6fb4a5Smrg # Fast installation is not supported 4878ef6fb4a5Smrg link_command="$compile_var$compile_command$compile_rpath" 4879ef6fb4a5Smrg relink_command="$finalize_var$finalize_command$finalize_rpath" 48800cc67336Smrg 4881ef6fb4a5Smrg $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2 4882ef6fb4a5Smrg $echo "$modename: \`$output' will be relinked during installation" 1>&2 4883ef6fb4a5Smrg else 4884ef6fb4a5Smrg if test "$fast_install" != no; then 4885ef6fb4a5Smrg link_command="$finalize_var$compile_command$finalize_rpath" 4886ef6fb4a5Smrg if test "$fast_install" = yes; then 4887ef6fb4a5Smrg relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $SP2NL | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g' | $NL2SP` 4888ef6fb4a5Smrg else 4889ef6fb4a5Smrg # fast_install is set to needless 4890ef6fb4a5Smrg relink_command= 4891ef6fb4a5Smrg fi 4892ef6fb4a5Smrg else 4893ef6fb4a5Smrg link_command="$compile_var$compile_command$compile_rpath" 4894ef6fb4a5Smrg relink_command="$finalize_var$finalize_command$finalize_rpath" 4895ef6fb4a5Smrg fi 48960cc67336Smrg fi 48970cc67336Smrg 4898ef6fb4a5Smrg # Replace the output file specification. 4899ef6fb4a5Smrg link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` 49000cc67336Smrg 4901ef6fb4a5Smrg # Delete the old output files. 4902ef6fb4a5Smrg $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname 49030cc67336Smrg 4904ef6fb4a5Smrg $show "$link_command" 4905ef6fb4a5Smrg $run eval "$link_command" || exit $? 49060cc67336Smrg 4907ef6fb4a5Smrg # Now create the wrapper script. 4908ef6fb4a5Smrg $show "creating $output" 49090cc67336Smrg 4910ef6fb4a5Smrg # Quote the relink command for shipping. 4911ef6fb4a5Smrg if test -n "$relink_command"; then 4912ef6fb4a5Smrg # Preserve any variables that may affect compiler behavior 4913ef6fb4a5Smrg for var in $variables_saved_for_relink; do 4914ef6fb4a5Smrg if eval test -z \"\${$var+set}\"; then 4915ef6fb4a5Smrg relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" 4916ef6fb4a5Smrg elif eval var_value=\$$var; test -z "$var_value"; then 4917ef6fb4a5Smrg relink_command="$var=; export $var; $relink_command" 4918ef6fb4a5Smrg else 4919ef6fb4a5Smrg var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` 4920ef6fb4a5Smrg relink_command="$var=\"$var_value\"; export $var; $relink_command" 4921ef6fb4a5Smrg fi 49220cc67336Smrg done 4923ef6fb4a5Smrg relink_command="(cd `pwd`; $relink_command)" 4924ef6fb4a5Smrg relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP` 49250cc67336Smrg fi 49260cc67336Smrg 4927ef6fb4a5Smrg # Quote $echo for shipping. 4928ef6fb4a5Smrg if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then 4929ef6fb4a5Smrg case $progpath in 4930ef6fb4a5Smrg [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; 4931ef6fb4a5Smrg *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; 49320cc67336Smrg esac 4933ef6fb4a5Smrg qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"` 4934ef6fb4a5Smrg else 4935ef6fb4a5Smrg qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"` 49360cc67336Smrg fi 49370cc67336Smrg 4938ef6fb4a5Smrg # Only actually do things if our run command is non-null. 4939ef6fb4a5Smrg if test -z "$run"; then 4940ef6fb4a5Smrg # win32 will think the script is a binary if it has 4941ef6fb4a5Smrg # a .exe suffix, so we strip it off here. 4942ef6fb4a5Smrg case $output in 4943ef6fb4a5Smrg *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;; 4944ef6fb4a5Smrg esac 4945ef6fb4a5Smrg # test for cygwin because mv fails w/o .exe extensions 4946ef6fb4a5Smrg case $host in 4947ef6fb4a5Smrg *cygwin*) 4948ef6fb4a5Smrg exeext=.exe 4949ef6fb4a5Smrg outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;; 4950ef6fb4a5Smrg *) exeext= ;; 4951ef6fb4a5Smrg esac 4952ef6fb4a5Smrg case $host in 4953ef6fb4a5Smrg *cygwin* | *mingw* ) 4954ef6fb4a5Smrg output_name=`basename $output` 4955ef6fb4a5Smrg output_path=`dirname $output` 4956ef6fb4a5Smrg cwrappersource="$output_path/$objdir/lt-$output_name.c" 4957ef6fb4a5Smrg cwrapper="$output_path/$output_name.exe" 4958ef6fb4a5Smrg $rm $cwrappersource $cwrapper 4959ef6fb4a5Smrg trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 49600cc67336Smrg 4961ef6fb4a5Smrg cat > $cwrappersource <<EOF 49620cc67336Smrg 4963ef6fb4a5Smrg/* $cwrappersource - temporary wrapper executable for $objdir/$outputname 4964ef6fb4a5Smrg Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP 49650cc67336Smrg 4966ef6fb4a5Smrg The $output program cannot be directly executed until all the libtool 4967ef6fb4a5Smrg libraries that it depends on are installed. 49680cc67336Smrg 4969ef6fb4a5Smrg This wrapper executable should never be moved out of the build directory. 4970ef6fb4a5Smrg If it is, it will not operate correctly. 49710cc67336Smrg 4972ef6fb4a5Smrg Currently, it simply execs the wrapper *script* "/bin/sh $output", 4973ef6fb4a5Smrg but could eventually absorb all of the scripts functionality and 4974ef6fb4a5Smrg exec $objdir/$outputname directly. 4975ef6fb4a5Smrg*/ 4976ef6fb4a5SmrgEOF 4977ef6fb4a5Smrg cat >> $cwrappersource<<"EOF" 4978ef6fb4a5Smrg#include <stdio.h> 4979ef6fb4a5Smrg#include <stdlib.h> 4980ef6fb4a5Smrg#include <unistd.h> 4981ef6fb4a5Smrg#include <malloc.h> 4982ef6fb4a5Smrg#include <stdarg.h> 4983ef6fb4a5Smrg#include <assert.h> 4984ef6fb4a5Smrg#include <string.h> 4985ef6fb4a5Smrg#include <ctype.h> 4986ef6fb4a5Smrg#include <sys/stat.h> 49870cc67336Smrg 4988ef6fb4a5Smrg#if defined(PATH_MAX) 4989ef6fb4a5Smrg# define LT_PATHMAX PATH_MAX 4990ef6fb4a5Smrg#elif defined(MAXPATHLEN) 4991ef6fb4a5Smrg# define LT_PATHMAX MAXPATHLEN 4992ef6fb4a5Smrg#else 4993ef6fb4a5Smrg# define LT_PATHMAX 1024 4994ef6fb4a5Smrg#endif 49950cc67336Smrg 4996ef6fb4a5Smrg#ifndef DIR_SEPARATOR 4997ef6fb4a5Smrg# define DIR_SEPARATOR '/' 4998ef6fb4a5Smrg# define PATH_SEPARATOR ':' 4999ef6fb4a5Smrg#endif 50000cc67336Smrg 5001ef6fb4a5Smrg#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ 5002ef6fb4a5Smrg defined (__OS2__) 5003ef6fb4a5Smrg# define HAVE_DOS_BASED_FILE_SYSTEM 5004ef6fb4a5Smrg# ifndef DIR_SEPARATOR_2 5005ef6fb4a5Smrg# define DIR_SEPARATOR_2 '\\' 5006ef6fb4a5Smrg# endif 5007ef6fb4a5Smrg# ifndef PATH_SEPARATOR_2 5008ef6fb4a5Smrg# define PATH_SEPARATOR_2 ';' 5009ef6fb4a5Smrg# endif 5010ef6fb4a5Smrg#endif 50110cc67336Smrg 5012ef6fb4a5Smrg#ifndef DIR_SEPARATOR_2 5013ef6fb4a5Smrg# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) 5014ef6fb4a5Smrg#else /* DIR_SEPARATOR_2 */ 5015ef6fb4a5Smrg# define IS_DIR_SEPARATOR(ch) \ 5016ef6fb4a5Smrg (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) 5017ef6fb4a5Smrg#endif /* DIR_SEPARATOR_2 */ 50180cc67336Smrg 5019ef6fb4a5Smrg#ifndef PATH_SEPARATOR_2 5020ef6fb4a5Smrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) 5021ef6fb4a5Smrg#else /* PATH_SEPARATOR_2 */ 5022ef6fb4a5Smrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) 5023ef6fb4a5Smrg#endif /* PATH_SEPARATOR_2 */ 50240cc67336Smrg 5025ef6fb4a5Smrg#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) 5026ef6fb4a5Smrg#define XFREE(stale) do { \ 5027ef6fb4a5Smrg if (stale) { free ((void *) stale); stale = 0; } \ 5028ef6fb4a5Smrg} while (0) 50290cc67336Smrg 5030ef6fb4a5Smrg/* -DDEBUG is fairly common in CFLAGS. */ 5031ef6fb4a5Smrg#undef DEBUG 5032ef6fb4a5Smrg#if defined DEBUGWRAPPER 5033ef6fb4a5Smrg# define DEBUG(format, ...) fprintf(stderr, format, __VA_ARGS__) 5034ef6fb4a5Smrg#else 5035ef6fb4a5Smrg# define DEBUG(format, ...) 5036ef6fb4a5Smrg#endif 50370cc67336Smrg 5038ef6fb4a5Smrgconst char *program_name = NULL; 50390cc67336Smrg 5040ef6fb4a5Smrgvoid * xmalloc (size_t num); 5041ef6fb4a5Smrgchar * xstrdup (const char *string); 5042ef6fb4a5Smrgconst char * base_name (const char *name); 5043ef6fb4a5Smrgchar * find_executable(const char *wrapper); 5044ef6fb4a5Smrgint check_executable(const char *path); 5045ef6fb4a5Smrgchar * strendzap(char *str, const char *pat); 5046ef6fb4a5Smrgvoid lt_fatal (const char *message, ...); 50470cc67336Smrg 5048ef6fb4a5Smrgint 5049ef6fb4a5Smrgmain (int argc, char *argv[]) 5050ef6fb4a5Smrg{ 5051ef6fb4a5Smrg char **newargz; 5052ef6fb4a5Smrg int i; 50530cc67336Smrg 5054ef6fb4a5Smrg program_name = (char *) xstrdup (base_name (argv[0])); 5055ef6fb4a5Smrg DEBUG("(main) argv[0] : %s\n",argv[0]); 5056ef6fb4a5Smrg DEBUG("(main) program_name : %s\n",program_name); 5057ef6fb4a5Smrg newargz = XMALLOC(char *, argc+2); 5058ef6fb4a5SmrgEOF 50590cc67336Smrg 5060ef6fb4a5Smrg cat >> $cwrappersource <<EOF 5061ef6fb4a5Smrg newargz[0] = (char *) xstrdup("$SHELL"); 5062ef6fb4a5SmrgEOF 50630cc67336Smrg 5064ef6fb4a5Smrg cat >> $cwrappersource <<"EOF" 5065ef6fb4a5Smrg newargz[1] = find_executable(argv[0]); 5066ef6fb4a5Smrg if (newargz[1] == NULL) 5067ef6fb4a5Smrg lt_fatal("Couldn't find %s", argv[0]); 5068ef6fb4a5Smrg DEBUG("(main) found exe at : %s\n",newargz[1]); 5069ef6fb4a5Smrg /* we know the script has the same name, without the .exe */ 5070ef6fb4a5Smrg /* so make sure newargz[1] doesn't end in .exe */ 5071ef6fb4a5Smrg strendzap(newargz[1],".exe"); 5072ef6fb4a5Smrg for (i = 1; i < argc; i++) 5073ef6fb4a5Smrg newargz[i+1] = xstrdup(argv[i]); 5074ef6fb4a5Smrg newargz[argc+1] = NULL; 50750cc67336Smrg 5076ef6fb4a5Smrg for (i=0; i<argc+1; i++) 5077ef6fb4a5Smrg { 5078ef6fb4a5Smrg DEBUG("(main) newargz[%d] : %s\n",i,newargz[i]); 5079ef6fb4a5Smrg ; 5080ef6fb4a5Smrg } 50810cc67336Smrg 5082ef6fb4a5SmrgEOF 50830cc67336Smrg 5084ef6fb4a5Smrg case $host_os in 5085ef6fb4a5Smrg mingw*) 5086ef6fb4a5Smrg cat >> $cwrappersource <<EOF 5087ef6fb4a5Smrg execv("$SHELL",(char const **)newargz); 5088ef6fb4a5SmrgEOF 5089ef6fb4a5Smrg ;; 5090ef6fb4a5Smrg *) 5091ef6fb4a5Smrg cat >> $cwrappersource <<EOF 5092ef6fb4a5Smrg execv("$SHELL",newargz); 5093ef6fb4a5SmrgEOF 5094ef6fb4a5Smrg ;; 5095ef6fb4a5Smrg esac 50960cc67336Smrg 5097ef6fb4a5Smrg cat >> $cwrappersource <<"EOF" 5098ef6fb4a5Smrg return 127; 5099ef6fb4a5Smrg} 51000cc67336Smrg 5101ef6fb4a5Smrgvoid * 5102ef6fb4a5Smrgxmalloc (size_t num) 5103ef6fb4a5Smrg{ 5104ef6fb4a5Smrg void * p = (void *) malloc (num); 5105ef6fb4a5Smrg if (!p) 5106ef6fb4a5Smrg lt_fatal ("Memory exhausted"); 51070cc67336Smrg 5108ef6fb4a5Smrg return p; 5109ef6fb4a5Smrg} 51100cc67336Smrg 5111ef6fb4a5Smrgchar * 5112ef6fb4a5Smrgxstrdup (const char *string) 5113ef6fb4a5Smrg{ 5114ef6fb4a5Smrg return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL 5115ef6fb4a5Smrg; 5116ef6fb4a5Smrg} 51170cc67336Smrg 5118ef6fb4a5Smrgconst char * 5119ef6fb4a5Smrgbase_name (const char *name) 5120ef6fb4a5Smrg{ 5121ef6fb4a5Smrg const char *base; 51220cc67336Smrg 5123ef6fb4a5Smrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 5124ef6fb4a5Smrg /* Skip over the disk name in MSDOS pathnames. */ 5125ef6fb4a5Smrg if (isalpha ((unsigned char)name[0]) && name[1] == ':') 5126ef6fb4a5Smrg name += 2; 5127ef6fb4a5Smrg#endif 51280cc67336Smrg 5129ef6fb4a5Smrg for (base = name; *name; name++) 5130ef6fb4a5Smrg if (IS_DIR_SEPARATOR (*name)) 5131ef6fb4a5Smrg base = name + 1; 5132ef6fb4a5Smrg return base; 5133ef6fb4a5Smrg} 51340cc67336Smrg 5135ef6fb4a5Smrgint 5136ef6fb4a5Smrgcheck_executable(const char * path) 5137ef6fb4a5Smrg{ 5138ef6fb4a5Smrg struct stat st; 51390cc67336Smrg 5140ef6fb4a5Smrg DEBUG("(check_executable) : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!"); 5141ef6fb4a5Smrg if ((!path) || (!*path)) 5142ef6fb4a5Smrg return 0; 51430cc67336Smrg 5144ef6fb4a5Smrg if ((stat (path, &st) >= 0) && 5145ef6fb4a5Smrg ( 5146ef6fb4a5Smrg /* MinGW & native WIN32 do not support S_IXOTH or S_IXGRP */ 5147ef6fb4a5Smrg#if defined (S_IXOTH) 5148ef6fb4a5Smrg ((st.st_mode & S_IXOTH) == S_IXOTH) || 5149ef6fb4a5Smrg#endif 5150ef6fb4a5Smrg#if defined (S_IXGRP) 5151ef6fb4a5Smrg ((st.st_mode & S_IXGRP) == S_IXGRP) || 5152ef6fb4a5Smrg#endif 5153ef6fb4a5Smrg ((st.st_mode & S_IXUSR) == S_IXUSR)) 5154ef6fb4a5Smrg ) 5155ef6fb4a5Smrg return 1; 5156ef6fb4a5Smrg else 5157ef6fb4a5Smrg return 0; 5158ef6fb4a5Smrg} 51590cc67336Smrg 5160ef6fb4a5Smrg/* Searches for the full path of the wrapper. Returns 5161ef6fb4a5Smrg newly allocated full path name if found, NULL otherwise */ 5162ef6fb4a5Smrgchar * 5163ef6fb4a5Smrgfind_executable (const char* wrapper) 5164ef6fb4a5Smrg{ 5165ef6fb4a5Smrg int has_slash = 0; 5166ef6fb4a5Smrg const char* p; 5167ef6fb4a5Smrg const char* p_next; 5168ef6fb4a5Smrg /* static buffer for getcwd */ 5169ef6fb4a5Smrg char tmp[LT_PATHMAX + 1]; 5170ef6fb4a5Smrg int tmp_len; 5171ef6fb4a5Smrg char* concat_name; 51720cc67336Smrg 5173ef6fb4a5Smrg DEBUG("(find_executable) : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!"); 51740cc67336Smrg 5175ef6fb4a5Smrg if ((wrapper == NULL) || (*wrapper == '\0')) 5176ef6fb4a5Smrg return NULL; 5177301ea0f4Smrg 5178ef6fb4a5Smrg /* Absolute path? */ 5179ef6fb4a5Smrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 5180ef6fb4a5Smrg if (isalpha ((unsigned char)wrapper[0]) && wrapper[1] == ':') 5181ef6fb4a5Smrg { 5182ef6fb4a5Smrg concat_name = xstrdup (wrapper); 5183ef6fb4a5Smrg if (check_executable(concat_name)) 5184ef6fb4a5Smrg return concat_name; 5185ef6fb4a5Smrg XFREE(concat_name); 5186ef6fb4a5Smrg } 5187ef6fb4a5Smrg else 5188ef6fb4a5Smrg { 5189ef6fb4a5Smrg#endif 5190ef6fb4a5Smrg if (IS_DIR_SEPARATOR (wrapper[0])) 5191ef6fb4a5Smrg { 5192ef6fb4a5Smrg concat_name = xstrdup (wrapper); 5193ef6fb4a5Smrg if (check_executable(concat_name)) 5194ef6fb4a5Smrg return concat_name; 5195ef6fb4a5Smrg XFREE(concat_name); 5196ef6fb4a5Smrg } 5197ef6fb4a5Smrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 5198ef6fb4a5Smrg } 5199ef6fb4a5Smrg#endif 5200ef6fb4a5Smrg 5201ef6fb4a5Smrg for (p = wrapper; *p; p++) 5202ef6fb4a5Smrg if (*p == '/') 5203ef6fb4a5Smrg { 5204ef6fb4a5Smrg has_slash = 1; 5205ef6fb4a5Smrg break; 5206ef6fb4a5Smrg } 5207ef6fb4a5Smrg if (!has_slash) 5208ef6fb4a5Smrg { 5209ef6fb4a5Smrg /* no slashes; search PATH */ 5210ef6fb4a5Smrg const char* path = getenv ("PATH"); 5211ef6fb4a5Smrg if (path != NULL) 5212ef6fb4a5Smrg { 5213ef6fb4a5Smrg for (p = path; *p; p = p_next) 5214ef6fb4a5Smrg { 5215ef6fb4a5Smrg const char* q; 5216ef6fb4a5Smrg size_t p_len; 5217ef6fb4a5Smrg for (q = p; *q; q++) 5218ef6fb4a5Smrg if (IS_PATH_SEPARATOR(*q)) 5219ef6fb4a5Smrg break; 5220ef6fb4a5Smrg p_len = q - p; 5221ef6fb4a5Smrg p_next = (*q == '\0' ? q : q + 1); 5222ef6fb4a5Smrg if (p_len == 0) 5223ef6fb4a5Smrg { 5224ef6fb4a5Smrg /* empty path: current directory */ 5225ef6fb4a5Smrg if (getcwd (tmp, LT_PATHMAX) == NULL) 5226ef6fb4a5Smrg lt_fatal ("getcwd failed"); 5227ef6fb4a5Smrg tmp_len = strlen(tmp); 5228ef6fb4a5Smrg concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1); 5229ef6fb4a5Smrg memcpy (concat_name, tmp, tmp_len); 5230ef6fb4a5Smrg concat_name[tmp_len] = '/'; 5231ef6fb4a5Smrg strcpy (concat_name + tmp_len + 1, wrapper); 5232ef6fb4a5Smrg } 5233ef6fb4a5Smrg else 5234ef6fb4a5Smrg { 5235ef6fb4a5Smrg concat_name = XMALLOC(char, p_len + 1 + strlen(wrapper) + 1); 5236ef6fb4a5Smrg memcpy (concat_name, p, p_len); 5237ef6fb4a5Smrg concat_name[p_len] = '/'; 5238ef6fb4a5Smrg strcpy (concat_name + p_len + 1, wrapper); 5239ef6fb4a5Smrg } 5240ef6fb4a5Smrg if (check_executable(concat_name)) 5241ef6fb4a5Smrg return concat_name; 5242ef6fb4a5Smrg XFREE(concat_name); 5243ef6fb4a5Smrg } 5244ef6fb4a5Smrg } 5245ef6fb4a5Smrg /* not found in PATH; assume curdir */ 5246ef6fb4a5Smrg } 5247ef6fb4a5Smrg /* Relative path | not found in path: prepend cwd */ 5248ef6fb4a5Smrg if (getcwd (tmp, LT_PATHMAX) == NULL) 5249ef6fb4a5Smrg lt_fatal ("getcwd failed"); 5250ef6fb4a5Smrg tmp_len = strlen(tmp); 5251ef6fb4a5Smrg concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1); 5252ef6fb4a5Smrg memcpy (concat_name, tmp, tmp_len); 5253ef6fb4a5Smrg concat_name[tmp_len] = '/'; 5254ef6fb4a5Smrg strcpy (concat_name + tmp_len + 1, wrapper); 5255ef6fb4a5Smrg 5256ef6fb4a5Smrg if (check_executable(concat_name)) 5257ef6fb4a5Smrg return concat_name; 5258ef6fb4a5Smrg XFREE(concat_name); 5259ef6fb4a5Smrg return NULL; 5260ef6fb4a5Smrg} 5261ef6fb4a5Smrg 5262ef6fb4a5Smrgchar * 5263ef6fb4a5Smrgstrendzap(char *str, const char *pat) 5264ef6fb4a5Smrg{ 5265ef6fb4a5Smrg size_t len, patlen; 5266ef6fb4a5Smrg 5267ef6fb4a5Smrg assert(str != NULL); 5268ef6fb4a5Smrg assert(pat != NULL); 5269ef6fb4a5Smrg 5270ef6fb4a5Smrg len = strlen(str); 5271ef6fb4a5Smrg patlen = strlen(pat); 5272ef6fb4a5Smrg 5273ef6fb4a5Smrg if (patlen <= len) 5274ef6fb4a5Smrg { 5275ef6fb4a5Smrg str += len - patlen; 5276ef6fb4a5Smrg if (strcmp(str, pat) == 0) 5277ef6fb4a5Smrg *str = '\0'; 5278ef6fb4a5Smrg } 5279ef6fb4a5Smrg return str; 5280ef6fb4a5Smrg} 5281ef6fb4a5Smrg 5282ef6fb4a5Smrgstatic void 5283ef6fb4a5Smrglt_error_core (int exit_status, const char * mode, 5284ef6fb4a5Smrg const char * message, va_list ap) 5285ef6fb4a5Smrg{ 5286ef6fb4a5Smrg fprintf (stderr, "%s: %s: ", program_name, mode); 5287ef6fb4a5Smrg vfprintf (stderr, message, ap); 5288ef6fb4a5Smrg fprintf (stderr, ".\n"); 5289ef6fb4a5Smrg 5290ef6fb4a5Smrg if (exit_status >= 0) 5291ef6fb4a5Smrg exit (exit_status); 5292ef6fb4a5Smrg} 5293ef6fb4a5Smrg 5294ef6fb4a5Smrgvoid 5295ef6fb4a5Smrglt_fatal (const char *message, ...) 5296ef6fb4a5Smrg{ 5297ef6fb4a5Smrg va_list ap; 5298ef6fb4a5Smrg va_start (ap, message); 5299ef6fb4a5Smrg lt_error_core (EXIT_FAILURE, "FATAL", message, ap); 5300ef6fb4a5Smrg va_end (ap); 5301ef6fb4a5Smrg} 5302ef6fb4a5SmrgEOF 5303ef6fb4a5Smrg # we should really use a build-platform specific compiler 5304ef6fb4a5Smrg # here, but OTOH, the wrappers (shell script and this C one) 5305ef6fb4a5Smrg # are only useful if you want to execute the "real" binary. 5306ef6fb4a5Smrg # Since the "real" binary is built for $host, then this 5307ef6fb4a5Smrg # wrapper might as well be built for $host, too. 5308ef6fb4a5Smrg $run $LTCC $LTCFLAGS -s -o $cwrapper $cwrappersource 5309ef6fb4a5Smrg ;; 5310ef6fb4a5Smrg esac 5311ef6fb4a5Smrg $rm $output 5312ef6fb4a5Smrg trap "$rm $output; exit $EXIT_FAILURE" 1 2 15 5313ef6fb4a5Smrg 5314ef6fb4a5Smrg $echo > $output "\ 5315ef6fb4a5Smrg#! $SHELL 5316ef6fb4a5Smrg 5317ef6fb4a5Smrg# $output - temporary wrapper script for $objdir/$outputname 5318ef6fb4a5Smrg# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP 5319ef6fb4a5Smrg# 5320ef6fb4a5Smrg# The $output program cannot be directly executed until all the libtool 5321ef6fb4a5Smrg# libraries that it depends on are installed. 5322ef6fb4a5Smrg# 5323ef6fb4a5Smrg# This wrapper script should never be moved out of the build directory. 5324ef6fb4a5Smrg# If it is, it will not operate correctly. 5325ef6fb4a5Smrg 5326ef6fb4a5Smrg# Sed substitution that helps us do robust quoting. It backslashifies 5327ef6fb4a5Smrg# metacharacters that are still active within double-quoted strings. 5328ef6fb4a5SmrgXsed='${SED} -e 1s/^X//' 5329ef6fb4a5Smrgsed_quote_subst='$sed_quote_subst' 5330ef6fb4a5Smrg 5331ef6fb4a5Smrg# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE). 5332ef6fb4a5Smrgif test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then 5333ef6fb4a5Smrg emulate sh 5334ef6fb4a5Smrg NULLCMD=: 5335ef6fb4a5Smrg # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which 5336ef6fb4a5Smrg # is contrary to our usage. Disable this feature. 5337ef6fb4a5Smrg alias -g '\${1+\"\$@\"}'='\"\$@\"' 5338ef6fb4a5Smrg setopt NO_GLOB_SUBST 5339ef6fb4a5Smrgelse 5340ef6fb4a5Smrg case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac 5341ef6fb4a5Smrgfi 5342ef6fb4a5SmrgBIN_SH=xpg4; export BIN_SH # for Tru64 5343ef6fb4a5SmrgDUALCASE=1; export DUALCASE # for MKS sh 5344ef6fb4a5Smrg 5345ef6fb4a5Smrg# The HP-UX ksh and POSIX shell print the target directory to stdout 5346ef6fb4a5Smrg# if CDPATH is set. 5347ef6fb4a5Smrg(unset CDPATH) >/dev/null 2>&1 && unset CDPATH 5348ef6fb4a5Smrg 5349ef6fb4a5Smrgrelink_command=\"$relink_command\" 5350ef6fb4a5Smrg 5351ef6fb4a5Smrg# This environment variable determines our operation mode. 5352ef6fb4a5Smrgif test \"\$libtool_install_magic\" = \"$magic\"; then 5353ef6fb4a5Smrg # install mode needs the following variable: 5354ef6fb4a5Smrg notinst_deplibs='$notinst_deplibs' 5355ef6fb4a5Smrgelse 5356ef6fb4a5Smrg # When we are sourced in execute mode, \$file and \$echo are already set. 5357ef6fb4a5Smrg if test \"\$libtool_execute_magic\" != \"$magic\"; then 5358ef6fb4a5Smrg echo=\"$qecho\" 5359ef6fb4a5Smrg file=\"\$0\" 5360ef6fb4a5Smrg # Make sure echo works. 5361ef6fb4a5Smrg if test \"X\$1\" = X--no-reexec; then 5362ef6fb4a5Smrg # Discard the --no-reexec flag, and continue. 5363ef6fb4a5Smrg shift 5364ef6fb4a5Smrg elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then 5365ef6fb4a5Smrg # Yippee, \$echo works! 5366ef6fb4a5Smrg : 5367ef6fb4a5Smrg else 5368ef6fb4a5Smrg # Restart under the correct shell, and then maybe \$echo will work. 5369ef6fb4a5Smrg exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} 5370ef6fb4a5Smrg fi 5371ef6fb4a5Smrg fi\ 5372ef6fb4a5Smrg" 5373ef6fb4a5Smrg $echo >> $output "\ 5374301ea0f4Smrg 5375ef6fb4a5Smrg # Find the directory that this script lives in. 5376ef6fb4a5Smrg thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` 5377ef6fb4a5Smrg test \"x\$thisdir\" = \"x\$file\" && thisdir=. 5378301ea0f4Smrg 5379ef6fb4a5Smrg # Follow symbolic links until we get to the real thisdir. 5380ef6fb4a5Smrg file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` 5381ef6fb4a5Smrg while test -n \"\$file\"; do 5382ef6fb4a5Smrg destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` 5383301ea0f4Smrg 5384ef6fb4a5Smrg # If there was a directory component, then change thisdir. 5385ef6fb4a5Smrg if test \"x\$destdir\" != \"x\$file\"; then 5386ef6fb4a5Smrg case \"\$destdir\" in 5387ef6fb4a5Smrg [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; 5388ef6fb4a5Smrg *) thisdir=\"\$thisdir/\$destdir\" ;; 5389ef6fb4a5Smrg esac 5390ef6fb4a5Smrg fi 5391301ea0f4Smrg 5392ef6fb4a5Smrg file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` 5393ef6fb4a5Smrg file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` 5394ef6fb4a5Smrg done 5395301ea0f4Smrg 5396ef6fb4a5Smrg # Try to get the absolute directory name. 5397ef6fb4a5Smrg absdir=\`cd \"\$thisdir\" && pwd\` 5398ef6fb4a5Smrg test -n \"\$absdir\" && thisdir=\"\$absdir\" 5399ef6fb4a5Smrg" 5400301ea0f4Smrg 5401ef6fb4a5Smrg if test "$fast_install" = yes; then 5402ef6fb4a5Smrg $echo >> $output "\ 5403ef6fb4a5Smrg program=lt-'$outputname'$exeext 5404ef6fb4a5Smrg progdir=\"\$thisdir/$objdir\" 5405301ea0f4Smrg 5406ef6fb4a5Smrg if test ! -f \"\$progdir/\$program\" || \\ 5407ef6fb4a5Smrg { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ 5408ef6fb4a5Smrg test \"X\$file\" != \"X\$progdir/\$program\"; }; then 5409301ea0f4Smrg 5410ef6fb4a5Smrg file=\"\$\$-\$program\" 5411301ea0f4Smrg 5412ef6fb4a5Smrg if test ! -d \"\$progdir\"; then 5413ef6fb4a5Smrg $mkdir \"\$progdir\" 5414ef6fb4a5Smrg else 5415ef6fb4a5Smrg $rm \"\$progdir/\$file\" 5416ef6fb4a5Smrg fi" 5417301ea0f4Smrg 5418ef6fb4a5Smrg $echo >> $output "\ 5419301ea0f4Smrg 5420ef6fb4a5Smrg # relink executable if necessary 5421ef6fb4a5Smrg if test -n \"\$relink_command\"; then 5422ef6fb4a5Smrg if relink_command_output=\`eval \$relink_command 2>&1\`; then : 5423ef6fb4a5Smrg else 5424ef6fb4a5Smrg $echo \"\$relink_command_output\" >&2 5425ef6fb4a5Smrg $rm \"\$progdir/\$file\" 5426ef6fb4a5Smrg exit $EXIT_FAILURE 5427ef6fb4a5Smrg fi 5428ef6fb4a5Smrg fi 5429301ea0f4Smrg 5430ef6fb4a5Smrg $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || 5431ef6fb4a5Smrg { $rm \"\$progdir/\$program\"; 5432ef6fb4a5Smrg $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; } 5433ef6fb4a5Smrg $rm \"\$progdir/\$file\" 5434ef6fb4a5Smrg fi" 5435ef6fb4a5Smrg else 5436ef6fb4a5Smrg $echo >> $output "\ 5437ef6fb4a5Smrg program='$outputname' 5438ef6fb4a5Smrg progdir=\"\$thisdir/$objdir\" 5439ef6fb4a5Smrg" 54400cc67336Smrg fi 5441301ea0f4Smrg 5442ef6fb4a5Smrg $echo >> $output "\ 5443301ea0f4Smrg 5444ef6fb4a5Smrg if test -f \"\$progdir/\$program\"; then" 5445301ea0f4Smrg 5446ef6fb4a5Smrg # Export our shlibpath_var if we have one. 5447ef6fb4a5Smrg if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 5448ef6fb4a5Smrg $echo >> $output "\ 5449ef6fb4a5Smrg # Add our own library path to $shlibpath_var 5450ef6fb4a5Smrg $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" 5451301ea0f4Smrg 5452ef6fb4a5Smrg # Some systems cannot cope with colon-terminated $shlibpath_var 5453ef6fb4a5Smrg # The second colon is a workaround for a bug in BeOS R4 sed 5454ef6fb4a5Smrg $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` 5455301ea0f4Smrg 5456ef6fb4a5Smrg export $shlibpath_var 5457ef6fb4a5Smrg" 5458ef6fb4a5Smrg fi 5459301ea0f4Smrg 5460ef6fb4a5Smrg # fixup the dll searchpath if we need to. 5461ef6fb4a5Smrg if test -n "$dllsearchpath"; then 5462ef6fb4a5Smrg $echo >> $output "\ 5463ef6fb4a5Smrg # Add the dll search path components to the executable PATH 5464ef6fb4a5Smrg PATH=$dllsearchpath:\$PATH 5465ef6fb4a5Smrg" 5466ef6fb4a5Smrg fi 5467301ea0f4Smrg 5468ef6fb4a5Smrg $echo >> $output "\ 5469ef6fb4a5Smrg if test \"\$libtool_execute_magic\" != \"$magic\"; then 5470ef6fb4a5Smrg # Run the actual program with our arguments. 5471ef6fb4a5Smrg" 5472ef6fb4a5Smrg case $host in 5473ef6fb4a5Smrg # Backslashes separate directories on plain windows 5474ef6fb4a5Smrg *-*-mingw | *-*-os2*) 5475ef6fb4a5Smrg $echo >> $output "\ 5476ef6fb4a5Smrg exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} 5477ef6fb4a5Smrg" 5478ef6fb4a5Smrg ;; 5479301ea0f4Smrg 5480ef6fb4a5Smrg *) 5481ef6fb4a5Smrg $echo >> $output "\ 5482ef6fb4a5Smrg exec \"\$progdir/\$program\" \${1+\"\$@\"} 5483ef6fb4a5Smrg" 5484ef6fb4a5Smrg ;; 5485ef6fb4a5Smrg esac 5486ef6fb4a5Smrg $echo >> $output "\ 5487ef6fb4a5Smrg \$echo \"\$0: cannot exec \$program \$*\" 5488ef6fb4a5Smrg exit $EXIT_FAILURE 5489ef6fb4a5Smrg fi 5490ef6fb4a5Smrg else 5491ef6fb4a5Smrg # The program doesn't exist. 5492ef6fb4a5Smrg \$echo \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 5493ef6fb4a5Smrg \$echo \"This script is just a wrapper for \$program.\" 1>&2 5494ef6fb4a5Smrg $echo \"See the $PACKAGE documentation for more information.\" 1>&2 5495ef6fb4a5Smrg exit $EXIT_FAILURE 5496ef6fb4a5Smrg fi 5497ef6fb4a5Smrgfi\ 5498ef6fb4a5Smrg" 5499ef6fb4a5Smrg chmod +x $output 5500ef6fb4a5Smrg fi 5501ef6fb4a5Smrg exit $EXIT_SUCCESS 5502ef6fb4a5Smrg ;; 5503ef6fb4a5Smrg esac 5504301ea0f4Smrg 5505ef6fb4a5Smrg # See if we need to build an old-fashioned archive. 5506ef6fb4a5Smrg for oldlib in $oldlibs; do 5507301ea0f4Smrg 5508ef6fb4a5Smrg if test "$build_libtool_libs" = convenience; then 5509ef6fb4a5Smrg oldobjs="$libobjs_save" 5510ef6fb4a5Smrg addlibs="$convenience" 5511ef6fb4a5Smrg build_libtool_libs=no 5512ef6fb4a5Smrg else 5513ef6fb4a5Smrg if test "$build_libtool_libs" = module; then 5514ef6fb4a5Smrg oldobjs="$libobjs_save" 5515ef6fb4a5Smrg build_libtool_libs=no 5516ef6fb4a5Smrg else 5517ef6fb4a5Smrg oldobjs="$old_deplibs $non_pic_objects" 5518ef6fb4a5Smrg fi 5519ef6fb4a5Smrg addlibs="$old_convenience" 5520ef6fb4a5Smrg fi 5521301ea0f4Smrg 5522ef6fb4a5Smrg if test -n "$addlibs"; then 5523ef6fb4a5Smrg gentop="$output_objdir/${outputname}x" 5524ef6fb4a5Smrg generated="$generated $gentop" 5525301ea0f4Smrg 5526ef6fb4a5Smrg func_extract_archives $gentop $addlibs 5527ef6fb4a5Smrg oldobjs="$oldobjs $func_extract_archives_result" 5528ef6fb4a5Smrg fi 55290cc67336Smrg 5530ef6fb4a5Smrg # Do each command in the archive commands. 5531ef6fb4a5Smrg if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then 5532ef6fb4a5Smrg cmds=$old_archive_from_new_cmds 5533ef6fb4a5Smrg else 5534ef6fb4a5Smrg # POSIX demands no paths to be encoded in archives. We have 5535ef6fb4a5Smrg # to avoid creating archives with duplicate basenames if we 5536ef6fb4a5Smrg # might have to extract them afterwards, e.g., when creating a 5537ef6fb4a5Smrg # static archive out of a convenience library, or when linking 5538ef6fb4a5Smrg # the entirety of a libtool archive into another (currently 5539ef6fb4a5Smrg # not supported by libtool). 5540ef6fb4a5Smrg if (for obj in $oldobjs 5541ef6fb4a5Smrg do 5542ef6fb4a5Smrg $echo "X$obj" | $Xsed -e 's%^.*/%%' 5543ef6fb4a5Smrg done | sort | sort -uc >/dev/null 2>&1); then 5544ef6fb4a5Smrg : 5545ef6fb4a5Smrg else 5546ef6fb4a5Smrg $echo "copying selected object files to avoid basename conflicts..." 5547301ea0f4Smrg 5548ef6fb4a5Smrg if test -z "$gentop"; then 5549ef6fb4a5Smrg gentop="$output_objdir/${outputname}x" 5550ef6fb4a5Smrg generated="$generated $gentop" 5551301ea0f4Smrg 5552ef6fb4a5Smrg $show "${rm}r $gentop" 5553ef6fb4a5Smrg $run ${rm}r "$gentop" 5554ef6fb4a5Smrg $show "$mkdir $gentop" 5555ef6fb4a5Smrg $run $mkdir "$gentop" 5556ef6fb4a5Smrg exit_status=$? 5557ef6fb4a5Smrg if test "$exit_status" -ne 0 && test ! -d "$gentop"; then 5558ef6fb4a5Smrg exit $exit_status 55590cc67336Smrg fi 55600cc67336Smrg fi 5561301ea0f4Smrg 5562ef6fb4a5Smrg save_oldobjs=$oldobjs 5563ef6fb4a5Smrg oldobjs= 5564ef6fb4a5Smrg counter=1 5565ef6fb4a5Smrg for obj in $save_oldobjs 5566ef6fb4a5Smrg do 5567ef6fb4a5Smrg objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` 5568ef6fb4a5Smrg case " $oldobjs " in 5569ef6fb4a5Smrg " ") oldobjs=$obj ;; 5570ef6fb4a5Smrg *[\ /]"$objbase "*) 5571ef6fb4a5Smrg while :; do 5572ef6fb4a5Smrg # Make sure we don't pick an alternate name that also 5573ef6fb4a5Smrg # overlaps. 5574ef6fb4a5Smrg newobj=lt$counter-$objbase 5575ef6fb4a5Smrg counter=`expr $counter + 1` 5576ef6fb4a5Smrg case " $oldobjs " in 5577ef6fb4a5Smrg *[\ /]"$newobj "*) ;; 5578ef6fb4a5Smrg *) if test ! -f "$gentop/$newobj"; then break; fi ;; 5579ef6fb4a5Smrg esac 5580ef6fb4a5Smrg done 5581ef6fb4a5Smrg $show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" 5582ef6fb4a5Smrg $run ln "$obj" "$gentop/$newobj" || 5583ef6fb4a5Smrg $run cp "$obj" "$gentop/$newobj" 5584ef6fb4a5Smrg oldobjs="$oldobjs $gentop/$newobj" 5585ef6fb4a5Smrg ;; 5586ef6fb4a5Smrg *) oldobjs="$oldobjs $obj" ;; 5587ef6fb4a5Smrg esac 5588ef6fb4a5Smrg done 5589ef6fb4a5Smrg fi 5590301ea0f4Smrg 5591ef6fb4a5Smrg eval cmds=\"$old_archive_cmds\" 55920cc67336Smrg 5593ef6fb4a5Smrg if len=`expr "X$cmds" : ".*"` && 5594ef6fb4a5Smrg test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then 5595ef6fb4a5Smrg cmds=$old_archive_cmds 5596ef6fb4a5Smrg else 5597ef6fb4a5Smrg # the command line is too long to link in one step, link in parts 5598ef6fb4a5Smrg $echo "using piecewise archive linking..." 5599ef6fb4a5Smrg save_RANLIB=$RANLIB 5600ef6fb4a5Smrg RANLIB=: 5601ef6fb4a5Smrg objlist= 5602ef6fb4a5Smrg concat_cmds= 5603ef6fb4a5Smrg save_oldobjs=$oldobjs 5604ef6fb4a5Smrg 5605ef6fb4a5Smrg # Is there a better way of finding the last object in the list? 5606ef6fb4a5Smrg for obj in $save_oldobjs 5607ef6fb4a5Smrg do 5608ef6fb4a5Smrg last_oldobj=$obj 5609ef6fb4a5Smrg done 5610ef6fb4a5Smrg for obj in $save_oldobjs 5611ef6fb4a5Smrg do 5612ef6fb4a5Smrg oldobjs="$objlist $obj" 5613ef6fb4a5Smrg objlist="$objlist $obj" 5614ef6fb4a5Smrg eval test_cmds=\"$old_archive_cmds\" 5615ef6fb4a5Smrg if len=`expr "X$test_cmds" : ".*" 2>/dev/null` && 5616ef6fb4a5Smrg test "$len" -le "$max_cmd_len"; then 5617ef6fb4a5Smrg : 5618301ea0f4Smrg else 5619ef6fb4a5Smrg # the above command should be used before it gets too long 5620ef6fb4a5Smrg oldobjs=$objlist 5621ef6fb4a5Smrg if test "$obj" = "$last_oldobj" ; then 5622ef6fb4a5Smrg RANLIB=$save_RANLIB 5623ef6fb4a5Smrg fi 5624ef6fb4a5Smrg test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 5625ef6fb4a5Smrg eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" 5626ef6fb4a5Smrg objlist= 5627301ea0f4Smrg fi 5628ef6fb4a5Smrg done 5629ef6fb4a5Smrg RANLIB=$save_RANLIB 5630ef6fb4a5Smrg oldobjs=$objlist 5631ef6fb4a5Smrg if test "X$oldobjs" = "X" ; then 5632ef6fb4a5Smrg eval cmds=\"\$concat_cmds\" 5633301ea0f4Smrg else 5634ef6fb4a5Smrg eval cmds=\"\$concat_cmds~\$old_archive_cmds\" 5635301ea0f4Smrg fi 5636301ea0f4Smrg fi 5637ef6fb4a5Smrg fi 5638ef6fb4a5Smrg save_ifs="$IFS"; IFS='~' 5639ef6fb4a5Smrg for cmd in $cmds; do 5640ef6fb4a5Smrg eval cmd=\"$cmd\" 56410cc67336Smrg IFS="$save_ifs" 5642ef6fb4a5Smrg $show "$cmd" 5643ef6fb4a5Smrg $run eval "$cmd" || exit $? 5644ef6fb4a5Smrg done 5645ef6fb4a5Smrg IFS="$save_ifs" 5646ef6fb4a5Smrg done 56470cc67336Smrg 5648ef6fb4a5Smrg if test -n "$generated"; then 5649ef6fb4a5Smrg $show "${rm}r$generated" 5650ef6fb4a5Smrg $run ${rm}r$generated 5651ef6fb4a5Smrg fi 5652301ea0f4Smrg 5653ef6fb4a5Smrg # Now create the libtool archive. 5654ef6fb4a5Smrg case $output in 5655ef6fb4a5Smrg *.la) 5656ef6fb4a5Smrg old_library= 5657ef6fb4a5Smrg test "$build_old_libs" = yes && old_library="$libname.$libext" 5658ef6fb4a5Smrg $show "creating $output" 56590cc67336Smrg 5660ef6fb4a5Smrg # Preserve any variables that may affect compiler behavior 5661ef6fb4a5Smrg for var in $variables_saved_for_relink; do 5662ef6fb4a5Smrg if eval test -z \"\${$var+set}\"; then 5663ef6fb4a5Smrg relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" 5664ef6fb4a5Smrg elif eval var_value=\$$var; test -z "$var_value"; then 5665ef6fb4a5Smrg relink_command="$var=; export $var; $relink_command" 5666ef6fb4a5Smrg else 5667ef6fb4a5Smrg var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` 5668ef6fb4a5Smrg relink_command="$var=\"$var_value\"; export $var; $relink_command" 56690cc67336Smrg fi 5670ef6fb4a5Smrg done 5671ef6fb4a5Smrg # Quote the link command for shipping. 5672ef6fb4a5Smrg relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" 5673ef6fb4a5Smrg relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP` 5674ef6fb4a5Smrg if test "$hardcode_automatic" = yes ; then 5675ef6fb4a5Smrg relink_command= 56760cc67336Smrg fi 56770cc67336Smrg 56780cc67336Smrg 5679ef6fb4a5Smrg # Only create the output if not a dry run. 5680ef6fb4a5Smrg if test -z "$run"; then 5681ef6fb4a5Smrg for installed in no yes; do 5682ef6fb4a5Smrg if test "$installed" = yes; then 5683ef6fb4a5Smrg if test -z "$install_libdir"; then 5684ef6fb4a5Smrg break 5685ef6fb4a5Smrg fi 5686ef6fb4a5Smrg output="$output_objdir/$outputname"i 5687ef6fb4a5Smrg # Replace all uninstalled libtool libraries with the installed ones 5688ef6fb4a5Smrg newdependency_libs= 5689ef6fb4a5Smrg for deplib in $dependency_libs; do 5690ef6fb4a5Smrg case $deplib in 5691ef6fb4a5Smrg *.la) 5692ef6fb4a5Smrg name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'` 5693ef6fb4a5Smrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 5694ef6fb4a5Smrg if test -z "$libdir"; then 5695ef6fb4a5Smrg $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 5696ef6fb4a5Smrg exit $EXIT_FAILURE 5697ef6fb4a5Smrg fi 5698ef6fb4a5Smrg newdependency_libs="$newdependency_libs $libdir/$name" 5699ef6fb4a5Smrg ;; 5700ef6fb4a5Smrg *) newdependency_libs="$newdependency_libs $deplib" ;; 5701ef6fb4a5Smrg esac 5702ef6fb4a5Smrg done 5703ef6fb4a5Smrg dependency_libs="$newdependency_libs" 5704ef6fb4a5Smrg newdlfiles= 5705ef6fb4a5Smrg for lib in $dlfiles; do 5706ef6fb4a5Smrg name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` 5707ef6fb4a5Smrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 5708ef6fb4a5Smrg if test -z "$libdir"; then 5709ef6fb4a5Smrg $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 5710ef6fb4a5Smrg exit $EXIT_FAILURE 5711ef6fb4a5Smrg fi 5712ef6fb4a5Smrg newdlfiles="$newdlfiles $libdir/$name" 5713ef6fb4a5Smrg done 5714ef6fb4a5Smrg dlfiles="$newdlfiles" 5715ef6fb4a5Smrg newdlprefiles= 5716ef6fb4a5Smrg for lib in $dlprefiles; do 5717ef6fb4a5Smrg name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` 5718ef6fb4a5Smrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 5719ef6fb4a5Smrg if test -z "$libdir"; then 5720ef6fb4a5Smrg $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 5721ef6fb4a5Smrg exit $EXIT_FAILURE 5722ef6fb4a5Smrg fi 5723ef6fb4a5Smrg newdlprefiles="$newdlprefiles $libdir/$name" 5724ef6fb4a5Smrg done 5725ef6fb4a5Smrg dlprefiles="$newdlprefiles" 5726ef6fb4a5Smrg else 5727ef6fb4a5Smrg newdlfiles= 5728ef6fb4a5Smrg for lib in $dlfiles; do 5729ef6fb4a5Smrg case $lib in 5730ef6fb4a5Smrg [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 5731ef6fb4a5Smrg *) abs=`pwd`"/$lib" ;; 5732ef6fb4a5Smrg esac 5733ef6fb4a5Smrg newdlfiles="$newdlfiles $abs" 5734ef6fb4a5Smrg done 5735ef6fb4a5Smrg dlfiles="$newdlfiles" 5736ef6fb4a5Smrg newdlprefiles= 5737ef6fb4a5Smrg for lib in $dlprefiles; do 5738ef6fb4a5Smrg case $lib in 5739ef6fb4a5Smrg [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 5740ef6fb4a5Smrg *) abs=`pwd`"/$lib" ;; 5741ef6fb4a5Smrg esac 5742ef6fb4a5Smrg newdlprefiles="$newdlprefiles $abs" 5743ef6fb4a5Smrg done 5744ef6fb4a5Smrg dlprefiles="$newdlprefiles" 5745ef6fb4a5Smrg fi 5746ef6fb4a5Smrg $rm $output 5747ef6fb4a5Smrg # place dlname in correct position for cygwin 5748ef6fb4a5Smrg tdlname=$dlname 5749ef6fb4a5Smrg case $host,$output,$installed,$module,$dlname in 5750ef6fb4a5Smrg *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; 5751ef6fb4a5Smrg esac 5752ef6fb4a5Smrg $echo > $output "\ 5753ef6fb4a5Smrg# $outputname - a libtool library file 5754ef6fb4a5Smrg# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP 5755ef6fb4a5Smrg# 5756ef6fb4a5Smrg# Please DO NOT delete this file! 5757ef6fb4a5Smrg# It is necessary for linking the library. 57580cc67336Smrg 5759ef6fb4a5Smrg# The name that we can dlopen(3). 5760ef6fb4a5Smrgdlname='$tdlname' 5761301ea0f4Smrg 5762ef6fb4a5Smrg# Names of this library. 5763ef6fb4a5Smrglibrary_names='$library_names' 5764301ea0f4Smrg 5765ef6fb4a5Smrg# The name of the static archive. 5766ef6fb4a5Smrgold_library='$old_library' 5767301ea0f4Smrg 5768ef6fb4a5Smrg# Libraries that this one depends upon. 5769ef6fb4a5Smrgdependency_libs='$dependency_libs' 5770301ea0f4Smrg 5771ef6fb4a5Smrg# Version information for $libname. 5772ef6fb4a5Smrgcurrent=$current 5773ef6fb4a5Smrgage=$age 5774ef6fb4a5Smrgrevision=$revision 5775301ea0f4Smrg 5776ef6fb4a5Smrg# Is this an already installed library? 5777ef6fb4a5Smrginstalled=$installed 5778301ea0f4Smrg 5779ef6fb4a5Smrg# Should we warn about portability when linking against -modules? 5780ef6fb4a5Smrgshouldnotlink=$module 5781301ea0f4Smrg 5782ef6fb4a5Smrg# Files to dlopen/dlpreopen 5783ef6fb4a5Smrgdlopen='$dlfiles' 5784ef6fb4a5Smrgdlpreopen='$dlprefiles' 5785301ea0f4Smrg 5786ef6fb4a5Smrg# Directory that this library needs to be installed in: 5787ef6fb4a5Smrglibdir='$install_libdir'" 5788ef6fb4a5Smrg if test "$installed" = no && test "$need_relink" = yes; then 5789ef6fb4a5Smrg $echo >> $output "\ 5790ef6fb4a5Smrgrelink_command=\"$relink_command\"" 5791ef6fb4a5Smrg fi 5792ef6fb4a5Smrg done 57930cc67336Smrg fi 5794301ea0f4Smrg 5795ef6fb4a5Smrg # Do a symbolic link so that the libtool archive can be found in 5796ef6fb4a5Smrg # LD_LIBRARY_PATH before the program is installed. 5797ef6fb4a5Smrg $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" 5798ef6fb4a5Smrg $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $? 57990cc67336Smrg ;; 5800ef6fb4a5Smrg esac 5801ef6fb4a5Smrg exit $EXIT_SUCCESS 5802ef6fb4a5Smrg ;; 5803301ea0f4Smrg 5804ef6fb4a5Smrg # libtool install mode 5805ef6fb4a5Smrg install) 5806ef6fb4a5Smrg modename="$modename: install" 5807ef6fb4a5Smrg 5808ef6fb4a5Smrg # There may be an optional sh(1) argument at the beginning of 5809ef6fb4a5Smrg # install_prog (especially on Windows NT). 5810ef6fb4a5Smrg if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || 5811ef6fb4a5Smrg # Allow the use of GNU shtool's install command. 5812ef6fb4a5Smrg $echo "X$nonopt" | grep shtool > /dev/null; then 5813ef6fb4a5Smrg # Aesthetically quote it. 5814ef6fb4a5Smrg arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` 5815ef6fb4a5Smrg case $arg in 5816ef6fb4a5Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 5817ef6fb4a5Smrg arg="\"$arg\"" 5818ef6fb4a5Smrg ;; 5819301ea0f4Smrg esac 5820ef6fb4a5Smrg install_prog="$arg " 5821ef6fb4a5Smrg arg="$1" 5822ef6fb4a5Smrg shift 5823ef6fb4a5Smrg else 5824ef6fb4a5Smrg install_prog= 5825ef6fb4a5Smrg arg=$nonopt 5826ef6fb4a5Smrg fi 5827301ea0f4Smrg 5828ef6fb4a5Smrg # The real first argument should be the name of the installation program. 5829ef6fb4a5Smrg # Aesthetically quote it. 5830ef6fb4a5Smrg arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 5831ef6fb4a5Smrg case $arg in 5832ef6fb4a5Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 5833ef6fb4a5Smrg arg="\"$arg\"" 5834ef6fb4a5Smrg ;; 5835ef6fb4a5Smrg esac 5836ef6fb4a5Smrg install_prog="$install_prog$arg" 5837301ea0f4Smrg 5838ef6fb4a5Smrg # We need to accept at least all the BSD install flags. 5839ef6fb4a5Smrg dest= 5840ef6fb4a5Smrg files= 5841ef6fb4a5Smrg opts= 5842ef6fb4a5Smrg prev= 5843ef6fb4a5Smrg install_type= 5844ef6fb4a5Smrg isdir=no 5845ef6fb4a5Smrg stripme= 5846ef6fb4a5Smrg for arg 5847ef6fb4a5Smrg do 5848ef6fb4a5Smrg if test -n "$dest"; then 5849ef6fb4a5Smrg files="$files $dest" 5850ef6fb4a5Smrg dest=$arg 5851ef6fb4a5Smrg continue 5852ef6fb4a5Smrg fi 5853301ea0f4Smrg 5854ef6fb4a5Smrg case $arg in 5855ef6fb4a5Smrg -d) isdir=yes ;; 5856ef6fb4a5Smrg -f) 5857ef6fb4a5Smrg case " $install_prog " in 5858ef6fb4a5Smrg *[\\\ /]cp\ *) ;; 5859ef6fb4a5Smrg *) prev=$arg ;; 5860ef6fb4a5Smrg esac 5861ef6fb4a5Smrg ;; 5862ef6fb4a5Smrg -g | -m | -o) prev=$arg ;; 5863ef6fb4a5Smrg -s) 5864ef6fb4a5Smrg stripme=" -s" 5865ef6fb4a5Smrg continue 5866ef6fb4a5Smrg ;; 5867ef6fb4a5Smrg -*) 5868ef6fb4a5Smrg ;; 5869ef6fb4a5Smrg *) 5870ef6fb4a5Smrg # If the previous option needed an argument, then skip it. 5871ef6fb4a5Smrg if test -n "$prev"; then 5872ef6fb4a5Smrg prev= 5873ef6fb4a5Smrg else 5874ef6fb4a5Smrg dest=$arg 5875ef6fb4a5Smrg continue 5876ef6fb4a5Smrg fi 5877301ea0f4Smrg ;; 5878301ea0f4Smrg esac 5879301ea0f4Smrg 5880ef6fb4a5Smrg # Aesthetically quote the argument. 5881ef6fb4a5Smrg arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 5882ef6fb4a5Smrg case $arg in 5883ef6fb4a5Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 5884ef6fb4a5Smrg arg="\"$arg\"" 5885301ea0f4Smrg ;; 5886301ea0f4Smrg esac 5887ef6fb4a5Smrg install_prog="$install_prog $arg" 5888ef6fb4a5Smrg done 5889301ea0f4Smrg 5890ef6fb4a5Smrg if test -z "$install_prog"; then 5891ef6fb4a5Smrg $echo "$modename: you must specify an install program" 1>&2 5892ef6fb4a5Smrg $echo "$help" 1>&2 5893ef6fb4a5Smrg exit $EXIT_FAILURE 5894ef6fb4a5Smrg fi 5895301ea0f4Smrg 5896ef6fb4a5Smrg if test -n "$prev"; then 5897ef6fb4a5Smrg $echo "$modename: the \`$prev' option requires an argument" 1>&2 5898ef6fb4a5Smrg $echo "$help" 1>&2 5899ef6fb4a5Smrg exit $EXIT_FAILURE 5900ef6fb4a5Smrg fi 5901ef6fb4a5Smrg 5902ef6fb4a5Smrg if test -z "$files"; then 5903ef6fb4a5Smrg if test -z "$dest"; then 5904ef6fb4a5Smrg $echo "$modename: no file or destination specified" 1>&2 5905ef6fb4a5Smrg else 5906ef6fb4a5Smrg $echo "$modename: you must specify a destination" 1>&2 5907ef6fb4a5Smrg fi 5908ef6fb4a5Smrg $echo "$help" 1>&2 5909ef6fb4a5Smrg exit $EXIT_FAILURE 5910ef6fb4a5Smrg fi 5911ef6fb4a5Smrg 5912ef6fb4a5Smrg # Strip any trailing slash from the destination. 5913ef6fb4a5Smrg dest=`$echo "X$dest" | $Xsed -e 's%/$%%'` 5914ef6fb4a5Smrg 5915ef6fb4a5Smrg # Check to see that the destination is a directory. 5916ef6fb4a5Smrg test -d "$dest" && isdir=yes 5917ef6fb4a5Smrg if test "$isdir" = yes; then 5918ef6fb4a5Smrg destdir="$dest" 5919ef6fb4a5Smrg destname= 5920ef6fb4a5Smrg else 5921ef6fb4a5Smrg destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'` 5922ef6fb4a5Smrg test "X$destdir" = "X$dest" && destdir=. 5923ef6fb4a5Smrg destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'` 5924ef6fb4a5Smrg 5925ef6fb4a5Smrg # Not a directory, so check to see that there is only one file specified. 5926ef6fb4a5Smrg set dummy $files 5927ef6fb4a5Smrg if test "$#" -gt 2; then 5928ef6fb4a5Smrg $echo "$modename: \`$dest' is not a directory" 1>&2 5929ef6fb4a5Smrg $echo "$help" 1>&2 5930ef6fb4a5Smrg exit $EXIT_FAILURE 5931ef6fb4a5Smrg fi 5932ef6fb4a5Smrg fi 5933ef6fb4a5Smrg case $destdir in 5934ef6fb4a5Smrg [\\/]* | [A-Za-z]:[\\/]*) ;; 5935ef6fb4a5Smrg *) 5936ef6fb4a5Smrg for file in $files; do 5937ef6fb4a5Smrg case $file in 5938ef6fb4a5Smrg *.lo) ;; 5939301ea0f4Smrg *) 5940ef6fb4a5Smrg $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 5941ef6fb4a5Smrg $echo "$help" 1>&2 5942ef6fb4a5Smrg exit $EXIT_FAILURE 59430cc67336Smrg ;; 59440cc67336Smrg esac 59450cc67336Smrg done 5946ef6fb4a5Smrg ;; 5947ef6fb4a5Smrg esac 5948301ea0f4Smrg 5949ef6fb4a5Smrg # This variable tells wrapper scripts just to set variables rather 5950ef6fb4a5Smrg # than running their programs. 5951ef6fb4a5Smrg libtool_install_magic="$magic" 5952301ea0f4Smrg 5953ef6fb4a5Smrg staticlibs= 5954ef6fb4a5Smrg future_libdirs= 5955ef6fb4a5Smrg current_libdirs= 5956ef6fb4a5Smrg for file in $files; do 5957301ea0f4Smrg 5958ef6fb4a5Smrg # Do each installation. 5959ef6fb4a5Smrg case $file in 5960ef6fb4a5Smrg *.$libext) 5961ef6fb4a5Smrg # Do the static libraries later. 5962ef6fb4a5Smrg staticlibs="$staticlibs $file" 5963ef6fb4a5Smrg ;; 5964ef6fb4a5Smrg 5965ef6fb4a5Smrg *.la) 5966ef6fb4a5Smrg # Check to see that this really is a libtool archive. 5967ef6fb4a5Smrg if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : 5968ef6fb4a5Smrg else 5969ef6fb4a5Smrg $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 5970ef6fb4a5Smrg $echo "$help" 1>&2 5971ef6fb4a5Smrg exit $EXIT_FAILURE 5972ef6fb4a5Smrg fi 5973ef6fb4a5Smrg 5974ef6fb4a5Smrg library_names= 5975ef6fb4a5Smrg old_library= 5976ef6fb4a5Smrg relink_command= 5977ef6fb4a5Smrg # If there is no directory component, then add one. 5978ef6fb4a5Smrg case $file in 5979ef6fb4a5Smrg */* | *\\*) . $file ;; 5980ef6fb4a5Smrg *) . ./$file ;; 5981ef6fb4a5Smrg esac 5982ef6fb4a5Smrg 5983ef6fb4a5Smrg # Add the libdir to current_libdirs if it is the destination. 5984ef6fb4a5Smrg if test "X$destdir" = "X$libdir"; then 5985ef6fb4a5Smrg case "$current_libdirs " in 59860cc67336Smrg *" $libdir "*) ;; 5987ef6fb4a5Smrg *) current_libdirs="$current_libdirs $libdir" ;; 59880cc67336Smrg esac 5989ef6fb4a5Smrg else 5990ef6fb4a5Smrg # Note the libdir as a future libdir. 5991ef6fb4a5Smrg case "$future_libdirs " in 5992301ea0f4Smrg *" $libdir "*) ;; 5993ef6fb4a5Smrg *) future_libdirs="$future_libdirs $libdir" ;; 5994301ea0f4Smrg esac 59950cc67336Smrg fi 59960cc67336Smrg 5997ef6fb4a5Smrg dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/ 5998ef6fb4a5Smrg test "X$dir" = "X$file/" && dir= 5999ef6fb4a5Smrg dir="$dir$objdir" 6000ef6fb4a5Smrg 6001ef6fb4a5Smrg if test -n "$relink_command"; then 6002ef6fb4a5Smrg # Determine the prefix the user has applied to our future dir. 6003ef6fb4a5Smrg inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"` 6004ef6fb4a5Smrg 6005ef6fb4a5Smrg # Don't allow the user to place us outside of our expected 6006ef6fb4a5Smrg # location b/c this prevents finding dependent libraries that 6007ef6fb4a5Smrg # are installed to the same prefix. 6008ef6fb4a5Smrg # At present, this check doesn't affect windows .dll's that 6009ef6fb4a5Smrg # are installed into $libdir/../bin (currently, that works fine) 6010ef6fb4a5Smrg # but it's something to keep an eye on. 6011ef6fb4a5Smrg if test "$inst_prefix_dir" = "$destdir"; then 6012ef6fb4a5Smrg $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2 6013ef6fb4a5Smrg exit $EXIT_FAILURE 6014ef6fb4a5Smrg fi 6015ef6fb4a5Smrg 6016ef6fb4a5Smrg if test -n "$inst_prefix_dir"; then 6017ef6fb4a5Smrg # Stick the inst_prefix_dir data into the link command. 6018ef6fb4a5Smrg relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%" | $NL2SP` 6019ef6fb4a5Smrg else 6020ef6fb4a5Smrg relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%%" | $NL2SP` 6021ef6fb4a5Smrg fi 6022ef6fb4a5Smrg 6023ef6fb4a5Smrg $echo "$modename: warning: relinking \`$file'" 1>&2 6024ef6fb4a5Smrg $show "$relink_command" 6025ef6fb4a5Smrg if $run eval "$relink_command"; then : 60260cc67336Smrg else 6027ef6fb4a5Smrg $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 6028ef6fb4a5Smrg exit $EXIT_FAILURE 60290cc67336Smrg fi 6030301ea0f4Smrg fi 6031301ea0f4Smrg 6032ef6fb4a5Smrg # See the names of the shared library. 6033ef6fb4a5Smrg set dummy $library_names 6034ef6fb4a5Smrg if test -n "$2"; then 6035ef6fb4a5Smrg realname="$2" 6036ef6fb4a5Smrg shift 6037ef6fb4a5Smrg shift 6038301ea0f4Smrg 6039ef6fb4a5Smrg srcname="$realname" 6040ef6fb4a5Smrg test -n "$relink_command" && srcname="$realname"T 6041301ea0f4Smrg 6042ef6fb4a5Smrg # Install the shared library and build the symlinks. 6043ef6fb4a5Smrg $show "$install_prog $dir/$srcname $destdir/$realname" 6044ef6fb4a5Smrg $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $? 6045ef6fb4a5Smrg if test -n "$stripme" && test -n "$striplib"; then 6046ef6fb4a5Smrg $show "$striplib $destdir/$realname" 6047ef6fb4a5Smrg $run eval "$striplib $destdir/$realname" || exit $? 6048ef6fb4a5Smrg fi 6049301ea0f4Smrg 6050ef6fb4a5Smrg if test "$#" -gt 0; then 6051ef6fb4a5Smrg # Delete the old symlinks, and create new ones. 6052ef6fb4a5Smrg # Try `ln -sf' first, because the `ln' binary might depend on 6053ef6fb4a5Smrg # the symlink we replace! Solaris /bin/ln does not understand -f, 6054ef6fb4a5Smrg # so we also need to try rm && ln -s. 6055ef6fb4a5Smrg for linkname 6056ef6fb4a5Smrg do 6057ef6fb4a5Smrg if test "$linkname" != "$realname"; then 6058ef6fb4a5Smrg $show "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })" 6059ef6fb4a5Smrg $run eval "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })" 6060ef6fb4a5Smrg fi 6061ef6fb4a5Smrg done 6062ef6fb4a5Smrg fi 6063301ea0f4Smrg 6064ef6fb4a5Smrg # Do each command in the postinstall commands. 6065ef6fb4a5Smrg lib="$destdir/$realname" 6066ef6fb4a5Smrg cmds=$postinstall_cmds 6067ef6fb4a5Smrg save_ifs="$IFS"; IFS='~' 6068ef6fb4a5Smrg for cmd in $cmds; do 6069ef6fb4a5Smrg IFS="$save_ifs" 6070ef6fb4a5Smrg eval cmd=\"$cmd\" 6071ef6fb4a5Smrg $show "$cmd" 6072ef6fb4a5Smrg $run eval "$cmd" || { 6073ef6fb4a5Smrg lt_exit=$? 6074ef6fb4a5Smrg 6075ef6fb4a5Smrg # Restore the uninstalled library and exit 6076ef6fb4a5Smrg if test "$mode" = relink; then 6077ef6fb4a5Smrg $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)' 6078ef6fb4a5Smrg fi 6079301ea0f4Smrg 6080ef6fb4a5Smrg exit $lt_exit 6081ef6fb4a5Smrg } 6082ef6fb4a5Smrg done 6083ef6fb4a5Smrg IFS="$save_ifs" 60840cc67336Smrg fi 6085301ea0f4Smrg 6086ef6fb4a5Smrg # Install the pseudo-library for information purposes. 6087ef6fb4a5Smrg name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 6088ef6fb4a5Smrg instname="$dir/$name"i 6089ef6fb4a5Smrg $show "$install_prog $instname $destdir/$name" 6090ef6fb4a5Smrg $run eval "$install_prog $instname $destdir/$name" || exit $? 6091301ea0f4Smrg 6092ef6fb4a5Smrg # Maybe install the static library, too. 6093ef6fb4a5Smrg test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" 6094ef6fb4a5Smrg ;; 6095301ea0f4Smrg 6096ef6fb4a5Smrg *.lo) 6097ef6fb4a5Smrg # Install (i.e. copy) a libtool object. 6098ef6fb4a5Smrg 6099ef6fb4a5Smrg # Figure out destination file name, if it wasn't already specified. 6100ef6fb4a5Smrg if test -n "$destname"; then 6101ef6fb4a5Smrg destfile="$destdir/$destname" 6102ef6fb4a5Smrg else 6103ef6fb4a5Smrg destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 6104ef6fb4a5Smrg destfile="$destdir/$destfile" 6105301ea0f4Smrg fi 6106ef6fb4a5Smrg 6107ef6fb4a5Smrg # Deduce the name of the destination old-style object file. 6108ef6fb4a5Smrg case $destfile in 6109ef6fb4a5Smrg *.lo) 6110ef6fb4a5Smrg staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"` 6111ef6fb4a5Smrg ;; 6112ef6fb4a5Smrg *.$objext) 6113ef6fb4a5Smrg staticdest="$destfile" 6114ef6fb4a5Smrg destfile= 6115ef6fb4a5Smrg ;; 6116ef6fb4a5Smrg *) 6117ef6fb4a5Smrg $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 6118ef6fb4a5Smrg $echo "$help" 1>&2 6119ef6fb4a5Smrg exit $EXIT_FAILURE 6120ef6fb4a5Smrg ;; 6121ef6fb4a5Smrg esac 6122ef6fb4a5Smrg 6123ef6fb4a5Smrg # Install the libtool object if requested. 6124ef6fb4a5Smrg if test -n "$destfile"; then 6125ef6fb4a5Smrg $show "$install_prog $file $destfile" 6126ef6fb4a5Smrg $run eval "$install_prog $file $destfile" || exit $? 61270cc67336Smrg fi 6128301ea0f4Smrg 6129ef6fb4a5Smrg # Install the old object if enabled. 6130ef6fb4a5Smrg if test "$build_old_libs" = yes; then 6131ef6fb4a5Smrg # Deduce the name of the old-style object file. 6132ef6fb4a5Smrg staticobj=`$echo "X$file" | $Xsed -e "$lo2o"` 6133301ea0f4Smrg 6134ef6fb4a5Smrg $show "$install_prog $staticobj $staticdest" 6135ef6fb4a5Smrg $run eval "$install_prog \$staticobj \$staticdest" || exit $? 6136ef6fb4a5Smrg fi 6137ef6fb4a5Smrg exit $EXIT_SUCCESS 6138ef6fb4a5Smrg ;; 6139301ea0f4Smrg 6140ef6fb4a5Smrg *) 6141ef6fb4a5Smrg # Figure out destination file name, if it wasn't already specified. 6142ef6fb4a5Smrg if test -n "$destname"; then 6143ef6fb4a5Smrg destfile="$destdir/$destname" 6144301ea0f4Smrg else 6145ef6fb4a5Smrg destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 6146ef6fb4a5Smrg destfile="$destdir/$destfile" 6147301ea0f4Smrg fi 6148301ea0f4Smrg 6149ef6fb4a5Smrg # If the file is missing, and there is a .exe on the end, strip it 6150ef6fb4a5Smrg # because it is most likely a libtool script we actually want to 6151ef6fb4a5Smrg # install 6152ef6fb4a5Smrg stripped_ext="" 6153ef6fb4a5Smrg case $file in 6154ef6fb4a5Smrg *.exe) 6155ef6fb4a5Smrg if test ! -f "$file"; then 6156ef6fb4a5Smrg file=`$echo $file|${SED} 's,.exe$,,'` 6157ef6fb4a5Smrg stripped_ext=".exe" 6158ef6fb4a5Smrg fi 6159ef6fb4a5Smrg ;; 6160ef6fb4a5Smrg esac 6161301ea0f4Smrg 6162ef6fb4a5Smrg # Do a test to see if this is really a libtool program. 6163ef6fb4a5Smrg case $host in 6164ef6fb4a5Smrg *cygwin*|*mingw*) 6165ef6fb4a5Smrg wrapper=`$echo $file | ${SED} -e 's,.exe$,,'` 6166ef6fb4a5Smrg ;; 6167ef6fb4a5Smrg *) 6168ef6fb4a5Smrg wrapper=$file 6169ef6fb4a5Smrg ;; 6170ef6fb4a5Smrg esac 6171ef6fb4a5Smrg if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then 6172ef6fb4a5Smrg notinst_deplibs= 6173ef6fb4a5Smrg relink_command= 6174301ea0f4Smrg 6175ef6fb4a5Smrg # Note that it is not necessary on cygwin/mingw to append a dot to 6176ef6fb4a5Smrg # foo even if both foo and FILE.exe exist: automatic-append-.exe 6177ef6fb4a5Smrg # behavior happens only for exec(3), not for open(2)! Also, sourcing 6178ef6fb4a5Smrg # `FILE.' does not work on cygwin managed mounts. 6179ef6fb4a5Smrg # 6180ef6fb4a5Smrg # If there is no directory component, then add one. 6181ef6fb4a5Smrg case $wrapper in 6182ef6fb4a5Smrg */* | *\\*) . ${wrapper} ;; 6183ef6fb4a5Smrg *) . ./${wrapper} ;; 6184ef6fb4a5Smrg esac 6185301ea0f4Smrg 6186ef6fb4a5Smrg # Check the variables that should have been set. 6187ef6fb4a5Smrg if test -z "$notinst_deplibs"; then 6188ef6fb4a5Smrg $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2 6189ef6fb4a5Smrg exit $EXIT_FAILURE 6190ef6fb4a5Smrg fi 6191301ea0f4Smrg 6192ef6fb4a5Smrg finalize=yes 6193ef6fb4a5Smrg for lib in $notinst_deplibs; do 6194ef6fb4a5Smrg # Check to see that each library is installed. 6195ef6fb4a5Smrg libdir= 6196ef6fb4a5Smrg if test -f "$lib"; then 6197ef6fb4a5Smrg # If there is no directory component, then add one. 6198ef6fb4a5Smrg case $lib in 6199ef6fb4a5Smrg */* | *\\*) . $lib ;; 6200ef6fb4a5Smrg *) . ./$lib ;; 6201ef6fb4a5Smrg esac 6202ef6fb4a5Smrg fi 6203ef6fb4a5Smrg libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test 6204ef6fb4a5Smrg if test -n "$libdir" && test ! -f "$libfile"; then 6205ef6fb4a5Smrg $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 6206ef6fb4a5Smrg finalize=no 6207ef6fb4a5Smrg fi 6208ef6fb4a5Smrg done 6209ef6fb4a5Smrg 6210ef6fb4a5Smrg relink_command= 6211ef6fb4a5Smrg # Note that it is not necessary on cygwin/mingw to append a dot to 6212ef6fb4a5Smrg # foo even if both foo and FILE.exe exist: automatic-append-.exe 6213ef6fb4a5Smrg # behavior happens only for exec(3), not for open(2)! Also, sourcing 6214ef6fb4a5Smrg # `FILE.' does not work on cygwin managed mounts. 6215ef6fb4a5Smrg # 6216ef6fb4a5Smrg # If there is no directory component, then add one. 6217ef6fb4a5Smrg case $wrapper in 6218ef6fb4a5Smrg */* | *\\*) . ${wrapper} ;; 6219ef6fb4a5Smrg *) . ./${wrapper} ;; 6220ef6fb4a5Smrg esac 6221ef6fb4a5Smrg 6222ef6fb4a5Smrg outputname= 6223ef6fb4a5Smrg if test "$fast_install" = no && test -n "$relink_command"; then 6224ef6fb4a5Smrg if test "$finalize" = yes && test -z "$run"; then 6225ef6fb4a5Smrg tmpdir=`func_mktempdir` 6226ef6fb4a5Smrg file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'` 6227ef6fb4a5Smrg outputname="$tmpdir/$file" 6228ef6fb4a5Smrg # Replace the output file specification. 6229ef6fb4a5Smrg relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g' | $NL2SP` 6230ef6fb4a5Smrg 6231ef6fb4a5Smrg $show "$relink_command" 6232ef6fb4a5Smrg if $run eval "$relink_command"; then : 6233ef6fb4a5Smrg else 6234ef6fb4a5Smrg $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 6235ef6fb4a5Smrg ${rm}r "$tmpdir" 6236ef6fb4a5Smrg continue 6237ef6fb4a5Smrg fi 6238ef6fb4a5Smrg file="$outputname" 6239ef6fb4a5Smrg else 6240ef6fb4a5Smrg $echo "$modename: warning: cannot relink \`$file'" 1>&2 6241ef6fb4a5Smrg fi 62420cc67336Smrg else 6243ef6fb4a5Smrg # Install the binary that we compiled earlier. 6244ef6fb4a5Smrg file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` 62450cc67336Smrg fi 6246ef6fb4a5Smrg fi 6247301ea0f4Smrg 6248ef6fb4a5Smrg # remove .exe since cygwin /usr/bin/install will append another 6249ef6fb4a5Smrg # one anyway 6250ef6fb4a5Smrg case $install_prog,$host in 6251ef6fb4a5Smrg */usr/bin/install*,*cygwin*) 6252ef6fb4a5Smrg case $file:$destfile in 6253ef6fb4a5Smrg *.exe:*.exe) 6254ef6fb4a5Smrg # this is ok 6255ef6fb4a5Smrg ;; 6256ef6fb4a5Smrg *.exe:*) 6257ef6fb4a5Smrg destfile=$destfile.exe 6258ef6fb4a5Smrg ;; 6259ef6fb4a5Smrg *:*.exe) 6260ef6fb4a5Smrg destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'` 6261ef6fb4a5Smrg ;; 6262ef6fb4a5Smrg esac 6263ef6fb4a5Smrg ;; 6264301ea0f4Smrg esac 6265ef6fb4a5Smrg $show "$install_prog$stripme $file $destfile" 6266ef6fb4a5Smrg $run eval "$install_prog\$stripme \$file \$destfile" || exit $? 6267ef6fb4a5Smrg test -n "$outputname" && ${rm}r "$tmpdir" 6268ef6fb4a5Smrg ;; 6269ef6fb4a5Smrg esac 6270ef6fb4a5Smrg done 6271301ea0f4Smrg 6272ef6fb4a5Smrg for file in $staticlibs; do 6273ef6fb4a5Smrg name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 6274301ea0f4Smrg 6275ef6fb4a5Smrg # Set up the ranlib parameters. 6276ef6fb4a5Smrg oldlib="$destdir/$name" 6277301ea0f4Smrg 6278ef6fb4a5Smrg $show "$install_prog $file $oldlib" 6279ef6fb4a5Smrg $run eval "$install_prog \$file \$oldlib" || exit $? 6280301ea0f4Smrg 6281ef6fb4a5Smrg if test -n "$stripme" && test -n "$old_striplib"; then 6282ef6fb4a5Smrg $show "$old_striplib $oldlib" 6283ef6fb4a5Smrg $run eval "$old_striplib $oldlib" || exit $? 6284301ea0f4Smrg fi 6285301ea0f4Smrg 6286ef6fb4a5Smrg # Do each command in the postinstall commands. 6287ef6fb4a5Smrg cmds=$old_postinstall_cmds 6288ef6fb4a5Smrg save_ifs="$IFS"; IFS='~' 6289ef6fb4a5Smrg for cmd in $cmds; do 6290ef6fb4a5Smrg IFS="$save_ifs" 6291ef6fb4a5Smrg eval cmd=\"$cmd\" 6292ef6fb4a5Smrg $show "$cmd" 6293ef6fb4a5Smrg $run eval "$cmd" || exit $? 6294ef6fb4a5Smrg done 6295ef6fb4a5Smrg IFS="$save_ifs" 6296ef6fb4a5Smrg done 6297301ea0f4Smrg 6298ef6fb4a5Smrg if test -n "$future_libdirs"; then 6299ef6fb4a5Smrg $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2 6300ef6fb4a5Smrg fi 6301301ea0f4Smrg 6302ef6fb4a5Smrg if test -n "$current_libdirs"; then 6303ef6fb4a5Smrg # Maybe just do a dry run. 6304ef6fb4a5Smrg test -n "$run" && current_libdirs=" -n$current_libdirs" 6305ef6fb4a5Smrg exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' 6306ef6fb4a5Smrg else 6307ef6fb4a5Smrg exit $EXIT_SUCCESS 6308ef6fb4a5Smrg fi 6309ef6fb4a5Smrg ;; 6310301ea0f4Smrg 6311ef6fb4a5Smrg # libtool finish mode 6312ef6fb4a5Smrg finish) 6313ef6fb4a5Smrg modename="$modename: finish" 6314ef6fb4a5Smrg libdirs="$nonopt" 6315ef6fb4a5Smrg admincmds= 6316301ea0f4Smrg 6317ef6fb4a5Smrg if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then 6318ef6fb4a5Smrg for dir 6319ef6fb4a5Smrg do 6320ef6fb4a5Smrg libdirs="$libdirs $dir" 6321ef6fb4a5Smrg done 6322301ea0f4Smrg 6323ef6fb4a5Smrg for libdir in $libdirs; do 6324ef6fb4a5Smrg if test -n "$finish_cmds"; then 6325ef6fb4a5Smrg # Do each command in the finish commands. 6326ef6fb4a5Smrg cmds=$finish_cmds 6327ef6fb4a5Smrg save_ifs="$IFS"; IFS='~' 6328ef6fb4a5Smrg for cmd in $cmds; do 6329ef6fb4a5Smrg IFS="$save_ifs" 6330ef6fb4a5Smrg eval cmd=\"$cmd\" 6331ef6fb4a5Smrg $show "$cmd" 6332ef6fb4a5Smrg $run eval "$cmd" || admincmds="$admincmds 6333ef6fb4a5Smrg $cmd" 6334301ea0f4Smrg done 6335ef6fb4a5Smrg IFS="$save_ifs" 6336301ea0f4Smrg fi 6337ef6fb4a5Smrg if test -n "$finish_eval"; then 6338ef6fb4a5Smrg # Do the single finish_eval. 6339ef6fb4a5Smrg eval cmds=\"$finish_eval\" 6340ef6fb4a5Smrg $run eval "$cmds" || admincmds="$admincmds 6341ef6fb4a5Smrg $cmds" 63420cc67336Smrg fi 6343ef6fb4a5Smrg done 6344ef6fb4a5Smrg fi 6345ef6fb4a5Smrg 6346ef6fb4a5Smrg # Exit here if they wanted silent mode. 6347ef6fb4a5Smrg test "$show" = : && exit $EXIT_SUCCESS 6348ef6fb4a5Smrg 6349ef6fb4a5Smrg $echo "X----------------------------------------------------------------------" | $Xsed 6350ef6fb4a5Smrg $echo "Libraries have been installed in:" 6351ef6fb4a5Smrg for libdir in $libdirs; do 6352ef6fb4a5Smrg $echo " $libdir" 6353301ea0f4Smrg done 6354ef6fb4a5Smrg $echo 6355ef6fb4a5Smrg $echo "If you ever happen to want to link against installed libraries" 6356ef6fb4a5Smrg $echo "in a given directory, LIBDIR, you must either use libtool, and" 6357ef6fb4a5Smrg $echo "specify the full pathname of the library, or use the \`-LLIBDIR'" 6358ef6fb4a5Smrg $echo "flag during linking and do at least one of the following:" 6359ef6fb4a5Smrg if test -n "$shlibpath_var"; then 6360ef6fb4a5Smrg $echo " - add LIBDIR to the \`$shlibpath_var' environment variable" 6361ef6fb4a5Smrg $echo " during execution" 6362ef6fb4a5Smrg fi 6363ef6fb4a5Smrg if test -n "$runpath_var"; then 6364ef6fb4a5Smrg $echo " - add LIBDIR to the \`$runpath_var' environment variable" 6365ef6fb4a5Smrg $echo " during linking" 6366ef6fb4a5Smrg fi 6367ef6fb4a5Smrg if test -n "$hardcode_libdir_flag_spec"; then 6368ef6fb4a5Smrg libdir=LIBDIR 6369ef6fb4a5Smrg eval flag=\"$hardcode_libdir_flag_spec\" 6370301ea0f4Smrg 6371ef6fb4a5Smrg $echo " - use the \`$flag' linker flag" 6372ef6fb4a5Smrg fi 6373ef6fb4a5Smrg if test -n "$admincmds"; then 6374ef6fb4a5Smrg $echo " - have your system administrator run these commands:$admincmds" 6375ef6fb4a5Smrg fi 6376ef6fb4a5Smrg if test -f /etc/ld.so.conf; then 6377ef6fb4a5Smrg $echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" 6378ef6fb4a5Smrg fi 6379ef6fb4a5Smrg $echo 6380ef6fb4a5Smrg $echo "See any operating system documentation about shared libraries for" 6381ef6fb4a5Smrg $echo "more information, such as the ld(1) and ld.so(8) manual pages." 6382ef6fb4a5Smrg $echo "X----------------------------------------------------------------------" | $Xsed 6383ef6fb4a5Smrg exit $EXIT_SUCCESS 6384ef6fb4a5Smrg ;; 6385301ea0f4Smrg 6386ef6fb4a5Smrg # libtool execute mode 6387ef6fb4a5Smrg execute) 6388ef6fb4a5Smrg modename="$modename: execute" 6389301ea0f4Smrg 6390ef6fb4a5Smrg # The first argument is the command name. 6391ef6fb4a5Smrg cmd="$nonopt" 6392ef6fb4a5Smrg if test -z "$cmd"; then 6393ef6fb4a5Smrg $echo "$modename: you must specify a COMMAND" 1>&2 6394ef6fb4a5Smrg $echo "$help" 6395ef6fb4a5Smrg exit $EXIT_FAILURE 6396ef6fb4a5Smrg fi 6397301ea0f4Smrg 6398ef6fb4a5Smrg # Handle -dlopen flags immediately. 6399ef6fb4a5Smrg for file in $execute_dlfiles; do 6400ef6fb4a5Smrg if test ! -f "$file"; then 6401ef6fb4a5Smrg $echo "$modename: \`$file' is not a file" 1>&2 6402ef6fb4a5Smrg $echo "$help" 1>&2 6403ef6fb4a5Smrg exit $EXIT_FAILURE 6404ef6fb4a5Smrg fi 64050cc67336Smrg 6406ef6fb4a5Smrg dir= 6407ef6fb4a5Smrg case $file in 6408ef6fb4a5Smrg *.la) 6409ef6fb4a5Smrg # Check to see that this really is a libtool archive. 6410ef6fb4a5Smrg if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : 6411ef6fb4a5Smrg else 6412ef6fb4a5Smrg $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 6413ef6fb4a5Smrg $echo "$help" 1>&2 6414ef6fb4a5Smrg exit $EXIT_FAILURE 6415ef6fb4a5Smrg fi 6416301ea0f4Smrg 6417ef6fb4a5Smrg # Read the libtool library. 6418ef6fb4a5Smrg dlname= 6419ef6fb4a5Smrg library_names= 6420301ea0f4Smrg 6421ef6fb4a5Smrg # If there is no directory component, then add one. 6422ef6fb4a5Smrg case $file in 6423ef6fb4a5Smrg */* | *\\*) . $file ;; 6424ef6fb4a5Smrg *) . ./$file ;; 6425ef6fb4a5Smrg esac 6426301ea0f4Smrg 6427ef6fb4a5Smrg # Skip this library if it cannot be dlopened. 6428ef6fb4a5Smrg if test -z "$dlname"; then 6429ef6fb4a5Smrg # Warn if it was a shared library. 6430ef6fb4a5Smrg test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'" 6431ef6fb4a5Smrg continue 6432ef6fb4a5Smrg fi 6433301ea0f4Smrg 6434ef6fb4a5Smrg dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` 6435ef6fb4a5Smrg test "X$dir" = "X$file" && dir=. 6436301ea0f4Smrg 6437ef6fb4a5Smrg if test -f "$dir/$objdir/$dlname"; then 6438ef6fb4a5Smrg dir="$dir/$objdir" 6439ef6fb4a5Smrg else 6440ef6fb4a5Smrg if test ! -f "$dir/$dlname"; then 6441ef6fb4a5Smrg $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 6442ef6fb4a5Smrg exit $EXIT_FAILURE 6443ef6fb4a5Smrg fi 6444ef6fb4a5Smrg fi 6445ef6fb4a5Smrg ;; 6446301ea0f4Smrg 6447ef6fb4a5Smrg *.lo) 6448ef6fb4a5Smrg # Just add the directory containing the .lo file. 6449ef6fb4a5Smrg dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` 6450ef6fb4a5Smrg test "X$dir" = "X$file" && dir=. 6451ef6fb4a5Smrg ;; 6452301ea0f4Smrg 6453ef6fb4a5Smrg *) 6454ef6fb4a5Smrg $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2 6455ef6fb4a5Smrg continue 6456ef6fb4a5Smrg ;; 6457ef6fb4a5Smrg esac 6458301ea0f4Smrg 6459ef6fb4a5Smrg # Get the absolute pathname. 6460ef6fb4a5Smrg absdir=`cd "$dir" && pwd` 6461ef6fb4a5Smrg test -n "$absdir" && dir="$absdir" 6462301ea0f4Smrg 6463ef6fb4a5Smrg # Now add the directory to shlibpath_var. 6464ef6fb4a5Smrg if eval "test -z \"\$$shlibpath_var\""; then 6465ef6fb4a5Smrg eval "$shlibpath_var=\"\$dir\"" 6466ef6fb4a5Smrg else 6467ef6fb4a5Smrg eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" 6468ef6fb4a5Smrg fi 6469ef6fb4a5Smrg done 6470301ea0f4Smrg 6471ef6fb4a5Smrg # This variable tells wrapper scripts just to set shlibpath_var 6472ef6fb4a5Smrg # rather than running their programs. 6473ef6fb4a5Smrg libtool_execute_magic="$magic" 6474301ea0f4Smrg 6475ef6fb4a5Smrg # Check if any of the arguments is a wrapper script. 6476ef6fb4a5Smrg args= 6477ef6fb4a5Smrg for file 6478ef6fb4a5Smrg do 6479ef6fb4a5Smrg case $file in 6480ef6fb4a5Smrg -*) ;; 6481ef6fb4a5Smrg *) 6482ef6fb4a5Smrg # Do a test to see if this is really a libtool program. 6483ef6fb4a5Smrg if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 6484ef6fb4a5Smrg # If there is no directory component, then add one. 6485ef6fb4a5Smrg case $file in 6486ef6fb4a5Smrg */* | *\\*) . $file ;; 6487ef6fb4a5Smrg *) . ./$file ;; 6488ef6fb4a5Smrg esac 6489301ea0f4Smrg 6490ef6fb4a5Smrg # Transform arg to wrapped name. 6491ef6fb4a5Smrg file="$progdir/$program" 6492ef6fb4a5Smrg fi 6493ef6fb4a5Smrg ;; 6494ef6fb4a5Smrg esac 6495ef6fb4a5Smrg # Quote arguments (to preserve shell metacharacters). 6496ef6fb4a5Smrg file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"` 6497ef6fb4a5Smrg args="$args \"$file\"" 6498ef6fb4a5Smrg done 6499301ea0f4Smrg 6500ef6fb4a5Smrg if test -z "$run"; then 6501ef6fb4a5Smrg if test -n "$shlibpath_var"; then 6502ef6fb4a5Smrg # Export the shlibpath_var. 6503ef6fb4a5Smrg eval "export $shlibpath_var" 6504ef6fb4a5Smrg fi 6505ef6fb4a5Smrg 6506ef6fb4a5Smrg # Restore saved environment variables 6507ef6fb4a5Smrg for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 6508ef6fb4a5Smrg do 6509ef6fb4a5Smrg eval "if test \"\${save_$lt_var+set}\" = set; then 6510ef6fb4a5Smrg $lt_var=\$save_$lt_var; export $lt_var 6511ef6fb4a5Smrg fi" 6512ef6fb4a5Smrg done 6513301ea0f4Smrg 6514ef6fb4a5Smrg # Now prepare to actually exec the command. 6515ef6fb4a5Smrg exec_cmd="\$cmd$args" 6516ef6fb4a5Smrg else 6517ef6fb4a5Smrg # Display what would be done. 6518ef6fb4a5Smrg if test -n "$shlibpath_var"; then 6519ef6fb4a5Smrg eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\"" 6520ef6fb4a5Smrg $echo "export $shlibpath_var" 6521ef6fb4a5Smrg fi 6522ef6fb4a5Smrg $echo "$cmd$args" 6523ef6fb4a5Smrg exit $EXIT_SUCCESS 6524ef6fb4a5Smrg fi 6525ef6fb4a5Smrg ;; 6526301ea0f4Smrg 6527ef6fb4a5Smrg # libtool clean and uninstall mode 6528ef6fb4a5Smrg clean | uninstall) 6529ef6fb4a5Smrg modename="$modename: $mode" 6530ef6fb4a5Smrg rm="$nonopt" 6531301ea0f4Smrg files= 6532301ea0f4Smrg rmforce= 6533301ea0f4Smrg exit_status=0 6534301ea0f4Smrg 6535301ea0f4Smrg # This variable tells wrapper scripts just to set variables rather 6536301ea0f4Smrg # than running their programs. 6537301ea0f4Smrg libtool_install_magic="$magic" 6538301ea0f4Smrg 6539301ea0f4Smrg for arg 6540301ea0f4Smrg do 6541301ea0f4Smrg case $arg in 6542ef6fb4a5Smrg -f) rm="$rm $arg"; rmforce=yes ;; 6543ef6fb4a5Smrg -*) rm="$rm $arg" ;; 6544301ea0f4Smrg *) files="$files $arg" ;; 6545301ea0f4Smrg esac 6546301ea0f4Smrg done 6547301ea0f4Smrg 6548ef6fb4a5Smrg if test -z "$rm"; then 6549ef6fb4a5Smrg $echo "$modename: you must specify an RM program" 1>&2 6550ef6fb4a5Smrg $echo "$help" 1>&2 6551ef6fb4a5Smrg exit $EXIT_FAILURE 6552ef6fb4a5Smrg fi 6553301ea0f4Smrg 6554301ea0f4Smrg rmdirs= 6555301ea0f4Smrg 6556301ea0f4Smrg origobjdir="$objdir" 6557301ea0f4Smrg for file in $files; do 6558ef6fb4a5Smrg dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` 6559ef6fb4a5Smrg if test "X$dir" = "X$file"; then 6560ef6fb4a5Smrg dir=. 6561301ea0f4Smrg objdir="$origobjdir" 6562301ea0f4Smrg else 6563301ea0f4Smrg objdir="$dir/$origobjdir" 6564301ea0f4Smrg fi 6565ef6fb4a5Smrg name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 6566301ea0f4Smrg test "$mode" = uninstall && objdir="$dir" 6567301ea0f4Smrg 6568301ea0f4Smrg # Remember objdir for removal later, being careful to avoid duplicates 6569301ea0f4Smrg if test "$mode" = clean; then 6570301ea0f4Smrg case " $rmdirs " in 6571301ea0f4Smrg *" $objdir "*) ;; 6572301ea0f4Smrg *) rmdirs="$rmdirs $objdir" ;; 6573301ea0f4Smrg esac 6574301ea0f4Smrg fi 6575301ea0f4Smrg 6576301ea0f4Smrg # Don't error if the file doesn't exist and rm -f was used. 6577ef6fb4a5Smrg if (test -L "$file") >/dev/null 2>&1 \ 6578ef6fb4a5Smrg || (test -h "$file") >/dev/null 2>&1 \ 6579ef6fb4a5Smrg || test -f "$file"; then 6580301ea0f4Smrg : 6581301ea0f4Smrg elif test -d "$file"; then 6582301ea0f4Smrg exit_status=1 6583301ea0f4Smrg continue 6584301ea0f4Smrg elif test "$rmforce" = yes; then 6585301ea0f4Smrg continue 6586301ea0f4Smrg fi 6587301ea0f4Smrg 6588301ea0f4Smrg rmfiles="$file" 6589301ea0f4Smrg 6590301ea0f4Smrg case $name in 6591301ea0f4Smrg *.la) 6592301ea0f4Smrg # Possibly a libtool archive, so verify it. 6593ef6fb4a5Smrg if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 6594ef6fb4a5Smrg . $dir/$name 6595301ea0f4Smrg 6596301ea0f4Smrg # Delete the libtool libraries and symlinks. 6597301ea0f4Smrg for n in $library_names; do 6598301ea0f4Smrg rmfiles="$rmfiles $objdir/$n" 6599301ea0f4Smrg done 6600301ea0f4Smrg test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" 6601301ea0f4Smrg 6602301ea0f4Smrg case "$mode" in 6603301ea0f4Smrg clean) 6604301ea0f4Smrg case " $library_names " in 6605301ea0f4Smrg # " " in the beginning catches empty $dlname 6606301ea0f4Smrg *" $dlname "*) ;; 6607301ea0f4Smrg *) rmfiles="$rmfiles $objdir/$dlname" ;; 6608301ea0f4Smrg esac 6609ef6fb4a5Smrg test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" 6610301ea0f4Smrg ;; 6611301ea0f4Smrg uninstall) 6612301ea0f4Smrg if test -n "$library_names"; then 6613301ea0f4Smrg # Do each command in the postuninstall commands. 6614ef6fb4a5Smrg cmds=$postuninstall_cmds 6615ef6fb4a5Smrg save_ifs="$IFS"; IFS='~' 6616ef6fb4a5Smrg for cmd in $cmds; do 6617ef6fb4a5Smrg IFS="$save_ifs" 6618ef6fb4a5Smrg eval cmd=\"$cmd\" 6619ef6fb4a5Smrg $show "$cmd" 6620ef6fb4a5Smrg $run eval "$cmd" 6621ef6fb4a5Smrg if test "$?" -ne 0 && test "$rmforce" != yes; then 6622ef6fb4a5Smrg exit_status=1 6623ef6fb4a5Smrg fi 6624ef6fb4a5Smrg done 6625ef6fb4a5Smrg IFS="$save_ifs" 6626301ea0f4Smrg fi 6627301ea0f4Smrg 6628301ea0f4Smrg if test -n "$old_library"; then 6629301ea0f4Smrg # Do each command in the old_postuninstall commands. 6630ef6fb4a5Smrg cmds=$old_postuninstall_cmds 6631ef6fb4a5Smrg save_ifs="$IFS"; IFS='~' 6632ef6fb4a5Smrg for cmd in $cmds; do 6633ef6fb4a5Smrg IFS="$save_ifs" 6634ef6fb4a5Smrg eval cmd=\"$cmd\" 6635ef6fb4a5Smrg $show "$cmd" 6636ef6fb4a5Smrg $run eval "$cmd" 6637ef6fb4a5Smrg if test "$?" -ne 0 && test "$rmforce" != yes; then 6638ef6fb4a5Smrg exit_status=1 6639ef6fb4a5Smrg fi 6640ef6fb4a5Smrg done 6641ef6fb4a5Smrg IFS="$save_ifs" 6642301ea0f4Smrg fi 6643301ea0f4Smrg # FIXME: should reinstall the best remaining shared library. 6644301ea0f4Smrg ;; 6645301ea0f4Smrg esac 6646301ea0f4Smrg fi 6647301ea0f4Smrg ;; 6648301ea0f4Smrg 6649301ea0f4Smrg *.lo) 6650301ea0f4Smrg # Possibly a libtool object, so verify it. 6651ef6fb4a5Smrg if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 6652301ea0f4Smrg 6653301ea0f4Smrg # Read the .lo file 6654ef6fb4a5Smrg . $dir/$name 6655301ea0f4Smrg 6656301ea0f4Smrg # Add PIC object to the list of files to remove. 6657ef6fb4a5Smrg if test -n "$pic_object" \ 6658ef6fb4a5Smrg && test "$pic_object" != none; then 6659301ea0f4Smrg rmfiles="$rmfiles $dir/$pic_object" 6660301ea0f4Smrg fi 6661301ea0f4Smrg 6662301ea0f4Smrg # Add non-PIC object to the list of files to remove. 6663ef6fb4a5Smrg if test -n "$non_pic_object" \ 6664ef6fb4a5Smrg && test "$non_pic_object" != none; then 6665301ea0f4Smrg rmfiles="$rmfiles $dir/$non_pic_object" 6666301ea0f4Smrg fi 6667301ea0f4Smrg fi 6668301ea0f4Smrg ;; 6669301ea0f4Smrg 6670301ea0f4Smrg *) 6671301ea0f4Smrg if test "$mode" = clean ; then 6672301ea0f4Smrg noexename=$name 6673301ea0f4Smrg case $file in 6674301ea0f4Smrg *.exe) 6675ef6fb4a5Smrg file=`$echo $file|${SED} 's,.exe$,,'` 6676ef6fb4a5Smrg noexename=`$echo $name|${SED} 's,.exe$,,'` 6677301ea0f4Smrg # $file with .exe has already been added to rmfiles, 6678301ea0f4Smrg # add $file without .exe 6679301ea0f4Smrg rmfiles="$rmfiles $file" 6680301ea0f4Smrg ;; 6681301ea0f4Smrg esac 6682301ea0f4Smrg # Do a test to see if this is a libtool program. 6683ef6fb4a5Smrg if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 6684ef6fb4a5Smrg relink_command= 6685ef6fb4a5Smrg . $dir/$noexename 6686301ea0f4Smrg 6687301ea0f4Smrg # note $name still contains .exe if it was in $file originally 6688301ea0f4Smrg # as does the version of $file that was added into $rmfiles 6689301ea0f4Smrg rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" 6690301ea0f4Smrg if test "$fast_install" = yes && test -n "$relink_command"; then 6691301ea0f4Smrg rmfiles="$rmfiles $objdir/lt-$name" 6692301ea0f4Smrg fi 6693301ea0f4Smrg if test "X$noexename" != "X$name" ; then 6694301ea0f4Smrg rmfiles="$rmfiles $objdir/lt-${noexename}.c" 6695301ea0f4Smrg fi 6696301ea0f4Smrg fi 6697301ea0f4Smrg fi 6698301ea0f4Smrg ;; 6699301ea0f4Smrg esac 6700ef6fb4a5Smrg $show "$rm $rmfiles" 6701ef6fb4a5Smrg $run $rm $rmfiles || exit_status=1 6702301ea0f4Smrg done 6703301ea0f4Smrg objdir="$origobjdir" 6704301ea0f4Smrg 6705301ea0f4Smrg # Try to remove the ${objdir}s in the directories where we deleted files 6706301ea0f4Smrg for dir in $rmdirs; do 6707301ea0f4Smrg if test -d "$dir"; then 6708ef6fb4a5Smrg $show "rmdir $dir" 6709ef6fb4a5Smrg $run rmdir $dir >/dev/null 2>&1 6710301ea0f4Smrg fi 6711301ea0f4Smrg done 6712301ea0f4Smrg 6713301ea0f4Smrg exit $exit_status 6714ef6fb4a5Smrg ;; 6715301ea0f4Smrg 6716ef6fb4a5Smrg "") 6717ef6fb4a5Smrg $echo "$modename: you must specify a MODE" 1>&2 6718ef6fb4a5Smrg $echo "$generic_help" 1>&2 6719ef6fb4a5Smrg exit $EXIT_FAILURE 6720ef6fb4a5Smrg ;; 6721ef6fb4a5Smrg esac 67220cc67336Smrg 6723ef6fb4a5Smrg if test -z "$exec_cmd"; then 6724ef6fb4a5Smrg $echo "$modename: invalid operation mode \`$mode'" 1>&2 6725ef6fb4a5Smrg $echo "$generic_help" 1>&2 6726ef6fb4a5Smrg exit $EXIT_FAILURE 6727ef6fb4a5Smrg fi 6728ef6fb4a5Smrgfi # test -z "$show_help" 6729301ea0f4Smrg 6730301ea0f4Smrgif test -n "$exec_cmd"; then 6731ef6fb4a5Smrg eval exec $exec_cmd 6732301ea0f4Smrg exit $EXIT_FAILURE 6733301ea0f4Smrgfi 6734301ea0f4Smrg 6735ef6fb4a5Smrg# We need to display help for each of the modes. 6736ef6fb4a5Smrgcase $mode in 6737ef6fb4a5Smrg"") $echo \ 6738ef6fb4a5Smrg"Usage: $modename [OPTION]... [MODE-ARG]... 6739ef6fb4a5Smrg 6740ef6fb4a5SmrgProvide generalized library-building support services. 6741ef6fb4a5Smrg 6742ef6fb4a5Smrg --config show all configuration variables 6743ef6fb4a5Smrg --debug enable verbose shell tracing 6744ef6fb4a5Smrg-n, --dry-run display commands without modifying any files 6745ef6fb4a5Smrg --features display basic configuration information and exit 6746ef6fb4a5Smrg --finish same as \`--mode=finish' 6747ef6fb4a5Smrg --help display this help message and exit 6748ef6fb4a5Smrg --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] 6749ef6fb4a5Smrg --quiet same as \`--silent' 6750ef6fb4a5Smrg --silent don't print informational messages 6751ef6fb4a5Smrg --tag=TAG use configuration variables from tag TAG 6752ef6fb4a5Smrg --version print version information 6753ef6fb4a5Smrg 6754ef6fb4a5SmrgMODE must be one of the following: 6755ef6fb4a5Smrg 6756ef6fb4a5Smrg clean remove files from the build directory 6757ef6fb4a5Smrg compile compile a source file into a libtool object 6758ef6fb4a5Smrg execute automatically set library path, then run a program 6759ef6fb4a5Smrg finish complete the installation of libtool libraries 6760ef6fb4a5Smrg install install libraries or executables 6761ef6fb4a5Smrg link create a library or an executable 6762ef6fb4a5Smrg uninstall remove libraries from an installed directory 6763ef6fb4a5Smrg 6764ef6fb4a5SmrgMODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for 6765ef6fb4a5Smrga more detailed description of MODE. 6766ef6fb4a5Smrg 6767ef6fb4a5SmrgReport bugs to <bug-libtool@gnu.org>." 6768ef6fb4a5Smrg exit $EXIT_SUCCESS 6769ef6fb4a5Smrg ;; 6770ef6fb4a5Smrg 6771ef6fb4a5Smrgclean) 6772ef6fb4a5Smrg $echo \ 6773ef6fb4a5Smrg"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE... 6774ef6fb4a5Smrg 6775ef6fb4a5SmrgRemove files from the build directory. 6776ef6fb4a5Smrg 6777ef6fb4a5SmrgRM is the name of the program to use to delete files associated with each FILE 6778ef6fb4a5Smrg(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 6779ef6fb4a5Smrgto RM. 6780ef6fb4a5Smrg 6781ef6fb4a5SmrgIf FILE is a libtool library, object or program, all the files associated 6782ef6fb4a5Smrgwith it are deleted. Otherwise, only FILE itself is deleted using RM." 6783ef6fb4a5Smrg ;; 6784ef6fb4a5Smrg 6785ef6fb4a5Smrgcompile) 6786ef6fb4a5Smrg $echo \ 6787ef6fb4a5Smrg"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE 6788ef6fb4a5Smrg 6789ef6fb4a5SmrgCompile a source file into a libtool library object. 6790ef6fb4a5Smrg 6791ef6fb4a5SmrgThis mode accepts the following additional options: 6792ef6fb4a5Smrg 6793ef6fb4a5Smrg -o OUTPUT-FILE set the output file name to OUTPUT-FILE 6794ef6fb4a5Smrg -prefer-pic try to building PIC objects only 6795ef6fb4a5Smrg -prefer-non-pic try to building non-PIC objects only 6796ef6fb4a5Smrg -static always build a \`.o' file suitable for static linking 6797ef6fb4a5Smrg 6798ef6fb4a5SmrgCOMPILE-COMMAND is a command to be used in creating a \`standard' object file 6799ef6fb4a5Smrgfrom the given SOURCEFILE. 6800ef6fb4a5Smrg 6801ef6fb4a5SmrgThe output file name is determined by removing the directory component from 6802ef6fb4a5SmrgSOURCEFILE, then substituting the C source code suffix \`.c' with the 6803ef6fb4a5Smrglibrary object suffix, \`.lo'." 6804ef6fb4a5Smrg ;; 6805ef6fb4a5Smrg 6806ef6fb4a5Smrgexecute) 6807ef6fb4a5Smrg $echo \ 6808ef6fb4a5Smrg"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]... 6809ef6fb4a5Smrg 6810ef6fb4a5SmrgAutomatically set library path, then run a program. 6811ef6fb4a5Smrg 6812ef6fb4a5SmrgThis mode accepts the following additional options: 6813ef6fb4a5Smrg 6814ef6fb4a5Smrg -dlopen FILE add the directory containing FILE to the library path 6815ef6fb4a5Smrg 6816ef6fb4a5SmrgThis mode sets the library path environment variable according to \`-dlopen' 6817ef6fb4a5Smrgflags. 6818ef6fb4a5Smrg 6819ef6fb4a5SmrgIf any of the ARGS are libtool executable wrappers, then they are translated 6820ef6fb4a5Smrginto their corresponding uninstalled binary, and any of their required library 6821ef6fb4a5Smrgdirectories are added to the library path. 6822ef6fb4a5Smrg 6823ef6fb4a5SmrgThen, COMMAND is executed, with ARGS as arguments." 6824ef6fb4a5Smrg ;; 6825ef6fb4a5Smrg 6826ef6fb4a5Smrgfinish) 6827ef6fb4a5Smrg $echo \ 6828ef6fb4a5Smrg"Usage: $modename [OPTION]... --mode=finish [LIBDIR]... 6829ef6fb4a5Smrg 6830ef6fb4a5SmrgComplete the installation of libtool libraries. 6831ef6fb4a5Smrg 6832ef6fb4a5SmrgEach LIBDIR is a directory that contains libtool libraries. 6833ef6fb4a5Smrg 6834ef6fb4a5SmrgThe commands that this mode executes may require superuser privileges. Use 6835ef6fb4a5Smrgthe \`--dry-run' option if you just want to see what would be executed." 6836ef6fb4a5Smrg ;; 6837ef6fb4a5Smrg 6838ef6fb4a5Smrginstall) 6839ef6fb4a5Smrg $echo \ 6840ef6fb4a5Smrg"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND... 6841ef6fb4a5Smrg 6842ef6fb4a5SmrgInstall executables or libraries. 6843ef6fb4a5Smrg 6844ef6fb4a5SmrgINSTALL-COMMAND is the installation command. The first component should be 6845ef6fb4a5Smrgeither the \`install' or \`cp' program. 6846ef6fb4a5Smrg 6847ef6fb4a5SmrgThe rest of the components are interpreted as arguments to that command (only 6848ef6fb4a5SmrgBSD-compatible install options are recognized)." 6849ef6fb4a5Smrg ;; 6850ef6fb4a5Smrg 6851ef6fb4a5Smrglink) 6852ef6fb4a5Smrg $echo \ 6853ef6fb4a5Smrg"Usage: $modename [OPTION]... --mode=link LINK-COMMAND... 6854ef6fb4a5Smrg 6855ef6fb4a5SmrgLink object files or libraries together to form another library, or to 6856ef6fb4a5Smrgcreate an executable program. 6857301ea0f4Smrg 6858ef6fb4a5SmrgLINK-COMMAND is a command using the C compiler that you would use to create 6859ef6fb4a5Smrga program from several object files. 6860ef6fb4a5Smrg 6861ef6fb4a5SmrgThe following components of LINK-COMMAND are treated specially: 6862ef6fb4a5Smrg 6863ef6fb4a5Smrg -all-static do not do any dynamic linking at all 6864ef6fb4a5Smrg -avoid-version do not add a version suffix if possible 6865ef6fb4a5Smrg -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime 6866ef6fb4a5Smrg -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols 6867ef6fb4a5Smrg -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) 6868ef6fb4a5Smrg -export-symbols SYMFILE 6869ef6fb4a5Smrg try to export only the symbols listed in SYMFILE 6870ef6fb4a5Smrg -export-symbols-regex REGEX 6871ef6fb4a5Smrg try to export only the symbols matching REGEX 6872ef6fb4a5Smrg -LLIBDIR search LIBDIR for required installed libraries 6873ef6fb4a5Smrg -lNAME OUTPUT-FILE requires the installed library libNAME 6874ef6fb4a5Smrg -module build a library that can dlopened 6875ef6fb4a5Smrg -no-fast-install disable the fast-install mode 6876ef6fb4a5Smrg -no-install link a not-installable executable 6877ef6fb4a5Smrg -no-undefined declare that a library does not refer to external symbols 6878ef6fb4a5Smrg -o OUTPUT-FILE create OUTPUT-FILE from the specified objects 6879ef6fb4a5Smrg -objectlist FILE Use a list of object files found in FILE to specify objects 6880ef6fb4a5Smrg -precious-files-regex REGEX 6881ef6fb4a5Smrg don't remove output files matching REGEX 6882ef6fb4a5Smrg -release RELEASE specify package release information 6883ef6fb4a5Smrg -rpath LIBDIR the created library will eventually be installed in LIBDIR 6884ef6fb4a5Smrg -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries 6885ef6fb4a5Smrg -static do not do any dynamic linking of uninstalled libtool libraries 6886ef6fb4a5Smrg -static-libtool-libs 6887ef6fb4a5Smrg do not do any dynamic linking of libtool libraries 6888ef6fb4a5Smrg -version-info CURRENT[:REVISION[:AGE]] 6889ef6fb4a5Smrg specify library version info [each variable defaults to 0] 6890ef6fb4a5Smrg 6891ef6fb4a5SmrgAll other options (arguments beginning with \`-') are ignored. 6892ef6fb4a5Smrg 6893ef6fb4a5SmrgEvery other argument is treated as a filename. Files ending in \`.la' are 6894ef6fb4a5Smrgtreated as uninstalled libtool libraries, other files are standard or library 6895ef6fb4a5Smrgobject files. 6896ef6fb4a5Smrg 6897ef6fb4a5SmrgIf the OUTPUT-FILE ends in \`.la', then a libtool library is created, 6898ef6fb4a5Smrgonly library objects (\`.lo' files) may be specified, and \`-rpath' is 6899ef6fb4a5Smrgrequired, except when creating a convenience library. 6900ef6fb4a5Smrg 6901ef6fb4a5SmrgIf OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created 6902ef6fb4a5Smrgusing \`ar' and \`ranlib', or on Windows using \`lib'. 6903ef6fb4a5Smrg 6904ef6fb4a5SmrgIf OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file 6905ef6fb4a5Smrgis created, otherwise an executable program is created." 6906ef6fb4a5Smrg ;; 6907ef6fb4a5Smrg 6908ef6fb4a5Smrguninstall) 6909ef6fb4a5Smrg $echo \ 6910ef6fb4a5Smrg"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... 6911ef6fb4a5Smrg 6912ef6fb4a5SmrgRemove libraries from an installation directory. 6913ef6fb4a5Smrg 6914ef6fb4a5SmrgRM is the name of the program to use to delete files associated with each FILE 6915ef6fb4a5Smrg(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 6916ef6fb4a5Smrgto RM. 6917ef6fb4a5Smrg 6918ef6fb4a5SmrgIf FILE is a libtool library, all the files associated with it are deleted. 6919ef6fb4a5SmrgOtherwise, only FILE itself is deleted using RM." 6920ef6fb4a5Smrg ;; 6921ef6fb4a5Smrg 6922ef6fb4a5Smrg*) 6923ef6fb4a5Smrg $echo "$modename: invalid operation mode \`$mode'" 1>&2 6924ef6fb4a5Smrg $echo "$help" 1>&2 6925ef6fb4a5Smrg exit $EXIT_FAILURE 6926ef6fb4a5Smrg ;; 6927ef6fb4a5Smrgesac 6928ef6fb4a5Smrg 6929ef6fb4a5Smrg$echo 6930ef6fb4a5Smrg$echo "Try \`$modename --help' for more information about other modes." 6931ef6fb4a5Smrg 6932ef6fb4a5Smrgexit $? 6933301ea0f4Smrg 6934301ea0f4Smrg# The TAGs below are defined such that we never get into a situation 6935301ea0f4Smrg# in which we disable both kinds of libraries. Given conflicting 6936301ea0f4Smrg# choices, we go for a static library, that is the most portable, 6937301ea0f4Smrg# since we can't tell whether shared libraries were disabled because 6938301ea0f4Smrg# the user asked for that or because the platform doesn't support 6939301ea0f4Smrg# them. This is particularly important on AIX, because we don't 6940301ea0f4Smrg# support having both static and shared libraries enabled at the same 6941301ea0f4Smrg# time on that platform, so we default to a shared-only configuration. 6942301ea0f4Smrg# If a disable-shared tag is given, we'll fallback to a static-only 6943301ea0f4Smrg# configuration. But we'll never go from static-only to shared-only. 6944301ea0f4Smrg 6945301ea0f4Smrg# ### BEGIN LIBTOOL TAG CONFIG: disable-shared 6946ef6fb4a5Smrgdisable_libs=shared 6947301ea0f4Smrg# ### END LIBTOOL TAG CONFIG: disable-shared 6948301ea0f4Smrg 6949301ea0f4Smrg# ### BEGIN LIBTOOL TAG CONFIG: disable-static 6950ef6fb4a5Smrgdisable_libs=static 6951301ea0f4Smrg# ### END LIBTOOL TAG CONFIG: disable-static 6952301ea0f4Smrg 6953301ea0f4Smrg# Local Variables: 6954301ea0f4Smrg# mode:shell-script 6955301ea0f4Smrg# sh-indentation:2 6956301ea0f4Smrg# End: 6957