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