ltmain.sh revision 4b0ead49
14b0ead49Smrg# ltmain.sh - Provide generalized library-building support services. 24b0ead49Smrg# NOTE: Changing this file will not affect anything until you rerun configure. 34b0ead49Smrg# 44b0ead49Smrg# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005 54b0ead49Smrg# Free Software Foundation, Inc. 64b0ead49Smrg# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 74b0ead49Smrg# 84b0ead49Smrg# This program is free software; you can redistribute it and/or modify 94b0ead49Smrg# it under the terms of the GNU General Public License as published by 104b0ead49Smrg# the Free Software Foundation; either version 2 of the License, or 114b0ead49Smrg# (at your option) any later version. 124b0ead49Smrg# 134b0ead49Smrg# This program is distributed in the hope that it will be useful, but 144b0ead49Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of 154b0ead49Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 164b0ead49Smrg# General Public License for more details. 174b0ead49Smrg# 184b0ead49Smrg# You should have received a copy of the GNU General Public License 194b0ead49Smrg# along with this program; if not, write to the Free Software 204b0ead49Smrg# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 214b0ead49Smrg# 224b0ead49Smrg# As a special exception to the GNU General Public License, if you 234b0ead49Smrg# distribute this file as part of a program that contains a 244b0ead49Smrg# configuration script generated by Autoconf, you may include it under 254b0ead49Smrg# the same distribution terms that you use for the rest of that program. 264b0ead49Smrg 274b0ead49Smrgbasename="s,^.*/,,g" 284b0ead49Smrg 294b0ead49Smrg# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh 304b0ead49Smrg# is ksh but when the shell is invoked as "sh" and the current value of 314b0ead49Smrg# the _XPG environment variable is not equal to 1 (one), the special 324b0ead49Smrg# positional parameter $0, within a function call, is the name of the 334b0ead49Smrg# function. 344b0ead49Smrgprogpath="$0" 354b0ead49Smrg 364b0ead49Smrg# The name of this program: 374b0ead49Smrgprogname=`echo "$progpath" | $SED $basename` 384b0ead49Smrgmodename="$progname" 394b0ead49Smrg 404b0ead49Smrg# Global variables: 414b0ead49SmrgEXIT_SUCCESS=0 424b0ead49SmrgEXIT_FAILURE=1 434b0ead49Smrg 444b0ead49SmrgPROGRAM=ltmain.sh 454b0ead49SmrgPACKAGE=libtool 464b0ead49SmrgVERSION="1.5.22 Debian 1.5.22-2" 474b0ead49SmrgTIMESTAMP=" (1.1220.2.365 2005/12/18 22:14:06)" 484b0ead49Smrg 494b0ead49Smrg# See if we are running on zsh, and set the options which allow our 504b0ead49Smrg# commands through without removal of \ escapes. 514b0ead49Smrgif test -n "${ZSH_VERSION+set}" ; then 524b0ead49Smrg setopt NO_GLOB_SUBST 534b0ead49Smrgfi 544b0ead49Smrg 554b0ead49Smrg# Check that we have a working $echo. 564b0ead49Smrgif test "X$1" = X--no-reexec; then 574b0ead49Smrg # Discard the --no-reexec flag, and continue. 584b0ead49Smrg shift 594b0ead49Smrgelif test "X$1" = X--fallback-echo; then 604b0ead49Smrg # Avoid inline document here, it may be left over 614b0ead49Smrg : 624b0ead49Smrgelif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then 634b0ead49Smrg # Yippee, $echo works! 644b0ead49Smrg : 654b0ead49Smrgelse 664b0ead49Smrg # Restart under the correct shell, and then maybe $echo will work. 674b0ead49Smrg exec $SHELL "$progpath" --no-reexec ${1+"$@"} 684b0ead49Smrgfi 694b0ead49Smrg 704b0ead49Smrgif test "X$1" = X--fallback-echo; then 714b0ead49Smrg # used as fallback echo 724b0ead49Smrg shift 734b0ead49Smrg cat <<EOF 744b0ead49Smrg$* 754b0ead49SmrgEOF 764b0ead49Smrg exit $EXIT_SUCCESS 774b0ead49Smrgfi 784b0ead49Smrg 794b0ead49Smrgdefault_mode= 804b0ead49Smrghelp="Try \`$progname --help' for more information." 814b0ead49Smrgmagic="%%%MAGIC variable%%%" 824b0ead49Smrgmkdir="mkdir" 834b0ead49Smrgmv="mv -f" 844b0ead49Smrgrm="rm -f" 854b0ead49Smrg 864b0ead49Smrg# Sed substitution that helps us do robust quoting. It backslashifies 874b0ead49Smrg# metacharacters that are still active within double-quoted strings. 884b0ead49SmrgXsed="${SED}"' -e 1s/^X//' 894b0ead49Smrgsed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g' 904b0ead49Smrg# test EBCDIC or ASCII 914b0ead49Smrgcase `echo X|tr X '\101'` in 924b0ead49Smrg A) # ASCII based system 934b0ead49Smrg # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr 944b0ead49Smrg SP2NL='tr \040 \012' 954b0ead49Smrg NL2SP='tr \015\012 \040\040' 964b0ead49Smrg ;; 974b0ead49Smrg *) # EBCDIC based system 984b0ead49Smrg SP2NL='tr \100 \n' 994b0ead49Smrg NL2SP='tr \r\n \100\100' 1004b0ead49Smrg ;; 1014b0ead49Smrgesac 1024b0ead49Smrg 1034b0ead49Smrg# NLS nuisances. 1044b0ead49Smrg# Only set LANG and LC_ALL to C if already set. 1054b0ead49Smrg# These must not be set unconditionally because not all systems understand 1064b0ead49Smrg# e.g. LANG=C (notably SCO). 1074b0ead49Smrg# We save the old values to restore during execute mode. 1084b0ead49Smrgif test "${LC_ALL+set}" = set; then 1094b0ead49Smrg save_LC_ALL="$LC_ALL"; LC_ALL=C; export LC_ALL 1104b0ead49Smrgfi 1114b0ead49Smrgif test "${LANG+set}" = set; then 1124b0ead49Smrg save_LANG="$LANG"; LANG=C; export LANG 1134b0ead49Smrgfi 1144b0ead49Smrg 1154b0ead49Smrg# Make sure IFS has a sensible default 1164b0ead49Smrglt_nl=' 1174b0ead49Smrg' 1184b0ead49SmrgIFS=" $lt_nl" 1194b0ead49Smrg 1204b0ead49Smrgif test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then 1214b0ead49Smrg $echo "$modename: not configured to build any kind of library" 1>&2 1224b0ead49Smrg $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 1234b0ead49Smrg exit $EXIT_FAILURE 1244b0ead49Smrgfi 1254b0ead49Smrg 1264b0ead49Smrg# Global variables. 1274b0ead49Smrgmode=$default_mode 1284b0ead49Smrgnonopt= 1294b0ead49Smrgprev= 1304b0ead49Smrgprevopt= 1314b0ead49Smrgrun= 1324b0ead49Smrgshow="$echo" 1334b0ead49Smrgshow_help= 1344b0ead49Smrgexecute_dlfiles= 1354b0ead49Smrgduplicate_deps=no 1364b0ead49Smrgpreserve_args= 1374b0ead49Smrglo2o="s/\\.lo\$/.${objext}/" 1384b0ead49Smrgo2lo="s/\\.${objext}\$/.lo/" 1394b0ead49Smrg 1404b0ead49Smrg##################################### 1414b0ead49Smrg# Shell function definitions: 1424b0ead49Smrg# This seems to be the best place for them 1434b0ead49Smrg 1444b0ead49Smrg# func_mktempdir [string] 1454b0ead49Smrg# Make a temporary directory that won't clash with other running 1464b0ead49Smrg# libtool processes, and avoids race conditions if possible. If 1474b0ead49Smrg# given, STRING is the basename for that directory. 1484b0ead49Smrgfunc_mktempdir () 1494b0ead49Smrg{ 1504b0ead49Smrg my_template="${TMPDIR-/tmp}/${1-$progname}" 1514b0ead49Smrg 1524b0ead49Smrg if test "$run" = ":"; then 1534b0ead49Smrg # Return a directory name, but don't create it in dry-run mode 1544b0ead49Smrg my_tmpdir="${my_template}-$$" 1554b0ead49Smrg else 1564b0ead49Smrg 1574b0ead49Smrg # If mktemp works, use that first and foremost 1584b0ead49Smrg my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` 1594b0ead49Smrg 1604b0ead49Smrg if test ! -d "$my_tmpdir"; then 1614b0ead49Smrg # Failing that, at least try and use $RANDOM to avoid a race 1624b0ead49Smrg my_tmpdir="${my_template}-${RANDOM-0}$$" 1634b0ead49Smrg 1644b0ead49Smrg save_mktempdir_umask=`umask` 1654b0ead49Smrg umask 0077 1664b0ead49Smrg $mkdir "$my_tmpdir" 1674b0ead49Smrg umask $save_mktempdir_umask 1684b0ead49Smrg fi 1694b0ead49Smrg 1704b0ead49Smrg # If we're not in dry-run mode, bomb out on failure 1714b0ead49Smrg test -d "$my_tmpdir" || { 1724b0ead49Smrg $echo "cannot create temporary directory \`$my_tmpdir'" 1>&2 1734b0ead49Smrg exit $EXIT_FAILURE 1744b0ead49Smrg } 1754b0ead49Smrg fi 1764b0ead49Smrg 1774b0ead49Smrg $echo "X$my_tmpdir" | $Xsed 1784b0ead49Smrg} 1794b0ead49Smrg 1804b0ead49Smrg 1814b0ead49Smrg# func_win32_libid arg 1824b0ead49Smrg# return the library type of file 'arg' 1834b0ead49Smrg# 1844b0ead49Smrg# Need a lot of goo to handle *both* DLLs and import libs 1854b0ead49Smrg# Has to be a shell function in order to 'eat' the argument 1864b0ead49Smrg# that is supplied when $file_magic_command is called. 1874b0ead49Smrgfunc_win32_libid () 1884b0ead49Smrg{ 1894b0ead49Smrg win32_libid_type="unknown" 1904b0ead49Smrg win32_fileres=`file -L $1 2>/dev/null` 1914b0ead49Smrg case $win32_fileres in 1924b0ead49Smrg *ar\ archive\ import\ library*) # definitely import 1934b0ead49Smrg win32_libid_type="x86 archive import" 1944b0ead49Smrg ;; 1954b0ead49Smrg *ar\ archive*) # could be an import, or static 1964b0ead49Smrg if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \ 1974b0ead49Smrg $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then 1984b0ead49Smrg win32_nmres=`eval $NM -f posix -A $1 | \ 1994b0ead49Smrg $SED -n -e '1,100{/ I /{s,.*,import,;p;q;};}'` 2004b0ead49Smrg case $win32_nmres in 2014b0ead49Smrg import*) win32_libid_type="x86 archive import";; 2024b0ead49Smrg *) win32_libid_type="x86 archive static";; 2034b0ead49Smrg esac 2044b0ead49Smrg fi 2054b0ead49Smrg ;; 2064b0ead49Smrg *DLL*) 2074b0ead49Smrg win32_libid_type="x86 DLL" 2084b0ead49Smrg ;; 2094b0ead49Smrg *executable*) # but shell scripts are "executable" too... 2104b0ead49Smrg case $win32_fileres in 2114b0ead49Smrg *MS\ Windows\ PE\ Intel*) 2124b0ead49Smrg win32_libid_type="x86 DLL" 2134b0ead49Smrg ;; 2144b0ead49Smrg esac 2154b0ead49Smrg ;; 2164b0ead49Smrg esac 2174b0ead49Smrg $echo $win32_libid_type 2184b0ead49Smrg} 2194b0ead49Smrg 2204b0ead49Smrg 2214b0ead49Smrg# func_infer_tag arg 2224b0ead49Smrg# Infer tagged configuration to use if any are available and 2234b0ead49Smrg# if one wasn't chosen via the "--tag" command line option. 2244b0ead49Smrg# Only attempt this if the compiler in the base compile 2254b0ead49Smrg# command doesn't match the default compiler. 2264b0ead49Smrg# arg is usually of the form 'gcc ...' 2274b0ead49Smrgfunc_infer_tag () 2284b0ead49Smrg{ 2294b0ead49Smrg if test -n "$available_tags" && test -z "$tagname"; then 2304b0ead49Smrg CC_quoted= 2314b0ead49Smrg for arg in $CC; do 2324b0ead49Smrg case $arg in 2334b0ead49Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 2344b0ead49Smrg arg="\"$arg\"" 2354b0ead49Smrg ;; 2364b0ead49Smrg esac 2374b0ead49Smrg CC_quoted="$CC_quoted $arg" 2384b0ead49Smrg done 2394b0ead49Smrg case $@ in 2404b0ead49Smrg # Blanks in the command may have been stripped by the calling shell, 2414b0ead49Smrg # but not from the CC environment variable when configure was run. 2424b0ead49Smrg " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;; 2434b0ead49Smrg # Blanks at the start of $base_compile will cause this to fail 2444b0ead49Smrg # if we don't check for them as well. 2454b0ead49Smrg *) 2464b0ead49Smrg for z in $available_tags; do 2474b0ead49Smrg if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then 2484b0ead49Smrg # Evaluate the configuration. 2494b0ead49Smrg eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" 2504b0ead49Smrg CC_quoted= 2514b0ead49Smrg for arg in $CC; do 2524b0ead49Smrg # Double-quote args containing other shell metacharacters. 2534b0ead49Smrg case $arg in 2544b0ead49Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 2554b0ead49Smrg arg="\"$arg\"" 2564b0ead49Smrg ;; 2574b0ead49Smrg esac 2584b0ead49Smrg CC_quoted="$CC_quoted $arg" 2594b0ead49Smrg done 2604b0ead49Smrg case "$@ " in 2614b0ead49Smrg " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) 2624b0ead49Smrg # The compiler in the base compile command matches 2634b0ead49Smrg # the one in the tagged configuration. 2644b0ead49Smrg # Assume this is the tagged configuration we want. 2654b0ead49Smrg tagname=$z 2664b0ead49Smrg break 2674b0ead49Smrg ;; 2684b0ead49Smrg esac 2694b0ead49Smrg fi 2704b0ead49Smrg done 2714b0ead49Smrg # If $tagname still isn't set, then no tagged configuration 2724b0ead49Smrg # was found and let the user know that the "--tag" command 2734b0ead49Smrg # line option must be used. 2744b0ead49Smrg if test -z "$tagname"; then 2754b0ead49Smrg $echo "$modename: unable to infer tagged configuration" 2764b0ead49Smrg $echo "$modename: specify a tag with \`--tag'" 1>&2 2774b0ead49Smrg exit $EXIT_FAILURE 2784b0ead49Smrg# else 2794b0ead49Smrg# $echo "$modename: using $tagname tagged configuration" 2804b0ead49Smrg fi 2814b0ead49Smrg ;; 2824b0ead49Smrg esac 2834b0ead49Smrg fi 2844b0ead49Smrg} 2854b0ead49Smrg 2864b0ead49Smrg 2874b0ead49Smrg# func_extract_an_archive dir oldlib 2884b0ead49Smrgfunc_extract_an_archive () 2894b0ead49Smrg{ 2904b0ead49Smrg f_ex_an_ar_dir="$1"; shift 2914b0ead49Smrg f_ex_an_ar_oldlib="$1" 2924b0ead49Smrg 2934b0ead49Smrg $show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)" 2944b0ead49Smrg $run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" || exit $? 2954b0ead49Smrg if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then 2964b0ead49Smrg : 2974b0ead49Smrg else 2984b0ead49Smrg $echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 1>&2 2994b0ead49Smrg exit $EXIT_FAILURE 3004b0ead49Smrg fi 3014b0ead49Smrg} 3024b0ead49Smrg 3034b0ead49Smrg# func_extract_archives gentop oldlib ... 3044b0ead49Smrgfunc_extract_archives () 3054b0ead49Smrg{ 3064b0ead49Smrg my_gentop="$1"; shift 3074b0ead49Smrg my_oldlibs=${1+"$@"} 3084b0ead49Smrg my_oldobjs="" 3094b0ead49Smrg my_xlib="" 3104b0ead49Smrg my_xabs="" 3114b0ead49Smrg my_xdir="" 3124b0ead49Smrg my_status="" 3134b0ead49Smrg 3144b0ead49Smrg $show "${rm}r $my_gentop" 3154b0ead49Smrg $run ${rm}r "$my_gentop" 3164b0ead49Smrg $show "$mkdir $my_gentop" 3174b0ead49Smrg $run $mkdir "$my_gentop" 3184b0ead49Smrg my_status=$? 3194b0ead49Smrg if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then 3204b0ead49Smrg exit $my_status 3214b0ead49Smrg fi 3224b0ead49Smrg 3234b0ead49Smrg for my_xlib in $my_oldlibs; do 3244b0ead49Smrg # Extract the objects. 3254b0ead49Smrg case $my_xlib in 3264b0ead49Smrg [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; 3274b0ead49Smrg *) my_xabs=`pwd`"/$my_xlib" ;; 3284b0ead49Smrg esac 3294b0ead49Smrg my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'` 3304b0ead49Smrg my_xdir="$my_gentop/$my_xlib" 3314b0ead49Smrg 3324b0ead49Smrg $show "${rm}r $my_xdir" 3334b0ead49Smrg $run ${rm}r "$my_xdir" 3344b0ead49Smrg $show "$mkdir $my_xdir" 3354b0ead49Smrg $run $mkdir "$my_xdir" 3364b0ead49Smrg exit_status=$? 3374b0ead49Smrg if test "$exit_status" -ne 0 && test ! -d "$my_xdir"; then 3384b0ead49Smrg exit $exit_status 3394b0ead49Smrg fi 3404b0ead49Smrg case $host in 3414b0ead49Smrg *-darwin*) 3424b0ead49Smrg $show "Extracting $my_xabs" 3434b0ead49Smrg # Do not bother doing anything if just a dry run 3444b0ead49Smrg if test -z "$run"; then 3454b0ead49Smrg darwin_orig_dir=`pwd` 3464b0ead49Smrg cd $my_xdir || exit $? 3474b0ead49Smrg darwin_archive=$my_xabs 3484b0ead49Smrg darwin_curdir=`pwd` 3494b0ead49Smrg darwin_base_archive=`$echo "X$darwin_archive" | $Xsed -e 's%^.*/%%'` 3504b0ead49Smrg darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null` 3514b0ead49Smrg if test -n "$darwin_arches"; then 3524b0ead49Smrg darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'` 3534b0ead49Smrg darwin_arch= 3544b0ead49Smrg $show "$darwin_base_archive has multiple architectures $darwin_arches" 3554b0ead49Smrg for darwin_arch in $darwin_arches ; do 3564b0ead49Smrg mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}" 3574b0ead49Smrg lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" 3584b0ead49Smrg cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" 3594b0ead49Smrg func_extract_an_archive "`pwd`" "${darwin_base_archive}" 3604b0ead49Smrg cd "$darwin_curdir" 3614b0ead49Smrg $rm "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" 3624b0ead49Smrg done # $darwin_arches 3634b0ead49Smrg ## Okay now we have a bunch of thin objects, gotta fatten them up :) 3644b0ead49Smrg darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP` 3654b0ead49Smrg darwin_file= 3664b0ead49Smrg darwin_files= 3674b0ead49Smrg for darwin_file in $darwin_filelist; do 3684b0ead49Smrg darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` 3694b0ead49Smrg lipo -create -output "$darwin_file" $darwin_files 3704b0ead49Smrg done # $darwin_filelist 3714b0ead49Smrg ${rm}r unfat-$$ 3724b0ead49Smrg cd "$darwin_orig_dir" 3734b0ead49Smrg else 3744b0ead49Smrg cd "$darwin_orig_dir" 3754b0ead49Smrg func_extract_an_archive "$my_xdir" "$my_xabs" 3764b0ead49Smrg fi # $darwin_arches 3774b0ead49Smrg fi # $run 3784b0ead49Smrg ;; 3794b0ead49Smrg *) 3804b0ead49Smrg func_extract_an_archive "$my_xdir" "$my_xabs" 3814b0ead49Smrg ;; 3824b0ead49Smrg esac 3834b0ead49Smrg my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` 3844b0ead49Smrg done 3854b0ead49Smrg func_extract_archives_result="$my_oldobjs" 3864b0ead49Smrg} 3874b0ead49Smrg# End of Shell function definitions 3884b0ead49Smrg##################################### 3894b0ead49Smrg 3904b0ead49Smrg# Darwin sucks 3914b0ead49Smrgeval std_shrext=\"$shrext_cmds\" 3924b0ead49Smrg 3934b0ead49Smrgdisable_libs=no 3944b0ead49Smrg 3954b0ead49Smrg# Parse our command line options once, thoroughly. 3964b0ead49Smrgwhile test "$#" -gt 0 3974b0ead49Smrgdo 3984b0ead49Smrg arg="$1" 3994b0ead49Smrg shift 4004b0ead49Smrg 4014b0ead49Smrg case $arg in 4024b0ead49Smrg -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; 4034b0ead49Smrg *) optarg= ;; 4044b0ead49Smrg esac 4054b0ead49Smrg 4064b0ead49Smrg # If the previous option needs an argument, assign it. 4074b0ead49Smrg if test -n "$prev"; then 4084b0ead49Smrg case $prev in 4094b0ead49Smrg execute_dlfiles) 4104b0ead49Smrg execute_dlfiles="$execute_dlfiles $arg" 4114b0ead49Smrg ;; 4124b0ead49Smrg tag) 4134b0ead49Smrg tagname="$arg" 4144b0ead49Smrg preserve_args="${preserve_args}=$arg" 4154b0ead49Smrg 4164b0ead49Smrg # Check whether tagname contains only valid characters 4174b0ead49Smrg case $tagname in 4184b0ead49Smrg *[!-_A-Za-z0-9,/]*) 4194b0ead49Smrg $echo "$progname: invalid tag name: $tagname" 1>&2 4204b0ead49Smrg exit $EXIT_FAILURE 4214b0ead49Smrg ;; 4224b0ead49Smrg esac 4234b0ead49Smrg 4244b0ead49Smrg case $tagname in 4254b0ead49Smrg CC) 4264b0ead49Smrg # Don't test for the "default" C tag, as we know, it's there, but 4274b0ead49Smrg # not specially marked. 4284b0ead49Smrg ;; 4294b0ead49Smrg *) 4304b0ead49Smrg if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then 4314b0ead49Smrg taglist="$taglist $tagname" 4324b0ead49Smrg # Evaluate the configuration. 4334b0ead49Smrg eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`" 4344b0ead49Smrg else 4354b0ead49Smrg $echo "$progname: ignoring unknown tag $tagname" 1>&2 4364b0ead49Smrg fi 4374b0ead49Smrg ;; 4384b0ead49Smrg esac 4394b0ead49Smrg ;; 4404b0ead49Smrg *) 4414b0ead49Smrg eval "$prev=\$arg" 4424b0ead49Smrg ;; 4434b0ead49Smrg esac 4444b0ead49Smrg 4454b0ead49Smrg prev= 4464b0ead49Smrg prevopt= 4474b0ead49Smrg continue 4484b0ead49Smrg fi 4494b0ead49Smrg 4504b0ead49Smrg # Have we seen a non-optional argument yet? 4514b0ead49Smrg case $arg in 4524b0ead49Smrg --help) 4534b0ead49Smrg show_help=yes 4544b0ead49Smrg ;; 4554b0ead49Smrg 4564b0ead49Smrg --version) 4574b0ead49Smrg $echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP" 4584b0ead49Smrg $echo 4594b0ead49Smrg $echo "Copyright (C) 2005 Free Software Foundation, Inc." 4604b0ead49Smrg $echo "This is free software; see the source for copying conditions. There is NO" 4614b0ead49Smrg $echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 4624b0ead49Smrg exit $? 4634b0ead49Smrg ;; 4644b0ead49Smrg 4654b0ead49Smrg --config) 4664b0ead49Smrg ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath 4674b0ead49Smrg # Now print the configurations for the tags. 4684b0ead49Smrg for tagname in $taglist; do 4694b0ead49Smrg ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath" 4704b0ead49Smrg done 4714b0ead49Smrg exit $? 4724b0ead49Smrg ;; 4734b0ead49Smrg 4744b0ead49Smrg --debug) 4754b0ead49Smrg $echo "$progname: enabling shell trace mode" 4764b0ead49Smrg set -x 4774b0ead49Smrg preserve_args="$preserve_args $arg" 4784b0ead49Smrg ;; 4794b0ead49Smrg 4804b0ead49Smrg --dry-run | -n) 4814b0ead49Smrg run=: 4824b0ead49Smrg ;; 4834b0ead49Smrg 4844b0ead49Smrg --features) 4854b0ead49Smrg $echo "host: $host" 4864b0ead49Smrg if test "$build_libtool_libs" = yes; then 4874b0ead49Smrg $echo "enable shared libraries" 4884b0ead49Smrg else 4894b0ead49Smrg $echo "disable shared libraries" 4904b0ead49Smrg fi 4914b0ead49Smrg if test "$build_old_libs" = yes; then 4924b0ead49Smrg $echo "enable static libraries" 4934b0ead49Smrg else 4944b0ead49Smrg $echo "disable static libraries" 4954b0ead49Smrg fi 4964b0ead49Smrg exit $? 4974b0ead49Smrg ;; 4984b0ead49Smrg 4994b0ead49Smrg --finish) mode="finish" ;; 5004b0ead49Smrg 5014b0ead49Smrg --mode) prevopt="--mode" prev=mode ;; 5024b0ead49Smrg --mode=*) mode="$optarg" ;; 5034b0ead49Smrg 5044b0ead49Smrg --preserve-dup-deps) duplicate_deps="yes" ;; 5054b0ead49Smrg 5064b0ead49Smrg --quiet | --silent) 5074b0ead49Smrg show=: 5084b0ead49Smrg preserve_args="$preserve_args $arg" 5094b0ead49Smrg ;; 5104b0ead49Smrg 5114b0ead49Smrg --tag) 5124b0ead49Smrg prevopt="--tag" 5134b0ead49Smrg prev=tag 5144b0ead49Smrg preserve_args="$preserve_args --tag" 5154b0ead49Smrg ;; 5164b0ead49Smrg --tag=*) 5174b0ead49Smrg set tag "$optarg" ${1+"$@"} 5184b0ead49Smrg shift 5194b0ead49Smrg prev=tag 5204b0ead49Smrg preserve_args="$preserve_args --tag" 5214b0ead49Smrg ;; 5224b0ead49Smrg 5234b0ead49Smrg -dlopen) 5244b0ead49Smrg prevopt="-dlopen" 5254b0ead49Smrg prev=execute_dlfiles 5264b0ead49Smrg ;; 5274b0ead49Smrg 5284b0ead49Smrg -*) 5294b0ead49Smrg $echo "$modename: unrecognized option \`$arg'" 1>&2 5304b0ead49Smrg $echo "$help" 1>&2 5314b0ead49Smrg exit $EXIT_FAILURE 5324b0ead49Smrg ;; 5334b0ead49Smrg 5344b0ead49Smrg *) 5354b0ead49Smrg nonopt="$arg" 5364b0ead49Smrg break 5374b0ead49Smrg ;; 5384b0ead49Smrg esac 5394b0ead49Smrgdone 5404b0ead49Smrg 5414b0ead49Smrgif test -n "$prevopt"; then 5424b0ead49Smrg $echo "$modename: option \`$prevopt' requires an argument" 1>&2 5434b0ead49Smrg $echo "$help" 1>&2 5444b0ead49Smrg exit $EXIT_FAILURE 5454b0ead49Smrgfi 5464b0ead49Smrg 5474b0ead49Smrgcase $disable_libs in 5484b0ead49Smrgno) 5494b0ead49Smrg ;; 5504b0ead49Smrgshared) 5514b0ead49Smrg build_libtool_libs=no 5524b0ead49Smrg build_old_libs=yes 5534b0ead49Smrg ;; 5544b0ead49Smrgstatic) 5554b0ead49Smrg build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` 5564b0ead49Smrg ;; 5574b0ead49Smrgesac 5584b0ead49Smrg 5594b0ead49Smrg# If this variable is set in any of the actions, the command in it 5604b0ead49Smrg# will be execed at the end. This prevents here-documents from being 5614b0ead49Smrg# left over by shells. 5624b0ead49Smrgexec_cmd= 5634b0ead49Smrg 5644b0ead49Smrgif test -z "$show_help"; then 5654b0ead49Smrg 5664b0ead49Smrg # Infer the operation mode. 5674b0ead49Smrg if test -z "$mode"; then 5684b0ead49Smrg $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2 5694b0ead49Smrg $echo "*** Future versions of Libtool will require --mode=MODE be specified." 1>&2 5704b0ead49Smrg case $nonopt in 5714b0ead49Smrg *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*) 5724b0ead49Smrg mode=link 5734b0ead49Smrg for arg 5744b0ead49Smrg do 5754b0ead49Smrg case $arg in 5764b0ead49Smrg -c) 5774b0ead49Smrg mode=compile 5784b0ead49Smrg break 5794b0ead49Smrg ;; 5804b0ead49Smrg esac 5814b0ead49Smrg done 5824b0ead49Smrg ;; 5834b0ead49Smrg *db | *dbx | *strace | *truss) 5844b0ead49Smrg mode=execute 5854b0ead49Smrg ;; 5864b0ead49Smrg *install*|cp|mv) 5874b0ead49Smrg mode=install 5884b0ead49Smrg ;; 5894b0ead49Smrg *rm) 5904b0ead49Smrg mode=uninstall 5914b0ead49Smrg ;; 5924b0ead49Smrg *) 5934b0ead49Smrg # If we have no mode, but dlfiles were specified, then do execute mode. 5944b0ead49Smrg test -n "$execute_dlfiles" && mode=execute 5954b0ead49Smrg 5964b0ead49Smrg # Just use the default operation mode. 5974b0ead49Smrg if test -z "$mode"; then 5984b0ead49Smrg if test -n "$nonopt"; then 5994b0ead49Smrg $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2 6004b0ead49Smrg else 6014b0ead49Smrg $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2 6024b0ead49Smrg fi 6034b0ead49Smrg fi 6044b0ead49Smrg ;; 6054b0ead49Smrg esac 6064b0ead49Smrg fi 6074b0ead49Smrg 6084b0ead49Smrg # Only execute mode is allowed to have -dlopen flags. 6094b0ead49Smrg if test -n "$execute_dlfiles" && test "$mode" != execute; then 6104b0ead49Smrg $echo "$modename: unrecognized option \`-dlopen'" 1>&2 6114b0ead49Smrg $echo "$help" 1>&2 6124b0ead49Smrg exit $EXIT_FAILURE 6134b0ead49Smrg fi 6144b0ead49Smrg 6154b0ead49Smrg # Change the help message to a mode-specific one. 6164b0ead49Smrg generic_help="$help" 6174b0ead49Smrg help="Try \`$modename --help --mode=$mode' for more information." 6184b0ead49Smrg 6194b0ead49Smrg # These modes are in order of execution frequency so that they run quickly. 6204b0ead49Smrg case $mode in 6214b0ead49Smrg # libtool compile mode 6224b0ead49Smrg compile) 6234b0ead49Smrg modename="$modename: compile" 6244b0ead49Smrg # Get the compilation command and the source file. 6254b0ead49Smrg base_compile= 6264b0ead49Smrg srcfile="$nonopt" # always keep a non-empty value in "srcfile" 6274b0ead49Smrg suppress_opt=yes 6284b0ead49Smrg suppress_output= 6294b0ead49Smrg arg_mode=normal 6304b0ead49Smrg libobj= 6314b0ead49Smrg later= 6324b0ead49Smrg 6334b0ead49Smrg for arg 6344b0ead49Smrg do 6354b0ead49Smrg case $arg_mode in 6364b0ead49Smrg arg ) 6374b0ead49Smrg # do not "continue". Instead, add this to base_compile 6384b0ead49Smrg lastarg="$arg" 6394b0ead49Smrg arg_mode=normal 6404b0ead49Smrg ;; 6414b0ead49Smrg 6424b0ead49Smrg target ) 6434b0ead49Smrg libobj="$arg" 6444b0ead49Smrg arg_mode=normal 6454b0ead49Smrg continue 6464b0ead49Smrg ;; 6474b0ead49Smrg 6484b0ead49Smrg normal ) 6494b0ead49Smrg # Accept any command-line options. 6504b0ead49Smrg case $arg in 6514b0ead49Smrg -o) 6524b0ead49Smrg if test -n "$libobj" ; then 6534b0ead49Smrg $echo "$modename: you cannot specify \`-o' more than once" 1>&2 6544b0ead49Smrg exit $EXIT_FAILURE 6554b0ead49Smrg fi 6564b0ead49Smrg arg_mode=target 6574b0ead49Smrg continue 6584b0ead49Smrg ;; 6594b0ead49Smrg 6604b0ead49Smrg -static | -prefer-pic | -prefer-non-pic) 6614b0ead49Smrg later="$later $arg" 6624b0ead49Smrg continue 6634b0ead49Smrg ;; 6644b0ead49Smrg 6654b0ead49Smrg -no-suppress) 6664b0ead49Smrg suppress_opt=no 6674b0ead49Smrg continue 6684b0ead49Smrg ;; 6694b0ead49Smrg 6704b0ead49Smrg -Xcompiler) 6714b0ead49Smrg arg_mode=arg # the next one goes into the "base_compile" arg list 6724b0ead49Smrg continue # The current "srcfile" will either be retained or 6734b0ead49Smrg ;; # replaced later. I would guess that would be a bug. 6744b0ead49Smrg 6754b0ead49Smrg -Wc,*) 6764b0ead49Smrg args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"` 6774b0ead49Smrg lastarg= 6784b0ead49Smrg save_ifs="$IFS"; IFS=',' 6794b0ead49Smrg for arg in $args; do 6804b0ead49Smrg IFS="$save_ifs" 6814b0ead49Smrg 6824b0ead49Smrg # Double-quote args containing other shell metacharacters. 6834b0ead49Smrg # Many Bourne shells cannot handle close brackets correctly 6844b0ead49Smrg # in scan sets, so we specify it separately. 6854b0ead49Smrg case $arg in 6864b0ead49Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 6874b0ead49Smrg arg="\"$arg\"" 6884b0ead49Smrg ;; 6894b0ead49Smrg esac 6904b0ead49Smrg lastarg="$lastarg $arg" 6914b0ead49Smrg done 6924b0ead49Smrg IFS="$save_ifs" 6934b0ead49Smrg lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"` 6944b0ead49Smrg 6954b0ead49Smrg # Add the arguments to base_compile. 6964b0ead49Smrg base_compile="$base_compile $lastarg" 6974b0ead49Smrg continue 6984b0ead49Smrg ;; 6994b0ead49Smrg 7004b0ead49Smrg * ) 7014b0ead49Smrg # Accept the current argument as the source file. 7024b0ead49Smrg # The previous "srcfile" becomes the current argument. 7034b0ead49Smrg # 7044b0ead49Smrg lastarg="$srcfile" 7054b0ead49Smrg srcfile="$arg" 7064b0ead49Smrg ;; 7074b0ead49Smrg esac # case $arg 7084b0ead49Smrg ;; 7094b0ead49Smrg esac # case $arg_mode 7104b0ead49Smrg 7114b0ead49Smrg # Aesthetically quote the previous argument. 7124b0ead49Smrg lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` 7134b0ead49Smrg 7144b0ead49Smrg case $lastarg in 7154b0ead49Smrg # Double-quote args containing other shell metacharacters. 7164b0ead49Smrg # Many Bourne shells cannot handle close brackets correctly 7174b0ead49Smrg # in scan sets, and some SunOS ksh mistreat backslash-escaping 7184b0ead49Smrg # in scan sets (worked around with variable expansion), 7194b0ead49Smrg # and furthermore cannot handle '|' '&' '(' ')' in scan sets 7204b0ead49Smrg # at all, so we specify them separately. 7214b0ead49Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 7224b0ead49Smrg lastarg="\"$lastarg\"" 7234b0ead49Smrg ;; 7244b0ead49Smrg esac 7254b0ead49Smrg 7264b0ead49Smrg base_compile="$base_compile $lastarg" 7274b0ead49Smrg done # for arg 7284b0ead49Smrg 7294b0ead49Smrg case $arg_mode in 7304b0ead49Smrg arg) 7314b0ead49Smrg $echo "$modename: you must specify an argument for -Xcompile" 7324b0ead49Smrg exit $EXIT_FAILURE 7334b0ead49Smrg ;; 7344b0ead49Smrg target) 7354b0ead49Smrg $echo "$modename: you must specify a target with \`-o'" 1>&2 7364b0ead49Smrg exit $EXIT_FAILURE 7374b0ead49Smrg ;; 7384b0ead49Smrg *) 7394b0ead49Smrg # Get the name of the library object. 7404b0ead49Smrg [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` 7414b0ead49Smrg ;; 7424b0ead49Smrg esac 7434b0ead49Smrg 7444b0ead49Smrg # Recognize several different file suffixes. 7454b0ead49Smrg # If the user specifies -o file.o, it is replaced with file.lo 7464b0ead49Smrg xform='[cCFSifmso]' 7474b0ead49Smrg case $libobj in 7484b0ead49Smrg *.ada) xform=ada ;; 7494b0ead49Smrg *.adb) xform=adb ;; 7504b0ead49Smrg *.ads) xform=ads ;; 7514b0ead49Smrg *.asm) xform=asm ;; 7524b0ead49Smrg *.c++) xform=c++ ;; 7534b0ead49Smrg *.cc) xform=cc ;; 7544b0ead49Smrg *.ii) xform=ii ;; 7554b0ead49Smrg *.class) xform=class ;; 7564b0ead49Smrg *.cpp) xform=cpp ;; 7574b0ead49Smrg *.cxx) xform=cxx ;; 7584b0ead49Smrg *.f90) xform=f90 ;; 7594b0ead49Smrg *.for) xform=for ;; 7604b0ead49Smrg *.java) xform=java ;; 7614b0ead49Smrg esac 7624b0ead49Smrg 7634b0ead49Smrg libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` 7644b0ead49Smrg 7654b0ead49Smrg case $libobj in 7664b0ead49Smrg *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; 7674b0ead49Smrg *) 7684b0ead49Smrg $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 7694b0ead49Smrg exit $EXIT_FAILURE 7704b0ead49Smrg ;; 7714b0ead49Smrg esac 7724b0ead49Smrg 7734b0ead49Smrg func_infer_tag $base_compile 7744b0ead49Smrg 7754b0ead49Smrg for arg in $later; do 7764b0ead49Smrg case $arg in 7774b0ead49Smrg -static) 7784b0ead49Smrg build_old_libs=yes 7794b0ead49Smrg continue 7804b0ead49Smrg ;; 7814b0ead49Smrg 7824b0ead49Smrg -prefer-pic) 7834b0ead49Smrg pic_mode=yes 7844b0ead49Smrg continue 7854b0ead49Smrg ;; 7864b0ead49Smrg 7874b0ead49Smrg -prefer-non-pic) 7884b0ead49Smrg pic_mode=no 7894b0ead49Smrg continue 7904b0ead49Smrg ;; 7914b0ead49Smrg esac 7924b0ead49Smrg done 7934b0ead49Smrg 7944b0ead49Smrg qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"` 7954b0ead49Smrg case $qlibobj in 7964b0ead49Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 7974b0ead49Smrg qlibobj="\"$qlibobj\"" ;; 7984b0ead49Smrg esac 7994b0ead49Smrg test "X$libobj" != "X$qlibobj" \ 8004b0ead49Smrg && $echo "X$libobj" | grep '[]~#^*{};<>?"'"'"' &()|`$[]' \ 8014b0ead49Smrg && $echo "$modename: libobj name \`$libobj' may not contain shell special characters." 8024b0ead49Smrg objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` 8034b0ead49Smrg xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` 8044b0ead49Smrg if test "X$xdir" = "X$obj"; then 8054b0ead49Smrg xdir= 8064b0ead49Smrg else 8074b0ead49Smrg xdir=$xdir/ 8084b0ead49Smrg fi 8094b0ead49Smrg lobj=${xdir}$objdir/$objname 8104b0ead49Smrg 8114b0ead49Smrg if test -z "$base_compile"; then 8124b0ead49Smrg $echo "$modename: you must specify a compilation command" 1>&2 8134b0ead49Smrg $echo "$help" 1>&2 8144b0ead49Smrg exit $EXIT_FAILURE 8154b0ead49Smrg fi 8164b0ead49Smrg 8174b0ead49Smrg # Delete any leftover library objects. 8184b0ead49Smrg if test "$build_old_libs" = yes; then 8194b0ead49Smrg removelist="$obj $lobj $libobj ${libobj}T" 8204b0ead49Smrg else 8214b0ead49Smrg removelist="$lobj $libobj ${libobj}T" 8224b0ead49Smrg fi 8234b0ead49Smrg 8244b0ead49Smrg $run $rm $removelist 8254b0ead49Smrg trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 8264b0ead49Smrg 8274b0ead49Smrg # On Cygwin there's no "real" PIC flag so we must build both object types 8284b0ead49Smrg case $host_os in 8294b0ead49Smrg cygwin* | mingw* | pw32* | os2*) 8304b0ead49Smrg pic_mode=default 8314b0ead49Smrg ;; 8324b0ead49Smrg esac 8334b0ead49Smrg if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then 8344b0ead49Smrg # non-PIC code in shared libraries is not supported 8354b0ead49Smrg pic_mode=default 8364b0ead49Smrg fi 8374b0ead49Smrg 8384b0ead49Smrg # Calculate the filename of the output object if compiler does 8394b0ead49Smrg # not support -o with -c 8404b0ead49Smrg if test "$compiler_c_o" = no; then 8414b0ead49Smrg output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} 8424b0ead49Smrg lockfile="$output_obj.lock" 8434b0ead49Smrg removelist="$removelist $output_obj $lockfile" 8444b0ead49Smrg trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 8454b0ead49Smrg else 8464b0ead49Smrg output_obj= 8474b0ead49Smrg need_locks=no 8484b0ead49Smrg lockfile= 8494b0ead49Smrg fi 8504b0ead49Smrg 8514b0ead49Smrg # Lock this critical section if it is needed 8524b0ead49Smrg # We use this script file to make the link, it avoids creating a new file 8534b0ead49Smrg if test "$need_locks" = yes; then 8544b0ead49Smrg until $run ln "$progpath" "$lockfile" 2>/dev/null; do 8554b0ead49Smrg $show "Waiting for $lockfile to be removed" 8564b0ead49Smrg sleep 2 8574b0ead49Smrg done 8584b0ead49Smrg elif test "$need_locks" = warn; then 8594b0ead49Smrg if test -f "$lockfile"; then 8604b0ead49Smrg $echo "\ 8614b0ead49Smrg*** ERROR, $lockfile exists and contains: 8624b0ead49Smrg`cat $lockfile 2>/dev/null` 8634b0ead49Smrg 8644b0ead49SmrgThis indicates that another process is trying to use the same 8654b0ead49Smrgtemporary object file, and libtool could not work around it because 8664b0ead49Smrgyour compiler does not support \`-c' and \`-o' together. If you 8674b0ead49Smrgrepeat this compilation, it may succeed, by chance, but you had better 8684b0ead49Smrgavoid parallel builds (make -j) in this platform, or get a better 8694b0ead49Smrgcompiler." 8704b0ead49Smrg 8714b0ead49Smrg $run $rm $removelist 8724b0ead49Smrg exit $EXIT_FAILURE 8734b0ead49Smrg fi 8744b0ead49Smrg $echo "$srcfile" > "$lockfile" 8754b0ead49Smrg fi 8764b0ead49Smrg 8774b0ead49Smrg if test -n "$fix_srcfile_path"; then 8784b0ead49Smrg eval srcfile=\"$fix_srcfile_path\" 8794b0ead49Smrg fi 8804b0ead49Smrg qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"` 8814b0ead49Smrg case $qsrcfile in 8824b0ead49Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 8834b0ead49Smrg qsrcfile="\"$qsrcfile\"" ;; 8844b0ead49Smrg esac 8854b0ead49Smrg 8864b0ead49Smrg $run $rm "$libobj" "${libobj}T" 8874b0ead49Smrg 8884b0ead49Smrg # Create a libtool object file (analogous to a ".la" file), 8894b0ead49Smrg # but don't create it if we're doing a dry run. 8904b0ead49Smrg test -z "$run" && cat > ${libobj}T <<EOF 8914b0ead49Smrg# $libobj - a libtool object file 8924b0ead49Smrg# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP 8934b0ead49Smrg# 8944b0ead49Smrg# Please DO NOT delete this file! 8954b0ead49Smrg# It is necessary for linking the library. 8964b0ead49Smrg 8974b0ead49Smrg# Name of the PIC object. 8984b0ead49SmrgEOF 8994b0ead49Smrg 9004b0ead49Smrg # Only build a PIC object if we are building libtool libraries. 9014b0ead49Smrg if test "$build_libtool_libs" = yes; then 9024b0ead49Smrg # Without this assignment, base_compile gets emptied. 9034b0ead49Smrg fbsd_hideous_sh_bug=$base_compile 9044b0ead49Smrg 9054b0ead49Smrg if test "$pic_mode" != no; then 9064b0ead49Smrg command="$base_compile $qsrcfile $pic_flag" 9074b0ead49Smrg else 9084b0ead49Smrg # Don't build PIC code 9094b0ead49Smrg command="$base_compile $qsrcfile" 9104b0ead49Smrg fi 9114b0ead49Smrg 9124b0ead49Smrg if test ! -d "${xdir}$objdir"; then 9134b0ead49Smrg $show "$mkdir ${xdir}$objdir" 9144b0ead49Smrg $run $mkdir ${xdir}$objdir 9154b0ead49Smrg exit_status=$? 9164b0ead49Smrg if test "$exit_status" -ne 0 && test ! -d "${xdir}$objdir"; then 9174b0ead49Smrg exit $exit_status 9184b0ead49Smrg fi 9194b0ead49Smrg fi 9204b0ead49Smrg 9214b0ead49Smrg if test -z "$output_obj"; then 9224b0ead49Smrg # Place PIC objects in $objdir 9234b0ead49Smrg command="$command -o $lobj" 9244b0ead49Smrg fi 9254b0ead49Smrg 9264b0ead49Smrg $run $rm "$lobj" "$output_obj" 9274b0ead49Smrg 9284b0ead49Smrg $show "$command" 9294b0ead49Smrg if $run eval "$command"; then : 9304b0ead49Smrg else 9314b0ead49Smrg test -n "$output_obj" && $run $rm $removelist 9324b0ead49Smrg exit $EXIT_FAILURE 9334b0ead49Smrg fi 9344b0ead49Smrg 9354b0ead49Smrg if test "$need_locks" = warn && 9364b0ead49Smrg test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 9374b0ead49Smrg $echo "\ 9384b0ead49Smrg*** ERROR, $lockfile contains: 9394b0ead49Smrg`cat $lockfile 2>/dev/null` 9404b0ead49Smrg 9414b0ead49Smrgbut it should contain: 9424b0ead49Smrg$srcfile 9434b0ead49Smrg 9444b0ead49SmrgThis indicates that another process is trying to use the same 9454b0ead49Smrgtemporary object file, and libtool could not work around it because 9464b0ead49Smrgyour compiler does not support \`-c' and \`-o' together. If you 9474b0ead49Smrgrepeat this compilation, it may succeed, by chance, but you had better 9484b0ead49Smrgavoid parallel builds (make -j) in this platform, or get a better 9494b0ead49Smrgcompiler." 9504b0ead49Smrg 9514b0ead49Smrg $run $rm $removelist 9524b0ead49Smrg exit $EXIT_FAILURE 9534b0ead49Smrg fi 9544b0ead49Smrg 9554b0ead49Smrg # Just move the object if needed, then go on to compile the next one 9564b0ead49Smrg if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then 9574b0ead49Smrg $show "$mv $output_obj $lobj" 9584b0ead49Smrg if $run $mv $output_obj $lobj; then : 9594b0ead49Smrg else 9604b0ead49Smrg error=$? 9614b0ead49Smrg $run $rm $removelist 9624b0ead49Smrg exit $error 9634b0ead49Smrg fi 9644b0ead49Smrg fi 9654b0ead49Smrg 9664b0ead49Smrg # Append the name of the PIC object to the libtool object file. 9674b0ead49Smrg test -z "$run" && cat >> ${libobj}T <<EOF 9684b0ead49Smrgpic_object='$objdir/$objname' 9694b0ead49Smrg 9704b0ead49SmrgEOF 9714b0ead49Smrg 9724b0ead49Smrg # Allow error messages only from the first compilation. 9734b0ead49Smrg if test "$suppress_opt" = yes; then 9744b0ead49Smrg suppress_output=' >/dev/null 2>&1' 9754b0ead49Smrg fi 9764b0ead49Smrg else 9774b0ead49Smrg # No PIC object so indicate it doesn't exist in the libtool 9784b0ead49Smrg # object file. 9794b0ead49Smrg test -z "$run" && cat >> ${libobj}T <<EOF 9804b0ead49Smrgpic_object=none 9814b0ead49Smrg 9824b0ead49SmrgEOF 9834b0ead49Smrg fi 9844b0ead49Smrg 9854b0ead49Smrg # Only build a position-dependent object if we build old libraries. 9864b0ead49Smrg if test "$build_old_libs" = yes; then 9874b0ead49Smrg if test "$pic_mode" != yes; then 9884b0ead49Smrg # Don't build PIC code 9894b0ead49Smrg command="$base_compile $qsrcfile" 9904b0ead49Smrg else 9914b0ead49Smrg command="$base_compile $qsrcfile $pic_flag" 9924b0ead49Smrg fi 9934b0ead49Smrg if test "$compiler_c_o" = yes; then 9944b0ead49Smrg command="$command -o $obj" 9954b0ead49Smrg fi 9964b0ead49Smrg 9974b0ead49Smrg # Suppress compiler output if we already did a PIC compilation. 9984b0ead49Smrg command="$command$suppress_output" 9994b0ead49Smrg $run $rm "$obj" "$output_obj" 10004b0ead49Smrg $show "$command" 10014b0ead49Smrg if $run eval "$command"; then : 10024b0ead49Smrg else 10034b0ead49Smrg $run $rm $removelist 10044b0ead49Smrg exit $EXIT_FAILURE 10054b0ead49Smrg fi 10064b0ead49Smrg 10074b0ead49Smrg if test "$need_locks" = warn && 10084b0ead49Smrg test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 10094b0ead49Smrg $echo "\ 10104b0ead49Smrg*** ERROR, $lockfile contains: 10114b0ead49Smrg`cat $lockfile 2>/dev/null` 10124b0ead49Smrg 10134b0ead49Smrgbut it should contain: 10144b0ead49Smrg$srcfile 10154b0ead49Smrg 10164b0ead49SmrgThis indicates that another process is trying to use the same 10174b0ead49Smrgtemporary object file, and libtool could not work around it because 10184b0ead49Smrgyour compiler does not support \`-c' and \`-o' together. If you 10194b0ead49Smrgrepeat this compilation, it may succeed, by chance, but you had better 10204b0ead49Smrgavoid parallel builds (make -j) in this platform, or get a better 10214b0ead49Smrgcompiler." 10224b0ead49Smrg 10234b0ead49Smrg $run $rm $removelist 10244b0ead49Smrg exit $EXIT_FAILURE 10254b0ead49Smrg fi 10264b0ead49Smrg 10274b0ead49Smrg # Just move the object if needed 10284b0ead49Smrg if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then 10294b0ead49Smrg $show "$mv $output_obj $obj" 10304b0ead49Smrg if $run $mv $output_obj $obj; then : 10314b0ead49Smrg else 10324b0ead49Smrg error=$? 10334b0ead49Smrg $run $rm $removelist 10344b0ead49Smrg exit $error 10354b0ead49Smrg fi 10364b0ead49Smrg fi 10374b0ead49Smrg 10384b0ead49Smrg # Append the name of the non-PIC object the libtool object file. 10394b0ead49Smrg # Only append if the libtool object file exists. 10404b0ead49Smrg test -z "$run" && cat >> ${libobj}T <<EOF 10414b0ead49Smrg# Name of the non-PIC object. 10424b0ead49Smrgnon_pic_object='$objname' 10434b0ead49Smrg 10444b0ead49SmrgEOF 10454b0ead49Smrg else 10464b0ead49Smrg # Append the name of the non-PIC object the libtool object file. 10474b0ead49Smrg # Only append if the libtool object file exists. 10484b0ead49Smrg test -z "$run" && cat >> ${libobj}T <<EOF 10494b0ead49Smrg# Name of the non-PIC object. 10504b0ead49Smrgnon_pic_object=none 10514b0ead49Smrg 10524b0ead49SmrgEOF 10534b0ead49Smrg fi 10544b0ead49Smrg 10554b0ead49Smrg $run $mv "${libobj}T" "${libobj}" 10564b0ead49Smrg 10574b0ead49Smrg # Unlock the critical section if it was locked 10584b0ead49Smrg if test "$need_locks" != no; then 10594b0ead49Smrg $run $rm "$lockfile" 10604b0ead49Smrg fi 10614b0ead49Smrg 10624b0ead49Smrg exit $EXIT_SUCCESS 10634b0ead49Smrg ;; 10644b0ead49Smrg 10654b0ead49Smrg # libtool link mode 10664b0ead49Smrg link | relink) 10674b0ead49Smrg modename="$modename: link" 10684b0ead49Smrg case $host in 10694b0ead49Smrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) 10704b0ead49Smrg # It is impossible to link a dll without this setting, and 10714b0ead49Smrg # we shouldn't force the makefile maintainer to figure out 10724b0ead49Smrg # which system we are compiling for in order to pass an extra 10734b0ead49Smrg # flag for every libtool invocation. 10744b0ead49Smrg # allow_undefined=no 10754b0ead49Smrg 10764b0ead49Smrg # FIXME: Unfortunately, there are problems with the above when trying 10774b0ead49Smrg # to make a dll which has undefined symbols, in which case not 10784b0ead49Smrg # even a static library is built. For now, we need to specify 10794b0ead49Smrg # -no-undefined on the libtool link line when we can be certain 10804b0ead49Smrg # that all symbols are satisfied, otherwise we get a static library. 10814b0ead49Smrg allow_undefined=yes 10824b0ead49Smrg ;; 10834b0ead49Smrg *) 10844b0ead49Smrg allow_undefined=yes 10854b0ead49Smrg ;; 10864b0ead49Smrg esac 10874b0ead49Smrg libtool_args="$nonopt" 10884b0ead49Smrg base_compile="$nonopt $@" 10894b0ead49Smrg compile_command="$nonopt" 10904b0ead49Smrg finalize_command="$nonopt" 10914b0ead49Smrg 10924b0ead49Smrg compile_rpath= 10934b0ead49Smrg finalize_rpath= 10944b0ead49Smrg compile_shlibpath= 10954b0ead49Smrg finalize_shlibpath= 10964b0ead49Smrg convenience= 10974b0ead49Smrg old_convenience= 10984b0ead49Smrg deplibs= 10994b0ead49Smrg old_deplibs= 11004b0ead49Smrg compiler_flags= 11014b0ead49Smrg linker_flags= 11024b0ead49Smrg dllsearchpath= 11034b0ead49Smrg lib_search_path=`pwd` 11044b0ead49Smrg inst_prefix_dir= 11054b0ead49Smrg 11064b0ead49Smrg avoid_version=no 11074b0ead49Smrg dlfiles= 11084b0ead49Smrg dlprefiles= 11094b0ead49Smrg dlself=no 11104b0ead49Smrg export_dynamic=no 11114b0ead49Smrg export_symbols= 11124b0ead49Smrg export_symbols_regex= 11134b0ead49Smrg generated= 11144b0ead49Smrg libobjs= 11154b0ead49Smrg ltlibs= 11164b0ead49Smrg module=no 11174b0ead49Smrg no_install=no 11184b0ead49Smrg objs= 11194b0ead49Smrg non_pic_objects= 11204b0ead49Smrg notinst_path= # paths that contain not-installed libtool libraries 11214b0ead49Smrg precious_files_regex= 11224b0ead49Smrg prefer_static_libs=no 11234b0ead49Smrg preload=no 11244b0ead49Smrg prev= 11254b0ead49Smrg prevarg= 11264b0ead49Smrg release= 11274b0ead49Smrg rpath= 11284b0ead49Smrg xrpath= 11294b0ead49Smrg perm_rpath= 11304b0ead49Smrg temp_rpath= 11314b0ead49Smrg thread_safe=no 11324b0ead49Smrg vinfo= 11334b0ead49Smrg vinfo_number=no 11344b0ead49Smrg 11354b0ead49Smrg func_infer_tag $base_compile 11364b0ead49Smrg 11374b0ead49Smrg # We need to know -static, to get the right output filenames. 11384b0ead49Smrg for arg 11394b0ead49Smrg do 11404b0ead49Smrg case $arg in 11414b0ead49Smrg -all-static | -static) 11424b0ead49Smrg if test "X$arg" = "X-all-static"; then 11434b0ead49Smrg if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then 11444b0ead49Smrg $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2 11454b0ead49Smrg fi 11464b0ead49Smrg if test -n "$link_static_flag"; then 11474b0ead49Smrg dlopen_self=$dlopen_self_static 11484b0ead49Smrg fi 11494b0ead49Smrg prefer_static_libs=yes 11504b0ead49Smrg else 11514b0ead49Smrg if test -z "$pic_flag" && test -n "$link_static_flag"; then 11524b0ead49Smrg dlopen_self=$dlopen_self_static 11534b0ead49Smrg fi 11544b0ead49Smrg prefer_static_libs=built 11554b0ead49Smrg fi 11564b0ead49Smrg build_libtool_libs=no 11574b0ead49Smrg build_old_libs=yes 11584b0ead49Smrg break 11594b0ead49Smrg ;; 11604b0ead49Smrg esac 11614b0ead49Smrg done 11624b0ead49Smrg 11634b0ead49Smrg # See if our shared archives depend on static archives. 11644b0ead49Smrg test -n "$old_archive_from_new_cmds" && build_old_libs=yes 11654b0ead49Smrg 11664b0ead49Smrg # Go through the arguments, transforming them on the way. 11674b0ead49Smrg while test "$#" -gt 0; do 11684b0ead49Smrg arg="$1" 11694b0ead49Smrg shift 11704b0ead49Smrg case $arg in 11714b0ead49Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 11724b0ead49Smrg qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test 11734b0ead49Smrg ;; 11744b0ead49Smrg *) qarg=$arg ;; 11754b0ead49Smrg esac 11764b0ead49Smrg libtool_args="$libtool_args $qarg" 11774b0ead49Smrg 11784b0ead49Smrg # If the previous option needs an argument, assign it. 11794b0ead49Smrg if test -n "$prev"; then 11804b0ead49Smrg case $prev in 11814b0ead49Smrg output) 11824b0ead49Smrg compile_command="$compile_command @OUTPUT@" 11834b0ead49Smrg finalize_command="$finalize_command @OUTPUT@" 11844b0ead49Smrg ;; 11854b0ead49Smrg esac 11864b0ead49Smrg 11874b0ead49Smrg case $prev in 11884b0ead49Smrg dlfiles|dlprefiles) 11894b0ead49Smrg if test "$preload" = no; then 11904b0ead49Smrg # Add the symbol object into the linking commands. 11914b0ead49Smrg compile_command="$compile_command @SYMFILE@" 11924b0ead49Smrg finalize_command="$finalize_command @SYMFILE@" 11934b0ead49Smrg preload=yes 11944b0ead49Smrg fi 11954b0ead49Smrg case $arg in 11964b0ead49Smrg *.la | *.lo) ;; # We handle these cases below. 11974b0ead49Smrg force) 11984b0ead49Smrg if test "$dlself" = no; then 11994b0ead49Smrg dlself=needless 12004b0ead49Smrg export_dynamic=yes 12014b0ead49Smrg fi 12024b0ead49Smrg prev= 12034b0ead49Smrg continue 12044b0ead49Smrg ;; 12054b0ead49Smrg self) 12064b0ead49Smrg if test "$prev" = dlprefiles; then 12074b0ead49Smrg dlself=yes 12084b0ead49Smrg elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then 12094b0ead49Smrg dlself=yes 12104b0ead49Smrg else 12114b0ead49Smrg dlself=needless 12124b0ead49Smrg export_dynamic=yes 12134b0ead49Smrg fi 12144b0ead49Smrg prev= 12154b0ead49Smrg continue 12164b0ead49Smrg ;; 12174b0ead49Smrg *) 12184b0ead49Smrg if test "$prev" = dlfiles; then 12194b0ead49Smrg dlfiles="$dlfiles $arg" 12204b0ead49Smrg else 12214b0ead49Smrg dlprefiles="$dlprefiles $arg" 12224b0ead49Smrg fi 12234b0ead49Smrg prev= 12244b0ead49Smrg continue 12254b0ead49Smrg ;; 12264b0ead49Smrg esac 12274b0ead49Smrg ;; 12284b0ead49Smrg expsyms) 12294b0ead49Smrg export_symbols="$arg" 12304b0ead49Smrg if test ! -f "$arg"; then 12314b0ead49Smrg $echo "$modename: symbol file \`$arg' does not exist" 12324b0ead49Smrg exit $EXIT_FAILURE 12334b0ead49Smrg fi 12344b0ead49Smrg prev= 12354b0ead49Smrg continue 12364b0ead49Smrg ;; 12374b0ead49Smrg expsyms_regex) 12384b0ead49Smrg export_symbols_regex="$arg" 12394b0ead49Smrg prev= 12404b0ead49Smrg continue 12414b0ead49Smrg ;; 12424b0ead49Smrg inst_prefix) 12434b0ead49Smrg inst_prefix_dir="$arg" 12444b0ead49Smrg prev= 12454b0ead49Smrg continue 12464b0ead49Smrg ;; 12474b0ead49Smrg precious_regex) 12484b0ead49Smrg precious_files_regex="$arg" 12494b0ead49Smrg prev= 12504b0ead49Smrg continue 12514b0ead49Smrg ;; 12524b0ead49Smrg release) 12534b0ead49Smrg release="-$arg" 12544b0ead49Smrg prev= 12554b0ead49Smrg continue 12564b0ead49Smrg ;; 12574b0ead49Smrg objectlist) 12584b0ead49Smrg if test -f "$arg"; then 12594b0ead49Smrg save_arg=$arg 12604b0ead49Smrg moreargs= 12614b0ead49Smrg for fil in `cat $save_arg` 12624b0ead49Smrg do 12634b0ead49Smrg# moreargs="$moreargs $fil" 12644b0ead49Smrg arg=$fil 12654b0ead49Smrg # A libtool-controlled object. 12664b0ead49Smrg 12674b0ead49Smrg # Check to see that this really is a libtool object. 12684b0ead49Smrg if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 12694b0ead49Smrg pic_object= 12704b0ead49Smrg non_pic_object= 12714b0ead49Smrg 12724b0ead49Smrg # Read the .lo file 12734b0ead49Smrg # If there is no directory component, then add one. 12744b0ead49Smrg case $arg in 12754b0ead49Smrg */* | *\\*) . $arg ;; 12764b0ead49Smrg *) . ./$arg ;; 12774b0ead49Smrg esac 12784b0ead49Smrg 12794b0ead49Smrg if test -z "$pic_object" || \ 12804b0ead49Smrg test -z "$non_pic_object" || 12814b0ead49Smrg test "$pic_object" = none && \ 12824b0ead49Smrg test "$non_pic_object" = none; then 12834b0ead49Smrg $echo "$modename: cannot find name of object for \`$arg'" 1>&2 12844b0ead49Smrg exit $EXIT_FAILURE 12854b0ead49Smrg fi 12864b0ead49Smrg 12874b0ead49Smrg # Extract subdirectory from the argument. 12884b0ead49Smrg xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` 12894b0ead49Smrg if test "X$xdir" = "X$arg"; then 12904b0ead49Smrg xdir= 12914b0ead49Smrg else 12924b0ead49Smrg xdir="$xdir/" 12934b0ead49Smrg fi 12944b0ead49Smrg 12954b0ead49Smrg if test "$pic_object" != none; then 12964b0ead49Smrg # Prepend the subdirectory the object is found in. 12974b0ead49Smrg pic_object="$xdir$pic_object" 12984b0ead49Smrg 12994b0ead49Smrg if test "$prev" = dlfiles; then 13004b0ead49Smrg if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 13014b0ead49Smrg dlfiles="$dlfiles $pic_object" 13024b0ead49Smrg prev= 13034b0ead49Smrg continue 13044b0ead49Smrg else 13054b0ead49Smrg # If libtool objects are unsupported, then we need to preload. 13064b0ead49Smrg prev=dlprefiles 13074b0ead49Smrg fi 13084b0ead49Smrg fi 13094b0ead49Smrg 13104b0ead49Smrg # CHECK ME: I think I busted this. -Ossama 13114b0ead49Smrg if test "$prev" = dlprefiles; then 13124b0ead49Smrg # Preload the old-style object. 13134b0ead49Smrg dlprefiles="$dlprefiles $pic_object" 13144b0ead49Smrg prev= 13154b0ead49Smrg fi 13164b0ead49Smrg 13174b0ead49Smrg # A PIC object. 13184b0ead49Smrg libobjs="$libobjs $pic_object" 13194b0ead49Smrg arg="$pic_object" 13204b0ead49Smrg fi 13214b0ead49Smrg 13224b0ead49Smrg # Non-PIC object. 13234b0ead49Smrg if test "$non_pic_object" != none; then 13244b0ead49Smrg # Prepend the subdirectory the object is found in. 13254b0ead49Smrg non_pic_object="$xdir$non_pic_object" 13264b0ead49Smrg 13274b0ead49Smrg # A standard non-PIC object 13284b0ead49Smrg non_pic_objects="$non_pic_objects $non_pic_object" 13294b0ead49Smrg if test -z "$pic_object" || test "$pic_object" = none ; then 13304b0ead49Smrg arg="$non_pic_object" 13314b0ead49Smrg fi 13324b0ead49Smrg else 13334b0ead49Smrg # If the PIC object exists, use it instead. 13344b0ead49Smrg # $xdir was prepended to $pic_object above. 13354b0ead49Smrg non_pic_object="$pic_object" 13364b0ead49Smrg non_pic_objects="$non_pic_objects $non_pic_object" 13374b0ead49Smrg fi 13384b0ead49Smrg else 13394b0ead49Smrg # Only an error if not doing a dry-run. 13404b0ead49Smrg if test -z "$run"; then 13414b0ead49Smrg $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 13424b0ead49Smrg exit $EXIT_FAILURE 13434b0ead49Smrg else 13444b0ead49Smrg # Dry-run case. 13454b0ead49Smrg 13464b0ead49Smrg # Extract subdirectory from the argument. 13474b0ead49Smrg xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` 13484b0ead49Smrg if test "X$xdir" = "X$arg"; then 13494b0ead49Smrg xdir= 13504b0ead49Smrg else 13514b0ead49Smrg xdir="$xdir/" 13524b0ead49Smrg fi 13534b0ead49Smrg 13544b0ead49Smrg pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` 13554b0ead49Smrg non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` 13564b0ead49Smrg libobjs="$libobjs $pic_object" 13574b0ead49Smrg non_pic_objects="$non_pic_objects $non_pic_object" 13584b0ead49Smrg fi 13594b0ead49Smrg fi 13604b0ead49Smrg done 13614b0ead49Smrg else 13624b0ead49Smrg $echo "$modename: link input file \`$save_arg' does not exist" 13634b0ead49Smrg exit $EXIT_FAILURE 13644b0ead49Smrg fi 13654b0ead49Smrg arg=$save_arg 13664b0ead49Smrg prev= 13674b0ead49Smrg continue 13684b0ead49Smrg ;; 13694b0ead49Smrg rpath | xrpath) 13704b0ead49Smrg # We need an absolute path. 13714b0ead49Smrg case $arg in 13724b0ead49Smrg [\\/]* | [A-Za-z]:[\\/]*) ;; 13734b0ead49Smrg *) 13744b0ead49Smrg $echo "$modename: only absolute run-paths are allowed" 1>&2 13754b0ead49Smrg exit $EXIT_FAILURE 13764b0ead49Smrg ;; 13774b0ead49Smrg esac 13784b0ead49Smrg if test "$prev" = rpath; then 13794b0ead49Smrg case "$rpath " in 13804b0ead49Smrg *" $arg "*) ;; 13814b0ead49Smrg *) rpath="$rpath $arg" ;; 13824b0ead49Smrg esac 13834b0ead49Smrg else 13844b0ead49Smrg case "$xrpath " in 13854b0ead49Smrg *" $arg "*) ;; 13864b0ead49Smrg *) xrpath="$xrpath $arg" ;; 13874b0ead49Smrg esac 13884b0ead49Smrg fi 13894b0ead49Smrg prev= 13904b0ead49Smrg continue 13914b0ead49Smrg ;; 13924b0ead49Smrg xcompiler) 13934b0ead49Smrg compiler_flags="$compiler_flags $qarg" 13944b0ead49Smrg prev= 13954b0ead49Smrg compile_command="$compile_command $qarg" 13964b0ead49Smrg finalize_command="$finalize_command $qarg" 13974b0ead49Smrg continue 13984b0ead49Smrg ;; 13994b0ead49Smrg xlinker) 14004b0ead49Smrg linker_flags="$linker_flags $qarg" 14014b0ead49Smrg compiler_flags="$compiler_flags $wl$qarg" 14024b0ead49Smrg prev= 14034b0ead49Smrg compile_command="$compile_command $wl$qarg" 14044b0ead49Smrg finalize_command="$finalize_command $wl$qarg" 14054b0ead49Smrg continue 14064b0ead49Smrg ;; 14074b0ead49Smrg xcclinker) 14084b0ead49Smrg linker_flags="$linker_flags $qarg" 14094b0ead49Smrg compiler_flags="$compiler_flags $qarg" 14104b0ead49Smrg prev= 14114b0ead49Smrg compile_command="$compile_command $qarg" 14124b0ead49Smrg finalize_command="$finalize_command $qarg" 14134b0ead49Smrg continue 14144b0ead49Smrg ;; 14154b0ead49Smrg shrext) 14164b0ead49Smrg shrext_cmds="$arg" 14174b0ead49Smrg prev= 14184b0ead49Smrg continue 14194b0ead49Smrg ;; 14204b0ead49Smrg darwin_framework|darwin_framework_skip) 14214b0ead49Smrg test "$prev" = "darwin_framework" && compiler_flags="$compiler_flags $arg" 14224b0ead49Smrg compile_command="$compile_command $arg" 14234b0ead49Smrg finalize_command="$finalize_command $arg" 14244b0ead49Smrg prev= 14254b0ead49Smrg continue 14264b0ead49Smrg ;; 14274b0ead49Smrg *) 14284b0ead49Smrg eval "$prev=\"\$arg\"" 14294b0ead49Smrg prev= 14304b0ead49Smrg continue 14314b0ead49Smrg ;; 14324b0ead49Smrg esac 14334b0ead49Smrg fi # test -n "$prev" 14344b0ead49Smrg 14354b0ead49Smrg prevarg="$arg" 14364b0ead49Smrg 14374b0ead49Smrg case $arg in 14384b0ead49Smrg -all-static) 14394b0ead49Smrg if test -n "$link_static_flag"; then 14404b0ead49Smrg compile_command="$compile_command $link_static_flag" 14414b0ead49Smrg finalize_command="$finalize_command $link_static_flag" 14424b0ead49Smrg fi 14434b0ead49Smrg continue 14444b0ead49Smrg ;; 14454b0ead49Smrg 14464b0ead49Smrg -allow-undefined) 14474b0ead49Smrg # FIXME: remove this flag sometime in the future. 14484b0ead49Smrg $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2 14494b0ead49Smrg continue 14504b0ead49Smrg ;; 14514b0ead49Smrg 14524b0ead49Smrg -avoid-version) 14534b0ead49Smrg avoid_version=yes 14544b0ead49Smrg continue 14554b0ead49Smrg ;; 14564b0ead49Smrg 14574b0ead49Smrg -dlopen) 14584b0ead49Smrg prev=dlfiles 14594b0ead49Smrg continue 14604b0ead49Smrg ;; 14614b0ead49Smrg 14624b0ead49Smrg -dlpreopen) 14634b0ead49Smrg prev=dlprefiles 14644b0ead49Smrg continue 14654b0ead49Smrg ;; 14664b0ead49Smrg 14674b0ead49Smrg -export-dynamic) 14684b0ead49Smrg export_dynamic=yes 14694b0ead49Smrg continue 14704b0ead49Smrg ;; 14714b0ead49Smrg 14724b0ead49Smrg -export-symbols | -export-symbols-regex) 14734b0ead49Smrg if test -n "$export_symbols" || test -n "$export_symbols_regex"; then 14744b0ead49Smrg $echo "$modename: more than one -exported-symbols argument is not allowed" 14754b0ead49Smrg exit $EXIT_FAILURE 14764b0ead49Smrg fi 14774b0ead49Smrg if test "X$arg" = "X-export-symbols"; then 14784b0ead49Smrg prev=expsyms 14794b0ead49Smrg else 14804b0ead49Smrg prev=expsyms_regex 14814b0ead49Smrg fi 14824b0ead49Smrg continue 14834b0ead49Smrg ;; 14844b0ead49Smrg 14854b0ead49Smrg -framework|-arch|-isysroot) 14864b0ead49Smrg case " $CC " in 14874b0ead49Smrg *" ${arg} ${1} "* | *" ${arg} ${1} "*) 14884b0ead49Smrg prev=darwin_framework_skip ;; 14894b0ead49Smrg *) compiler_flags="$compiler_flags $arg" 14904b0ead49Smrg prev=darwin_framework ;; 14914b0ead49Smrg esac 14924b0ead49Smrg compile_command="$compile_command $arg" 14934b0ead49Smrg finalize_command="$finalize_command $arg" 14944b0ead49Smrg continue 14954b0ead49Smrg ;; 14964b0ead49Smrg 14974b0ead49Smrg -inst-prefix-dir) 14984b0ead49Smrg prev=inst_prefix 14994b0ead49Smrg continue 15004b0ead49Smrg ;; 15014b0ead49Smrg 15024b0ead49Smrg # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* 15034b0ead49Smrg # so, if we see these flags be careful not to treat them like -L 15044b0ead49Smrg -L[A-Z][A-Z]*:*) 15054b0ead49Smrg case $with_gcc/$host in 15064b0ead49Smrg no/*-*-irix* | /*-*-irix*) 15074b0ead49Smrg compile_command="$compile_command $arg" 15084b0ead49Smrg finalize_command="$finalize_command $arg" 15094b0ead49Smrg ;; 15104b0ead49Smrg esac 15114b0ead49Smrg continue 15124b0ead49Smrg ;; 15134b0ead49Smrg 15144b0ead49Smrg -L*) 15154b0ead49Smrg dir=`$echo "X$arg" | $Xsed -e 's/^-L//'` 15164b0ead49Smrg # We need an absolute path. 15174b0ead49Smrg case $dir in 15184b0ead49Smrg [\\/]* | [A-Za-z]:[\\/]*) ;; 15194b0ead49Smrg *) 15204b0ead49Smrg absdir=`cd "$dir" && pwd` 15214b0ead49Smrg if test -z "$absdir"; then 15224b0ead49Smrg $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2 15234b0ead49Smrg absdir="$dir" 15244b0ead49Smrg notinst_path="$notinst_path $dir" 15254b0ead49Smrg fi 15264b0ead49Smrg dir="$absdir" 15274b0ead49Smrg ;; 15284b0ead49Smrg esac 15294b0ead49Smrg case "$deplibs " in 15304b0ead49Smrg *" -L$dir "*) ;; 15314b0ead49Smrg *) 15324b0ead49Smrg deplibs="$deplibs -L$dir" 15334b0ead49Smrg lib_search_path="$lib_search_path $dir" 15344b0ead49Smrg ;; 15354b0ead49Smrg esac 15364b0ead49Smrg case $host in 15374b0ead49Smrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) 15384b0ead49Smrg testbindir=`$echo "X$dir" | $Xsed -e 's*/lib$*/bin*'` 15394b0ead49Smrg case :$dllsearchpath: in 15404b0ead49Smrg *":$dir:"*) ;; 15414b0ead49Smrg *) dllsearchpath="$dllsearchpath:$dir";; 15424b0ead49Smrg esac 15434b0ead49Smrg case :$dllsearchpath: in 15444b0ead49Smrg *":$testbindir:"*) ;; 15454b0ead49Smrg *) dllsearchpath="$dllsearchpath:$testbindir";; 15464b0ead49Smrg esac 15474b0ead49Smrg ;; 15484b0ead49Smrg esac 15494b0ead49Smrg continue 15504b0ead49Smrg ;; 15514b0ead49Smrg 15524b0ead49Smrg -l*) 15534b0ead49Smrg if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then 15544b0ead49Smrg case $host in 15554b0ead49Smrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos*) 15564b0ead49Smrg # These systems don't actually have a C or math library (as such) 15574b0ead49Smrg continue 15584b0ead49Smrg ;; 15594b0ead49Smrg *-*-os2*) 15604b0ead49Smrg # These systems don't actually have a C library (as such) 15614b0ead49Smrg test "X$arg" = "X-lc" && continue 15624b0ead49Smrg ;; 15634b0ead49Smrg *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 15644b0ead49Smrg # Do not include libc due to us having libc/libc_r. 15654b0ead49Smrg test "X$arg" = "X-lc" && continue 15664b0ead49Smrg ;; 15674b0ead49Smrg *-*-rhapsody* | *-*-darwin1.[012]) 15684b0ead49Smrg # Rhapsody C and math libraries are in the System framework 15694b0ead49Smrg deplibs="$deplibs -framework System" 15704b0ead49Smrg continue 15714b0ead49Smrg ;; 15724b0ead49Smrg *-*-sco3.2v5* | *-*-sco5v6*) 15734b0ead49Smrg # Causes problems with __ctype 15744b0ead49Smrg test "X$arg" = "X-lc" && continue 15754b0ead49Smrg ;; 15764b0ead49Smrg *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 15774b0ead49Smrg # Compiler inserts libc in the correct place for threads to work 15784b0ead49Smrg test "X$arg" = "X-lc" && continue 15794b0ead49Smrg ;; 15804b0ead49Smrg esac 15814b0ead49Smrg elif test "X$arg" = "X-lc_r"; then 15824b0ead49Smrg case $host in 15834b0ead49Smrg *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 15844b0ead49Smrg # Do not include libc_r directly, use -pthread flag. 15854b0ead49Smrg continue 15864b0ead49Smrg ;; 15874b0ead49Smrg esac 15884b0ead49Smrg fi 15894b0ead49Smrg deplibs="$deplibs $arg" 15904b0ead49Smrg continue 15914b0ead49Smrg ;; 15924b0ead49Smrg 15934b0ead49Smrg # Tru64 UNIX uses -model [arg] to determine the layout of C++ 15944b0ead49Smrg # classes, name mangling, and exception handling. 15954b0ead49Smrg -model) 15964b0ead49Smrg compile_command="$compile_command $arg" 15974b0ead49Smrg compiler_flags="$compiler_flags $arg" 15984b0ead49Smrg finalize_command="$finalize_command $arg" 15994b0ead49Smrg prev=xcompiler 16004b0ead49Smrg continue 16014b0ead49Smrg ;; 16024b0ead49Smrg 16034b0ead49Smrg -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe) 16044b0ead49Smrg compiler_flags="$compiler_flags $arg" 16054b0ead49Smrg compile_command="$compile_command $arg" 16064b0ead49Smrg finalize_command="$finalize_command $arg" 16074b0ead49Smrg continue 16084b0ead49Smrg ;; 16094b0ead49Smrg 16104b0ead49Smrg -module) 16114b0ead49Smrg module=yes 16124b0ead49Smrg continue 16134b0ead49Smrg ;; 16144b0ead49Smrg 16154b0ead49Smrg # -64, -mips[0-9] enable 64-bit mode on the SGI compiler 16164b0ead49Smrg # -r[0-9][0-9]* specifies the processor on the SGI compiler 16174b0ead49Smrg # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler 16184b0ead49Smrg # +DA*, +DD* enable 64-bit mode on the HP compiler 16194b0ead49Smrg # -q* pass through compiler args for the IBM compiler 16204b0ead49Smrg # -m* pass through architecture-specific compiler args for GCC 16214b0ead49Smrg # -m*, -t[45]*, -txscale* pass through architecture-specific 16224b0ead49Smrg # compiler args for GCC 16234b0ead49Smrg # -pg pass through profiling flag for GCC 16244b0ead49Smrg # @file GCC response files 16254b0ead49Smrg -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*|-pg| \ 16264b0ead49Smrg -t[45]*|-txscale*|@*) 16274b0ead49Smrg 16284b0ead49Smrg # Unknown arguments in both finalize_command and compile_command need 16294b0ead49Smrg # to be aesthetically quoted because they are evaled later. 16304b0ead49Smrg arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 16314b0ead49Smrg case $arg in 16324b0ead49Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 16334b0ead49Smrg arg="\"$arg\"" 16344b0ead49Smrg ;; 16354b0ead49Smrg esac 16364b0ead49Smrg compile_command="$compile_command $arg" 16374b0ead49Smrg finalize_command="$finalize_command $arg" 16384b0ead49Smrg compiler_flags="$compiler_flags $arg" 16394b0ead49Smrg continue 16404b0ead49Smrg ;; 16414b0ead49Smrg 16424b0ead49Smrg -shrext) 16434b0ead49Smrg prev=shrext 16444b0ead49Smrg continue 16454b0ead49Smrg ;; 16464b0ead49Smrg 16474b0ead49Smrg -no-fast-install) 16484b0ead49Smrg fast_install=no 16494b0ead49Smrg continue 16504b0ead49Smrg ;; 16514b0ead49Smrg 16524b0ead49Smrg -no-install) 16534b0ead49Smrg case $host in 16544b0ead49Smrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) 16554b0ead49Smrg # The PATH hackery in wrapper scripts is required on Windows 16564b0ead49Smrg # in order for the loader to find any dlls it needs. 16574b0ead49Smrg $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2 16584b0ead49Smrg $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2 16594b0ead49Smrg fast_install=no 16604b0ead49Smrg ;; 16614b0ead49Smrg *) no_install=yes ;; 16624b0ead49Smrg esac 16634b0ead49Smrg continue 16644b0ead49Smrg ;; 16654b0ead49Smrg 16664b0ead49Smrg -no-undefined) 16674b0ead49Smrg allow_undefined=no 16684b0ead49Smrg continue 16694b0ead49Smrg ;; 16704b0ead49Smrg 16714b0ead49Smrg -objectlist) 16724b0ead49Smrg prev=objectlist 16734b0ead49Smrg continue 16744b0ead49Smrg ;; 16754b0ead49Smrg 16764b0ead49Smrg -o) prev=output ;; 16774b0ead49Smrg 16784b0ead49Smrg -precious-files-regex) 16794b0ead49Smrg prev=precious_regex 16804b0ead49Smrg continue 16814b0ead49Smrg ;; 16824b0ead49Smrg 16834b0ead49Smrg -release) 16844b0ead49Smrg prev=release 16854b0ead49Smrg continue 16864b0ead49Smrg ;; 16874b0ead49Smrg 16884b0ead49Smrg -rpath) 16894b0ead49Smrg prev=rpath 16904b0ead49Smrg continue 16914b0ead49Smrg ;; 16924b0ead49Smrg 16934b0ead49Smrg -R) 16944b0ead49Smrg prev=xrpath 16954b0ead49Smrg continue 16964b0ead49Smrg ;; 16974b0ead49Smrg 16984b0ead49Smrg -R*) 16994b0ead49Smrg dir=`$echo "X$arg" | $Xsed -e 's/^-R//'` 17004b0ead49Smrg # We need an absolute path. 17014b0ead49Smrg case $dir in 17024b0ead49Smrg [\\/]* | [A-Za-z]:[\\/]*) ;; 17034b0ead49Smrg *) 17044b0ead49Smrg $echo "$modename: only absolute run-paths are allowed" 1>&2 17054b0ead49Smrg exit $EXIT_FAILURE 17064b0ead49Smrg ;; 17074b0ead49Smrg esac 17084b0ead49Smrg case "$xrpath " in 17094b0ead49Smrg *" $dir "*) ;; 17104b0ead49Smrg *) xrpath="$xrpath $dir" ;; 17114b0ead49Smrg esac 17124b0ead49Smrg continue 17134b0ead49Smrg ;; 17144b0ead49Smrg 17154b0ead49Smrg -static) 17164b0ead49Smrg # The effects of -static are defined in a previous loop. 17174b0ead49Smrg # We used to do the same as -all-static on platforms that 17184b0ead49Smrg # didn't have a PIC flag, but the assumption that the effects 17194b0ead49Smrg # would be equivalent was wrong. It would break on at least 17204b0ead49Smrg # Digital Unix and AIX. 17214b0ead49Smrg continue 17224b0ead49Smrg ;; 17234b0ead49Smrg 17244b0ead49Smrg -thread-safe) 17254b0ead49Smrg thread_safe=yes 17264b0ead49Smrg continue 17274b0ead49Smrg ;; 17284b0ead49Smrg 17294b0ead49Smrg -version-info) 17304b0ead49Smrg prev=vinfo 17314b0ead49Smrg continue 17324b0ead49Smrg ;; 17334b0ead49Smrg -version-number) 17344b0ead49Smrg prev=vinfo 17354b0ead49Smrg vinfo_number=yes 17364b0ead49Smrg continue 17374b0ead49Smrg ;; 17384b0ead49Smrg 17394b0ead49Smrg -Wc,*) 17404b0ead49Smrg args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'` 17414b0ead49Smrg arg= 17424b0ead49Smrg save_ifs="$IFS"; IFS=',' 17434b0ead49Smrg for flag in $args; do 17444b0ead49Smrg IFS="$save_ifs" 17454b0ead49Smrg case $flag in 17464b0ead49Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 17474b0ead49Smrg flag="\"$flag\"" 17484b0ead49Smrg ;; 17494b0ead49Smrg esac 17504b0ead49Smrg arg="$arg $wl$flag" 17514b0ead49Smrg compiler_flags="$compiler_flags $flag" 17524b0ead49Smrg done 17534b0ead49Smrg IFS="$save_ifs" 17544b0ead49Smrg arg=`$echo "X$arg" | $Xsed -e "s/^ //"` 17554b0ead49Smrg ;; 17564b0ead49Smrg 17574b0ead49Smrg -Wl,*) 17584b0ead49Smrg args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'` 17594b0ead49Smrg arg= 17604b0ead49Smrg save_ifs="$IFS"; IFS=',' 17614b0ead49Smrg for flag in $args; do 17624b0ead49Smrg IFS="$save_ifs" 17634b0ead49Smrg case $flag in 17644b0ead49Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 17654b0ead49Smrg flag="\"$flag\"" 17664b0ead49Smrg ;; 17674b0ead49Smrg esac 17684b0ead49Smrg arg="$arg $wl$flag" 17694b0ead49Smrg compiler_flags="$compiler_flags $wl$flag" 17704b0ead49Smrg linker_flags="$linker_flags $flag" 17714b0ead49Smrg done 17724b0ead49Smrg IFS="$save_ifs" 17734b0ead49Smrg arg=`$echo "X$arg" | $Xsed -e "s/^ //"` 17744b0ead49Smrg ;; 17754b0ead49Smrg 17764b0ead49Smrg -Xcompiler) 17774b0ead49Smrg prev=xcompiler 17784b0ead49Smrg continue 17794b0ead49Smrg ;; 17804b0ead49Smrg 17814b0ead49Smrg -Xlinker) 17824b0ead49Smrg prev=xlinker 17834b0ead49Smrg continue 17844b0ead49Smrg ;; 17854b0ead49Smrg 17864b0ead49Smrg -XCClinker) 17874b0ead49Smrg prev=xcclinker 17884b0ead49Smrg continue 17894b0ead49Smrg ;; 17904b0ead49Smrg 17914b0ead49Smrg # Some other compiler flag. 17924b0ead49Smrg -* | +*) 17934b0ead49Smrg # Unknown arguments in both finalize_command and compile_command need 17944b0ead49Smrg # to be aesthetically quoted because they are evaled later. 17954b0ead49Smrg arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 17964b0ead49Smrg case $arg in 17974b0ead49Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 17984b0ead49Smrg arg="\"$arg\"" 17994b0ead49Smrg ;; 18004b0ead49Smrg esac 18014b0ead49Smrg ;; 18024b0ead49Smrg 18034b0ead49Smrg *.$objext) 18044b0ead49Smrg # A standard object. 18054b0ead49Smrg objs="$objs $arg" 18064b0ead49Smrg ;; 18074b0ead49Smrg 18084b0ead49Smrg *.lo) 18094b0ead49Smrg # A libtool-controlled object. 18104b0ead49Smrg 18114b0ead49Smrg # Check to see that this really is a libtool object. 18124b0ead49Smrg if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 18134b0ead49Smrg pic_object= 18144b0ead49Smrg non_pic_object= 18154b0ead49Smrg 18164b0ead49Smrg # Read the .lo file 18174b0ead49Smrg # If there is no directory component, then add one. 18184b0ead49Smrg case $arg in 18194b0ead49Smrg */* | *\\*) . $arg ;; 18204b0ead49Smrg *) . ./$arg ;; 18214b0ead49Smrg esac 18224b0ead49Smrg 18234b0ead49Smrg if test -z "$pic_object" || \ 18244b0ead49Smrg test -z "$non_pic_object" || 18254b0ead49Smrg test "$pic_object" = none && \ 18264b0ead49Smrg test "$non_pic_object" = none; then 18274b0ead49Smrg $echo "$modename: cannot find name of object for \`$arg'" 1>&2 18284b0ead49Smrg exit $EXIT_FAILURE 18294b0ead49Smrg fi 18304b0ead49Smrg 18314b0ead49Smrg # Extract subdirectory from the argument. 18324b0ead49Smrg xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` 18334b0ead49Smrg if test "X$xdir" = "X$arg"; then 18344b0ead49Smrg xdir= 18354b0ead49Smrg else 18364b0ead49Smrg xdir="$xdir/" 18374b0ead49Smrg fi 18384b0ead49Smrg 18394b0ead49Smrg if test "$pic_object" != none; then 18404b0ead49Smrg # Prepend the subdirectory the object is found in. 18414b0ead49Smrg pic_object="$xdir$pic_object" 18424b0ead49Smrg 18434b0ead49Smrg if test "$prev" = dlfiles; then 18444b0ead49Smrg if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 18454b0ead49Smrg dlfiles="$dlfiles $pic_object" 18464b0ead49Smrg prev= 18474b0ead49Smrg continue 18484b0ead49Smrg else 18494b0ead49Smrg # If libtool objects are unsupported, then we need to preload. 18504b0ead49Smrg prev=dlprefiles 18514b0ead49Smrg fi 18524b0ead49Smrg fi 18534b0ead49Smrg 18544b0ead49Smrg # CHECK ME: I think I busted this. -Ossama 18554b0ead49Smrg if test "$prev" = dlprefiles; then 18564b0ead49Smrg # Preload the old-style object. 18574b0ead49Smrg dlprefiles="$dlprefiles $pic_object" 18584b0ead49Smrg prev= 18594b0ead49Smrg fi 18604b0ead49Smrg 18614b0ead49Smrg # A PIC object. 18624b0ead49Smrg libobjs="$libobjs $pic_object" 18634b0ead49Smrg arg="$pic_object" 18644b0ead49Smrg fi 18654b0ead49Smrg 18664b0ead49Smrg # Non-PIC object. 18674b0ead49Smrg if test "$non_pic_object" != none; then 18684b0ead49Smrg # Prepend the subdirectory the object is found in. 18694b0ead49Smrg non_pic_object="$xdir$non_pic_object" 18704b0ead49Smrg 18714b0ead49Smrg # A standard non-PIC object 18724b0ead49Smrg non_pic_objects="$non_pic_objects $non_pic_object" 18734b0ead49Smrg if test -z "$pic_object" || test "$pic_object" = none ; then 18744b0ead49Smrg arg="$non_pic_object" 18754b0ead49Smrg fi 18764b0ead49Smrg else 18774b0ead49Smrg # If the PIC object exists, use it instead. 18784b0ead49Smrg # $xdir was prepended to $pic_object above. 18794b0ead49Smrg non_pic_object="$pic_object" 18804b0ead49Smrg non_pic_objects="$non_pic_objects $non_pic_object" 18814b0ead49Smrg fi 18824b0ead49Smrg else 18834b0ead49Smrg # Only an error if not doing a dry-run. 18844b0ead49Smrg if test -z "$run"; then 18854b0ead49Smrg $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 18864b0ead49Smrg exit $EXIT_FAILURE 18874b0ead49Smrg else 18884b0ead49Smrg # Dry-run case. 18894b0ead49Smrg 18904b0ead49Smrg # Extract subdirectory from the argument. 18914b0ead49Smrg xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` 18924b0ead49Smrg if test "X$xdir" = "X$arg"; then 18934b0ead49Smrg xdir= 18944b0ead49Smrg else 18954b0ead49Smrg xdir="$xdir/" 18964b0ead49Smrg fi 18974b0ead49Smrg 18984b0ead49Smrg pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` 18994b0ead49Smrg non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` 19004b0ead49Smrg libobjs="$libobjs $pic_object" 19014b0ead49Smrg non_pic_objects="$non_pic_objects $non_pic_object" 19024b0ead49Smrg fi 19034b0ead49Smrg fi 19044b0ead49Smrg ;; 19054b0ead49Smrg 19064b0ead49Smrg *.$libext) 19074b0ead49Smrg # An archive. 19084b0ead49Smrg deplibs="$deplibs $arg" 19094b0ead49Smrg old_deplibs="$old_deplibs $arg" 19104b0ead49Smrg continue 19114b0ead49Smrg ;; 19124b0ead49Smrg 19134b0ead49Smrg *.la) 19144b0ead49Smrg # A libtool-controlled library. 19154b0ead49Smrg 19164b0ead49Smrg if test "$prev" = dlfiles; then 19174b0ead49Smrg # This library was specified with -dlopen. 19184b0ead49Smrg dlfiles="$dlfiles $arg" 19194b0ead49Smrg prev= 19204b0ead49Smrg elif test "$prev" = dlprefiles; then 19214b0ead49Smrg # The library was specified with -dlpreopen. 19224b0ead49Smrg dlprefiles="$dlprefiles $arg" 19234b0ead49Smrg prev= 19244b0ead49Smrg else 19254b0ead49Smrg deplibs="$deplibs $arg" 19264b0ead49Smrg fi 19274b0ead49Smrg continue 19284b0ead49Smrg ;; 19294b0ead49Smrg 19304b0ead49Smrg # Some other compiler argument. 19314b0ead49Smrg *) 19324b0ead49Smrg # Unknown arguments in both finalize_command and compile_command need 19334b0ead49Smrg # to be aesthetically quoted because they are evaled later. 19344b0ead49Smrg arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 19354b0ead49Smrg case $arg in 19364b0ead49Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 19374b0ead49Smrg arg="\"$arg\"" 19384b0ead49Smrg ;; 19394b0ead49Smrg esac 19404b0ead49Smrg ;; 19414b0ead49Smrg esac # arg 19424b0ead49Smrg 19434b0ead49Smrg # Now actually substitute the argument into the commands. 19444b0ead49Smrg if test -n "$arg"; then 19454b0ead49Smrg compile_command="$compile_command $arg" 19464b0ead49Smrg finalize_command="$finalize_command $arg" 19474b0ead49Smrg fi 19484b0ead49Smrg done # argument parsing loop 19494b0ead49Smrg 19504b0ead49Smrg if test -n "$prev"; then 19514b0ead49Smrg $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 19524b0ead49Smrg $echo "$help" 1>&2 19534b0ead49Smrg exit $EXIT_FAILURE 19544b0ead49Smrg fi 19554b0ead49Smrg 19564b0ead49Smrg if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then 19574b0ead49Smrg eval arg=\"$export_dynamic_flag_spec\" 19584b0ead49Smrg compile_command="$compile_command $arg" 19594b0ead49Smrg finalize_command="$finalize_command $arg" 19604b0ead49Smrg fi 19614b0ead49Smrg 19624b0ead49Smrg oldlibs= 19634b0ead49Smrg # calculate the name of the file, without its directory 19644b0ead49Smrg outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'` 19654b0ead49Smrg libobjs_save="$libobjs" 19664b0ead49Smrg 19674b0ead49Smrg if test -n "$shlibpath_var"; then 19684b0ead49Smrg # get the directories listed in $shlibpath_var 19694b0ead49Smrg eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` 19704b0ead49Smrg else 19714b0ead49Smrg shlib_search_path= 19724b0ead49Smrg fi 19734b0ead49Smrg eval sys_lib_search_path=\"$sys_lib_search_path_spec\" 19744b0ead49Smrg eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" 19754b0ead49Smrg 19764b0ead49Smrg output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` 19774b0ead49Smrg if test "X$output_objdir" = "X$output"; then 19784b0ead49Smrg output_objdir="$objdir" 19794b0ead49Smrg else 19804b0ead49Smrg output_objdir="$output_objdir/$objdir" 19814b0ead49Smrg fi 19824b0ead49Smrg # Create the object directory. 19834b0ead49Smrg if test ! -d "$output_objdir"; then 19844b0ead49Smrg $show "$mkdir $output_objdir" 19854b0ead49Smrg $run $mkdir $output_objdir 19864b0ead49Smrg exit_status=$? 19874b0ead49Smrg if test "$exit_status" -ne 0 && test ! -d "$output_objdir"; then 19884b0ead49Smrg exit $exit_status 19894b0ead49Smrg fi 19904b0ead49Smrg fi 19914b0ead49Smrg 19924b0ead49Smrg # Determine the type of output 19934b0ead49Smrg case $output in 19944b0ead49Smrg "") 19954b0ead49Smrg $echo "$modename: you must specify an output file" 1>&2 19964b0ead49Smrg $echo "$help" 1>&2 19974b0ead49Smrg exit $EXIT_FAILURE 19984b0ead49Smrg ;; 19994b0ead49Smrg *.$libext) linkmode=oldlib ;; 20004b0ead49Smrg *.lo | *.$objext) linkmode=obj ;; 20014b0ead49Smrg *.la) linkmode=lib ;; 20024b0ead49Smrg *) linkmode=prog ;; # Anything else should be a program. 20034b0ead49Smrg esac 20044b0ead49Smrg 20054b0ead49Smrg case $host in 20064b0ead49Smrg *cygwin* | *mingw* | *pw32*) 20074b0ead49Smrg # don't eliminate duplications in $postdeps and $predeps 20084b0ead49Smrg duplicate_compiler_generated_deps=yes 20094b0ead49Smrg ;; 20104b0ead49Smrg *) 20114b0ead49Smrg duplicate_compiler_generated_deps=$duplicate_deps 20124b0ead49Smrg ;; 20134b0ead49Smrg esac 20144b0ead49Smrg specialdeplibs= 20154b0ead49Smrg 20164b0ead49Smrg libs= 20174b0ead49Smrg # Find all interdependent deplibs by searching for libraries 20184b0ead49Smrg # that are linked more than once (e.g. -la -lb -la) 20194b0ead49Smrg for deplib in $deplibs; do 20204b0ead49Smrg if test "X$duplicate_deps" = "Xyes" ; then 20214b0ead49Smrg case "$libs " in 20224b0ead49Smrg *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 20234b0ead49Smrg esac 20244b0ead49Smrg fi 20254b0ead49Smrg libs="$libs $deplib" 20264b0ead49Smrg done 20274b0ead49Smrg 20284b0ead49Smrg if test "$linkmode" = lib; then 20294b0ead49Smrg libs="$predeps $libs $compiler_lib_search_path $postdeps" 20304b0ead49Smrg 20314b0ead49Smrg # Compute libraries that are listed more than once in $predeps 20324b0ead49Smrg # $postdeps and mark them as special (i.e., whose duplicates are 20334b0ead49Smrg # not to be eliminated). 20344b0ead49Smrg pre_post_deps= 20354b0ead49Smrg if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then 20364b0ead49Smrg for pre_post_dep in $predeps $postdeps; do 20374b0ead49Smrg case "$pre_post_deps " in 20384b0ead49Smrg *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; 20394b0ead49Smrg esac 20404b0ead49Smrg pre_post_deps="$pre_post_deps $pre_post_dep" 20414b0ead49Smrg done 20424b0ead49Smrg fi 20434b0ead49Smrg pre_post_deps= 20444b0ead49Smrg fi 20454b0ead49Smrg 20464b0ead49Smrg deplibs= 20474b0ead49Smrg newdependency_libs= 20484b0ead49Smrg newlib_search_path= 20494b0ead49Smrg need_relink=no # whether we're linking any uninstalled libtool libraries 20504b0ead49Smrg notinst_deplibs= # not-installed libtool libraries 20514b0ead49Smrg case $linkmode in 20524b0ead49Smrg lib) 20534b0ead49Smrg passes="conv link" 20544b0ead49Smrg for file in $dlfiles $dlprefiles; do 20554b0ead49Smrg case $file in 20564b0ead49Smrg *.la) ;; 20574b0ead49Smrg *) 20584b0ead49Smrg $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2 20594b0ead49Smrg exit $EXIT_FAILURE 20604b0ead49Smrg ;; 20614b0ead49Smrg esac 20624b0ead49Smrg done 20634b0ead49Smrg ;; 20644b0ead49Smrg prog) 20654b0ead49Smrg compile_deplibs= 20664b0ead49Smrg finalize_deplibs= 20674b0ead49Smrg alldeplibs=no 20684b0ead49Smrg newdlfiles= 20694b0ead49Smrg newdlprefiles= 20704b0ead49Smrg passes="conv scan dlopen dlpreopen link" 20714b0ead49Smrg ;; 20724b0ead49Smrg *) passes="conv" 20734b0ead49Smrg ;; 20744b0ead49Smrg esac 20754b0ead49Smrg for pass in $passes; do 20764b0ead49Smrg if test "$linkmode,$pass" = "lib,link" || 20774b0ead49Smrg test "$linkmode,$pass" = "prog,scan"; then 20784b0ead49Smrg libs="$deplibs" 20794b0ead49Smrg deplibs= 20804b0ead49Smrg fi 20814b0ead49Smrg if test "$linkmode" = prog; then 20824b0ead49Smrg case $pass in 20834b0ead49Smrg dlopen) libs="$dlfiles" ;; 20844b0ead49Smrg dlpreopen) libs="$dlprefiles" ;; 20854b0ead49Smrg link) 20864b0ead49Smrg libs="$deplibs %DEPLIBS%" 20874b0ead49Smrg test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs" 20884b0ead49Smrg ;; 20894b0ead49Smrg esac 20904b0ead49Smrg fi 20914b0ead49Smrg if test "$pass" = dlopen; then 20924b0ead49Smrg # Collect dlpreopened libraries 20934b0ead49Smrg save_deplibs="$deplibs" 20944b0ead49Smrg deplibs= 20954b0ead49Smrg fi 20964b0ead49Smrg for deplib in $libs; do 20974b0ead49Smrg lib= 20984b0ead49Smrg found=no 20994b0ead49Smrg case $deplib in 21004b0ead49Smrg -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe) 21014b0ead49Smrg if test "$linkmode,$pass" = "prog,link"; then 21024b0ead49Smrg compile_deplibs="$deplib $compile_deplibs" 21034b0ead49Smrg finalize_deplibs="$deplib $finalize_deplibs" 21044b0ead49Smrg else 21054b0ead49Smrg compiler_flags="$compiler_flags $deplib" 21064b0ead49Smrg fi 21074b0ead49Smrg continue 21084b0ead49Smrg ;; 21094b0ead49Smrg -l*) 21104b0ead49Smrg if test "$linkmode" != lib && test "$linkmode" != prog; then 21114b0ead49Smrg $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2 21124b0ead49Smrg continue 21134b0ead49Smrg fi 21144b0ead49Smrg name=`$echo "X$deplib" | $Xsed -e 's/^-l//'` 21154b0ead49Smrg for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do 21164b0ead49Smrg for search_ext in .la $std_shrext .so .a; do 21174b0ead49Smrg # Search the libtool library 21184b0ead49Smrg lib="$searchdir/lib${name}${search_ext}" 21194b0ead49Smrg if test -f "$lib"; then 21204b0ead49Smrg if test "$search_ext" = ".la"; then 21214b0ead49Smrg found=yes 21224b0ead49Smrg else 21234b0ead49Smrg found=no 21244b0ead49Smrg fi 21254b0ead49Smrg break 2 21264b0ead49Smrg fi 21274b0ead49Smrg done 21284b0ead49Smrg done 21294b0ead49Smrg if test "$found" != yes; then 21304b0ead49Smrg # deplib doesn't seem to be a libtool library 21314b0ead49Smrg if test "$linkmode,$pass" = "prog,link"; then 21324b0ead49Smrg compile_deplibs="$deplib $compile_deplibs" 21334b0ead49Smrg finalize_deplibs="$deplib $finalize_deplibs" 21344b0ead49Smrg else 21354b0ead49Smrg deplibs="$deplib $deplibs" 21364b0ead49Smrg test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 21374b0ead49Smrg fi 21384b0ead49Smrg continue 21394b0ead49Smrg else # deplib is a libtool library 21404b0ead49Smrg # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, 21414b0ead49Smrg # We need to do some special things here, and not later. 21424b0ead49Smrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 21434b0ead49Smrg case " $predeps $postdeps " in 21444b0ead49Smrg *" $deplib "*) 21454b0ead49Smrg if (${SED} -e '2q' $lib | 21464b0ead49Smrg grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 21474b0ead49Smrg library_names= 21484b0ead49Smrg old_library= 21494b0ead49Smrg case $lib in 21504b0ead49Smrg */* | *\\*) . $lib ;; 21514b0ead49Smrg *) . ./$lib ;; 21524b0ead49Smrg esac 21534b0ead49Smrg for l in $old_library $library_names; do 21544b0ead49Smrg ll="$l" 21554b0ead49Smrg done 21564b0ead49Smrg if test "X$ll" = "X$old_library" ; then # only static version available 21574b0ead49Smrg found=no 21584b0ead49Smrg ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` 21594b0ead49Smrg test "X$ladir" = "X$lib" && ladir="." 21604b0ead49Smrg lib=$ladir/$old_library 21614b0ead49Smrg if test "$linkmode,$pass" = "prog,link"; then 21624b0ead49Smrg compile_deplibs="$deplib $compile_deplibs" 21634b0ead49Smrg finalize_deplibs="$deplib $finalize_deplibs" 21644b0ead49Smrg else 21654b0ead49Smrg deplibs="$deplib $deplibs" 21664b0ead49Smrg test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 21674b0ead49Smrg fi 21684b0ead49Smrg continue 21694b0ead49Smrg fi 21704b0ead49Smrg fi 21714b0ead49Smrg ;; 21724b0ead49Smrg *) ;; 21734b0ead49Smrg esac 21744b0ead49Smrg fi 21754b0ead49Smrg fi 21764b0ead49Smrg ;; # -l 21774b0ead49Smrg -L*) 21784b0ead49Smrg case $linkmode in 21794b0ead49Smrg lib) 21804b0ead49Smrg deplibs="$deplib $deplibs" 21814b0ead49Smrg test "$pass" = conv && continue 21824b0ead49Smrg newdependency_libs="$deplib $newdependency_libs" 21834b0ead49Smrg newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` 21844b0ead49Smrg ;; 21854b0ead49Smrg prog) 21864b0ead49Smrg if test "$pass" = conv; then 21874b0ead49Smrg deplibs="$deplib $deplibs" 21884b0ead49Smrg continue 21894b0ead49Smrg fi 21904b0ead49Smrg if test "$pass" = scan; then 21914b0ead49Smrg deplibs="$deplib $deplibs" 21924b0ead49Smrg else 21934b0ead49Smrg compile_deplibs="$deplib $compile_deplibs" 21944b0ead49Smrg finalize_deplibs="$deplib $finalize_deplibs" 21954b0ead49Smrg fi 21964b0ead49Smrg newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` 21974b0ead49Smrg ;; 21984b0ead49Smrg *) 21994b0ead49Smrg $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2 22004b0ead49Smrg ;; 22014b0ead49Smrg esac # linkmode 22024b0ead49Smrg continue 22034b0ead49Smrg ;; # -L 22044b0ead49Smrg -R*) 22054b0ead49Smrg if test "$pass" = link; then 22064b0ead49Smrg dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'` 22074b0ead49Smrg # Make sure the xrpath contains only unique directories. 22084b0ead49Smrg case "$xrpath " in 22094b0ead49Smrg *" $dir "*) ;; 22104b0ead49Smrg *) xrpath="$xrpath $dir" ;; 22114b0ead49Smrg esac 22124b0ead49Smrg fi 22134b0ead49Smrg deplibs="$deplib $deplibs" 22144b0ead49Smrg continue 22154b0ead49Smrg ;; 22164b0ead49Smrg *.la) lib="$deplib" ;; 22174b0ead49Smrg *.$libext) 22184b0ead49Smrg if test "$pass" = conv; then 22194b0ead49Smrg deplibs="$deplib $deplibs" 22204b0ead49Smrg continue 22214b0ead49Smrg fi 22224b0ead49Smrg case $linkmode in 22234b0ead49Smrg lib) 22244b0ead49Smrg valid_a_lib=no 22254b0ead49Smrg case $deplibs_check_method in 22264b0ead49Smrg match_pattern*) 22274b0ead49Smrg set dummy $deplibs_check_method 22284b0ead49Smrg match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` 22294b0ead49Smrg if eval $echo \"$deplib\" 2>/dev/null \ 22304b0ead49Smrg | $SED 10q \ 22314b0ead49Smrg | $EGREP "$match_pattern_regex" > /dev/null; then 22324b0ead49Smrg valid_a_lib=yes 22334b0ead49Smrg fi 22344b0ead49Smrg ;; 22354b0ead49Smrg pass_all) 22364b0ead49Smrg valid_a_lib=yes 22374b0ead49Smrg ;; 22384b0ead49Smrg esac 22394b0ead49Smrg if test "$valid_a_lib" != yes; then 22404b0ead49Smrg $echo 22414b0ead49Smrg $echo "*** Warning: Trying to link with static lib archive $deplib." 22424b0ead49Smrg $echo "*** I have the capability to make that library automatically link in when" 22434b0ead49Smrg $echo "*** you link to this library. But I can only do this if you have a" 22444b0ead49Smrg $echo "*** shared version of the library, which you do not appear to have" 22454b0ead49Smrg $echo "*** because the file extensions .$libext of this argument makes me believe" 22464b0ead49Smrg $echo "*** that it is just a static archive that I should not used here." 22474b0ead49Smrg else 22484b0ead49Smrg $echo 22494b0ead49Smrg $echo "*** Warning: Linking the shared library $output against the" 22504b0ead49Smrg $echo "*** static library $deplib is not portable!" 22514b0ead49Smrg deplibs="$deplib $deplibs" 22524b0ead49Smrg fi 22534b0ead49Smrg continue 22544b0ead49Smrg ;; 22554b0ead49Smrg prog) 22564b0ead49Smrg if test "$pass" != link; then 22574b0ead49Smrg deplibs="$deplib $deplibs" 22584b0ead49Smrg else 22594b0ead49Smrg compile_deplibs="$deplib $compile_deplibs" 22604b0ead49Smrg finalize_deplibs="$deplib $finalize_deplibs" 22614b0ead49Smrg fi 22624b0ead49Smrg continue 22634b0ead49Smrg ;; 22644b0ead49Smrg esac # linkmode 22654b0ead49Smrg ;; # *.$libext 22664b0ead49Smrg *.lo | *.$objext) 22674b0ead49Smrg if test "$pass" = conv; then 22684b0ead49Smrg deplibs="$deplib $deplibs" 22694b0ead49Smrg elif test "$linkmode" = prog; then 22704b0ead49Smrg if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then 22714b0ead49Smrg # If there is no dlopen support or we're linking statically, 22724b0ead49Smrg # we need to preload. 22734b0ead49Smrg newdlprefiles="$newdlprefiles $deplib" 22744b0ead49Smrg compile_deplibs="$deplib $compile_deplibs" 22754b0ead49Smrg finalize_deplibs="$deplib $finalize_deplibs" 22764b0ead49Smrg else 22774b0ead49Smrg newdlfiles="$newdlfiles $deplib" 22784b0ead49Smrg fi 22794b0ead49Smrg fi 22804b0ead49Smrg continue 22814b0ead49Smrg ;; 22824b0ead49Smrg %DEPLIBS%) 22834b0ead49Smrg alldeplibs=yes 22844b0ead49Smrg continue 22854b0ead49Smrg ;; 22864b0ead49Smrg esac # case $deplib 22874b0ead49Smrg if test "$found" = yes || test -f "$lib"; then : 22884b0ead49Smrg else 22894b0ead49Smrg $echo "$modename: cannot find the library \`$lib' or unhandled argument \`$deplib'" 1>&2 22904b0ead49Smrg exit $EXIT_FAILURE 22914b0ead49Smrg fi 22924b0ead49Smrg 22934b0ead49Smrg # Check to see that this really is a libtool archive. 22944b0ead49Smrg if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : 22954b0ead49Smrg else 22964b0ead49Smrg $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 22974b0ead49Smrg exit $EXIT_FAILURE 22984b0ead49Smrg fi 22994b0ead49Smrg 23004b0ead49Smrg ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` 23014b0ead49Smrg test "X$ladir" = "X$lib" && ladir="." 23024b0ead49Smrg 23034b0ead49Smrg dlname= 23044b0ead49Smrg dlopen= 23054b0ead49Smrg dlpreopen= 23064b0ead49Smrg libdir= 23074b0ead49Smrg library_names= 23084b0ead49Smrg old_library= 23094b0ead49Smrg # If the library was installed with an old release of libtool, 23104b0ead49Smrg # it will not redefine variables installed, or shouldnotlink 23114b0ead49Smrg installed=yes 23124b0ead49Smrg shouldnotlink=no 23134b0ead49Smrg avoidtemprpath= 23144b0ead49Smrg 23154b0ead49Smrg 23164b0ead49Smrg # Read the .la file 23174b0ead49Smrg case $lib in 23184b0ead49Smrg */* | *\\*) . $lib ;; 23194b0ead49Smrg *) . ./$lib ;; 23204b0ead49Smrg esac 23214b0ead49Smrg 23224b0ead49Smrg if test "$linkmode,$pass" = "lib,link" || 23234b0ead49Smrg test "$linkmode,$pass" = "prog,scan" || 23244b0ead49Smrg { test "$linkmode" != prog && test "$linkmode" != lib; }; then 23254b0ead49Smrg test -n "$dlopen" && dlfiles="$dlfiles $dlopen" 23264b0ead49Smrg test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" 23274b0ead49Smrg fi 23284b0ead49Smrg 23294b0ead49Smrg if test "$pass" = conv; then 23304b0ead49Smrg # Only check for convenience libraries 23314b0ead49Smrg deplibs="$lib $deplibs" 23324b0ead49Smrg if test -z "$libdir"; then 23334b0ead49Smrg if test -z "$old_library"; then 23344b0ead49Smrg $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 23354b0ead49Smrg exit $EXIT_FAILURE 23364b0ead49Smrg fi 23374b0ead49Smrg # It is a libtool convenience library, so add in its objects. 23384b0ead49Smrg convenience="$convenience $ladir/$objdir/$old_library" 23394b0ead49Smrg old_convenience="$old_convenience $ladir/$objdir/$old_library" 23404b0ead49Smrg tmp_libs= 23414b0ead49Smrg for deplib in $dependency_libs; do 23424b0ead49Smrg deplibs="$deplib $deplibs" 23434b0ead49Smrg if test "X$duplicate_deps" = "Xyes" ; then 23444b0ead49Smrg case "$tmp_libs " in 23454b0ead49Smrg *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 23464b0ead49Smrg esac 23474b0ead49Smrg fi 23484b0ead49Smrg tmp_libs="$tmp_libs $deplib" 23494b0ead49Smrg done 23504b0ead49Smrg elif test "$linkmode" != prog && test "$linkmode" != lib; then 23514b0ead49Smrg $echo "$modename: \`$lib' is not a convenience library" 1>&2 23524b0ead49Smrg exit $EXIT_FAILURE 23534b0ead49Smrg fi 23544b0ead49Smrg continue 23554b0ead49Smrg fi # $pass = conv 23564b0ead49Smrg 23574b0ead49Smrg 23584b0ead49Smrg # Get the name of the library we link against. 23594b0ead49Smrg linklib= 23604b0ead49Smrg for l in $old_library $library_names; do 23614b0ead49Smrg linklib="$l" 23624b0ead49Smrg done 23634b0ead49Smrg if test -z "$linklib"; then 23644b0ead49Smrg $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 23654b0ead49Smrg exit $EXIT_FAILURE 23664b0ead49Smrg fi 23674b0ead49Smrg 23684b0ead49Smrg # This library was specified with -dlopen. 23694b0ead49Smrg if test "$pass" = dlopen; then 23704b0ead49Smrg if test -z "$libdir"; then 23714b0ead49Smrg $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2 23724b0ead49Smrg exit $EXIT_FAILURE 23734b0ead49Smrg fi 23744b0ead49Smrg if test -z "$dlname" || 23754b0ead49Smrg test "$dlopen_support" != yes || 23764b0ead49Smrg test "$build_libtool_libs" = no; then 23774b0ead49Smrg # If there is no dlname, no dlopen support or we're linking 23784b0ead49Smrg # statically, we need to preload. We also need to preload any 23794b0ead49Smrg # dependent libraries so libltdl's deplib preloader doesn't 23804b0ead49Smrg # bomb out in the load deplibs phase. 23814b0ead49Smrg dlprefiles="$dlprefiles $lib $dependency_libs" 23824b0ead49Smrg else 23834b0ead49Smrg newdlfiles="$newdlfiles $lib" 23844b0ead49Smrg fi 23854b0ead49Smrg continue 23864b0ead49Smrg fi # $pass = dlopen 23874b0ead49Smrg 23884b0ead49Smrg # We need an absolute path. 23894b0ead49Smrg case $ladir in 23904b0ead49Smrg [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; 23914b0ead49Smrg *) 23924b0ead49Smrg abs_ladir=`cd "$ladir" && pwd` 23934b0ead49Smrg if test -z "$abs_ladir"; then 23944b0ead49Smrg $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2 23954b0ead49Smrg $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 23964b0ead49Smrg abs_ladir="$ladir" 23974b0ead49Smrg fi 23984b0ead49Smrg ;; 23994b0ead49Smrg esac 24004b0ead49Smrg laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` 24014b0ead49Smrg 24024b0ead49Smrg # Find the relevant object directory and library name. 24034b0ead49Smrg if test "X$installed" = Xyes; then 24044b0ead49Smrg if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then 24054b0ead49Smrg $echo "$modename: warning: library \`$lib' was moved." 1>&2 24064b0ead49Smrg dir="$ladir" 24074b0ead49Smrg absdir="$abs_ladir" 24084b0ead49Smrg libdir="$abs_ladir" 24094b0ead49Smrg else 24104b0ead49Smrg dir="$libdir" 24114b0ead49Smrg absdir="$libdir" 24124b0ead49Smrg fi 24134b0ead49Smrg test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes 24144b0ead49Smrg else 24154b0ead49Smrg if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then 24164b0ead49Smrg dir="$ladir" 24174b0ead49Smrg absdir="$abs_ladir" 24184b0ead49Smrg # Remove this search path later 24194b0ead49Smrg notinst_path="$notinst_path $abs_ladir" 24204b0ead49Smrg else 24214b0ead49Smrg dir="$ladir/$objdir" 24224b0ead49Smrg absdir="$abs_ladir/$objdir" 24234b0ead49Smrg # Remove this search path later 24244b0ead49Smrg notinst_path="$notinst_path $abs_ladir" 24254b0ead49Smrg fi 24264b0ead49Smrg fi # $installed = yes 24274b0ead49Smrg name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` 24284b0ead49Smrg 24294b0ead49Smrg # This library was specified with -dlpreopen. 24304b0ead49Smrg if test "$pass" = dlpreopen; then 24314b0ead49Smrg if test -z "$libdir"; then 24324b0ead49Smrg $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2 24334b0ead49Smrg exit $EXIT_FAILURE 24344b0ead49Smrg fi 24354b0ead49Smrg # Prefer using a static library (so that no silly _DYNAMIC symbols 24364b0ead49Smrg # are required to link). 24374b0ead49Smrg if test -n "$old_library"; then 24384b0ead49Smrg newdlprefiles="$newdlprefiles $dir/$old_library" 24394b0ead49Smrg # Otherwise, use the dlname, so that lt_dlopen finds it. 24404b0ead49Smrg elif test -n "$dlname"; then 24414b0ead49Smrg newdlprefiles="$newdlprefiles $dir/$dlname" 24424b0ead49Smrg else 24434b0ead49Smrg newdlprefiles="$newdlprefiles $dir/$linklib" 24444b0ead49Smrg fi 24454b0ead49Smrg fi # $pass = dlpreopen 24464b0ead49Smrg 24474b0ead49Smrg if test -z "$libdir"; then 24484b0ead49Smrg # Link the convenience library 24494b0ead49Smrg if test "$linkmode" = lib; then 24504b0ead49Smrg deplibs="$dir/$old_library $deplibs" 24514b0ead49Smrg elif test "$linkmode,$pass" = "prog,link"; then 24524b0ead49Smrg compile_deplibs="$dir/$old_library $compile_deplibs" 24534b0ead49Smrg finalize_deplibs="$dir/$old_library $finalize_deplibs" 24544b0ead49Smrg else 24554b0ead49Smrg deplibs="$lib $deplibs" # used for prog,scan pass 24564b0ead49Smrg fi 24574b0ead49Smrg continue 24584b0ead49Smrg fi 24594b0ead49Smrg 24604b0ead49Smrg 24614b0ead49Smrg if test "$linkmode" = prog && test "$pass" != link; then 24624b0ead49Smrg newlib_search_path="$newlib_search_path $ladir" 24634b0ead49Smrg deplibs="$lib $deplibs" 24644b0ead49Smrg 24654b0ead49Smrg linkalldeplibs=no 24664b0ead49Smrg if test "$link_all_deplibs" != no || test -z "$library_names" || 24674b0ead49Smrg test "$build_libtool_libs" = no; then 24684b0ead49Smrg linkalldeplibs=yes 24694b0ead49Smrg fi 24704b0ead49Smrg 24714b0ead49Smrg tmp_libs= 24724b0ead49Smrg for deplib in $dependency_libs; do 24734b0ead49Smrg case $deplib in 24744b0ead49Smrg -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test 24754b0ead49Smrg esac 24764b0ead49Smrg # Need to link against all dependency_libs? 24774b0ead49Smrg if test "$linkalldeplibs" = yes; then 24784b0ead49Smrg deplibs="$deplib $deplibs" 24794b0ead49Smrg else 24804b0ead49Smrg # Need to hardcode shared library paths 24814b0ead49Smrg # or/and link against static libraries 24824b0ead49Smrg newdependency_libs="$deplib $newdependency_libs" 24834b0ead49Smrg fi 24844b0ead49Smrg if test "X$duplicate_deps" = "Xyes" ; then 24854b0ead49Smrg case "$tmp_libs " in 24864b0ead49Smrg *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 24874b0ead49Smrg esac 24884b0ead49Smrg fi 24894b0ead49Smrg tmp_libs="$tmp_libs $deplib" 24904b0ead49Smrg done # for deplib 24914b0ead49Smrg continue 24924b0ead49Smrg fi # $linkmode = prog... 24934b0ead49Smrg 24944b0ead49Smrg if test "$linkmode,$pass" = "prog,link"; then 24954b0ead49Smrg if test -n "$library_names" && 24964b0ead49Smrg { test "$prefer_static_libs" = no || test -z "$old_library"; }; then 24974b0ead49Smrg # We need to hardcode the library path 24984b0ead49Smrg if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then 24994b0ead49Smrg # Make sure the rpath contains only unique directories. 25004b0ead49Smrg case "$temp_rpath " in 25014b0ead49Smrg *" $dir "*) ;; 25024b0ead49Smrg *" $absdir "*) ;; 25034b0ead49Smrg *) temp_rpath="$temp_rpath $absdir" ;; 25044b0ead49Smrg esac 25054b0ead49Smrg fi 25064b0ead49Smrg 25074b0ead49Smrg # Hardcode the library path. 25084b0ead49Smrg # Skip directories that are in the system default run-time 25094b0ead49Smrg # search path. 25104b0ead49Smrg case " $sys_lib_dlsearch_path " in 25114b0ead49Smrg *" $absdir "*) ;; 25124b0ead49Smrg *) 25134b0ead49Smrg case "$compile_rpath " in 25144b0ead49Smrg *" $absdir "*) ;; 25154b0ead49Smrg *) compile_rpath="$compile_rpath $absdir" 25164b0ead49Smrg esac 25174b0ead49Smrg ;; 25184b0ead49Smrg esac 25194b0ead49Smrg case " $sys_lib_dlsearch_path " in 25204b0ead49Smrg *" $libdir "*) ;; 25214b0ead49Smrg *) 25224b0ead49Smrg case "$finalize_rpath " in 25234b0ead49Smrg *" $libdir "*) ;; 25244b0ead49Smrg *) finalize_rpath="$finalize_rpath $libdir" 25254b0ead49Smrg esac 25264b0ead49Smrg ;; 25274b0ead49Smrg esac 25284b0ead49Smrg fi # $linkmode,$pass = prog,link... 25294b0ead49Smrg 25304b0ead49Smrg if test "$alldeplibs" = yes && 25314b0ead49Smrg { test "$deplibs_check_method" = pass_all || 25324b0ead49Smrg { test "$build_libtool_libs" = yes && 25334b0ead49Smrg test -n "$library_names"; }; }; then 25344b0ead49Smrg # We only need to search for static libraries 25354b0ead49Smrg continue 25364b0ead49Smrg fi 25374b0ead49Smrg fi 25384b0ead49Smrg 25394b0ead49Smrg link_static=no # Whether the deplib will be linked statically 25404b0ead49Smrg use_static_libs=$prefer_static_libs 25414b0ead49Smrg if test "$use_static_libs" = built && test "$installed" = yes ; then 25424b0ead49Smrg use_static_libs=no 25434b0ead49Smrg fi 25444b0ead49Smrg if test -n "$library_names" && 25454b0ead49Smrg { test "$use_static_libs" = no || test -z "$old_library"; }; then 25464b0ead49Smrg if test "$installed" = no; then 25474b0ead49Smrg notinst_deplibs="$notinst_deplibs $lib" 25484b0ead49Smrg need_relink=yes 25494b0ead49Smrg fi 25504b0ead49Smrg # This is a shared library 25514b0ead49Smrg 25524b0ead49Smrg # Warn about portability, can't link against -module's on 25534b0ead49Smrg # some systems (darwin) 25544b0ead49Smrg if test "$shouldnotlink" = yes && test "$pass" = link ; then 25554b0ead49Smrg $echo 25564b0ead49Smrg if test "$linkmode" = prog; then 25574b0ead49Smrg $echo "*** Warning: Linking the executable $output against the loadable module" 25584b0ead49Smrg else 25594b0ead49Smrg $echo "*** Warning: Linking the shared library $output against the loadable module" 25604b0ead49Smrg fi 25614b0ead49Smrg $echo "*** $linklib is not portable!" 25624b0ead49Smrg fi 25634b0ead49Smrg if test "$linkmode" = lib && 25644b0ead49Smrg test "$hardcode_into_libs" = yes; then 25654b0ead49Smrg # Hardcode the library path. 25664b0ead49Smrg # Skip directories that are in the system default run-time 25674b0ead49Smrg # search path. 25684b0ead49Smrg case " $sys_lib_dlsearch_path " in 25694b0ead49Smrg *" $absdir "*) ;; 25704b0ead49Smrg *) 25714b0ead49Smrg case "$compile_rpath " in 25724b0ead49Smrg *" $absdir "*) ;; 25734b0ead49Smrg *) compile_rpath="$compile_rpath $absdir" 25744b0ead49Smrg esac 25754b0ead49Smrg ;; 25764b0ead49Smrg esac 25774b0ead49Smrg case " $sys_lib_dlsearch_path " in 25784b0ead49Smrg *" $libdir "*) ;; 25794b0ead49Smrg *) 25804b0ead49Smrg case "$finalize_rpath " in 25814b0ead49Smrg *" $libdir "*) ;; 25824b0ead49Smrg *) finalize_rpath="$finalize_rpath $libdir" 25834b0ead49Smrg esac 25844b0ead49Smrg ;; 25854b0ead49Smrg esac 25864b0ead49Smrg fi 25874b0ead49Smrg 25884b0ead49Smrg if test -n "$old_archive_from_expsyms_cmds"; then 25894b0ead49Smrg # figure out the soname 25904b0ead49Smrg set dummy $library_names 25914b0ead49Smrg realname="$2" 25924b0ead49Smrg shift; shift 25934b0ead49Smrg libname=`eval \\$echo \"$libname_spec\"` 25944b0ead49Smrg # use dlname if we got it. it's perfectly good, no? 25954b0ead49Smrg if test -n "$dlname"; then 25964b0ead49Smrg soname="$dlname" 25974b0ead49Smrg elif test -n "$soname_spec"; then 25984b0ead49Smrg # bleh windows 25994b0ead49Smrg case $host in 26004b0ead49Smrg *cygwin* | mingw*) 26014b0ead49Smrg major=`expr $current - $age` 26024b0ead49Smrg versuffix="-$major" 26034b0ead49Smrg ;; 26044b0ead49Smrg esac 26054b0ead49Smrg eval soname=\"$soname_spec\" 26064b0ead49Smrg else 26074b0ead49Smrg soname="$realname" 26084b0ead49Smrg fi 26094b0ead49Smrg 26104b0ead49Smrg # Make a new name for the extract_expsyms_cmds to use 26114b0ead49Smrg soroot="$soname" 26124b0ead49Smrg soname=`$echo $soroot | ${SED} -e 's/^.*\///'` 26134b0ead49Smrg newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a" 26144b0ead49Smrg 26154b0ead49Smrg # If the library has no export list, then create one now 26164b0ead49Smrg if test -f "$output_objdir/$soname-def"; then : 26174b0ead49Smrg else 26184b0ead49Smrg $show "extracting exported symbol list from \`$soname'" 26194b0ead49Smrg save_ifs="$IFS"; IFS='~' 26204b0ead49Smrg cmds=$extract_expsyms_cmds 26214b0ead49Smrg for cmd in $cmds; do 26224b0ead49Smrg IFS="$save_ifs" 26234b0ead49Smrg eval cmd=\"$cmd\" 26244b0ead49Smrg $show "$cmd" 26254b0ead49Smrg $run eval "$cmd" || exit $? 26264b0ead49Smrg done 26274b0ead49Smrg IFS="$save_ifs" 26284b0ead49Smrg fi 26294b0ead49Smrg 26304b0ead49Smrg # Create $newlib 26314b0ead49Smrg if test -f "$output_objdir/$newlib"; then :; else 26324b0ead49Smrg $show "generating import library for \`$soname'" 26334b0ead49Smrg save_ifs="$IFS"; IFS='~' 26344b0ead49Smrg cmds=$old_archive_from_expsyms_cmds 26354b0ead49Smrg for cmd in $cmds; do 26364b0ead49Smrg IFS="$save_ifs" 26374b0ead49Smrg eval cmd=\"$cmd\" 26384b0ead49Smrg $show "$cmd" 26394b0ead49Smrg $run eval "$cmd" || exit $? 26404b0ead49Smrg done 26414b0ead49Smrg IFS="$save_ifs" 26424b0ead49Smrg fi 26434b0ead49Smrg # make sure the library variables are pointing to the new library 26444b0ead49Smrg dir=$output_objdir 26454b0ead49Smrg linklib=$newlib 26464b0ead49Smrg fi # test -n "$old_archive_from_expsyms_cmds" 26474b0ead49Smrg 26484b0ead49Smrg if test "$linkmode" = prog || test "$mode" != relink; then 26494b0ead49Smrg add_shlibpath= 26504b0ead49Smrg add_dir= 26514b0ead49Smrg add= 26524b0ead49Smrg lib_linked=yes 26534b0ead49Smrg case $hardcode_action in 26544b0ead49Smrg immediate | unsupported) 26554b0ead49Smrg if test "$hardcode_direct" = no; then 26564b0ead49Smrg add="$dir/$linklib" 26574b0ead49Smrg case $host in 26584b0ead49Smrg *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; 26594b0ead49Smrg *-*-sysv4*uw2*) add_dir="-L$dir" ;; 26604b0ead49Smrg *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ 26614b0ead49Smrg *-*-unixware7*) add_dir="-L$dir" ;; 26624b0ead49Smrg *-*-darwin* ) 26634b0ead49Smrg # if the lib is a module then we can not link against 26644b0ead49Smrg # it, someone is ignoring the new warnings I added 26654b0ead49Smrg if /usr/bin/file -L $add 2> /dev/null | 26664b0ead49Smrg $EGREP ": [^:]* bundle" >/dev/null ; then 26674b0ead49Smrg $echo "** Warning, lib $linklib is a module, not a shared library" 26684b0ead49Smrg if test -z "$old_library" ; then 26694b0ead49Smrg $echo 26704b0ead49Smrg $echo "** And there doesn't seem to be a static archive available" 26714b0ead49Smrg $echo "** The link will probably fail, sorry" 26724b0ead49Smrg else 26734b0ead49Smrg add="$dir/$old_library" 26744b0ead49Smrg fi 26754b0ead49Smrg fi 26764b0ead49Smrg esac 26774b0ead49Smrg elif test "$hardcode_minus_L" = no; then 26784b0ead49Smrg case $host in 26794b0ead49Smrg *-*-sunos*) add_shlibpath="$dir" ;; 26804b0ead49Smrg esac 26814b0ead49Smrg add_dir="-L$dir" 26824b0ead49Smrg add="-l$name" 26834b0ead49Smrg elif test "$hardcode_shlibpath_var" = no; then 26844b0ead49Smrg add_shlibpath="$dir" 26854b0ead49Smrg add="-l$name" 26864b0ead49Smrg else 26874b0ead49Smrg lib_linked=no 26884b0ead49Smrg fi 26894b0ead49Smrg ;; 26904b0ead49Smrg relink) 26914b0ead49Smrg if test "$hardcode_direct" = yes; then 26924b0ead49Smrg add="$dir/$linklib" 26934b0ead49Smrg elif test "$hardcode_minus_L" = yes; then 26944b0ead49Smrg add_dir="-L$dir" 26954b0ead49Smrg # Try looking first in the location we're being installed to. 26964b0ead49Smrg if test -n "$inst_prefix_dir"; then 26974b0ead49Smrg case $libdir in 26984b0ead49Smrg [\\/]*) 26994b0ead49Smrg add_dir="$add_dir -L$inst_prefix_dir$libdir" 27004b0ead49Smrg ;; 27014b0ead49Smrg esac 27024b0ead49Smrg fi 27034b0ead49Smrg add="-l$name" 27044b0ead49Smrg elif test "$hardcode_shlibpath_var" = yes; then 27054b0ead49Smrg add_shlibpath="$dir" 27064b0ead49Smrg add="-l$name" 27074b0ead49Smrg else 27084b0ead49Smrg lib_linked=no 27094b0ead49Smrg fi 27104b0ead49Smrg ;; 27114b0ead49Smrg *) lib_linked=no ;; 27124b0ead49Smrg esac 27134b0ead49Smrg 27144b0ead49Smrg if test "$lib_linked" != yes; then 27154b0ead49Smrg $echo "$modename: configuration error: unsupported hardcode properties" 27164b0ead49Smrg exit $EXIT_FAILURE 27174b0ead49Smrg fi 27184b0ead49Smrg 27194b0ead49Smrg if test -n "$add_shlibpath"; then 27204b0ead49Smrg case :$compile_shlibpath: in 27214b0ead49Smrg *":$add_shlibpath:"*) ;; 27224b0ead49Smrg *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; 27234b0ead49Smrg esac 27244b0ead49Smrg fi 27254b0ead49Smrg if test "$linkmode" = prog; then 27264b0ead49Smrg test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" 27274b0ead49Smrg test -n "$add" && compile_deplibs="$add $compile_deplibs" 27284b0ead49Smrg else 27294b0ead49Smrg test -n "$add_dir" && deplibs="$add_dir $deplibs" 27304b0ead49Smrg test -n "$add" && deplibs="$add $deplibs" 27314b0ead49Smrg if test "$hardcode_direct" != yes && \ 27324b0ead49Smrg test "$hardcode_minus_L" != yes && \ 27334b0ead49Smrg test "$hardcode_shlibpath_var" = yes; then 27344b0ead49Smrg case :$finalize_shlibpath: in 27354b0ead49Smrg *":$libdir:"*) ;; 27364b0ead49Smrg *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; 27374b0ead49Smrg esac 27384b0ead49Smrg fi 27394b0ead49Smrg fi 27404b0ead49Smrg fi 27414b0ead49Smrg 27424b0ead49Smrg if test "$linkmode" = prog || test "$mode" = relink; then 27434b0ead49Smrg add_shlibpath= 27444b0ead49Smrg add_dir= 27454b0ead49Smrg add= 27464b0ead49Smrg # Finalize command for both is simple: just hardcode it. 27474b0ead49Smrg if test "$hardcode_direct" = yes; then 27484b0ead49Smrg add="$libdir/$linklib" 27494b0ead49Smrg elif test "$hardcode_minus_L" = yes; then 27504b0ead49Smrg add_dir="-L$libdir" 27514b0ead49Smrg add="-l$name" 27524b0ead49Smrg elif test "$hardcode_shlibpath_var" = yes; then 27534b0ead49Smrg case :$finalize_shlibpath: in 27544b0ead49Smrg *":$libdir:"*) ;; 27554b0ead49Smrg *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; 27564b0ead49Smrg esac 27574b0ead49Smrg add="-l$name" 27584b0ead49Smrg elif test "$hardcode_automatic" = yes; then 27594b0ead49Smrg if test -n "$inst_prefix_dir" && 27604b0ead49Smrg test -f "$inst_prefix_dir$libdir/$linklib" ; then 27614b0ead49Smrg add="$inst_prefix_dir$libdir/$linklib" 27624b0ead49Smrg else 27634b0ead49Smrg add="$libdir/$linklib" 27644b0ead49Smrg fi 27654b0ead49Smrg else 27664b0ead49Smrg # We cannot seem to hardcode it, guess we'll fake it. 27674b0ead49Smrg add_dir="-L$libdir" 27684b0ead49Smrg # Try looking first in the location we're being installed to. 27694b0ead49Smrg if test -n "$inst_prefix_dir"; then 27704b0ead49Smrg case $libdir in 27714b0ead49Smrg [\\/]*) 27724b0ead49Smrg add_dir="$add_dir -L$inst_prefix_dir$libdir" 27734b0ead49Smrg ;; 27744b0ead49Smrg esac 27754b0ead49Smrg fi 27764b0ead49Smrg add="-l$name" 27774b0ead49Smrg fi 27784b0ead49Smrg 27794b0ead49Smrg if test "$linkmode" = prog; then 27804b0ead49Smrg test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" 27814b0ead49Smrg test -n "$add" && finalize_deplibs="$add $finalize_deplibs" 27824b0ead49Smrg else 27834b0ead49Smrg test -n "$add_dir" && deplibs="$add_dir $deplibs" 27844b0ead49Smrg test -n "$add" && deplibs="$add $deplibs" 27854b0ead49Smrg fi 27864b0ead49Smrg fi 27874b0ead49Smrg elif test "$linkmode" = prog; then 27884b0ead49Smrg # Here we assume that one of hardcode_direct or hardcode_minus_L 27894b0ead49Smrg # is not unsupported. This is valid on all known static and 27904b0ead49Smrg # shared platforms. 27914b0ead49Smrg if test "$hardcode_direct" != unsupported; then 27924b0ead49Smrg test -n "$old_library" && linklib="$old_library" 27934b0ead49Smrg compile_deplibs="$dir/$linklib $compile_deplibs" 27944b0ead49Smrg finalize_deplibs="$dir/$linklib $finalize_deplibs" 27954b0ead49Smrg else 27964b0ead49Smrg compile_deplibs="-l$name -L$dir $compile_deplibs" 27974b0ead49Smrg finalize_deplibs="-l$name -L$dir $finalize_deplibs" 27984b0ead49Smrg fi 27994b0ead49Smrg elif test "$build_libtool_libs" = yes; then 28004b0ead49Smrg # Not a shared library 28014b0ead49Smrg if test "$deplibs_check_method" != pass_all; then 28024b0ead49Smrg # We're trying link a shared library against a static one 28034b0ead49Smrg # but the system doesn't support it. 28044b0ead49Smrg 28054b0ead49Smrg # Just print a warning and add the library to dependency_libs so 28064b0ead49Smrg # that the program can be linked against the static library. 28074b0ead49Smrg $echo 28084b0ead49Smrg $echo "*** Warning: This system can not link to static lib archive $lib." 28094b0ead49Smrg $echo "*** I have the capability to make that library automatically link in when" 28104b0ead49Smrg $echo "*** you link to this library. But I can only do this if you have a" 28114b0ead49Smrg $echo "*** shared version of the library, which you do not appear to have." 28124b0ead49Smrg if test "$module" = yes; then 28134b0ead49Smrg $echo "*** But as you try to build a module library, libtool will still create " 28144b0ead49Smrg $echo "*** a static module, that should work as long as the dlopening application" 28154b0ead49Smrg $echo "*** is linked with the -dlopen flag to resolve symbols at runtime." 28164b0ead49Smrg if test -z "$global_symbol_pipe"; then 28174b0ead49Smrg $echo 28184b0ead49Smrg $echo "*** However, this would only work if libtool was able to extract symbol" 28194b0ead49Smrg $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" 28204b0ead49Smrg $echo "*** not find such a program. So, this module is probably useless." 28214b0ead49Smrg $echo "*** \`nm' from GNU binutils and a full rebuild may help." 28224b0ead49Smrg fi 28234b0ead49Smrg if test "$build_old_libs" = no; then 28244b0ead49Smrg build_libtool_libs=module 28254b0ead49Smrg build_old_libs=yes 28264b0ead49Smrg else 28274b0ead49Smrg build_libtool_libs=no 28284b0ead49Smrg fi 28294b0ead49Smrg fi 28304b0ead49Smrg else 28314b0ead49Smrg deplibs="$dir/$old_library $deplibs" 28324b0ead49Smrg link_static=yes 28334b0ead49Smrg fi 28344b0ead49Smrg fi # link shared/static library? 28354b0ead49Smrg 28364b0ead49Smrg if test "$linkmode" = lib; then 28374b0ead49Smrg if test -n "$dependency_libs" && 28384b0ead49Smrg { test "$hardcode_into_libs" != yes || 28394b0ead49Smrg test "$build_old_libs" = yes || 28404b0ead49Smrg test "$link_static" = yes; }; then 28414b0ead49Smrg # Extract -R from dependency_libs 28424b0ead49Smrg temp_deplibs= 28434b0ead49Smrg for libdir in $dependency_libs; do 28444b0ead49Smrg case $libdir in 28454b0ead49Smrg -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'` 28464b0ead49Smrg case " $xrpath " in 28474b0ead49Smrg *" $temp_xrpath "*) ;; 28484b0ead49Smrg *) xrpath="$xrpath $temp_xrpath";; 28494b0ead49Smrg esac;; 28504b0ead49Smrg *) temp_deplibs="$temp_deplibs $libdir";; 28514b0ead49Smrg esac 28524b0ead49Smrg done 28534b0ead49Smrg dependency_libs="$temp_deplibs" 28544b0ead49Smrg fi 28554b0ead49Smrg 28564b0ead49Smrg newlib_search_path="$newlib_search_path $absdir" 28574b0ead49Smrg # Link against this library 28584b0ead49Smrg test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" 28594b0ead49Smrg # ... and its dependency_libs 28604b0ead49Smrg tmp_libs= 28614b0ead49Smrg for deplib in $dependency_libs; do 28624b0ead49Smrg newdependency_libs="$deplib $newdependency_libs" 28634b0ead49Smrg if test "X$duplicate_deps" = "Xyes" ; then 28644b0ead49Smrg case "$tmp_libs " in 28654b0ead49Smrg *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 28664b0ead49Smrg esac 28674b0ead49Smrg fi 28684b0ead49Smrg tmp_libs="$tmp_libs $deplib" 28694b0ead49Smrg done 28704b0ead49Smrg 28714b0ead49Smrg if test "$link_all_deplibs" != no; then 28724b0ead49Smrg # Add the search paths of all dependency libraries 28734b0ead49Smrg for deplib in $dependency_libs; do 28744b0ead49Smrg case $deplib in 28754b0ead49Smrg -L*) path="$deplib" ;; 28764b0ead49Smrg *.la) 28774b0ead49Smrg dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'` 28784b0ead49Smrg test "X$dir" = "X$deplib" && dir="." 28794b0ead49Smrg # We need an absolute path. 28804b0ead49Smrg case $dir in 28814b0ead49Smrg [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; 28824b0ead49Smrg *) 28834b0ead49Smrg absdir=`cd "$dir" && pwd` 28844b0ead49Smrg if test -z "$absdir"; then 28854b0ead49Smrg $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 28864b0ead49Smrg absdir="$dir" 28874b0ead49Smrg fi 28884b0ead49Smrg ;; 28894b0ead49Smrg esac 28904b0ead49Smrg if grep "^installed=no" $deplib > /dev/null; then 28914b0ead49Smrg path="$absdir/$objdir" 28924b0ead49Smrg else 28934b0ead49Smrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 28944b0ead49Smrg if test -z "$libdir"; then 28954b0ead49Smrg $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 28964b0ead49Smrg exit $EXIT_FAILURE 28974b0ead49Smrg fi 28984b0ead49Smrg if test "$absdir" != "$libdir"; then 28994b0ead49Smrg $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2 29004b0ead49Smrg fi 29014b0ead49Smrg path="$absdir" 29024b0ead49Smrg fi 29034b0ead49Smrg depdepl= 29044b0ead49Smrg case $host in 29054b0ead49Smrg *-*-darwin*) 29064b0ead49Smrg # we do not want to link against static libs, 29074b0ead49Smrg # but need to link against shared 29084b0ead49Smrg eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` 29094b0ead49Smrg if test -n "$deplibrary_names" ; then 29104b0ead49Smrg for tmp in $deplibrary_names ; do 29114b0ead49Smrg depdepl=$tmp 29124b0ead49Smrg done 29134b0ead49Smrg if test -f "$path/$depdepl" ; then 29144b0ead49Smrg depdepl="$path/$depdepl" 29154b0ead49Smrg fi 29164b0ead49Smrg # do not add paths which are already there 29174b0ead49Smrg case " $newlib_search_path " in 29184b0ead49Smrg *" $path "*) ;; 29194b0ead49Smrg *) newlib_search_path="$newlib_search_path $path";; 29204b0ead49Smrg esac 29214b0ead49Smrg fi 29224b0ead49Smrg path="" 29234b0ead49Smrg ;; 29244b0ead49Smrg *) 29254b0ead49Smrg path="-L$path" 29264b0ead49Smrg ;; 29274b0ead49Smrg esac 29284b0ead49Smrg ;; 29294b0ead49Smrg -l*) 29304b0ead49Smrg case $host in 29314b0ead49Smrg *-*-darwin*) 29324b0ead49Smrg # Again, we only want to link against shared libraries 29334b0ead49Smrg eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"` 29344b0ead49Smrg for tmp in $newlib_search_path ; do 29354b0ead49Smrg if test -f "$tmp/lib$tmp_libs.dylib" ; then 29364b0ead49Smrg eval depdepl="$tmp/lib$tmp_libs.dylib" 29374b0ead49Smrg break 29384b0ead49Smrg fi 29394b0ead49Smrg done 29404b0ead49Smrg path="" 29414b0ead49Smrg ;; 29424b0ead49Smrg *) continue ;; 29434b0ead49Smrg esac 29444b0ead49Smrg ;; 29454b0ead49Smrg *) continue ;; 29464b0ead49Smrg esac 29474b0ead49Smrg case " $deplibs " in 29484b0ead49Smrg *" $path "*) ;; 29494b0ead49Smrg *) deplibs="$path $deplibs" ;; 29504b0ead49Smrg esac 29514b0ead49Smrg case " $deplibs " in 29524b0ead49Smrg *" $depdepl "*) ;; 29534b0ead49Smrg *) deplibs="$depdepl $deplibs" ;; 29544b0ead49Smrg esac 29554b0ead49Smrg done 29564b0ead49Smrg fi # link_all_deplibs != no 29574b0ead49Smrg fi # linkmode = lib 29584b0ead49Smrg done # for deplib in $libs 29594b0ead49Smrg dependency_libs="$newdependency_libs" 29604b0ead49Smrg if test "$pass" = dlpreopen; then 29614b0ead49Smrg # Link the dlpreopened libraries before other libraries 29624b0ead49Smrg for deplib in $save_deplibs; do 29634b0ead49Smrg deplibs="$deplib $deplibs" 29644b0ead49Smrg done 29654b0ead49Smrg fi 29664b0ead49Smrg if test "$pass" != dlopen; then 29674b0ead49Smrg if test "$pass" != conv; then 29684b0ead49Smrg # Make sure lib_search_path contains only unique directories. 29694b0ead49Smrg lib_search_path= 29704b0ead49Smrg for dir in $newlib_search_path; do 29714b0ead49Smrg case "$lib_search_path " in 29724b0ead49Smrg *" $dir "*) ;; 29734b0ead49Smrg *) lib_search_path="$lib_search_path $dir" ;; 29744b0ead49Smrg esac 29754b0ead49Smrg done 29764b0ead49Smrg newlib_search_path= 29774b0ead49Smrg fi 29784b0ead49Smrg 29794b0ead49Smrg if test "$linkmode,$pass" != "prog,link"; then 29804b0ead49Smrg vars="deplibs" 29814b0ead49Smrg else 29824b0ead49Smrg vars="compile_deplibs finalize_deplibs" 29834b0ead49Smrg fi 29844b0ead49Smrg for var in $vars dependency_libs; do 29854b0ead49Smrg # Add libraries to $var in reverse order 29864b0ead49Smrg eval tmp_libs=\"\$$var\" 29874b0ead49Smrg new_libs= 29884b0ead49Smrg for deplib in $tmp_libs; do 29894b0ead49Smrg # FIXME: Pedantically, this is the right thing to do, so 29904b0ead49Smrg # that some nasty dependency loop isn't accidentally 29914b0ead49Smrg # broken: 29924b0ead49Smrg #new_libs="$deplib $new_libs" 29934b0ead49Smrg # Pragmatically, this seems to cause very few problems in 29944b0ead49Smrg # practice: 29954b0ead49Smrg case $deplib in 29964b0ead49Smrg -L*) new_libs="$deplib $new_libs" ;; 29974b0ead49Smrg -R*) ;; 29984b0ead49Smrg *) 29994b0ead49Smrg # And here is the reason: when a library appears more 30004b0ead49Smrg # than once as an explicit dependence of a library, or 30014b0ead49Smrg # is implicitly linked in more than once by the 30024b0ead49Smrg # compiler, it is considered special, and multiple 30034b0ead49Smrg # occurrences thereof are not removed. Compare this 30044b0ead49Smrg # with having the same library being listed as a 30054b0ead49Smrg # dependency of multiple other libraries: in this case, 30064b0ead49Smrg # we know (pedantically, we assume) the library does not 30074b0ead49Smrg # need to be listed more than once, so we keep only the 30084b0ead49Smrg # last copy. This is not always right, but it is rare 30094b0ead49Smrg # enough that we require users that really mean to play 30104b0ead49Smrg # such unportable linking tricks to link the library 30114b0ead49Smrg # using -Wl,-lname, so that libtool does not consider it 30124b0ead49Smrg # for duplicate removal. 30134b0ead49Smrg case " $specialdeplibs " in 30144b0ead49Smrg *" $deplib "*) new_libs="$deplib $new_libs" ;; 30154b0ead49Smrg *) 30164b0ead49Smrg case " $new_libs " in 30174b0ead49Smrg *" $deplib "*) ;; 30184b0ead49Smrg *) new_libs="$deplib $new_libs" ;; 30194b0ead49Smrg esac 30204b0ead49Smrg ;; 30214b0ead49Smrg esac 30224b0ead49Smrg ;; 30234b0ead49Smrg esac 30244b0ead49Smrg done 30254b0ead49Smrg tmp_libs= 30264b0ead49Smrg for deplib in $new_libs; do 30274b0ead49Smrg case $deplib in 30284b0ead49Smrg -L*) 30294b0ead49Smrg case " $tmp_libs " in 30304b0ead49Smrg *" $deplib "*) ;; 30314b0ead49Smrg *) tmp_libs="$tmp_libs $deplib" ;; 30324b0ead49Smrg esac 30334b0ead49Smrg ;; 30344b0ead49Smrg *) tmp_libs="$tmp_libs $deplib" ;; 30354b0ead49Smrg esac 30364b0ead49Smrg done 30374b0ead49Smrg eval $var=\"$tmp_libs\" 30384b0ead49Smrg done # for var 30394b0ead49Smrg fi 30404b0ead49Smrg # Last step: remove runtime libs from dependency_libs 30414b0ead49Smrg # (they stay in deplibs) 30424b0ead49Smrg tmp_libs= 30434b0ead49Smrg for i in $dependency_libs ; do 30444b0ead49Smrg case " $predeps $postdeps $compiler_lib_search_path " in 30454b0ead49Smrg *" $i "*) 30464b0ead49Smrg i="" 30474b0ead49Smrg ;; 30484b0ead49Smrg esac 30494b0ead49Smrg if test -n "$i" ; then 30504b0ead49Smrg tmp_libs="$tmp_libs $i" 30514b0ead49Smrg fi 30524b0ead49Smrg done 30534b0ead49Smrg dependency_libs=$tmp_libs 30544b0ead49Smrg done # for pass 30554b0ead49Smrg if test "$linkmode" = prog; then 30564b0ead49Smrg dlfiles="$newdlfiles" 30574b0ead49Smrg dlprefiles="$newdlprefiles" 30584b0ead49Smrg fi 30594b0ead49Smrg 30604b0ead49Smrg case $linkmode in 30614b0ead49Smrg oldlib) 30624b0ead49Smrg if test -n "$deplibs"; then 30634b0ead49Smrg $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 30644b0ead49Smrg fi 30654b0ead49Smrg 30664b0ead49Smrg if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 30674b0ead49Smrg $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2 30684b0ead49Smrg fi 30694b0ead49Smrg 30704b0ead49Smrg if test -n "$rpath"; then 30714b0ead49Smrg $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2 30724b0ead49Smrg fi 30734b0ead49Smrg 30744b0ead49Smrg if test -n "$xrpath"; then 30754b0ead49Smrg $echo "$modename: warning: \`-R' is ignored for archives" 1>&2 30764b0ead49Smrg fi 30774b0ead49Smrg 30784b0ead49Smrg if test -n "$vinfo"; then 30794b0ead49Smrg $echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2 30804b0ead49Smrg fi 30814b0ead49Smrg 30824b0ead49Smrg if test -n "$release"; then 30834b0ead49Smrg $echo "$modename: warning: \`-release' is ignored for archives" 1>&2 30844b0ead49Smrg fi 30854b0ead49Smrg 30864b0ead49Smrg if test -n "$export_symbols" || test -n "$export_symbols_regex"; then 30874b0ead49Smrg $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2 30884b0ead49Smrg fi 30894b0ead49Smrg 30904b0ead49Smrg # Now set the variables for building old libraries. 30914b0ead49Smrg build_libtool_libs=no 30924b0ead49Smrg oldlibs="$output" 30934b0ead49Smrg objs="$objs$old_deplibs" 30944b0ead49Smrg ;; 30954b0ead49Smrg 30964b0ead49Smrg lib) 30974b0ead49Smrg # Make sure we only generate libraries of the form `libNAME.la'. 30984b0ead49Smrg case $outputname in 30994b0ead49Smrg lib*) 31004b0ead49Smrg name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` 31014b0ead49Smrg eval shared_ext=\"$shrext_cmds\" 31024b0ead49Smrg eval libname=\"$libname_spec\" 31034b0ead49Smrg ;; 31044b0ead49Smrg *) 31054b0ead49Smrg if test "$module" = no; then 31064b0ead49Smrg $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2 31074b0ead49Smrg $echo "$help" 1>&2 31084b0ead49Smrg exit $EXIT_FAILURE 31094b0ead49Smrg fi 31104b0ead49Smrg if test "$need_lib_prefix" != no; then 31114b0ead49Smrg # Add the "lib" prefix for modules if required 31124b0ead49Smrg name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` 31134b0ead49Smrg eval shared_ext=\"$shrext_cmds\" 31144b0ead49Smrg eval libname=\"$libname_spec\" 31154b0ead49Smrg else 31164b0ead49Smrg libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` 31174b0ead49Smrg fi 31184b0ead49Smrg ;; 31194b0ead49Smrg esac 31204b0ead49Smrg 31214b0ead49Smrg if test -n "$objs"; then 31224b0ead49Smrg if test "$deplibs_check_method" != pass_all; then 31234b0ead49Smrg $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1 31244b0ead49Smrg exit $EXIT_FAILURE 31254b0ead49Smrg else 31264b0ead49Smrg $echo 31274b0ead49Smrg $echo "*** Warning: Linking the shared library $output against the non-libtool" 31284b0ead49Smrg $echo "*** objects $objs is not portable!" 31294b0ead49Smrg libobjs="$libobjs $objs" 31304b0ead49Smrg fi 31314b0ead49Smrg fi 31324b0ead49Smrg 31334b0ead49Smrg if test "$dlself" != no; then 31344b0ead49Smrg $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2 31354b0ead49Smrg fi 31364b0ead49Smrg 31374b0ead49Smrg set dummy $rpath 31384b0ead49Smrg if test "$#" -gt 2; then 31394b0ead49Smrg $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2 31404b0ead49Smrg fi 31414b0ead49Smrg install_libdir="$2" 31424b0ead49Smrg 31434b0ead49Smrg oldlibs= 31444b0ead49Smrg if test -z "$rpath"; then 31454b0ead49Smrg if test "$build_libtool_libs" = yes; then 31464b0ead49Smrg # Building a libtool convenience library. 31474b0ead49Smrg # Some compilers have problems with a `.al' extension so 31484b0ead49Smrg # convenience libraries should have the same extension an 31494b0ead49Smrg # archive normally would. 31504b0ead49Smrg oldlibs="$output_objdir/$libname.$libext $oldlibs" 31514b0ead49Smrg build_libtool_libs=convenience 31524b0ead49Smrg build_old_libs=yes 31534b0ead49Smrg fi 31544b0ead49Smrg 31554b0ead49Smrg if test -n "$vinfo"; then 31564b0ead49Smrg $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2 31574b0ead49Smrg fi 31584b0ead49Smrg 31594b0ead49Smrg if test -n "$release"; then 31604b0ead49Smrg $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2 31614b0ead49Smrg fi 31624b0ead49Smrg else 31634b0ead49Smrg 31644b0ead49Smrg # Parse the version information argument. 31654b0ead49Smrg save_ifs="$IFS"; IFS=':' 31664b0ead49Smrg set dummy $vinfo 0 0 0 31674b0ead49Smrg IFS="$save_ifs" 31684b0ead49Smrg 31694b0ead49Smrg if test -n "$8"; then 31704b0ead49Smrg $echo "$modename: too many parameters to \`-version-info'" 1>&2 31714b0ead49Smrg $echo "$help" 1>&2 31724b0ead49Smrg exit $EXIT_FAILURE 31734b0ead49Smrg fi 31744b0ead49Smrg 31754b0ead49Smrg # convert absolute version numbers to libtool ages 31764b0ead49Smrg # this retains compatibility with .la files and attempts 31774b0ead49Smrg # to make the code below a bit more comprehensible 31784b0ead49Smrg 31794b0ead49Smrg case $vinfo_number in 31804b0ead49Smrg yes) 31814b0ead49Smrg number_major="$2" 31824b0ead49Smrg number_minor="$3" 31834b0ead49Smrg number_revision="$4" 31844b0ead49Smrg # 31854b0ead49Smrg # There are really only two kinds -- those that 31864b0ead49Smrg # use the current revision as the major version 31874b0ead49Smrg # and those that subtract age and use age as 31884b0ead49Smrg # a minor version. But, then there is irix 31894b0ead49Smrg # which has an extra 1 added just for fun 31904b0ead49Smrg # 31914b0ead49Smrg case $version_type in 31924b0ead49Smrg darwin|linux|osf|windows) 31934b0ead49Smrg current=`expr $number_major + $number_minor` 31944b0ead49Smrg age="$number_minor" 31954b0ead49Smrg revision="$number_revision" 31964b0ead49Smrg ;; 31974b0ead49Smrg freebsd-aout|freebsd-elf|sunos) 31984b0ead49Smrg current="$number_major" 31994b0ead49Smrg revision="$number_minor" 32004b0ead49Smrg age="0" 32014b0ead49Smrg ;; 32024b0ead49Smrg irix|nonstopux) 32034b0ead49Smrg current=`expr $number_major + $number_minor - 1` 32044b0ead49Smrg age="$number_minor" 32054b0ead49Smrg revision="$number_minor" 32064b0ead49Smrg ;; 32074b0ead49Smrg *) 32084b0ead49Smrg $echo "$modename: unknown library version type \`$version_type'" 1>&2 32094b0ead49Smrg $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 32104b0ead49Smrg exit $EXIT_FAILURE 32114b0ead49Smrg ;; 32124b0ead49Smrg esac 32134b0ead49Smrg ;; 32144b0ead49Smrg no) 32154b0ead49Smrg current="$2" 32164b0ead49Smrg revision="$3" 32174b0ead49Smrg age="$4" 32184b0ead49Smrg ;; 32194b0ead49Smrg esac 32204b0ead49Smrg 32214b0ead49Smrg # Check that each of the things are valid numbers. 32224b0ead49Smrg case $current in 32234b0ead49Smrg 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]) ;; 32244b0ead49Smrg *) 32254b0ead49Smrg $echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2 32264b0ead49Smrg $echo "$modename: \`$vinfo' is not valid version information" 1>&2 32274b0ead49Smrg exit $EXIT_FAILURE 32284b0ead49Smrg ;; 32294b0ead49Smrg esac 32304b0ead49Smrg 32314b0ead49Smrg case $revision in 32324b0ead49Smrg 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]) ;; 32334b0ead49Smrg *) 32344b0ead49Smrg $echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2 32354b0ead49Smrg $echo "$modename: \`$vinfo' is not valid version information" 1>&2 32364b0ead49Smrg exit $EXIT_FAILURE 32374b0ead49Smrg ;; 32384b0ead49Smrg esac 32394b0ead49Smrg 32404b0ead49Smrg case $age in 32414b0ead49Smrg 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]) ;; 32424b0ead49Smrg *) 32434b0ead49Smrg $echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2 32444b0ead49Smrg $echo "$modename: \`$vinfo' is not valid version information" 1>&2 32454b0ead49Smrg exit $EXIT_FAILURE 32464b0ead49Smrg ;; 32474b0ead49Smrg esac 32484b0ead49Smrg 32494b0ead49Smrg if test "$age" -gt "$current"; then 32504b0ead49Smrg $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 32514b0ead49Smrg $echo "$modename: \`$vinfo' is not valid version information" 1>&2 32524b0ead49Smrg exit $EXIT_FAILURE 32534b0ead49Smrg fi 32544b0ead49Smrg 32554b0ead49Smrg # Calculate the version variables. 32564b0ead49Smrg major= 32574b0ead49Smrg versuffix= 32584b0ead49Smrg verstring= 32594b0ead49Smrg case $version_type in 32604b0ead49Smrg none) ;; 32614b0ead49Smrg 32624b0ead49Smrg darwin) 32634b0ead49Smrg # Like Linux, but with the current version available in 32644b0ead49Smrg # verstring for coding it into the library header 32654b0ead49Smrg major=.`expr $current - $age` 32664b0ead49Smrg versuffix="$major.$age.$revision" 32674b0ead49Smrg # Darwin ld doesn't like 0 for these options... 32684b0ead49Smrg minor_current=`expr $current + 1` 32694b0ead49Smrg verstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" 32704b0ead49Smrg ;; 32714b0ead49Smrg 32724b0ead49Smrg freebsd-aout) 32734b0ead49Smrg major=".$current" 32744b0ead49Smrg versuffix=".$current.$revision"; 32754b0ead49Smrg ;; 32764b0ead49Smrg 32774b0ead49Smrg freebsd-elf) 32784b0ead49Smrg major=".$current" 32794b0ead49Smrg versuffix=".$current"; 32804b0ead49Smrg ;; 32814b0ead49Smrg 32824b0ead49Smrg irix | nonstopux) 32834b0ead49Smrg major=`expr $current - $age + 1` 32844b0ead49Smrg 32854b0ead49Smrg case $version_type in 32864b0ead49Smrg nonstopux) verstring_prefix=nonstopux ;; 32874b0ead49Smrg *) verstring_prefix=sgi ;; 32884b0ead49Smrg esac 32894b0ead49Smrg verstring="$verstring_prefix$major.$revision" 32904b0ead49Smrg 32914b0ead49Smrg # Add in all the interfaces that we are compatible with. 32924b0ead49Smrg loop=$revision 32934b0ead49Smrg while test "$loop" -ne 0; do 32944b0ead49Smrg iface=`expr $revision - $loop` 32954b0ead49Smrg loop=`expr $loop - 1` 32964b0ead49Smrg verstring="$verstring_prefix$major.$iface:$verstring" 32974b0ead49Smrg done 32984b0ead49Smrg 32994b0ead49Smrg # Before this point, $major must not contain `.'. 33004b0ead49Smrg major=.$major 33014b0ead49Smrg versuffix="$major.$revision" 33024b0ead49Smrg ;; 33034b0ead49Smrg 33044b0ead49Smrg linux) 33054b0ead49Smrg major=.`expr $current - $age` 33064b0ead49Smrg versuffix="$major.$age.$revision" 33074b0ead49Smrg ;; 33084b0ead49Smrg 33094b0ead49Smrg osf) 33104b0ead49Smrg major=.`expr $current - $age` 33114b0ead49Smrg versuffix=".$current.$age.$revision" 33124b0ead49Smrg verstring="$current.$age.$revision" 33134b0ead49Smrg 33144b0ead49Smrg # Add in all the interfaces that we are compatible with. 33154b0ead49Smrg loop=$age 33164b0ead49Smrg while test "$loop" -ne 0; do 33174b0ead49Smrg iface=`expr $current - $loop` 33184b0ead49Smrg loop=`expr $loop - 1` 33194b0ead49Smrg verstring="$verstring:${iface}.0" 33204b0ead49Smrg done 33214b0ead49Smrg 33224b0ead49Smrg # Make executables depend on our current version. 33234b0ead49Smrg verstring="$verstring:${current}.0" 33244b0ead49Smrg ;; 33254b0ead49Smrg 33264b0ead49Smrg sunos) 33274b0ead49Smrg major=".$current" 33284b0ead49Smrg versuffix=".$current.$revision" 33294b0ead49Smrg ;; 33304b0ead49Smrg 33314b0ead49Smrg windows) 33324b0ead49Smrg # Use '-' rather than '.', since we only want one 33334b0ead49Smrg # extension on DOS 8.3 filesystems. 33344b0ead49Smrg major=`expr $current - $age` 33354b0ead49Smrg versuffix="-$major" 33364b0ead49Smrg ;; 33374b0ead49Smrg 33384b0ead49Smrg *) 33394b0ead49Smrg $echo "$modename: unknown library version type \`$version_type'" 1>&2 33404b0ead49Smrg $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 33414b0ead49Smrg exit $EXIT_FAILURE 33424b0ead49Smrg ;; 33434b0ead49Smrg esac 33444b0ead49Smrg 33454b0ead49Smrg # Clear the version info if we defaulted, and they specified a release. 33464b0ead49Smrg if test -z "$vinfo" && test -n "$release"; then 33474b0ead49Smrg major= 33484b0ead49Smrg case $version_type in 33494b0ead49Smrg darwin) 33504b0ead49Smrg # we can't check for "0.0" in archive_cmds due to quoting 33514b0ead49Smrg # problems, so we reset it completely 33524b0ead49Smrg verstring= 33534b0ead49Smrg ;; 33544b0ead49Smrg *) 33554b0ead49Smrg verstring="0.0" 33564b0ead49Smrg ;; 33574b0ead49Smrg esac 33584b0ead49Smrg if test "$need_version" = no; then 33594b0ead49Smrg versuffix= 33604b0ead49Smrg else 33614b0ead49Smrg versuffix=".0.0" 33624b0ead49Smrg fi 33634b0ead49Smrg fi 33644b0ead49Smrg 33654b0ead49Smrg # Remove version info from name if versioning should be avoided 33664b0ead49Smrg if test "$avoid_version" = yes && test "$need_version" = no; then 33674b0ead49Smrg major= 33684b0ead49Smrg versuffix= 33694b0ead49Smrg verstring="" 33704b0ead49Smrg fi 33714b0ead49Smrg 33724b0ead49Smrg # Check to see if the archive will have undefined symbols. 33734b0ead49Smrg if test "$allow_undefined" = yes; then 33744b0ead49Smrg if test "$allow_undefined_flag" = unsupported; then 33754b0ead49Smrg $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2 33764b0ead49Smrg build_libtool_libs=no 33774b0ead49Smrg build_old_libs=yes 33784b0ead49Smrg fi 33794b0ead49Smrg else 33804b0ead49Smrg # Don't allow undefined symbols. 33814b0ead49Smrg allow_undefined_flag="$no_undefined_flag" 33824b0ead49Smrg fi 33834b0ead49Smrg fi 33844b0ead49Smrg 33854b0ead49Smrg if test "$mode" != relink; then 33864b0ead49Smrg # Remove our outputs, but don't remove object files since they 33874b0ead49Smrg # may have been created when compiling PIC objects. 33884b0ead49Smrg removelist= 33894b0ead49Smrg tempremovelist=`$echo "$output_objdir/*"` 33904b0ead49Smrg for p in $tempremovelist; do 33914b0ead49Smrg case $p in 33924b0ead49Smrg *.$objext) 33934b0ead49Smrg ;; 33944b0ead49Smrg $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) 33954b0ead49Smrg if test "X$precious_files_regex" != "X"; then 33964b0ead49Smrg if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 33974b0ead49Smrg then 33984b0ead49Smrg continue 33994b0ead49Smrg fi 34004b0ead49Smrg fi 34014b0ead49Smrg removelist="$removelist $p" 34024b0ead49Smrg ;; 34034b0ead49Smrg *) ;; 34044b0ead49Smrg esac 34054b0ead49Smrg done 34064b0ead49Smrg if test -n "$removelist"; then 34074b0ead49Smrg $show "${rm}r $removelist" 34084b0ead49Smrg $run ${rm}r $removelist 34094b0ead49Smrg fi 34104b0ead49Smrg fi 34114b0ead49Smrg 34124b0ead49Smrg # Now set the variables for building old libraries. 34134b0ead49Smrg if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then 34144b0ead49Smrg oldlibs="$oldlibs $output_objdir/$libname.$libext" 34154b0ead49Smrg 34164b0ead49Smrg # Transform .lo files to .o files. 34174b0ead49Smrg oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` 34184b0ead49Smrg fi 34194b0ead49Smrg 34204b0ead49Smrg # Eliminate all temporary directories. 34214b0ead49Smrg for path in $notinst_path; do 34224b0ead49Smrg lib_search_path=`$echo "$lib_search_path " | ${SED} -e "s% $path % %g"` 34234b0ead49Smrg deplibs=`$echo "$deplibs " | ${SED} -e "s% -L$path % %g"` 34244b0ead49Smrg dependency_libs=`$echo "$dependency_libs " | ${SED} -e "s% -L$path % %g"` 34254b0ead49Smrg done 34264b0ead49Smrg 34274b0ead49Smrg if test -n "$xrpath"; then 34284b0ead49Smrg # If the user specified any rpath flags, then add them. 34294b0ead49Smrg temp_xrpath= 34304b0ead49Smrg for libdir in $xrpath; do 34314b0ead49Smrg temp_xrpath="$temp_xrpath -R$libdir" 34324b0ead49Smrg case "$finalize_rpath " in 34334b0ead49Smrg *" $libdir "*) ;; 34344b0ead49Smrg *) finalize_rpath="$finalize_rpath $libdir" ;; 34354b0ead49Smrg esac 34364b0ead49Smrg done 34374b0ead49Smrg if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then 34384b0ead49Smrg dependency_libs="$temp_xrpath $dependency_libs" 34394b0ead49Smrg fi 34404b0ead49Smrg fi 34414b0ead49Smrg 34424b0ead49Smrg # Make sure dlfiles contains only unique files that won't be dlpreopened 34434b0ead49Smrg old_dlfiles="$dlfiles" 34444b0ead49Smrg dlfiles= 34454b0ead49Smrg for lib in $old_dlfiles; do 34464b0ead49Smrg case " $dlprefiles $dlfiles " in 34474b0ead49Smrg *" $lib "*) ;; 34484b0ead49Smrg *) dlfiles="$dlfiles $lib" ;; 34494b0ead49Smrg esac 34504b0ead49Smrg done 34514b0ead49Smrg 34524b0ead49Smrg # Make sure dlprefiles contains only unique files 34534b0ead49Smrg old_dlprefiles="$dlprefiles" 34544b0ead49Smrg dlprefiles= 34554b0ead49Smrg for lib in $old_dlprefiles; do 34564b0ead49Smrg case "$dlprefiles " in 34574b0ead49Smrg *" $lib "*) ;; 34584b0ead49Smrg *) dlprefiles="$dlprefiles $lib" ;; 34594b0ead49Smrg esac 34604b0ead49Smrg done 34614b0ead49Smrg 34624b0ead49Smrg if test "$build_libtool_libs" = yes; then 34634b0ead49Smrg if test -n "$rpath"; then 34644b0ead49Smrg case $host in 34654b0ead49Smrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*) 34664b0ead49Smrg # these systems don't actually have a c library (as such)! 34674b0ead49Smrg ;; 34684b0ead49Smrg *-*-rhapsody* | *-*-darwin1.[012]) 34694b0ead49Smrg # Rhapsody C library is in the System framework 34704b0ead49Smrg deplibs="$deplibs -framework System" 34714b0ead49Smrg ;; 34724b0ead49Smrg *-*-netbsd*) 34734b0ead49Smrg # Don't link with libc until the a.out ld.so is fixed. 34744b0ead49Smrg ;; 34754b0ead49Smrg *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 34764b0ead49Smrg # Do not include libc due to us having libc/libc_r. 34774b0ead49Smrg ;; 34784b0ead49Smrg *-*-sco3.2v5* | *-*-sco5v6*) 34794b0ead49Smrg # Causes problems with __ctype 34804b0ead49Smrg ;; 34814b0ead49Smrg *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 34824b0ead49Smrg # Compiler inserts libc in the correct place for threads to work 34834b0ead49Smrg ;; 34844b0ead49Smrg *) 34854b0ead49Smrg # Add libc to deplibs on all other systems if necessary. 34864b0ead49Smrg if test "$build_libtool_need_lc" = "yes"; then 34874b0ead49Smrg deplibs="$deplibs -lc" 34884b0ead49Smrg fi 34894b0ead49Smrg ;; 34904b0ead49Smrg esac 34914b0ead49Smrg fi 34924b0ead49Smrg 34934b0ead49Smrg # Transform deplibs into only deplibs that can be linked in shared. 34944b0ead49Smrg name_save=$name 34954b0ead49Smrg libname_save=$libname 34964b0ead49Smrg release_save=$release 34974b0ead49Smrg versuffix_save=$versuffix 34984b0ead49Smrg major_save=$major 34994b0ead49Smrg # I'm not sure if I'm treating the release correctly. I think 35004b0ead49Smrg # release should show up in the -l (ie -lgmp5) so we don't want to 35014b0ead49Smrg # add it in twice. Is that correct? 35024b0ead49Smrg release="" 35034b0ead49Smrg versuffix="" 35044b0ead49Smrg major="" 35054b0ead49Smrg newdeplibs= 35064b0ead49Smrg droppeddeps=no 35074b0ead49Smrg case $deplibs_check_method in 35084b0ead49Smrg pass_all) 35094b0ead49Smrg # Don't check for shared/static. Everything works. 35104b0ead49Smrg # This might be a little naive. We might want to check 35114b0ead49Smrg # whether the library exists or not. But this is on 35124b0ead49Smrg # osf3 & osf4 and I'm not really sure... Just 35134b0ead49Smrg # implementing what was already the behavior. 35144b0ead49Smrg newdeplibs=$deplibs 35154b0ead49Smrg ;; 35164b0ead49Smrg test_compile) 35174b0ead49Smrg # This code stresses the "libraries are programs" paradigm to its 35184b0ead49Smrg # limits. Maybe even breaks it. We compile a program, linking it 35194b0ead49Smrg # against the deplibs as a proxy for the library. Then we can check 35204b0ead49Smrg # whether they linked in statically or dynamically with ldd. 35214b0ead49Smrg $rm conftest.c 35224b0ead49Smrg cat > conftest.c <<EOF 35234b0ead49Smrg int main() { return 0; } 35244b0ead49SmrgEOF 35254b0ead49Smrg $rm conftest 35264b0ead49Smrg $LTCC $LTCFLAGS -o conftest conftest.c $deplibs 35274b0ead49Smrg if test "$?" -eq 0 ; then 35284b0ead49Smrg ldd_output=`ldd conftest` 35294b0ead49Smrg for i in $deplibs; do 35304b0ead49Smrg name=`expr $i : '-l\(.*\)'` 35314b0ead49Smrg # If $name is empty we are operating on a -L argument. 35324b0ead49Smrg if test "$name" != "" && test "$name" -ne "0"; then 35334b0ead49Smrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 35344b0ead49Smrg case " $predeps $postdeps " in 35354b0ead49Smrg *" $i "*) 35364b0ead49Smrg newdeplibs="$newdeplibs $i" 35374b0ead49Smrg i="" 35384b0ead49Smrg ;; 35394b0ead49Smrg esac 35404b0ead49Smrg fi 35414b0ead49Smrg if test -n "$i" ; then 35424b0ead49Smrg libname=`eval \\$echo \"$libname_spec\"` 35434b0ead49Smrg deplib_matches=`eval \\$echo \"$library_names_spec\"` 35444b0ead49Smrg set dummy $deplib_matches 35454b0ead49Smrg deplib_match=$2 35464b0ead49Smrg if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 35474b0ead49Smrg newdeplibs="$newdeplibs $i" 35484b0ead49Smrg else 35494b0ead49Smrg droppeddeps=yes 35504b0ead49Smrg $echo 35514b0ead49Smrg $echo "*** Warning: dynamic linker does not accept needed library $i." 35524b0ead49Smrg $echo "*** I have the capability to make that library automatically link in when" 35534b0ead49Smrg $echo "*** you link to this library. But I can only do this if you have a" 35544b0ead49Smrg $echo "*** shared version of the library, which I believe you do not have" 35554b0ead49Smrg $echo "*** because a test_compile did reveal that the linker did not use it for" 35564b0ead49Smrg $echo "*** its dynamic dependency list that programs get resolved with at runtime." 35574b0ead49Smrg fi 35584b0ead49Smrg fi 35594b0ead49Smrg else 35604b0ead49Smrg newdeplibs="$newdeplibs $i" 35614b0ead49Smrg fi 35624b0ead49Smrg done 35634b0ead49Smrg else 35644b0ead49Smrg # Error occurred in the first compile. Let's try to salvage 35654b0ead49Smrg # the situation: Compile a separate program for each library. 35664b0ead49Smrg for i in $deplibs; do 35674b0ead49Smrg name=`expr $i : '-l\(.*\)'` 35684b0ead49Smrg # If $name is empty we are operating on a -L argument. 35694b0ead49Smrg if test "$name" != "" && test "$name" != "0"; then 35704b0ead49Smrg $rm conftest 35714b0ead49Smrg $LTCC $LTCFLAGS -o conftest conftest.c $i 35724b0ead49Smrg # Did it work? 35734b0ead49Smrg if test "$?" -eq 0 ; then 35744b0ead49Smrg ldd_output=`ldd conftest` 35754b0ead49Smrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 35764b0ead49Smrg case " $predeps $postdeps " in 35774b0ead49Smrg *" $i "*) 35784b0ead49Smrg newdeplibs="$newdeplibs $i" 35794b0ead49Smrg i="" 35804b0ead49Smrg ;; 35814b0ead49Smrg esac 35824b0ead49Smrg fi 35834b0ead49Smrg if test -n "$i" ; then 35844b0ead49Smrg libname=`eval \\$echo \"$libname_spec\"` 35854b0ead49Smrg deplib_matches=`eval \\$echo \"$library_names_spec\"` 35864b0ead49Smrg set dummy $deplib_matches 35874b0ead49Smrg deplib_match=$2 35884b0ead49Smrg if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 35894b0ead49Smrg newdeplibs="$newdeplibs $i" 35904b0ead49Smrg else 35914b0ead49Smrg droppeddeps=yes 35924b0ead49Smrg $echo 35934b0ead49Smrg $echo "*** Warning: dynamic linker does not accept needed library $i." 35944b0ead49Smrg $echo "*** I have the capability to make that library automatically link in when" 35954b0ead49Smrg $echo "*** you link to this library. But I can only do this if you have a" 35964b0ead49Smrg $echo "*** shared version of the library, which you do not appear to have" 35974b0ead49Smrg $echo "*** because a test_compile did reveal that the linker did not use this one" 35984b0ead49Smrg $echo "*** as a dynamic dependency that programs can get resolved with at runtime." 35994b0ead49Smrg fi 36004b0ead49Smrg fi 36014b0ead49Smrg else 36024b0ead49Smrg droppeddeps=yes 36034b0ead49Smrg $echo 36044b0ead49Smrg $echo "*** Warning! Library $i is needed by this library but I was not able to" 36054b0ead49Smrg $echo "*** make it link in! You will probably need to install it or some" 36064b0ead49Smrg $echo "*** library that it depends on before this library will be fully" 36074b0ead49Smrg $echo "*** functional. Installing it before continuing would be even better." 36084b0ead49Smrg fi 36094b0ead49Smrg else 36104b0ead49Smrg newdeplibs="$newdeplibs $i" 36114b0ead49Smrg fi 36124b0ead49Smrg done 36134b0ead49Smrg fi 36144b0ead49Smrg ;; 36154b0ead49Smrg file_magic*) 36164b0ead49Smrg set dummy $deplibs_check_method 36174b0ead49Smrg file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` 36184b0ead49Smrg for a_deplib in $deplibs; do 36194b0ead49Smrg name=`expr $a_deplib : '-l\(.*\)'` 36204b0ead49Smrg # If $name is empty we are operating on a -L argument. 36214b0ead49Smrg if test "$name" != "" && test "$name" != "0"; then 36224b0ead49Smrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 36234b0ead49Smrg case " $predeps $postdeps " in 36244b0ead49Smrg *" $a_deplib "*) 36254b0ead49Smrg newdeplibs="$newdeplibs $a_deplib" 36264b0ead49Smrg a_deplib="" 36274b0ead49Smrg ;; 36284b0ead49Smrg esac 36294b0ead49Smrg fi 36304b0ead49Smrg if test -n "$a_deplib" ; then 36314b0ead49Smrg libname=`eval \\$echo \"$libname_spec\"` 36324b0ead49Smrg for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 36334b0ead49Smrg potential_libs=`ls $i/$libname[.-]* 2>/dev/null` 36344b0ead49Smrg for potent_lib in $potential_libs; do 36354b0ead49Smrg # Follow soft links. 36364b0ead49Smrg if ls -lLd "$potent_lib" 2>/dev/null \ 36374b0ead49Smrg | grep " -> " >/dev/null; then 36384b0ead49Smrg continue 36394b0ead49Smrg fi 36404b0ead49Smrg # The statement above tries to avoid entering an 36414b0ead49Smrg # endless loop below, in case of cyclic links. 36424b0ead49Smrg # We might still enter an endless loop, since a link 36434b0ead49Smrg # loop can be closed while we follow links, 36444b0ead49Smrg # but so what? 36454b0ead49Smrg potlib="$potent_lib" 36464b0ead49Smrg while test -h "$potlib" 2>/dev/null; do 36474b0ead49Smrg potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` 36484b0ead49Smrg case $potliblink in 36494b0ead49Smrg [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; 36504b0ead49Smrg *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; 36514b0ead49Smrg esac 36524b0ead49Smrg done 36534b0ead49Smrg if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \ 36544b0ead49Smrg | ${SED} 10q \ 36554b0ead49Smrg | $EGREP "$file_magic_regex" > /dev/null; then 36564b0ead49Smrg newdeplibs="$newdeplibs $a_deplib" 36574b0ead49Smrg a_deplib="" 36584b0ead49Smrg break 2 36594b0ead49Smrg fi 36604b0ead49Smrg done 36614b0ead49Smrg done 36624b0ead49Smrg fi 36634b0ead49Smrg if test -n "$a_deplib" ; then 36644b0ead49Smrg droppeddeps=yes 36654b0ead49Smrg $echo 36664b0ead49Smrg $echo "*** Warning: linker path does not have real file for library $a_deplib." 36674b0ead49Smrg $echo "*** I have the capability to make that library automatically link in when" 36684b0ead49Smrg $echo "*** you link to this library. But I can only do this if you have a" 36694b0ead49Smrg $echo "*** shared version of the library, which you do not appear to have" 36704b0ead49Smrg $echo "*** because I did check the linker path looking for a file starting" 36714b0ead49Smrg if test -z "$potlib" ; then 36724b0ead49Smrg $echo "*** with $libname but no candidates were found. (...for file magic test)" 36734b0ead49Smrg else 36744b0ead49Smrg $echo "*** with $libname and none of the candidates passed a file format test" 36754b0ead49Smrg $echo "*** using a file magic. Last file checked: $potlib" 36764b0ead49Smrg fi 36774b0ead49Smrg fi 36784b0ead49Smrg else 36794b0ead49Smrg # Add a -L argument. 36804b0ead49Smrg newdeplibs="$newdeplibs $a_deplib" 36814b0ead49Smrg fi 36824b0ead49Smrg done # Gone through all deplibs. 36834b0ead49Smrg ;; 36844b0ead49Smrg match_pattern*) 36854b0ead49Smrg set dummy $deplibs_check_method 36864b0ead49Smrg match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` 36874b0ead49Smrg for a_deplib in $deplibs; do 36884b0ead49Smrg name=`expr $a_deplib : '-l\(.*\)'` 36894b0ead49Smrg # If $name is empty we are operating on a -L argument. 36904b0ead49Smrg if test -n "$name" && test "$name" != "0"; then 36914b0ead49Smrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 36924b0ead49Smrg case " $predeps $postdeps " in 36934b0ead49Smrg *" $a_deplib "*) 36944b0ead49Smrg newdeplibs="$newdeplibs $a_deplib" 36954b0ead49Smrg a_deplib="" 36964b0ead49Smrg ;; 36974b0ead49Smrg esac 36984b0ead49Smrg fi 36994b0ead49Smrg if test -n "$a_deplib" ; then 37004b0ead49Smrg libname=`eval \\$echo \"$libname_spec\"` 37014b0ead49Smrg for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 37024b0ead49Smrg potential_libs=`ls $i/$libname[.-]* 2>/dev/null` 37034b0ead49Smrg for potent_lib in $potential_libs; do 37044b0ead49Smrg potlib="$potent_lib" # see symlink-check above in file_magic test 37054b0ead49Smrg if eval $echo \"$potent_lib\" 2>/dev/null \ 37064b0ead49Smrg | ${SED} 10q \ 37074b0ead49Smrg | $EGREP "$match_pattern_regex" > /dev/null; then 37084b0ead49Smrg newdeplibs="$newdeplibs $a_deplib" 37094b0ead49Smrg a_deplib="" 37104b0ead49Smrg break 2 37114b0ead49Smrg fi 37124b0ead49Smrg done 37134b0ead49Smrg done 37144b0ead49Smrg fi 37154b0ead49Smrg if test -n "$a_deplib" ; then 37164b0ead49Smrg droppeddeps=yes 37174b0ead49Smrg $echo 37184b0ead49Smrg $echo "*** Warning: linker path does not have real file for library $a_deplib." 37194b0ead49Smrg $echo "*** I have the capability to make that library automatically link in when" 37204b0ead49Smrg $echo "*** you link to this library. But I can only do this if you have a" 37214b0ead49Smrg $echo "*** shared version of the library, which you do not appear to have" 37224b0ead49Smrg $echo "*** because I did check the linker path looking for a file starting" 37234b0ead49Smrg if test -z "$potlib" ; then 37244b0ead49Smrg $echo "*** with $libname but no candidates were found. (...for regex pattern test)" 37254b0ead49Smrg else 37264b0ead49Smrg $echo "*** with $libname and none of the candidates passed a file format test" 37274b0ead49Smrg $echo "*** using a regex pattern. Last file checked: $potlib" 37284b0ead49Smrg fi 37294b0ead49Smrg fi 37304b0ead49Smrg else 37314b0ead49Smrg # Add a -L argument. 37324b0ead49Smrg newdeplibs="$newdeplibs $a_deplib" 37334b0ead49Smrg fi 37344b0ead49Smrg done # Gone through all deplibs. 37354b0ead49Smrg ;; 37364b0ead49Smrg none | unknown | *) 37374b0ead49Smrg newdeplibs="" 37384b0ead49Smrg tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ 37394b0ead49Smrg -e 's/ -[LR][^ ]*//g'` 37404b0ead49Smrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 37414b0ead49Smrg for i in $predeps $postdeps ; do 37424b0ead49Smrg # can't use Xsed below, because $i might contain '/' 37434b0ead49Smrg tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"` 37444b0ead49Smrg done 37454b0ead49Smrg fi 37464b0ead49Smrg if $echo "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' \ 37474b0ead49Smrg | grep . >/dev/null; then 37484b0ead49Smrg $echo 37494b0ead49Smrg if test "X$deplibs_check_method" = "Xnone"; then 37504b0ead49Smrg $echo "*** Warning: inter-library dependencies are not supported in this platform." 37514b0ead49Smrg else 37524b0ead49Smrg $echo "*** Warning: inter-library dependencies are not known to be supported." 37534b0ead49Smrg fi 37544b0ead49Smrg $echo "*** All declared inter-library dependencies are being dropped." 37554b0ead49Smrg droppeddeps=yes 37564b0ead49Smrg fi 37574b0ead49Smrg ;; 37584b0ead49Smrg esac 37594b0ead49Smrg versuffix=$versuffix_save 37604b0ead49Smrg major=$major_save 37614b0ead49Smrg release=$release_save 37624b0ead49Smrg libname=$libname_save 37634b0ead49Smrg name=$name_save 37644b0ead49Smrg 37654b0ead49Smrg case $host in 37664b0ead49Smrg *-*-rhapsody* | *-*-darwin1.[012]) 37674b0ead49Smrg # On Rhapsody replace the C library is the System framework 37684b0ead49Smrg newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'` 37694b0ead49Smrg ;; 37704b0ead49Smrg esac 37714b0ead49Smrg 37724b0ead49Smrg if test "$droppeddeps" = yes; then 37734b0ead49Smrg if test "$module" = yes; then 37744b0ead49Smrg $echo 37754b0ead49Smrg $echo "*** Warning: libtool could not satisfy all declared inter-library" 37764b0ead49Smrg $echo "*** dependencies of module $libname. Therefore, libtool will create" 37774b0ead49Smrg $echo "*** a static module, that should work as long as the dlopening" 37784b0ead49Smrg $echo "*** application is linked with the -dlopen flag." 37794b0ead49Smrg if test -z "$global_symbol_pipe"; then 37804b0ead49Smrg $echo 37814b0ead49Smrg $echo "*** However, this would only work if libtool was able to extract symbol" 37824b0ead49Smrg $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" 37834b0ead49Smrg $echo "*** not find such a program. So, this module is probably useless." 37844b0ead49Smrg $echo "*** \`nm' from GNU binutils and a full rebuild may help." 37854b0ead49Smrg fi 37864b0ead49Smrg if test "$build_old_libs" = no; then 37874b0ead49Smrg oldlibs="$output_objdir/$libname.$libext" 37884b0ead49Smrg build_libtool_libs=module 37894b0ead49Smrg build_old_libs=yes 37904b0ead49Smrg else 37914b0ead49Smrg build_libtool_libs=no 37924b0ead49Smrg fi 37934b0ead49Smrg else 37944b0ead49Smrg $echo "*** The inter-library dependencies that have been dropped here will be" 37954b0ead49Smrg $echo "*** automatically added whenever a program is linked with this library" 37964b0ead49Smrg $echo "*** or is declared to -dlopen it." 37974b0ead49Smrg 37984b0ead49Smrg if test "$allow_undefined" = no; then 37994b0ead49Smrg $echo 38004b0ead49Smrg $echo "*** Since this library must not contain undefined symbols," 38014b0ead49Smrg $echo "*** because either the platform does not support them or" 38024b0ead49Smrg $echo "*** it was explicitly requested with -no-undefined," 38034b0ead49Smrg $echo "*** libtool will only create a static version of it." 38044b0ead49Smrg if test "$build_old_libs" = no; then 38054b0ead49Smrg oldlibs="$output_objdir/$libname.$libext" 38064b0ead49Smrg build_libtool_libs=module 38074b0ead49Smrg build_old_libs=yes 38084b0ead49Smrg else 38094b0ead49Smrg build_libtool_libs=no 38104b0ead49Smrg fi 38114b0ead49Smrg fi 38124b0ead49Smrg fi 38134b0ead49Smrg fi 38144b0ead49Smrg # Done checking deplibs! 38154b0ead49Smrg deplibs=$newdeplibs 38164b0ead49Smrg fi 38174b0ead49Smrg 38184b0ead49Smrg 38194b0ead49Smrg # move library search paths that coincide with paths to not yet 38204b0ead49Smrg # installed libraries to the beginning of the library search list 38214b0ead49Smrg new_libs= 38224b0ead49Smrg for path in $notinst_path; do 38234b0ead49Smrg case " $new_libs " in 38244b0ead49Smrg *" -L$path/$objdir "*) ;; 38254b0ead49Smrg *) 38264b0ead49Smrg case " $deplibs " in 38274b0ead49Smrg *" -L$path/$objdir "*) 38284b0ead49Smrg new_libs="$new_libs -L$path/$objdir" ;; 38294b0ead49Smrg esac 38304b0ead49Smrg ;; 38314b0ead49Smrg esac 38324b0ead49Smrg done 38334b0ead49Smrg for deplib in $deplibs; do 38344b0ead49Smrg case $deplib in 38354b0ead49Smrg -L*) 38364b0ead49Smrg case " $new_libs " in 38374b0ead49Smrg *" $deplib "*) ;; 38384b0ead49Smrg *) new_libs="$new_libs $deplib" ;; 38394b0ead49Smrg esac 38404b0ead49Smrg ;; 38414b0ead49Smrg *) new_libs="$new_libs $deplib" ;; 38424b0ead49Smrg esac 38434b0ead49Smrg done 38444b0ead49Smrg deplibs="$new_libs" 38454b0ead49Smrg 38464b0ead49Smrg 38474b0ead49Smrg # All the library-specific variables (install_libdir is set above). 38484b0ead49Smrg library_names= 38494b0ead49Smrg old_library= 38504b0ead49Smrg dlname= 38514b0ead49Smrg 38524b0ead49Smrg # Test again, we may have decided not to build it any more 38534b0ead49Smrg if test "$build_libtool_libs" = yes; then 38544b0ead49Smrg if test "$hardcode_into_libs" = yes; then 38554b0ead49Smrg # Hardcode the library paths 38564b0ead49Smrg hardcode_libdirs= 38574b0ead49Smrg dep_rpath= 38584b0ead49Smrg rpath="$finalize_rpath" 38594b0ead49Smrg test "$mode" != relink && rpath="$compile_rpath$rpath" 38604b0ead49Smrg for libdir in $rpath; do 38614b0ead49Smrg if test -n "$hardcode_libdir_flag_spec"; then 38624b0ead49Smrg if test -n "$hardcode_libdir_separator"; then 38634b0ead49Smrg if test -z "$hardcode_libdirs"; then 38644b0ead49Smrg hardcode_libdirs="$libdir" 38654b0ead49Smrg else 38664b0ead49Smrg # Just accumulate the unique libdirs. 38674b0ead49Smrg case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 38684b0ead49Smrg *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 38694b0ead49Smrg ;; 38704b0ead49Smrg *) 38714b0ead49Smrg hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 38724b0ead49Smrg ;; 38734b0ead49Smrg esac 38744b0ead49Smrg fi 38754b0ead49Smrg else 38764b0ead49Smrg eval flag=\"$hardcode_libdir_flag_spec\" 38774b0ead49Smrg dep_rpath="$dep_rpath $flag" 38784b0ead49Smrg fi 38794b0ead49Smrg elif test -n "$runpath_var"; then 38804b0ead49Smrg case "$perm_rpath " in 38814b0ead49Smrg *" $libdir "*) ;; 38824b0ead49Smrg *) perm_rpath="$perm_rpath $libdir" ;; 38834b0ead49Smrg esac 38844b0ead49Smrg fi 38854b0ead49Smrg done 38864b0ead49Smrg # Substitute the hardcoded libdirs into the rpath. 38874b0ead49Smrg if test -n "$hardcode_libdir_separator" && 38884b0ead49Smrg test -n "$hardcode_libdirs"; then 38894b0ead49Smrg libdir="$hardcode_libdirs" 38904b0ead49Smrg if test -n "$hardcode_libdir_flag_spec_ld"; then 38914b0ead49Smrg eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" 38924b0ead49Smrg else 38934b0ead49Smrg eval dep_rpath=\"$hardcode_libdir_flag_spec\" 38944b0ead49Smrg fi 38954b0ead49Smrg fi 38964b0ead49Smrg if test -n "$runpath_var" && test -n "$perm_rpath"; then 38974b0ead49Smrg # We should set the runpath_var. 38984b0ead49Smrg rpath= 38994b0ead49Smrg for dir in $perm_rpath; do 39004b0ead49Smrg rpath="$rpath$dir:" 39014b0ead49Smrg done 39024b0ead49Smrg eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" 39034b0ead49Smrg fi 39044b0ead49Smrg test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" 39054b0ead49Smrg fi 39064b0ead49Smrg 39074b0ead49Smrg shlibpath="$finalize_shlibpath" 39084b0ead49Smrg test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" 39094b0ead49Smrg if test -n "$shlibpath"; then 39104b0ead49Smrg eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" 39114b0ead49Smrg fi 39124b0ead49Smrg 39134b0ead49Smrg # Get the real and link names of the library. 39144b0ead49Smrg eval shared_ext=\"$shrext_cmds\" 39154b0ead49Smrg eval library_names=\"$library_names_spec\" 39164b0ead49Smrg set dummy $library_names 39174b0ead49Smrg realname="$2" 39184b0ead49Smrg shift; shift 39194b0ead49Smrg 39204b0ead49Smrg if test -n "$soname_spec"; then 39214b0ead49Smrg eval soname=\"$soname_spec\" 39224b0ead49Smrg else 39234b0ead49Smrg soname="$realname" 39244b0ead49Smrg fi 39254b0ead49Smrg if test -z "$dlname"; then 39264b0ead49Smrg dlname=$soname 39274b0ead49Smrg fi 39284b0ead49Smrg 39294b0ead49Smrg lib="$output_objdir/$realname" 39304b0ead49Smrg linknames= 39314b0ead49Smrg for link 39324b0ead49Smrg do 39334b0ead49Smrg linknames="$linknames $link" 39344b0ead49Smrg done 39354b0ead49Smrg 39364b0ead49Smrg # Use standard objects if they are pic 39374b0ead49Smrg test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 39384b0ead49Smrg 39394b0ead49Smrg # Prepare the list of exported symbols 39404b0ead49Smrg if test -z "$export_symbols"; then 39414b0ead49Smrg if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then 39424b0ead49Smrg $show "generating symbol list for \`$libname.la'" 39434b0ead49Smrg export_symbols="$output_objdir/$libname.exp" 39444b0ead49Smrg $run $rm $export_symbols 39454b0ead49Smrg cmds=$export_symbols_cmds 39464b0ead49Smrg save_ifs="$IFS"; IFS='~' 39474b0ead49Smrg for cmd in $cmds; do 39484b0ead49Smrg IFS="$save_ifs" 39494b0ead49Smrg eval cmd=\"$cmd\" 39504b0ead49Smrg if len=`expr "X$cmd" : ".*"` && 39514b0ead49Smrg test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then 39524b0ead49Smrg $show "$cmd" 39534b0ead49Smrg $run eval "$cmd" || exit $? 39544b0ead49Smrg skipped_export=false 39554b0ead49Smrg else 39564b0ead49Smrg # The command line is too long to execute in one step. 39574b0ead49Smrg $show "using reloadable object file for export list..." 39584b0ead49Smrg skipped_export=: 39594b0ead49Smrg # Break out early, otherwise skipped_export may be 39604b0ead49Smrg # set to false by a later but shorter cmd. 39614b0ead49Smrg break 39624b0ead49Smrg fi 39634b0ead49Smrg done 39644b0ead49Smrg IFS="$save_ifs" 39654b0ead49Smrg if test -n "$export_symbols_regex"; then 39664b0ead49Smrg $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\"" 39674b0ead49Smrg $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' 39684b0ead49Smrg $show "$mv \"${export_symbols}T\" \"$export_symbols\"" 39694b0ead49Smrg $run eval '$mv "${export_symbols}T" "$export_symbols"' 39704b0ead49Smrg fi 39714b0ead49Smrg fi 39724b0ead49Smrg fi 39734b0ead49Smrg 39744b0ead49Smrg if test -n "$export_symbols" && test -n "$include_expsyms"; then 39754b0ead49Smrg $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"' 39764b0ead49Smrg fi 39774b0ead49Smrg 39784b0ead49Smrg tmp_deplibs= 39794b0ead49Smrg for test_deplib in $deplibs; do 39804b0ead49Smrg case " $convenience " in 39814b0ead49Smrg *" $test_deplib "*) ;; 39824b0ead49Smrg *) 39834b0ead49Smrg tmp_deplibs="$tmp_deplibs $test_deplib" 39844b0ead49Smrg ;; 39854b0ead49Smrg esac 39864b0ead49Smrg done 39874b0ead49Smrg deplibs="$tmp_deplibs" 39884b0ead49Smrg 39894b0ead49Smrg if test -n "$convenience"; then 39904b0ead49Smrg if test -n "$whole_archive_flag_spec"; then 39914b0ead49Smrg save_libobjs=$libobjs 39924b0ead49Smrg eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 39934b0ead49Smrg else 39944b0ead49Smrg gentop="$output_objdir/${outputname}x" 39954b0ead49Smrg generated="$generated $gentop" 39964b0ead49Smrg 39974b0ead49Smrg func_extract_archives $gentop $convenience 39984b0ead49Smrg libobjs="$libobjs $func_extract_archives_result" 39994b0ead49Smrg fi 40004b0ead49Smrg fi 40014b0ead49Smrg 40024b0ead49Smrg if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then 40034b0ead49Smrg eval flag=\"$thread_safe_flag_spec\" 40044b0ead49Smrg linker_flags="$linker_flags $flag" 40054b0ead49Smrg fi 40064b0ead49Smrg 40074b0ead49Smrg # Make a backup of the uninstalled library when relinking 40084b0ead49Smrg if test "$mode" = relink; then 40094b0ead49Smrg $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $? 40104b0ead49Smrg fi 40114b0ead49Smrg 40124b0ead49Smrg # Do each of the archive commands. 40134b0ead49Smrg if test "$module" = yes && test -n "$module_cmds" ; then 40144b0ead49Smrg if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 40154b0ead49Smrg eval test_cmds=\"$module_expsym_cmds\" 40164b0ead49Smrg cmds=$module_expsym_cmds 40174b0ead49Smrg else 40184b0ead49Smrg eval test_cmds=\"$module_cmds\" 40194b0ead49Smrg cmds=$module_cmds 40204b0ead49Smrg fi 40214b0ead49Smrg else 40224b0ead49Smrg if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 40234b0ead49Smrg eval test_cmds=\"$archive_expsym_cmds\" 40244b0ead49Smrg cmds=$archive_expsym_cmds 40254b0ead49Smrg else 40264b0ead49Smrg eval test_cmds=\"$archive_cmds\" 40274b0ead49Smrg cmds=$archive_cmds 40284b0ead49Smrg fi 40294b0ead49Smrg fi 40304b0ead49Smrg 40314b0ead49Smrg if test "X$skipped_export" != "X:" && 40324b0ead49Smrg len=`expr "X$test_cmds" : ".*" 2>/dev/null` && 40334b0ead49Smrg test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then 40344b0ead49Smrg : 40354b0ead49Smrg else 40364b0ead49Smrg # The command line is too long to link in one step, link piecewise. 40374b0ead49Smrg $echo "creating reloadable object files..." 40384b0ead49Smrg 40394b0ead49Smrg # Save the value of $output and $libobjs because we want to 40404b0ead49Smrg # use them later. If we have whole_archive_flag_spec, we 40414b0ead49Smrg # want to use save_libobjs as it was before 40424b0ead49Smrg # whole_archive_flag_spec was expanded, because we can't 40434b0ead49Smrg # assume the linker understands whole_archive_flag_spec. 40444b0ead49Smrg # This may have to be revisited, in case too many 40454b0ead49Smrg # convenience libraries get linked in and end up exceeding 40464b0ead49Smrg # the spec. 40474b0ead49Smrg if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then 40484b0ead49Smrg save_libobjs=$libobjs 40494b0ead49Smrg fi 40504b0ead49Smrg save_output=$output 40514b0ead49Smrg output_la=`$echo "X$output" | $Xsed -e "$basename"` 40524b0ead49Smrg 40534b0ead49Smrg # Clear the reloadable object creation command queue and 40544b0ead49Smrg # initialize k to one. 40554b0ead49Smrg test_cmds= 40564b0ead49Smrg concat_cmds= 40574b0ead49Smrg objlist= 40584b0ead49Smrg delfiles= 40594b0ead49Smrg last_robj= 40604b0ead49Smrg k=1 40614b0ead49Smrg output=$output_objdir/$output_la-${k}.$objext 40624b0ead49Smrg # Loop over the list of objects to be linked. 40634b0ead49Smrg for obj in $save_libobjs 40644b0ead49Smrg do 40654b0ead49Smrg eval test_cmds=\"$reload_cmds $objlist $last_robj\" 40664b0ead49Smrg if test "X$objlist" = X || 40674b0ead49Smrg { len=`expr "X$test_cmds" : ".*" 2>/dev/null` && 40684b0ead49Smrg test "$len" -le "$max_cmd_len"; }; then 40694b0ead49Smrg objlist="$objlist $obj" 40704b0ead49Smrg else 40714b0ead49Smrg # The command $test_cmds is almost too long, add a 40724b0ead49Smrg # command to the queue. 40734b0ead49Smrg if test "$k" -eq 1 ; then 40744b0ead49Smrg # The first file doesn't have a previous command to add. 40754b0ead49Smrg eval concat_cmds=\"$reload_cmds $objlist $last_robj\" 40764b0ead49Smrg else 40774b0ead49Smrg # All subsequent reloadable object files will link in 40784b0ead49Smrg # the last one created. 40794b0ead49Smrg eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\" 40804b0ead49Smrg fi 40814b0ead49Smrg last_robj=$output_objdir/$output_la-${k}.$objext 40824b0ead49Smrg k=`expr $k + 1` 40834b0ead49Smrg output=$output_objdir/$output_la-${k}.$objext 40844b0ead49Smrg objlist=$obj 40854b0ead49Smrg len=1 40864b0ead49Smrg fi 40874b0ead49Smrg done 40884b0ead49Smrg # Handle the remaining objects by creating one last 40894b0ead49Smrg # reloadable object file. All subsequent reloadable object 40904b0ead49Smrg # files will link in the last one created. 40914b0ead49Smrg test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 40924b0ead49Smrg eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" 40934b0ead49Smrg 40944b0ead49Smrg if ${skipped_export-false}; then 40954b0ead49Smrg $show "generating symbol list for \`$libname.la'" 40964b0ead49Smrg export_symbols="$output_objdir/$libname.exp" 40974b0ead49Smrg $run $rm $export_symbols 40984b0ead49Smrg libobjs=$output 40994b0ead49Smrg # Append the command to create the export file. 41004b0ead49Smrg eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\" 41014b0ead49Smrg fi 41024b0ead49Smrg 41034b0ead49Smrg # Set up a command to remove the reloadable object files 41044b0ead49Smrg # after they are used. 41054b0ead49Smrg i=0 41064b0ead49Smrg while test "$i" -lt "$k" 41074b0ead49Smrg do 41084b0ead49Smrg i=`expr $i + 1` 41094b0ead49Smrg delfiles="$delfiles $output_objdir/$output_la-${i}.$objext" 41104b0ead49Smrg done 41114b0ead49Smrg 41124b0ead49Smrg $echo "creating a temporary reloadable object file: $output" 41134b0ead49Smrg 41144b0ead49Smrg # Loop through the commands generated above and execute them. 41154b0ead49Smrg save_ifs="$IFS"; IFS='~' 41164b0ead49Smrg for cmd in $concat_cmds; do 41174b0ead49Smrg IFS="$save_ifs" 41184b0ead49Smrg $show "$cmd" 41194b0ead49Smrg $run eval "$cmd" || exit $? 41204b0ead49Smrg done 41214b0ead49Smrg IFS="$save_ifs" 41224b0ead49Smrg 41234b0ead49Smrg libobjs=$output 41244b0ead49Smrg # Restore the value of output. 41254b0ead49Smrg output=$save_output 41264b0ead49Smrg 41274b0ead49Smrg if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then 41284b0ead49Smrg eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 41294b0ead49Smrg fi 41304b0ead49Smrg # Expand the library linking commands again to reset the 41314b0ead49Smrg # value of $libobjs for piecewise linking. 41324b0ead49Smrg 41334b0ead49Smrg # Do each of the archive commands. 41344b0ead49Smrg if test "$module" = yes && test -n "$module_cmds" ; then 41354b0ead49Smrg if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 41364b0ead49Smrg cmds=$module_expsym_cmds 41374b0ead49Smrg else 41384b0ead49Smrg cmds=$module_cmds 41394b0ead49Smrg fi 41404b0ead49Smrg else 41414b0ead49Smrg if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 41424b0ead49Smrg cmds=$archive_expsym_cmds 41434b0ead49Smrg else 41444b0ead49Smrg cmds=$archive_cmds 41454b0ead49Smrg fi 41464b0ead49Smrg fi 41474b0ead49Smrg 41484b0ead49Smrg # Append the command to remove the reloadable object files 41494b0ead49Smrg # to the just-reset $cmds. 41504b0ead49Smrg eval cmds=\"\$cmds~\$rm $delfiles\" 41514b0ead49Smrg fi 41524b0ead49Smrg save_ifs="$IFS"; IFS='~' 41534b0ead49Smrg for cmd in $cmds; do 41544b0ead49Smrg IFS="$save_ifs" 41554b0ead49Smrg eval cmd=\"$cmd\" 41564b0ead49Smrg $show "$cmd" 41574b0ead49Smrg $run eval "$cmd" || { 41584b0ead49Smrg lt_exit=$? 41594b0ead49Smrg 41604b0ead49Smrg # Restore the uninstalled library and exit 41614b0ead49Smrg if test "$mode" = relink; then 41624b0ead49Smrg $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)' 41634b0ead49Smrg fi 41644b0ead49Smrg 41654b0ead49Smrg exit $lt_exit 41664b0ead49Smrg } 41674b0ead49Smrg done 41684b0ead49Smrg IFS="$save_ifs" 41694b0ead49Smrg 41704b0ead49Smrg # Restore the uninstalled library and exit 41714b0ead49Smrg if test "$mode" = relink; then 41724b0ead49Smrg $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $? 41734b0ead49Smrg 41744b0ead49Smrg if test -n "$convenience"; then 41754b0ead49Smrg if test -z "$whole_archive_flag_spec"; then 41764b0ead49Smrg $show "${rm}r $gentop" 41774b0ead49Smrg $run ${rm}r "$gentop" 41784b0ead49Smrg fi 41794b0ead49Smrg fi 41804b0ead49Smrg 41814b0ead49Smrg exit $EXIT_SUCCESS 41824b0ead49Smrg fi 41834b0ead49Smrg 41844b0ead49Smrg # Create links to the real library. 41854b0ead49Smrg for linkname in $linknames; do 41864b0ead49Smrg if test "$realname" != "$linkname"; then 41874b0ead49Smrg $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)" 41884b0ead49Smrg $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $? 41894b0ead49Smrg fi 41904b0ead49Smrg done 41914b0ead49Smrg 41924b0ead49Smrg # If -module or -export-dynamic was specified, set the dlname. 41934b0ead49Smrg if test "$module" = yes || test "$export_dynamic" = yes; then 41944b0ead49Smrg # On all known operating systems, these are identical. 41954b0ead49Smrg dlname="$soname" 41964b0ead49Smrg fi 41974b0ead49Smrg fi 41984b0ead49Smrg ;; 41994b0ead49Smrg 42004b0ead49Smrg obj) 42014b0ead49Smrg if test -n "$deplibs"; then 42024b0ead49Smrg $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 42034b0ead49Smrg fi 42044b0ead49Smrg 42054b0ead49Smrg if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 42064b0ead49Smrg $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2 42074b0ead49Smrg fi 42084b0ead49Smrg 42094b0ead49Smrg if test -n "$rpath"; then 42104b0ead49Smrg $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2 42114b0ead49Smrg fi 42124b0ead49Smrg 42134b0ead49Smrg if test -n "$xrpath"; then 42144b0ead49Smrg $echo "$modename: warning: \`-R' is ignored for objects" 1>&2 42154b0ead49Smrg fi 42164b0ead49Smrg 42174b0ead49Smrg if test -n "$vinfo"; then 42184b0ead49Smrg $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2 42194b0ead49Smrg fi 42204b0ead49Smrg 42214b0ead49Smrg if test -n "$release"; then 42224b0ead49Smrg $echo "$modename: warning: \`-release' is ignored for objects" 1>&2 42234b0ead49Smrg fi 42244b0ead49Smrg 42254b0ead49Smrg case $output in 42264b0ead49Smrg *.lo) 42274b0ead49Smrg if test -n "$objs$old_deplibs"; then 42284b0ead49Smrg $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 42294b0ead49Smrg exit $EXIT_FAILURE 42304b0ead49Smrg fi 42314b0ead49Smrg libobj="$output" 42324b0ead49Smrg obj=`$echo "X$output" | $Xsed -e "$lo2o"` 42334b0ead49Smrg ;; 42344b0ead49Smrg *) 42354b0ead49Smrg libobj= 42364b0ead49Smrg obj="$output" 42374b0ead49Smrg ;; 42384b0ead49Smrg esac 42394b0ead49Smrg 42404b0ead49Smrg # Delete the old objects. 42414b0ead49Smrg $run $rm $obj $libobj 42424b0ead49Smrg 42434b0ead49Smrg # Objects from convenience libraries. This assumes 42444b0ead49Smrg # single-version convenience libraries. Whenever we create 42454b0ead49Smrg # different ones for PIC/non-PIC, this we'll have to duplicate 42464b0ead49Smrg # the extraction. 42474b0ead49Smrg reload_conv_objs= 42484b0ead49Smrg gentop= 42494b0ead49Smrg # reload_cmds runs $LD directly, so let us get rid of 42504b0ead49Smrg # -Wl from whole_archive_flag_spec 42514b0ead49Smrg wl= 42524b0ead49Smrg 42534b0ead49Smrg if test -n "$convenience"; then 42544b0ead49Smrg if test -n "$whole_archive_flag_spec"; then 42554b0ead49Smrg eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\" 42564b0ead49Smrg else 42574b0ead49Smrg gentop="$output_objdir/${obj}x" 42584b0ead49Smrg generated="$generated $gentop" 42594b0ead49Smrg 42604b0ead49Smrg func_extract_archives $gentop $convenience 42614b0ead49Smrg reload_conv_objs="$reload_objs $func_extract_archives_result" 42624b0ead49Smrg fi 42634b0ead49Smrg fi 42644b0ead49Smrg 42654b0ead49Smrg # Create the old-style object. 42664b0ead49Smrg 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 42674b0ead49Smrg 42684b0ead49Smrg output="$obj" 42694b0ead49Smrg cmds=$reload_cmds 42704b0ead49Smrg save_ifs="$IFS"; IFS='~' 42714b0ead49Smrg for cmd in $cmds; do 42724b0ead49Smrg IFS="$save_ifs" 42734b0ead49Smrg eval cmd=\"$cmd\" 42744b0ead49Smrg $show "$cmd" 42754b0ead49Smrg $run eval "$cmd" || exit $? 42764b0ead49Smrg done 42774b0ead49Smrg IFS="$save_ifs" 42784b0ead49Smrg 42794b0ead49Smrg # Exit if we aren't doing a library object file. 42804b0ead49Smrg if test -z "$libobj"; then 42814b0ead49Smrg if test -n "$gentop"; then 42824b0ead49Smrg $show "${rm}r $gentop" 42834b0ead49Smrg $run ${rm}r $gentop 42844b0ead49Smrg fi 42854b0ead49Smrg 42864b0ead49Smrg exit $EXIT_SUCCESS 42874b0ead49Smrg fi 42884b0ead49Smrg 42894b0ead49Smrg if test "$build_libtool_libs" != yes; then 42904b0ead49Smrg if test -n "$gentop"; then 42914b0ead49Smrg $show "${rm}r $gentop" 42924b0ead49Smrg $run ${rm}r $gentop 42934b0ead49Smrg fi 42944b0ead49Smrg 42954b0ead49Smrg # Create an invalid libtool object if no PIC, so that we don't 42964b0ead49Smrg # accidentally link it into a program. 42974b0ead49Smrg # $show "echo timestamp > $libobj" 42984b0ead49Smrg # $run eval "echo timestamp > $libobj" || exit $? 42994b0ead49Smrg exit $EXIT_SUCCESS 43004b0ead49Smrg fi 43014b0ead49Smrg 43024b0ead49Smrg if test -n "$pic_flag" || test "$pic_mode" != default; then 43034b0ead49Smrg # Only do commands if we really have different PIC objects. 43044b0ead49Smrg reload_objs="$libobjs $reload_conv_objs" 43054b0ead49Smrg output="$libobj" 43064b0ead49Smrg cmds=$reload_cmds 43074b0ead49Smrg save_ifs="$IFS"; IFS='~' 43084b0ead49Smrg for cmd in $cmds; do 43094b0ead49Smrg IFS="$save_ifs" 43104b0ead49Smrg eval cmd=\"$cmd\" 43114b0ead49Smrg $show "$cmd" 43124b0ead49Smrg $run eval "$cmd" || exit $? 43134b0ead49Smrg done 43144b0ead49Smrg IFS="$save_ifs" 43154b0ead49Smrg fi 43164b0ead49Smrg 43174b0ead49Smrg if test -n "$gentop"; then 43184b0ead49Smrg $show "${rm}r $gentop" 43194b0ead49Smrg $run ${rm}r $gentop 43204b0ead49Smrg fi 43214b0ead49Smrg 43224b0ead49Smrg exit $EXIT_SUCCESS 43234b0ead49Smrg ;; 43244b0ead49Smrg 43254b0ead49Smrg prog) 43264b0ead49Smrg case $host in 43274b0ead49Smrg *cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;; 43284b0ead49Smrg esac 43294b0ead49Smrg if test -n "$vinfo"; then 43304b0ead49Smrg $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2 43314b0ead49Smrg fi 43324b0ead49Smrg 43334b0ead49Smrg if test -n "$release"; then 43344b0ead49Smrg $echo "$modename: warning: \`-release' is ignored for programs" 1>&2 43354b0ead49Smrg fi 43364b0ead49Smrg 43374b0ead49Smrg if test "$preload" = yes; then 43384b0ead49Smrg if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown && 43394b0ead49Smrg test "$dlopen_self_static" = unknown; then 43404b0ead49Smrg $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support." 43414b0ead49Smrg fi 43424b0ead49Smrg fi 43434b0ead49Smrg 43444b0ead49Smrg case $host in 43454b0ead49Smrg *-*-rhapsody* | *-*-darwin1.[012]) 43464b0ead49Smrg # On Rhapsody replace the C library is the System framework 43474b0ead49Smrg compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'` 43484b0ead49Smrg finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'` 43494b0ead49Smrg ;; 43504b0ead49Smrg esac 43514b0ead49Smrg 43524b0ead49Smrg case $host in 43534b0ead49Smrg *darwin*) 43544b0ead49Smrg # Don't allow lazy linking, it breaks C++ global constructors 43554b0ead49Smrg if test "$tagname" = CXX ; then 43564b0ead49Smrg compile_command="$compile_command ${wl}-bind_at_load" 43574b0ead49Smrg finalize_command="$finalize_command ${wl}-bind_at_load" 43584b0ead49Smrg fi 43594b0ead49Smrg ;; 43604b0ead49Smrg esac 43614b0ead49Smrg 43624b0ead49Smrg 43634b0ead49Smrg # move library search paths that coincide with paths to not yet 43644b0ead49Smrg # installed libraries to the beginning of the library search list 43654b0ead49Smrg new_libs= 43664b0ead49Smrg for path in $notinst_path; do 43674b0ead49Smrg case " $new_libs " in 43684b0ead49Smrg *" -L$path/$objdir "*) ;; 43694b0ead49Smrg *) 43704b0ead49Smrg case " $compile_deplibs " in 43714b0ead49Smrg *" -L$path/$objdir "*) 43724b0ead49Smrg new_libs="$new_libs -L$path/$objdir" ;; 43734b0ead49Smrg esac 43744b0ead49Smrg ;; 43754b0ead49Smrg esac 43764b0ead49Smrg done 43774b0ead49Smrg for deplib in $compile_deplibs; do 43784b0ead49Smrg case $deplib in 43794b0ead49Smrg -L*) 43804b0ead49Smrg case " $new_libs " in 43814b0ead49Smrg *" $deplib "*) ;; 43824b0ead49Smrg *) new_libs="$new_libs $deplib" ;; 43834b0ead49Smrg esac 43844b0ead49Smrg ;; 43854b0ead49Smrg *) new_libs="$new_libs $deplib" ;; 43864b0ead49Smrg esac 43874b0ead49Smrg done 43884b0ead49Smrg compile_deplibs="$new_libs" 43894b0ead49Smrg 43904b0ead49Smrg 43914b0ead49Smrg compile_command="$compile_command $compile_deplibs" 43924b0ead49Smrg finalize_command="$finalize_command $finalize_deplibs" 43934b0ead49Smrg 43944b0ead49Smrg if test -n "$rpath$xrpath"; then 43954b0ead49Smrg # If the user specified any rpath flags, then add them. 43964b0ead49Smrg for libdir in $rpath $xrpath; do 43974b0ead49Smrg # This is the magic to use -rpath. 43984b0ead49Smrg case "$finalize_rpath " in 43994b0ead49Smrg *" $libdir "*) ;; 44004b0ead49Smrg *) finalize_rpath="$finalize_rpath $libdir" ;; 44014b0ead49Smrg esac 44024b0ead49Smrg done 44034b0ead49Smrg fi 44044b0ead49Smrg 44054b0ead49Smrg # Now hardcode the library paths 44064b0ead49Smrg rpath= 44074b0ead49Smrg hardcode_libdirs= 44084b0ead49Smrg for libdir in $compile_rpath $finalize_rpath; do 44094b0ead49Smrg if test -n "$hardcode_libdir_flag_spec"; then 44104b0ead49Smrg if test -n "$hardcode_libdir_separator"; then 44114b0ead49Smrg if test -z "$hardcode_libdirs"; then 44124b0ead49Smrg hardcode_libdirs="$libdir" 44134b0ead49Smrg else 44144b0ead49Smrg # Just accumulate the unique libdirs. 44154b0ead49Smrg case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 44164b0ead49Smrg *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 44174b0ead49Smrg ;; 44184b0ead49Smrg *) 44194b0ead49Smrg hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 44204b0ead49Smrg ;; 44214b0ead49Smrg esac 44224b0ead49Smrg fi 44234b0ead49Smrg else 44244b0ead49Smrg eval flag=\"$hardcode_libdir_flag_spec\" 44254b0ead49Smrg rpath="$rpath $flag" 44264b0ead49Smrg fi 44274b0ead49Smrg elif test -n "$runpath_var"; then 44284b0ead49Smrg case "$perm_rpath " in 44294b0ead49Smrg *" $libdir "*) ;; 44304b0ead49Smrg *) perm_rpath="$perm_rpath $libdir" ;; 44314b0ead49Smrg esac 44324b0ead49Smrg fi 44334b0ead49Smrg case $host in 44344b0ead49Smrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) 44354b0ead49Smrg testbindir=`$echo "X$libdir" | $Xsed -e 's*/lib$*/bin*'` 44364b0ead49Smrg case :$dllsearchpath: in 44374b0ead49Smrg *":$libdir:"*) ;; 44384b0ead49Smrg *) dllsearchpath="$dllsearchpath:$libdir";; 44394b0ead49Smrg esac 44404b0ead49Smrg case :$dllsearchpath: in 44414b0ead49Smrg *":$testbindir:"*) ;; 44424b0ead49Smrg *) dllsearchpath="$dllsearchpath:$testbindir";; 44434b0ead49Smrg esac 44444b0ead49Smrg ;; 44454b0ead49Smrg esac 44464b0ead49Smrg done 44474b0ead49Smrg # Substitute the hardcoded libdirs into the rpath. 44484b0ead49Smrg if test -n "$hardcode_libdir_separator" && 44494b0ead49Smrg test -n "$hardcode_libdirs"; then 44504b0ead49Smrg libdir="$hardcode_libdirs" 44514b0ead49Smrg eval rpath=\" $hardcode_libdir_flag_spec\" 44524b0ead49Smrg fi 44534b0ead49Smrg compile_rpath="$rpath" 44544b0ead49Smrg 44554b0ead49Smrg rpath= 44564b0ead49Smrg hardcode_libdirs= 44574b0ead49Smrg for libdir in $finalize_rpath; do 44584b0ead49Smrg if test -n "$hardcode_libdir_flag_spec"; then 44594b0ead49Smrg if test -n "$hardcode_libdir_separator"; then 44604b0ead49Smrg if test -z "$hardcode_libdirs"; then 44614b0ead49Smrg hardcode_libdirs="$libdir" 44624b0ead49Smrg else 44634b0ead49Smrg # Just accumulate the unique libdirs. 44644b0ead49Smrg case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 44654b0ead49Smrg *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 44664b0ead49Smrg ;; 44674b0ead49Smrg *) 44684b0ead49Smrg hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 44694b0ead49Smrg ;; 44704b0ead49Smrg esac 44714b0ead49Smrg fi 44724b0ead49Smrg else 44734b0ead49Smrg eval flag=\"$hardcode_libdir_flag_spec\" 44744b0ead49Smrg rpath="$rpath $flag" 44754b0ead49Smrg fi 44764b0ead49Smrg elif test -n "$runpath_var"; then 44774b0ead49Smrg case "$finalize_perm_rpath " in 44784b0ead49Smrg *" $libdir "*) ;; 44794b0ead49Smrg *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; 44804b0ead49Smrg esac 44814b0ead49Smrg fi 44824b0ead49Smrg done 44834b0ead49Smrg # Substitute the hardcoded libdirs into the rpath. 44844b0ead49Smrg if test -n "$hardcode_libdir_separator" && 44854b0ead49Smrg test -n "$hardcode_libdirs"; then 44864b0ead49Smrg libdir="$hardcode_libdirs" 44874b0ead49Smrg eval rpath=\" $hardcode_libdir_flag_spec\" 44884b0ead49Smrg fi 44894b0ead49Smrg finalize_rpath="$rpath" 44904b0ead49Smrg 44914b0ead49Smrg if test -n "$libobjs" && test "$build_old_libs" = yes; then 44924b0ead49Smrg # Transform all the library objects into standard objects. 44934b0ead49Smrg compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 44944b0ead49Smrg finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 44954b0ead49Smrg fi 44964b0ead49Smrg 44974b0ead49Smrg dlsyms= 44984b0ead49Smrg if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 44994b0ead49Smrg if test -n "$NM" && test -n "$global_symbol_pipe"; then 45004b0ead49Smrg dlsyms="${outputname}S.c" 45014b0ead49Smrg else 45024b0ead49Smrg $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2 45034b0ead49Smrg fi 45044b0ead49Smrg fi 45054b0ead49Smrg 45064b0ead49Smrg if test -n "$dlsyms"; then 45074b0ead49Smrg case $dlsyms in 45084b0ead49Smrg "") ;; 45094b0ead49Smrg *.c) 45104b0ead49Smrg # Discover the nlist of each of the dlfiles. 45114b0ead49Smrg nlist="$output_objdir/${outputname}.nm" 45124b0ead49Smrg 45134b0ead49Smrg $show "$rm $nlist ${nlist}S ${nlist}T" 45144b0ead49Smrg $run $rm "$nlist" "${nlist}S" "${nlist}T" 45154b0ead49Smrg 45164b0ead49Smrg # Parse the name list into a source file. 45174b0ead49Smrg $show "creating $output_objdir/$dlsyms" 45184b0ead49Smrg 45194b0ead49Smrg test -z "$run" && $echo > "$output_objdir/$dlsyms" "\ 45204b0ead49Smrg/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */ 45214b0ead49Smrg/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */ 45224b0ead49Smrg 45234b0ead49Smrg#ifdef __cplusplus 45244b0ead49Smrgextern \"C\" { 45254b0ead49Smrg#endif 45264b0ead49Smrg 45274b0ead49Smrg/* Prevent the only kind of declaration conflicts we can make. */ 45284b0ead49Smrg#define lt_preloaded_symbols some_other_symbol 45294b0ead49Smrg 45304b0ead49Smrg/* External symbol declarations for the compiler. */\ 45314b0ead49Smrg" 45324b0ead49Smrg 45334b0ead49Smrg if test "$dlself" = yes; then 45344b0ead49Smrg $show "generating symbol list for \`$output'" 45354b0ead49Smrg 45364b0ead49Smrg test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist" 45374b0ead49Smrg 45384b0ead49Smrg # Add our own program objects to the symbol list. 45394b0ead49Smrg progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 45404b0ead49Smrg for arg in $progfiles; do 45414b0ead49Smrg $show "extracting global C symbols from \`$arg'" 45424b0ead49Smrg $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" 45434b0ead49Smrg done 45444b0ead49Smrg 45454b0ead49Smrg if test -n "$exclude_expsyms"; then 45464b0ead49Smrg $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' 45474b0ead49Smrg $run eval '$mv "$nlist"T "$nlist"' 45484b0ead49Smrg fi 45494b0ead49Smrg 45504b0ead49Smrg if test -n "$export_symbols_regex"; then 45514b0ead49Smrg $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' 45524b0ead49Smrg $run eval '$mv "$nlist"T "$nlist"' 45534b0ead49Smrg fi 45544b0ead49Smrg 45554b0ead49Smrg # Prepare the list of exported symbols 45564b0ead49Smrg if test -z "$export_symbols"; then 45574b0ead49Smrg export_symbols="$output_objdir/$outputname.exp" 45584b0ead49Smrg $run $rm $export_symbols 45594b0ead49Smrg $run eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' 45604b0ead49Smrg case $host in 45614b0ead49Smrg *cygwin* | *mingw* ) 45624b0ead49Smrg $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 45634b0ead49Smrg $run eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' 45644b0ead49Smrg ;; 45654b0ead49Smrg esac 45664b0ead49Smrg else 45674b0ead49Smrg $run eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' 45684b0ead49Smrg $run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' 45694b0ead49Smrg $run eval 'mv "$nlist"T "$nlist"' 45704b0ead49Smrg case $host in 45714b0ead49Smrg *cygwin* | *mingw* ) 45724b0ead49Smrg $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 45734b0ead49Smrg $run eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' 45744b0ead49Smrg ;; 45754b0ead49Smrg esac 45764b0ead49Smrg fi 45774b0ead49Smrg fi 45784b0ead49Smrg 45794b0ead49Smrg for arg in $dlprefiles; do 45804b0ead49Smrg $show "extracting global C symbols from \`$arg'" 45814b0ead49Smrg name=`$echo "$arg" | ${SED} -e 's%^.*/%%'` 45824b0ead49Smrg $run eval '$echo ": $name " >> "$nlist"' 45834b0ead49Smrg $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" 45844b0ead49Smrg done 45854b0ead49Smrg 45864b0ead49Smrg if test -z "$run"; then 45874b0ead49Smrg # Make sure we have at least an empty file. 45884b0ead49Smrg test -f "$nlist" || : > "$nlist" 45894b0ead49Smrg 45904b0ead49Smrg if test -n "$exclude_expsyms"; then 45914b0ead49Smrg $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T 45924b0ead49Smrg $mv "$nlist"T "$nlist" 45934b0ead49Smrg fi 45944b0ead49Smrg 45954b0ead49Smrg # Try sorting and uniquifying the output. 45964b0ead49Smrg if grep -v "^: " < "$nlist" | 45974b0ead49Smrg if sort -k 3 </dev/null >/dev/null 2>&1; then 45984b0ead49Smrg sort -k 3 45994b0ead49Smrg else 46004b0ead49Smrg sort +2 46014b0ead49Smrg fi | 46024b0ead49Smrg uniq > "$nlist"S; then 46034b0ead49Smrg : 46044b0ead49Smrg else 46054b0ead49Smrg grep -v "^: " < "$nlist" > "$nlist"S 46064b0ead49Smrg fi 46074b0ead49Smrg 46084b0ead49Smrg if test -f "$nlist"S; then 46094b0ead49Smrg eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"' 46104b0ead49Smrg else 46114b0ead49Smrg $echo '/* NONE */' >> "$output_objdir/$dlsyms" 46124b0ead49Smrg fi 46134b0ead49Smrg 46144b0ead49Smrg $echo >> "$output_objdir/$dlsyms" "\ 46154b0ead49Smrg 46164b0ead49Smrg#undef lt_preloaded_symbols 46174b0ead49Smrg 46184b0ead49Smrg#if defined (__STDC__) && __STDC__ 46194b0ead49Smrg# define lt_ptr void * 46204b0ead49Smrg#else 46214b0ead49Smrg# define lt_ptr char * 46224b0ead49Smrg# define const 46234b0ead49Smrg#endif 46244b0ead49Smrg 46254b0ead49Smrg/* The mapping between symbol names and symbols. */ 46264b0ead49Smrg" 46274b0ead49Smrg 46284b0ead49Smrg case $host in 46294b0ead49Smrg *cygwin* | *mingw* ) 46304b0ead49Smrg $echo >> "$output_objdir/$dlsyms" "\ 46314b0ead49Smrg/* DATA imports from DLLs on WIN32 can't be const, because 46324b0ead49Smrg runtime relocations are performed -- see ld's documentation 46334b0ead49Smrg on pseudo-relocs */ 46344b0ead49Smrgstruct { 46354b0ead49Smrg" 46364b0ead49Smrg ;; 46374b0ead49Smrg * ) 46384b0ead49Smrg $echo >> "$output_objdir/$dlsyms" "\ 46394b0ead49Smrgconst struct { 46404b0ead49Smrg" 46414b0ead49Smrg ;; 46424b0ead49Smrg esac 46434b0ead49Smrg 46444b0ead49Smrg 46454b0ead49Smrg $echo >> "$output_objdir/$dlsyms" "\ 46464b0ead49Smrg const char *name; 46474b0ead49Smrg lt_ptr address; 46484b0ead49Smrg} 46494b0ead49Smrglt_preloaded_symbols[] = 46504b0ead49Smrg{\ 46514b0ead49Smrg" 46524b0ead49Smrg 46534b0ead49Smrg eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms" 46544b0ead49Smrg 46554b0ead49Smrg $echo >> "$output_objdir/$dlsyms" "\ 46564b0ead49Smrg {0, (lt_ptr) 0} 46574b0ead49Smrg}; 46584b0ead49Smrg 46594b0ead49Smrg/* This works around a problem in FreeBSD linker */ 46604b0ead49Smrg#ifdef FREEBSD_WORKAROUND 46614b0ead49Smrgstatic const void *lt_preloaded_setup() { 46624b0ead49Smrg return lt_preloaded_symbols; 46634b0ead49Smrg} 46644b0ead49Smrg#endif 46654b0ead49Smrg 46664b0ead49Smrg#ifdef __cplusplus 46674b0ead49Smrg} 46684b0ead49Smrg#endif\ 46694b0ead49Smrg" 46704b0ead49Smrg fi 46714b0ead49Smrg 46724b0ead49Smrg pic_flag_for_symtable= 46734b0ead49Smrg case $host in 46744b0ead49Smrg # compiling the symbol table file with pic_flag works around 46754b0ead49Smrg # a FreeBSD bug that causes programs to crash when -lm is 46764b0ead49Smrg # linked before any other PIC object. But we must not use 46774b0ead49Smrg # pic_flag when linking with -static. The problem exists in 46784b0ead49Smrg # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. 46794b0ead49Smrg *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) 46804b0ead49Smrg case "$compile_command " in 46814b0ead49Smrg *" -static "*) ;; 46824b0ead49Smrg *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";; 46834b0ead49Smrg esac;; 46844b0ead49Smrg *-*-hpux*) 46854b0ead49Smrg case "$compile_command " in 46864b0ead49Smrg *" -static "*) ;; 46874b0ead49Smrg *) pic_flag_for_symtable=" $pic_flag";; 46884b0ead49Smrg esac 46894b0ead49Smrg esac 46904b0ead49Smrg 46914b0ead49Smrg # Now compile the dynamic symbol file. 46924b0ead49Smrg $show "(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" 46934b0ead49Smrg $run eval '(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? 46944b0ead49Smrg 46954b0ead49Smrg # Clean up the generated files. 46964b0ead49Smrg $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T" 46974b0ead49Smrg $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T" 46984b0ead49Smrg 46994b0ead49Smrg # Transform the symbol file into the correct name. 47004b0ead49Smrg case $host in 47014b0ead49Smrg *cygwin* | *mingw* ) 47024b0ead49Smrg if test -f "$output_objdir/${outputname}.def" ; then 47034b0ead49Smrg compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%"` 47044b0ead49Smrg finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%"` 47054b0ead49Smrg else 47064b0ead49Smrg compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` 47074b0ead49Smrg finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` 47084b0ead49Smrg fi 47094b0ead49Smrg ;; 47104b0ead49Smrg * ) 47114b0ead49Smrg compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` 47124b0ead49Smrg finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` 47134b0ead49Smrg ;; 47144b0ead49Smrg esac 47154b0ead49Smrg ;; 47164b0ead49Smrg *) 47174b0ead49Smrg $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 47184b0ead49Smrg exit $EXIT_FAILURE 47194b0ead49Smrg ;; 47204b0ead49Smrg esac 47214b0ead49Smrg else 47224b0ead49Smrg # We keep going just in case the user didn't refer to 47234b0ead49Smrg # lt_preloaded_symbols. The linker will fail if global_symbol_pipe 47244b0ead49Smrg # really was required. 47254b0ead49Smrg 47264b0ead49Smrg # Nullify the symbol file. 47274b0ead49Smrg compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` 47284b0ead49Smrg finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` 47294b0ead49Smrg fi 47304b0ead49Smrg 47314b0ead49Smrg if test "$need_relink" = no || test "$build_libtool_libs" != yes; then 47324b0ead49Smrg # Replace the output file specification. 47334b0ead49Smrg compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` 47344b0ead49Smrg link_command="$compile_command$compile_rpath" 47354b0ead49Smrg 47364b0ead49Smrg # We have no uninstalled library dependencies, so finalize right now. 47374b0ead49Smrg $show "$link_command" 47384b0ead49Smrg $run eval "$link_command" 47394b0ead49Smrg exit_status=$? 47404b0ead49Smrg 47414b0ead49Smrg # Delete the generated files. 47424b0ead49Smrg if test -n "$dlsyms"; then 47434b0ead49Smrg $show "$rm $output_objdir/${outputname}S.${objext}" 47444b0ead49Smrg $run $rm "$output_objdir/${outputname}S.${objext}" 47454b0ead49Smrg fi 47464b0ead49Smrg 47474b0ead49Smrg exit $exit_status 47484b0ead49Smrg fi 47494b0ead49Smrg 47504b0ead49Smrg if test -n "$shlibpath_var"; then 47514b0ead49Smrg # We should set the shlibpath_var 47524b0ead49Smrg rpath= 47534b0ead49Smrg for dir in $temp_rpath; do 47544b0ead49Smrg case $dir in 47554b0ead49Smrg [\\/]* | [A-Za-z]:[\\/]*) 47564b0ead49Smrg # Absolute path. 47574b0ead49Smrg rpath="$rpath$dir:" 47584b0ead49Smrg ;; 47594b0ead49Smrg *) 47604b0ead49Smrg # Relative path: add a thisdir entry. 47614b0ead49Smrg rpath="$rpath\$thisdir/$dir:" 47624b0ead49Smrg ;; 47634b0ead49Smrg esac 47644b0ead49Smrg done 47654b0ead49Smrg temp_rpath="$rpath" 47664b0ead49Smrg fi 47674b0ead49Smrg 47684b0ead49Smrg if test -n "$compile_shlibpath$finalize_shlibpath"; then 47694b0ead49Smrg compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" 47704b0ead49Smrg fi 47714b0ead49Smrg if test -n "$finalize_shlibpath"; then 47724b0ead49Smrg finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" 47734b0ead49Smrg fi 47744b0ead49Smrg 47754b0ead49Smrg compile_var= 47764b0ead49Smrg finalize_var= 47774b0ead49Smrg if test -n "$runpath_var"; then 47784b0ead49Smrg if test -n "$perm_rpath"; then 47794b0ead49Smrg # We should set the runpath_var. 47804b0ead49Smrg rpath= 47814b0ead49Smrg for dir in $perm_rpath; do 47824b0ead49Smrg rpath="$rpath$dir:" 47834b0ead49Smrg done 47844b0ead49Smrg compile_var="$runpath_var=\"$rpath\$$runpath_var\" " 47854b0ead49Smrg fi 47864b0ead49Smrg if test -n "$finalize_perm_rpath"; then 47874b0ead49Smrg # We should set the runpath_var. 47884b0ead49Smrg rpath= 47894b0ead49Smrg for dir in $finalize_perm_rpath; do 47904b0ead49Smrg rpath="$rpath$dir:" 47914b0ead49Smrg done 47924b0ead49Smrg finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " 47934b0ead49Smrg fi 47944b0ead49Smrg fi 47954b0ead49Smrg 47964b0ead49Smrg if test "$no_install" = yes; then 47974b0ead49Smrg # We don't need to create a wrapper script. 47984b0ead49Smrg link_command="$compile_var$compile_command$compile_rpath" 47994b0ead49Smrg # Replace the output file specification. 48004b0ead49Smrg link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` 48014b0ead49Smrg # Delete the old output file. 48024b0ead49Smrg $run $rm $output 48034b0ead49Smrg # Link the executable and exit 48044b0ead49Smrg $show "$link_command" 48054b0ead49Smrg $run eval "$link_command" || exit $? 48064b0ead49Smrg exit $EXIT_SUCCESS 48074b0ead49Smrg fi 48084b0ead49Smrg 48094b0ead49Smrg if test "$hardcode_action" = relink; then 48104b0ead49Smrg # Fast installation is not supported 48114b0ead49Smrg link_command="$compile_var$compile_command$compile_rpath" 48124b0ead49Smrg relink_command="$finalize_var$finalize_command$finalize_rpath" 48134b0ead49Smrg 48144b0ead49Smrg $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2 48154b0ead49Smrg $echo "$modename: \`$output' will be relinked during installation" 1>&2 48164b0ead49Smrg else 48174b0ead49Smrg if test "$fast_install" != no; then 48184b0ead49Smrg link_command="$finalize_var$compile_command$finalize_rpath" 48194b0ead49Smrg if test "$fast_install" = yes; then 48204b0ead49Smrg relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` 48214b0ead49Smrg else 48224b0ead49Smrg # fast_install is set to needless 48234b0ead49Smrg relink_command= 48244b0ead49Smrg fi 48254b0ead49Smrg else 48264b0ead49Smrg link_command="$compile_var$compile_command$compile_rpath" 48274b0ead49Smrg relink_command="$finalize_var$finalize_command$finalize_rpath" 48284b0ead49Smrg fi 48294b0ead49Smrg fi 48304b0ead49Smrg 48314b0ead49Smrg # Replace the output file specification. 48324b0ead49Smrg link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` 48334b0ead49Smrg 48344b0ead49Smrg # Delete the old output files. 48354b0ead49Smrg $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname 48364b0ead49Smrg 48374b0ead49Smrg $show "$link_command" 48384b0ead49Smrg $run eval "$link_command" || exit $? 48394b0ead49Smrg 48404b0ead49Smrg # Now create the wrapper script. 48414b0ead49Smrg $show "creating $output" 48424b0ead49Smrg 48434b0ead49Smrg # Quote the relink command for shipping. 48444b0ead49Smrg if test -n "$relink_command"; then 48454b0ead49Smrg # Preserve any variables that may affect compiler behavior 48464b0ead49Smrg for var in $variables_saved_for_relink; do 48474b0ead49Smrg if eval test -z \"\${$var+set}\"; then 48484b0ead49Smrg relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" 48494b0ead49Smrg elif eval var_value=\$$var; test -z "$var_value"; then 48504b0ead49Smrg relink_command="$var=; export $var; $relink_command" 48514b0ead49Smrg else 48524b0ead49Smrg var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` 48534b0ead49Smrg relink_command="$var=\"$var_value\"; export $var; $relink_command" 48544b0ead49Smrg fi 48554b0ead49Smrg done 48564b0ead49Smrg relink_command="(cd `pwd`; $relink_command)" 48574b0ead49Smrg relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` 48584b0ead49Smrg fi 48594b0ead49Smrg 48604b0ead49Smrg # Quote $echo for shipping. 48614b0ead49Smrg if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then 48624b0ead49Smrg case $progpath in 48634b0ead49Smrg [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; 48644b0ead49Smrg *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; 48654b0ead49Smrg esac 48664b0ead49Smrg qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"` 48674b0ead49Smrg else 48684b0ead49Smrg qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"` 48694b0ead49Smrg fi 48704b0ead49Smrg 48714b0ead49Smrg # Only actually do things if our run command is non-null. 48724b0ead49Smrg if test -z "$run"; then 48734b0ead49Smrg # win32 will think the script is a binary if it has 48744b0ead49Smrg # a .exe suffix, so we strip it off here. 48754b0ead49Smrg case $output in 48764b0ead49Smrg *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;; 48774b0ead49Smrg esac 48784b0ead49Smrg # test for cygwin because mv fails w/o .exe extensions 48794b0ead49Smrg case $host in 48804b0ead49Smrg *cygwin*) 48814b0ead49Smrg exeext=.exe 48824b0ead49Smrg outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;; 48834b0ead49Smrg *) exeext= ;; 48844b0ead49Smrg esac 48854b0ead49Smrg case $host in 48864b0ead49Smrg *cygwin* | *mingw* ) 48874b0ead49Smrg output_name=`basename $output` 48884b0ead49Smrg output_path=`dirname $output` 48894b0ead49Smrg cwrappersource="$output_path/$objdir/lt-$output_name.c" 48904b0ead49Smrg cwrapper="$output_path/$output_name.exe" 48914b0ead49Smrg $rm $cwrappersource $cwrapper 48924b0ead49Smrg trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 48934b0ead49Smrg 48944b0ead49Smrg cat > $cwrappersource <<EOF 48954b0ead49Smrg 48964b0ead49Smrg/* $cwrappersource - temporary wrapper executable for $objdir/$outputname 48974b0ead49Smrg Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP 48984b0ead49Smrg 48994b0ead49Smrg The $output program cannot be directly executed until all the libtool 49004b0ead49Smrg libraries that it depends on are installed. 49014b0ead49Smrg 49024b0ead49Smrg This wrapper executable should never be moved out of the build directory. 49034b0ead49Smrg If it is, it will not operate correctly. 49044b0ead49Smrg 49054b0ead49Smrg Currently, it simply execs the wrapper *script* "/bin/sh $output", 49064b0ead49Smrg but could eventually absorb all of the scripts functionality and 49074b0ead49Smrg exec $objdir/$outputname directly. 49084b0ead49Smrg*/ 49094b0ead49SmrgEOF 49104b0ead49Smrg cat >> $cwrappersource<<"EOF" 49114b0ead49Smrg#include <stdio.h> 49124b0ead49Smrg#include <stdlib.h> 49134b0ead49Smrg#include <unistd.h> 49144b0ead49Smrg#include <malloc.h> 49154b0ead49Smrg#include <stdarg.h> 49164b0ead49Smrg#include <assert.h> 49174b0ead49Smrg#include <string.h> 49184b0ead49Smrg#include <ctype.h> 49194b0ead49Smrg#include <sys/stat.h> 49204b0ead49Smrg 49214b0ead49Smrg#if defined(PATH_MAX) 49224b0ead49Smrg# define LT_PATHMAX PATH_MAX 49234b0ead49Smrg#elif defined(MAXPATHLEN) 49244b0ead49Smrg# define LT_PATHMAX MAXPATHLEN 49254b0ead49Smrg#else 49264b0ead49Smrg# define LT_PATHMAX 1024 49274b0ead49Smrg#endif 49284b0ead49Smrg 49294b0ead49Smrg#ifndef DIR_SEPARATOR 49304b0ead49Smrg# define DIR_SEPARATOR '/' 49314b0ead49Smrg# define PATH_SEPARATOR ':' 49324b0ead49Smrg#endif 49334b0ead49Smrg 49344b0ead49Smrg#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ 49354b0ead49Smrg defined (__OS2__) 49364b0ead49Smrg# define HAVE_DOS_BASED_FILE_SYSTEM 49374b0ead49Smrg# ifndef DIR_SEPARATOR_2 49384b0ead49Smrg# define DIR_SEPARATOR_2 '\\' 49394b0ead49Smrg# endif 49404b0ead49Smrg# ifndef PATH_SEPARATOR_2 49414b0ead49Smrg# define PATH_SEPARATOR_2 ';' 49424b0ead49Smrg# endif 49434b0ead49Smrg#endif 49444b0ead49Smrg 49454b0ead49Smrg#ifndef DIR_SEPARATOR_2 49464b0ead49Smrg# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) 49474b0ead49Smrg#else /* DIR_SEPARATOR_2 */ 49484b0ead49Smrg# define IS_DIR_SEPARATOR(ch) \ 49494b0ead49Smrg (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) 49504b0ead49Smrg#endif /* DIR_SEPARATOR_2 */ 49514b0ead49Smrg 49524b0ead49Smrg#ifndef PATH_SEPARATOR_2 49534b0ead49Smrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) 49544b0ead49Smrg#else /* PATH_SEPARATOR_2 */ 49554b0ead49Smrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) 49564b0ead49Smrg#endif /* PATH_SEPARATOR_2 */ 49574b0ead49Smrg 49584b0ead49Smrg#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) 49594b0ead49Smrg#define XFREE(stale) do { \ 49604b0ead49Smrg if (stale) { free ((void *) stale); stale = 0; } \ 49614b0ead49Smrg} while (0) 49624b0ead49Smrg 49634b0ead49Smrg/* -DDEBUG is fairly common in CFLAGS. */ 49644b0ead49Smrg#undef DEBUG 49654b0ead49Smrg#if defined DEBUGWRAPPER 49664b0ead49Smrg# define DEBUG(format, ...) fprintf(stderr, format, __VA_ARGS__) 49674b0ead49Smrg#else 49684b0ead49Smrg# define DEBUG(format, ...) 49694b0ead49Smrg#endif 49704b0ead49Smrg 49714b0ead49Smrgconst char *program_name = NULL; 49724b0ead49Smrg 49734b0ead49Smrgvoid * xmalloc (size_t num); 49744b0ead49Smrgchar * xstrdup (const char *string); 49754b0ead49Smrgconst char * base_name (const char *name); 49764b0ead49Smrgchar * find_executable(const char *wrapper); 49774b0ead49Smrgint check_executable(const char *path); 49784b0ead49Smrgchar * strendzap(char *str, const char *pat); 49794b0ead49Smrgvoid lt_fatal (const char *message, ...); 49804b0ead49Smrg 49814b0ead49Smrgint 49824b0ead49Smrgmain (int argc, char *argv[]) 49834b0ead49Smrg{ 49844b0ead49Smrg char **newargz; 49854b0ead49Smrg int i; 49864b0ead49Smrg 49874b0ead49Smrg program_name = (char *) xstrdup (base_name (argv[0])); 49884b0ead49Smrg DEBUG("(main) argv[0] : %s\n",argv[0]); 49894b0ead49Smrg DEBUG("(main) program_name : %s\n",program_name); 49904b0ead49Smrg newargz = XMALLOC(char *, argc+2); 49914b0ead49SmrgEOF 49924b0ead49Smrg 49934b0ead49Smrg cat >> $cwrappersource <<EOF 49944b0ead49Smrg newargz[0] = (char *) xstrdup("$SHELL"); 49954b0ead49SmrgEOF 49964b0ead49Smrg 49974b0ead49Smrg cat >> $cwrappersource <<"EOF" 49984b0ead49Smrg newargz[1] = find_executable(argv[0]); 49994b0ead49Smrg if (newargz[1] == NULL) 50004b0ead49Smrg lt_fatal("Couldn't find %s", argv[0]); 50014b0ead49Smrg DEBUG("(main) found exe at : %s\n",newargz[1]); 50024b0ead49Smrg /* we know the script has the same name, without the .exe */ 50034b0ead49Smrg /* so make sure newargz[1] doesn't end in .exe */ 50044b0ead49Smrg strendzap(newargz[1],".exe"); 50054b0ead49Smrg for (i = 1; i < argc; i++) 50064b0ead49Smrg newargz[i+1] = xstrdup(argv[i]); 50074b0ead49Smrg newargz[argc+1] = NULL; 50084b0ead49Smrg 50094b0ead49Smrg for (i=0; i<argc+1; i++) 50104b0ead49Smrg { 50114b0ead49Smrg DEBUG("(main) newargz[%d] : %s\n",i,newargz[i]); 50124b0ead49Smrg ; 50134b0ead49Smrg } 50144b0ead49Smrg 50154b0ead49SmrgEOF 50164b0ead49Smrg 50174b0ead49Smrg case $host_os in 50184b0ead49Smrg mingw*) 50194b0ead49Smrg cat >> $cwrappersource <<EOF 50204b0ead49Smrg execv("$SHELL",(char const **)newargz); 50214b0ead49SmrgEOF 50224b0ead49Smrg ;; 50234b0ead49Smrg *) 50244b0ead49Smrg cat >> $cwrappersource <<EOF 50254b0ead49Smrg execv("$SHELL",newargz); 50264b0ead49SmrgEOF 50274b0ead49Smrg ;; 50284b0ead49Smrg esac 50294b0ead49Smrg 50304b0ead49Smrg cat >> $cwrappersource <<"EOF" 50314b0ead49Smrg return 127; 50324b0ead49Smrg} 50334b0ead49Smrg 50344b0ead49Smrgvoid * 50354b0ead49Smrgxmalloc (size_t num) 50364b0ead49Smrg{ 50374b0ead49Smrg void * p = (void *) malloc (num); 50384b0ead49Smrg if (!p) 50394b0ead49Smrg lt_fatal ("Memory exhausted"); 50404b0ead49Smrg 50414b0ead49Smrg return p; 50424b0ead49Smrg} 50434b0ead49Smrg 50444b0ead49Smrgchar * 50454b0ead49Smrgxstrdup (const char *string) 50464b0ead49Smrg{ 50474b0ead49Smrg return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL 50484b0ead49Smrg; 50494b0ead49Smrg} 50504b0ead49Smrg 50514b0ead49Smrgconst char * 50524b0ead49Smrgbase_name (const char *name) 50534b0ead49Smrg{ 50544b0ead49Smrg const char *base; 50554b0ead49Smrg 50564b0ead49Smrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 50574b0ead49Smrg /* Skip over the disk name in MSDOS pathnames. */ 50584b0ead49Smrg if (isalpha ((unsigned char)name[0]) && name[1] == ':') 50594b0ead49Smrg name += 2; 50604b0ead49Smrg#endif 50614b0ead49Smrg 50624b0ead49Smrg for (base = name; *name; name++) 50634b0ead49Smrg if (IS_DIR_SEPARATOR (*name)) 50644b0ead49Smrg base = name + 1; 50654b0ead49Smrg return base; 50664b0ead49Smrg} 50674b0ead49Smrg 50684b0ead49Smrgint 50694b0ead49Smrgcheck_executable(const char * path) 50704b0ead49Smrg{ 50714b0ead49Smrg struct stat st; 50724b0ead49Smrg 50734b0ead49Smrg DEBUG("(check_executable) : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!"); 50744b0ead49Smrg if ((!path) || (!*path)) 50754b0ead49Smrg return 0; 50764b0ead49Smrg 50774b0ead49Smrg if ((stat (path, &st) >= 0) && 50784b0ead49Smrg ( 50794b0ead49Smrg /* MinGW & native WIN32 do not support S_IXOTH or S_IXGRP */ 50804b0ead49Smrg#if defined (S_IXOTH) 50814b0ead49Smrg ((st.st_mode & S_IXOTH) == S_IXOTH) || 50824b0ead49Smrg#endif 50834b0ead49Smrg#if defined (S_IXGRP) 50844b0ead49Smrg ((st.st_mode & S_IXGRP) == S_IXGRP) || 50854b0ead49Smrg#endif 50864b0ead49Smrg ((st.st_mode & S_IXUSR) == S_IXUSR)) 50874b0ead49Smrg ) 50884b0ead49Smrg return 1; 50894b0ead49Smrg else 50904b0ead49Smrg return 0; 50914b0ead49Smrg} 50924b0ead49Smrg 50934b0ead49Smrg/* Searches for the full path of the wrapper. Returns 50944b0ead49Smrg newly allocated full path name if found, NULL otherwise */ 50954b0ead49Smrgchar * 50964b0ead49Smrgfind_executable (const char* wrapper) 50974b0ead49Smrg{ 50984b0ead49Smrg int has_slash = 0; 50994b0ead49Smrg const char* p; 51004b0ead49Smrg const char* p_next; 51014b0ead49Smrg /* static buffer for getcwd */ 51024b0ead49Smrg char tmp[LT_PATHMAX + 1]; 51034b0ead49Smrg int tmp_len; 51044b0ead49Smrg char* concat_name; 51054b0ead49Smrg 51064b0ead49Smrg DEBUG("(find_executable) : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!"); 51074b0ead49Smrg 51084b0ead49Smrg if ((wrapper == NULL) || (*wrapper == '\0')) 51094b0ead49Smrg return NULL; 51104b0ead49Smrg 51114b0ead49Smrg /* Absolute path? */ 51124b0ead49Smrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 51134b0ead49Smrg if (isalpha ((unsigned char)wrapper[0]) && wrapper[1] == ':') 51144b0ead49Smrg { 51154b0ead49Smrg concat_name = xstrdup (wrapper); 51164b0ead49Smrg if (check_executable(concat_name)) 51174b0ead49Smrg return concat_name; 51184b0ead49Smrg XFREE(concat_name); 51194b0ead49Smrg } 51204b0ead49Smrg else 51214b0ead49Smrg { 51224b0ead49Smrg#endif 51234b0ead49Smrg if (IS_DIR_SEPARATOR (wrapper[0])) 51244b0ead49Smrg { 51254b0ead49Smrg concat_name = xstrdup (wrapper); 51264b0ead49Smrg if (check_executable(concat_name)) 51274b0ead49Smrg return concat_name; 51284b0ead49Smrg XFREE(concat_name); 51294b0ead49Smrg } 51304b0ead49Smrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 51314b0ead49Smrg } 51324b0ead49Smrg#endif 51334b0ead49Smrg 51344b0ead49Smrg for (p = wrapper; *p; p++) 51354b0ead49Smrg if (*p == '/') 51364b0ead49Smrg { 51374b0ead49Smrg has_slash = 1; 51384b0ead49Smrg break; 51394b0ead49Smrg } 51404b0ead49Smrg if (!has_slash) 51414b0ead49Smrg { 51424b0ead49Smrg /* no slashes; search PATH */ 51434b0ead49Smrg const char* path = getenv ("PATH"); 51444b0ead49Smrg if (path != NULL) 51454b0ead49Smrg { 51464b0ead49Smrg for (p = path; *p; p = p_next) 51474b0ead49Smrg { 51484b0ead49Smrg const char* q; 51494b0ead49Smrg size_t p_len; 51504b0ead49Smrg for (q = p; *q; q++) 51514b0ead49Smrg if (IS_PATH_SEPARATOR(*q)) 51524b0ead49Smrg break; 51534b0ead49Smrg p_len = q - p; 51544b0ead49Smrg p_next = (*q == '\0' ? q : q + 1); 51554b0ead49Smrg if (p_len == 0) 51564b0ead49Smrg { 51574b0ead49Smrg /* empty path: current directory */ 51584b0ead49Smrg if (getcwd (tmp, LT_PATHMAX) == NULL) 51594b0ead49Smrg lt_fatal ("getcwd failed"); 51604b0ead49Smrg tmp_len = strlen(tmp); 51614b0ead49Smrg concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1); 51624b0ead49Smrg memcpy (concat_name, tmp, tmp_len); 51634b0ead49Smrg concat_name[tmp_len] = '/'; 51644b0ead49Smrg strcpy (concat_name + tmp_len + 1, wrapper); 51654b0ead49Smrg } 51664b0ead49Smrg else 51674b0ead49Smrg { 51684b0ead49Smrg concat_name = XMALLOC(char, p_len + 1 + strlen(wrapper) + 1); 51694b0ead49Smrg memcpy (concat_name, p, p_len); 51704b0ead49Smrg concat_name[p_len] = '/'; 51714b0ead49Smrg strcpy (concat_name + p_len + 1, wrapper); 51724b0ead49Smrg } 51734b0ead49Smrg if (check_executable(concat_name)) 51744b0ead49Smrg return concat_name; 51754b0ead49Smrg XFREE(concat_name); 51764b0ead49Smrg } 51774b0ead49Smrg } 51784b0ead49Smrg /* not found in PATH; assume curdir */ 51794b0ead49Smrg } 51804b0ead49Smrg /* Relative path | not found in path: prepend cwd */ 51814b0ead49Smrg if (getcwd (tmp, LT_PATHMAX) == NULL) 51824b0ead49Smrg lt_fatal ("getcwd failed"); 51834b0ead49Smrg tmp_len = strlen(tmp); 51844b0ead49Smrg concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1); 51854b0ead49Smrg memcpy (concat_name, tmp, tmp_len); 51864b0ead49Smrg concat_name[tmp_len] = '/'; 51874b0ead49Smrg strcpy (concat_name + tmp_len + 1, wrapper); 51884b0ead49Smrg 51894b0ead49Smrg if (check_executable(concat_name)) 51904b0ead49Smrg return concat_name; 51914b0ead49Smrg XFREE(concat_name); 51924b0ead49Smrg return NULL; 51934b0ead49Smrg} 51944b0ead49Smrg 51954b0ead49Smrgchar * 51964b0ead49Smrgstrendzap(char *str, const char *pat) 51974b0ead49Smrg{ 51984b0ead49Smrg size_t len, patlen; 51994b0ead49Smrg 52004b0ead49Smrg assert(str != NULL); 52014b0ead49Smrg assert(pat != NULL); 52024b0ead49Smrg 52034b0ead49Smrg len = strlen(str); 52044b0ead49Smrg patlen = strlen(pat); 52054b0ead49Smrg 52064b0ead49Smrg if (patlen <= len) 52074b0ead49Smrg { 52084b0ead49Smrg str += len - patlen; 52094b0ead49Smrg if (strcmp(str, pat) == 0) 52104b0ead49Smrg *str = '\0'; 52114b0ead49Smrg } 52124b0ead49Smrg return str; 52134b0ead49Smrg} 52144b0ead49Smrg 52154b0ead49Smrgstatic void 52164b0ead49Smrglt_error_core (int exit_status, const char * mode, 52174b0ead49Smrg const char * message, va_list ap) 52184b0ead49Smrg{ 52194b0ead49Smrg fprintf (stderr, "%s: %s: ", program_name, mode); 52204b0ead49Smrg vfprintf (stderr, message, ap); 52214b0ead49Smrg fprintf (stderr, ".\n"); 52224b0ead49Smrg 52234b0ead49Smrg if (exit_status >= 0) 52244b0ead49Smrg exit (exit_status); 52254b0ead49Smrg} 52264b0ead49Smrg 52274b0ead49Smrgvoid 52284b0ead49Smrglt_fatal (const char *message, ...) 52294b0ead49Smrg{ 52304b0ead49Smrg va_list ap; 52314b0ead49Smrg va_start (ap, message); 52324b0ead49Smrg lt_error_core (EXIT_FAILURE, "FATAL", message, ap); 52334b0ead49Smrg va_end (ap); 52344b0ead49Smrg} 52354b0ead49SmrgEOF 52364b0ead49Smrg # we should really use a build-platform specific compiler 52374b0ead49Smrg # here, but OTOH, the wrappers (shell script and this C one) 52384b0ead49Smrg # are only useful if you want to execute the "real" binary. 52394b0ead49Smrg # Since the "real" binary is built for $host, then this 52404b0ead49Smrg # wrapper might as well be built for $host, too. 52414b0ead49Smrg $run $LTCC $LTCFLAGS -s -o $cwrapper $cwrappersource 52424b0ead49Smrg ;; 52434b0ead49Smrg esac 52444b0ead49Smrg $rm $output 52454b0ead49Smrg trap "$rm $output; exit $EXIT_FAILURE" 1 2 15 52464b0ead49Smrg 52474b0ead49Smrg $echo > $output "\ 52484b0ead49Smrg#! $SHELL 52494b0ead49Smrg 52504b0ead49Smrg# $output - temporary wrapper script for $objdir/$outputname 52514b0ead49Smrg# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP 52524b0ead49Smrg# 52534b0ead49Smrg# The $output program cannot be directly executed until all the libtool 52544b0ead49Smrg# libraries that it depends on are installed. 52554b0ead49Smrg# 52564b0ead49Smrg# This wrapper script should never be moved out of the build directory. 52574b0ead49Smrg# If it is, it will not operate correctly. 52584b0ead49Smrg 52594b0ead49Smrg# Sed substitution that helps us do robust quoting. It backslashifies 52604b0ead49Smrg# metacharacters that are still active within double-quoted strings. 52614b0ead49SmrgXsed='${SED} -e 1s/^X//' 52624b0ead49Smrgsed_quote_subst='$sed_quote_subst' 52634b0ead49Smrg 52644b0ead49Smrg# The HP-UX ksh and POSIX shell print the target directory to stdout 52654b0ead49Smrg# if CDPATH is set. 52664b0ead49Smrg(unset CDPATH) >/dev/null 2>&1 && unset CDPATH 52674b0ead49Smrg 52684b0ead49Smrgrelink_command=\"$relink_command\" 52694b0ead49Smrg 52704b0ead49Smrg# This environment variable determines our operation mode. 52714b0ead49Smrgif test \"\$libtool_install_magic\" = \"$magic\"; then 52724b0ead49Smrg # install mode needs the following variable: 52734b0ead49Smrg notinst_deplibs='$notinst_deplibs' 52744b0ead49Smrgelse 52754b0ead49Smrg # When we are sourced in execute mode, \$file and \$echo are already set. 52764b0ead49Smrg if test \"\$libtool_execute_magic\" != \"$magic\"; then 52774b0ead49Smrg echo=\"$qecho\" 52784b0ead49Smrg file=\"\$0\" 52794b0ead49Smrg # Make sure echo works. 52804b0ead49Smrg if test \"X\$1\" = X--no-reexec; then 52814b0ead49Smrg # Discard the --no-reexec flag, and continue. 52824b0ead49Smrg shift 52834b0ead49Smrg elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then 52844b0ead49Smrg # Yippee, \$echo works! 52854b0ead49Smrg : 52864b0ead49Smrg else 52874b0ead49Smrg # Restart under the correct shell, and then maybe \$echo will work. 52884b0ead49Smrg exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} 52894b0ead49Smrg fi 52904b0ead49Smrg fi\ 52914b0ead49Smrg" 52924b0ead49Smrg $echo >> $output "\ 52934b0ead49Smrg 52944b0ead49Smrg # Find the directory that this script lives in. 52954b0ead49Smrg thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` 52964b0ead49Smrg test \"x\$thisdir\" = \"x\$file\" && thisdir=. 52974b0ead49Smrg 52984b0ead49Smrg # Follow symbolic links until we get to the real thisdir. 52994b0ead49Smrg file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` 53004b0ead49Smrg while test -n \"\$file\"; do 53014b0ead49Smrg destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` 53024b0ead49Smrg 53034b0ead49Smrg # If there was a directory component, then change thisdir. 53044b0ead49Smrg if test \"x\$destdir\" != \"x\$file\"; then 53054b0ead49Smrg case \"\$destdir\" in 53064b0ead49Smrg [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; 53074b0ead49Smrg *) thisdir=\"\$thisdir/\$destdir\" ;; 53084b0ead49Smrg esac 53094b0ead49Smrg fi 53104b0ead49Smrg 53114b0ead49Smrg file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` 53124b0ead49Smrg file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` 53134b0ead49Smrg done 53144b0ead49Smrg 53154b0ead49Smrg # Try to get the absolute directory name. 53164b0ead49Smrg absdir=\`cd \"\$thisdir\" && pwd\` 53174b0ead49Smrg test -n \"\$absdir\" && thisdir=\"\$absdir\" 53184b0ead49Smrg" 53194b0ead49Smrg 53204b0ead49Smrg if test "$fast_install" = yes; then 53214b0ead49Smrg $echo >> $output "\ 53224b0ead49Smrg program=lt-'$outputname'$exeext 53234b0ead49Smrg progdir=\"\$thisdir/$objdir\" 53244b0ead49Smrg 53254b0ead49Smrg if test ! -f \"\$progdir/\$program\" || \\ 53264b0ead49Smrg { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ 53274b0ead49Smrg test \"X\$file\" != \"X\$progdir/\$program\"; }; then 53284b0ead49Smrg 53294b0ead49Smrg file=\"\$\$-\$program\" 53304b0ead49Smrg 53314b0ead49Smrg if test ! -d \"\$progdir\"; then 53324b0ead49Smrg $mkdir \"\$progdir\" 53334b0ead49Smrg else 53344b0ead49Smrg $rm \"\$progdir/\$file\" 53354b0ead49Smrg fi" 53364b0ead49Smrg 53374b0ead49Smrg $echo >> $output "\ 53384b0ead49Smrg 53394b0ead49Smrg # relink executable if necessary 53404b0ead49Smrg if test -n \"\$relink_command\"; then 53414b0ead49Smrg if relink_command_output=\`eval \$relink_command 2>&1\`; then : 53424b0ead49Smrg else 53434b0ead49Smrg $echo \"\$relink_command_output\" >&2 53444b0ead49Smrg $rm \"\$progdir/\$file\" 53454b0ead49Smrg exit $EXIT_FAILURE 53464b0ead49Smrg fi 53474b0ead49Smrg fi 53484b0ead49Smrg 53494b0ead49Smrg $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || 53504b0ead49Smrg { $rm \"\$progdir/\$program\"; 53514b0ead49Smrg $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; } 53524b0ead49Smrg $rm \"\$progdir/\$file\" 53534b0ead49Smrg fi" 53544b0ead49Smrg else 53554b0ead49Smrg $echo >> $output "\ 53564b0ead49Smrg program='$outputname' 53574b0ead49Smrg progdir=\"\$thisdir/$objdir\" 53584b0ead49Smrg" 53594b0ead49Smrg fi 53604b0ead49Smrg 53614b0ead49Smrg $echo >> $output "\ 53624b0ead49Smrg 53634b0ead49Smrg if test -f \"\$progdir/\$program\"; then" 53644b0ead49Smrg 53654b0ead49Smrg # Export our shlibpath_var if we have one. 53664b0ead49Smrg if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 53674b0ead49Smrg $echo >> $output "\ 53684b0ead49Smrg # Add our own library path to $shlibpath_var 53694b0ead49Smrg $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" 53704b0ead49Smrg 53714b0ead49Smrg # Some systems cannot cope with colon-terminated $shlibpath_var 53724b0ead49Smrg # The second colon is a workaround for a bug in BeOS R4 sed 53734b0ead49Smrg $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` 53744b0ead49Smrg 53754b0ead49Smrg export $shlibpath_var 53764b0ead49Smrg" 53774b0ead49Smrg fi 53784b0ead49Smrg 53794b0ead49Smrg # fixup the dll searchpath if we need to. 53804b0ead49Smrg if test -n "$dllsearchpath"; then 53814b0ead49Smrg $echo >> $output "\ 53824b0ead49Smrg # Add the dll search path components to the executable PATH 53834b0ead49Smrg PATH=$dllsearchpath:\$PATH 53844b0ead49Smrg" 53854b0ead49Smrg fi 53864b0ead49Smrg 53874b0ead49Smrg $echo >> $output "\ 53884b0ead49Smrg if test \"\$libtool_execute_magic\" != \"$magic\"; then 53894b0ead49Smrg # Run the actual program with our arguments. 53904b0ead49Smrg" 53914b0ead49Smrg case $host in 53924b0ead49Smrg # Backslashes separate directories on plain windows 53934b0ead49Smrg *-*-mingw | *-*-os2*) 53944b0ead49Smrg $echo >> $output "\ 53954b0ead49Smrg exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} 53964b0ead49Smrg" 53974b0ead49Smrg ;; 53984b0ead49Smrg 53994b0ead49Smrg *) 54004b0ead49Smrg $echo >> $output "\ 54014b0ead49Smrg exec \"\$progdir/\$program\" \${1+\"\$@\"} 54024b0ead49Smrg" 54034b0ead49Smrg ;; 54044b0ead49Smrg esac 54054b0ead49Smrg $echo >> $output "\ 54064b0ead49Smrg \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\" 54074b0ead49Smrg exit $EXIT_FAILURE 54084b0ead49Smrg fi 54094b0ead49Smrg else 54104b0ead49Smrg # The program doesn't exist. 54114b0ead49Smrg \$echo \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 54124b0ead49Smrg \$echo \"This script is just a wrapper for \$program.\" 1>&2 54134b0ead49Smrg $echo \"See the $PACKAGE documentation for more information.\" 1>&2 54144b0ead49Smrg exit $EXIT_FAILURE 54154b0ead49Smrg fi 54164b0ead49Smrgfi\ 54174b0ead49Smrg" 54184b0ead49Smrg chmod +x $output 54194b0ead49Smrg fi 54204b0ead49Smrg exit $EXIT_SUCCESS 54214b0ead49Smrg ;; 54224b0ead49Smrg esac 54234b0ead49Smrg 54244b0ead49Smrg # See if we need to build an old-fashioned archive. 54254b0ead49Smrg for oldlib in $oldlibs; do 54264b0ead49Smrg 54274b0ead49Smrg if test "$build_libtool_libs" = convenience; then 54284b0ead49Smrg oldobjs="$libobjs_save" 54294b0ead49Smrg addlibs="$convenience" 54304b0ead49Smrg build_libtool_libs=no 54314b0ead49Smrg else 54324b0ead49Smrg if test "$build_libtool_libs" = module; then 54334b0ead49Smrg oldobjs="$libobjs_save" 54344b0ead49Smrg build_libtool_libs=no 54354b0ead49Smrg else 54364b0ead49Smrg oldobjs="$old_deplibs $non_pic_objects" 54374b0ead49Smrg fi 54384b0ead49Smrg addlibs="$old_convenience" 54394b0ead49Smrg fi 54404b0ead49Smrg 54414b0ead49Smrg if test -n "$addlibs"; then 54424b0ead49Smrg gentop="$output_objdir/${outputname}x" 54434b0ead49Smrg generated="$generated $gentop" 54444b0ead49Smrg 54454b0ead49Smrg func_extract_archives $gentop $addlibs 54464b0ead49Smrg oldobjs="$oldobjs $func_extract_archives_result" 54474b0ead49Smrg fi 54484b0ead49Smrg 54494b0ead49Smrg # Do each command in the archive commands. 54504b0ead49Smrg if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then 54514b0ead49Smrg cmds=$old_archive_from_new_cmds 54524b0ead49Smrg else 54534b0ead49Smrg # POSIX demands no paths to be encoded in archives. We have 54544b0ead49Smrg # to avoid creating archives with duplicate basenames if we 54554b0ead49Smrg # might have to extract them afterwards, e.g., when creating a 54564b0ead49Smrg # static archive out of a convenience library, or when linking 54574b0ead49Smrg # the entirety of a libtool archive into another (currently 54584b0ead49Smrg # not supported by libtool). 54594b0ead49Smrg if (for obj in $oldobjs 54604b0ead49Smrg do 54614b0ead49Smrg $echo "X$obj" | $Xsed -e 's%^.*/%%' 54624b0ead49Smrg done | sort | sort -uc >/dev/null 2>&1); then 54634b0ead49Smrg : 54644b0ead49Smrg else 54654b0ead49Smrg $echo "copying selected object files to avoid basename conflicts..." 54664b0ead49Smrg 54674b0ead49Smrg if test -z "$gentop"; then 54684b0ead49Smrg gentop="$output_objdir/${outputname}x" 54694b0ead49Smrg generated="$generated $gentop" 54704b0ead49Smrg 54714b0ead49Smrg $show "${rm}r $gentop" 54724b0ead49Smrg $run ${rm}r "$gentop" 54734b0ead49Smrg $show "$mkdir $gentop" 54744b0ead49Smrg $run $mkdir "$gentop" 54754b0ead49Smrg exit_status=$? 54764b0ead49Smrg if test "$exit_status" -ne 0 && test ! -d "$gentop"; then 54774b0ead49Smrg exit $exit_status 54784b0ead49Smrg fi 54794b0ead49Smrg fi 54804b0ead49Smrg 54814b0ead49Smrg save_oldobjs=$oldobjs 54824b0ead49Smrg oldobjs= 54834b0ead49Smrg counter=1 54844b0ead49Smrg for obj in $save_oldobjs 54854b0ead49Smrg do 54864b0ead49Smrg objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` 54874b0ead49Smrg case " $oldobjs " in 54884b0ead49Smrg " ") oldobjs=$obj ;; 54894b0ead49Smrg *[\ /]"$objbase "*) 54904b0ead49Smrg while :; do 54914b0ead49Smrg # Make sure we don't pick an alternate name that also 54924b0ead49Smrg # overlaps. 54934b0ead49Smrg newobj=lt$counter-$objbase 54944b0ead49Smrg counter=`expr $counter + 1` 54954b0ead49Smrg case " $oldobjs " in 54964b0ead49Smrg *[\ /]"$newobj "*) ;; 54974b0ead49Smrg *) if test ! -f "$gentop/$newobj"; then break; fi ;; 54984b0ead49Smrg esac 54994b0ead49Smrg done 55004b0ead49Smrg $show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" 55014b0ead49Smrg $run ln "$obj" "$gentop/$newobj" || 55024b0ead49Smrg $run cp "$obj" "$gentop/$newobj" 55034b0ead49Smrg oldobjs="$oldobjs $gentop/$newobj" 55044b0ead49Smrg ;; 55054b0ead49Smrg *) oldobjs="$oldobjs $obj" ;; 55064b0ead49Smrg esac 55074b0ead49Smrg done 55084b0ead49Smrg fi 55094b0ead49Smrg 55104b0ead49Smrg eval cmds=\"$old_archive_cmds\" 55114b0ead49Smrg 55124b0ead49Smrg if len=`expr "X$cmds" : ".*"` && 55134b0ead49Smrg test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then 55144b0ead49Smrg cmds=$old_archive_cmds 55154b0ead49Smrg else 55164b0ead49Smrg # the command line is too long to link in one step, link in parts 55174b0ead49Smrg $echo "using piecewise archive linking..." 55184b0ead49Smrg save_RANLIB=$RANLIB 55194b0ead49Smrg RANLIB=: 55204b0ead49Smrg objlist= 55214b0ead49Smrg concat_cmds= 55224b0ead49Smrg save_oldobjs=$oldobjs 55234b0ead49Smrg 55244b0ead49Smrg # Is there a better way of finding the last object in the list? 55254b0ead49Smrg for obj in $save_oldobjs 55264b0ead49Smrg do 55274b0ead49Smrg last_oldobj=$obj 55284b0ead49Smrg done 55294b0ead49Smrg for obj in $save_oldobjs 55304b0ead49Smrg do 55314b0ead49Smrg oldobjs="$objlist $obj" 55324b0ead49Smrg objlist="$objlist $obj" 55334b0ead49Smrg eval test_cmds=\"$old_archive_cmds\" 55344b0ead49Smrg if len=`expr "X$test_cmds" : ".*" 2>/dev/null` && 55354b0ead49Smrg test "$len" -le "$max_cmd_len"; then 55364b0ead49Smrg : 55374b0ead49Smrg else 55384b0ead49Smrg # the above command should be used before it gets too long 55394b0ead49Smrg oldobjs=$objlist 55404b0ead49Smrg if test "$obj" = "$last_oldobj" ; then 55414b0ead49Smrg RANLIB=$save_RANLIB 55424b0ead49Smrg fi 55434b0ead49Smrg test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 55444b0ead49Smrg eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" 55454b0ead49Smrg objlist= 55464b0ead49Smrg fi 55474b0ead49Smrg done 55484b0ead49Smrg RANLIB=$save_RANLIB 55494b0ead49Smrg oldobjs=$objlist 55504b0ead49Smrg if test "X$oldobjs" = "X" ; then 55514b0ead49Smrg eval cmds=\"\$concat_cmds\" 55524b0ead49Smrg else 55534b0ead49Smrg eval cmds=\"\$concat_cmds~\$old_archive_cmds\" 55544b0ead49Smrg fi 55554b0ead49Smrg fi 55564b0ead49Smrg fi 55574b0ead49Smrg save_ifs="$IFS"; IFS='~' 55584b0ead49Smrg for cmd in $cmds; do 55594b0ead49Smrg eval cmd=\"$cmd\" 55604b0ead49Smrg IFS="$save_ifs" 55614b0ead49Smrg $show "$cmd" 55624b0ead49Smrg $run eval "$cmd" || exit $? 55634b0ead49Smrg done 55644b0ead49Smrg IFS="$save_ifs" 55654b0ead49Smrg done 55664b0ead49Smrg 55674b0ead49Smrg if test -n "$generated"; then 55684b0ead49Smrg $show "${rm}r$generated" 55694b0ead49Smrg $run ${rm}r$generated 55704b0ead49Smrg fi 55714b0ead49Smrg 55724b0ead49Smrg # Now create the libtool archive. 55734b0ead49Smrg case $output in 55744b0ead49Smrg *.la) 55754b0ead49Smrg old_library= 55764b0ead49Smrg test "$build_old_libs" = yes && old_library="$libname.$libext" 55774b0ead49Smrg $show "creating $output" 55784b0ead49Smrg 55794b0ead49Smrg # Preserve any variables that may affect compiler behavior 55804b0ead49Smrg for var in $variables_saved_for_relink; do 55814b0ead49Smrg if eval test -z \"\${$var+set}\"; then 55824b0ead49Smrg relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" 55834b0ead49Smrg elif eval var_value=\$$var; test -z "$var_value"; then 55844b0ead49Smrg relink_command="$var=; export $var; $relink_command" 55854b0ead49Smrg else 55864b0ead49Smrg var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` 55874b0ead49Smrg relink_command="$var=\"$var_value\"; export $var; $relink_command" 55884b0ead49Smrg fi 55894b0ead49Smrg done 55904b0ead49Smrg # Quote the link command for shipping. 55914b0ead49Smrg relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" 55924b0ead49Smrg relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` 55934b0ead49Smrg if test "$hardcode_automatic" = yes ; then 55944b0ead49Smrg relink_command= 55954b0ead49Smrg fi 55964b0ead49Smrg 55974b0ead49Smrg 55984b0ead49Smrg # Only create the output if not a dry run. 55994b0ead49Smrg if test -z "$run"; then 56004b0ead49Smrg for installed in no yes; do 56014b0ead49Smrg if test "$installed" = yes; then 56024b0ead49Smrg if test -z "$install_libdir"; then 56034b0ead49Smrg break 56044b0ead49Smrg fi 56054b0ead49Smrg output="$output_objdir/$outputname"i 56064b0ead49Smrg # Replace all uninstalled libtool libraries with the installed ones 56074b0ead49Smrg newdependency_libs= 56084b0ead49Smrg for deplib in $dependency_libs; do 56094b0ead49Smrg case $deplib in 56104b0ead49Smrg *.la) 56114b0ead49Smrg name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'` 56124b0ead49Smrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 56134b0ead49Smrg if test -z "$libdir"; then 56144b0ead49Smrg $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 56154b0ead49Smrg exit $EXIT_FAILURE 56164b0ead49Smrg fi 56174b0ead49Smrg newdependency_libs="$newdependency_libs $libdir/$name" 56184b0ead49Smrg ;; 56194b0ead49Smrg *) newdependency_libs="$newdependency_libs $deplib" ;; 56204b0ead49Smrg esac 56214b0ead49Smrg done 56224b0ead49Smrg dependency_libs="$newdependency_libs" 56234b0ead49Smrg newdlfiles= 56244b0ead49Smrg for lib in $dlfiles; do 56254b0ead49Smrg name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` 56264b0ead49Smrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 56274b0ead49Smrg if test -z "$libdir"; then 56284b0ead49Smrg $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 56294b0ead49Smrg exit $EXIT_FAILURE 56304b0ead49Smrg fi 56314b0ead49Smrg newdlfiles="$newdlfiles $libdir/$name" 56324b0ead49Smrg done 56334b0ead49Smrg dlfiles="$newdlfiles" 56344b0ead49Smrg newdlprefiles= 56354b0ead49Smrg for lib in $dlprefiles; do 56364b0ead49Smrg name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` 56374b0ead49Smrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 56384b0ead49Smrg if test -z "$libdir"; then 56394b0ead49Smrg $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 56404b0ead49Smrg exit $EXIT_FAILURE 56414b0ead49Smrg fi 56424b0ead49Smrg newdlprefiles="$newdlprefiles $libdir/$name" 56434b0ead49Smrg done 56444b0ead49Smrg dlprefiles="$newdlprefiles" 56454b0ead49Smrg else 56464b0ead49Smrg newdlfiles= 56474b0ead49Smrg for lib in $dlfiles; do 56484b0ead49Smrg case $lib in 56494b0ead49Smrg [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 56504b0ead49Smrg *) abs=`pwd`"/$lib" ;; 56514b0ead49Smrg esac 56524b0ead49Smrg newdlfiles="$newdlfiles $abs" 56534b0ead49Smrg done 56544b0ead49Smrg dlfiles="$newdlfiles" 56554b0ead49Smrg newdlprefiles= 56564b0ead49Smrg for lib in $dlprefiles; do 56574b0ead49Smrg case $lib in 56584b0ead49Smrg [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 56594b0ead49Smrg *) abs=`pwd`"/$lib" ;; 56604b0ead49Smrg esac 56614b0ead49Smrg newdlprefiles="$newdlprefiles $abs" 56624b0ead49Smrg done 56634b0ead49Smrg dlprefiles="$newdlprefiles" 56644b0ead49Smrg fi 56654b0ead49Smrg $rm $output 56664b0ead49Smrg # place dlname in correct position for cygwin 56674b0ead49Smrg tdlname=$dlname 56684b0ead49Smrg case $host,$output,$installed,$module,$dlname in 56694b0ead49Smrg *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; 56704b0ead49Smrg esac 56714b0ead49Smrg $echo > $output "\ 56724b0ead49Smrg# $outputname - a libtool library file 56734b0ead49Smrg# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP 56744b0ead49Smrg# 56754b0ead49Smrg# Please DO NOT delete this file! 56764b0ead49Smrg# It is necessary for linking the library. 56774b0ead49Smrg 56784b0ead49Smrg# The name that we can dlopen(3). 56794b0ead49Smrgdlname='$tdlname' 56804b0ead49Smrg 56814b0ead49Smrg# Names of this library. 56824b0ead49Smrglibrary_names='$library_names' 56834b0ead49Smrg 56844b0ead49Smrg# The name of the static archive. 56854b0ead49Smrgold_library='$old_library' 56864b0ead49Smrg 56874b0ead49Smrg# Libraries that this one depends upon. 56884b0ead49Smrgdependency_libs='$dependency_libs' 56894b0ead49Smrg 56904b0ead49Smrg# Version information for $libname. 56914b0ead49Smrgcurrent=$current 56924b0ead49Smrgage=$age 56934b0ead49Smrgrevision=$revision 56944b0ead49Smrg 56954b0ead49Smrg# Is this an already installed library? 56964b0ead49Smrginstalled=$installed 56974b0ead49Smrg 56984b0ead49Smrg# Should we warn about portability when linking against -modules? 56994b0ead49Smrgshouldnotlink=$module 57004b0ead49Smrg 57014b0ead49Smrg# Files to dlopen/dlpreopen 57024b0ead49Smrgdlopen='$dlfiles' 57034b0ead49Smrgdlpreopen='$dlprefiles' 57044b0ead49Smrg 57054b0ead49Smrg# Directory that this library needs to be installed in: 57064b0ead49Smrglibdir='$install_libdir'" 57074b0ead49Smrg if test "$installed" = no && test "$need_relink" = yes; then 57084b0ead49Smrg $echo >> $output "\ 57094b0ead49Smrgrelink_command=\"$relink_command\"" 57104b0ead49Smrg fi 57114b0ead49Smrg done 57124b0ead49Smrg fi 57134b0ead49Smrg 57144b0ead49Smrg # Do a symbolic link so that the libtool archive can be found in 57154b0ead49Smrg # LD_LIBRARY_PATH before the program is installed. 57164b0ead49Smrg $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" 57174b0ead49Smrg $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $? 57184b0ead49Smrg ;; 57194b0ead49Smrg esac 57204b0ead49Smrg exit $EXIT_SUCCESS 57214b0ead49Smrg ;; 57224b0ead49Smrg 57234b0ead49Smrg # libtool install mode 57244b0ead49Smrg install) 57254b0ead49Smrg modename="$modename: install" 57264b0ead49Smrg 57274b0ead49Smrg # There may be an optional sh(1) argument at the beginning of 57284b0ead49Smrg # install_prog (especially on Windows NT). 57294b0ead49Smrg if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || 57304b0ead49Smrg # Allow the use of GNU shtool's install command. 57314b0ead49Smrg $echo "X$nonopt" | grep shtool > /dev/null; then 57324b0ead49Smrg # Aesthetically quote it. 57334b0ead49Smrg arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` 57344b0ead49Smrg case $arg in 57354b0ead49Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 57364b0ead49Smrg arg="\"$arg\"" 57374b0ead49Smrg ;; 57384b0ead49Smrg esac 57394b0ead49Smrg install_prog="$arg " 57404b0ead49Smrg arg="$1" 57414b0ead49Smrg shift 57424b0ead49Smrg else 57434b0ead49Smrg install_prog= 57444b0ead49Smrg arg=$nonopt 57454b0ead49Smrg fi 57464b0ead49Smrg 57474b0ead49Smrg # The real first argument should be the name of the installation program. 57484b0ead49Smrg # Aesthetically quote it. 57494b0ead49Smrg arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 57504b0ead49Smrg case $arg in 57514b0ead49Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 57524b0ead49Smrg arg="\"$arg\"" 57534b0ead49Smrg ;; 57544b0ead49Smrg esac 57554b0ead49Smrg install_prog="$install_prog$arg" 57564b0ead49Smrg 57574b0ead49Smrg # We need to accept at least all the BSD install flags. 57584b0ead49Smrg dest= 57594b0ead49Smrg files= 57604b0ead49Smrg opts= 57614b0ead49Smrg prev= 57624b0ead49Smrg install_type= 57634b0ead49Smrg isdir=no 57644b0ead49Smrg stripme= 57654b0ead49Smrg for arg 57664b0ead49Smrg do 57674b0ead49Smrg if test -n "$dest"; then 57684b0ead49Smrg files="$files $dest" 57694b0ead49Smrg dest=$arg 57704b0ead49Smrg continue 57714b0ead49Smrg fi 57724b0ead49Smrg 57734b0ead49Smrg case $arg in 57744b0ead49Smrg -d) isdir=yes ;; 57754b0ead49Smrg -f) 57764b0ead49Smrg case " $install_prog " in 57774b0ead49Smrg *[\\\ /]cp\ *) ;; 57784b0ead49Smrg *) prev=$arg ;; 57794b0ead49Smrg esac 57804b0ead49Smrg ;; 57814b0ead49Smrg -g | -m | -o) prev=$arg ;; 57824b0ead49Smrg -s) 57834b0ead49Smrg stripme=" -s" 57844b0ead49Smrg continue 57854b0ead49Smrg ;; 57864b0ead49Smrg -*) 57874b0ead49Smrg ;; 57884b0ead49Smrg *) 57894b0ead49Smrg # If the previous option needed an argument, then skip it. 57904b0ead49Smrg if test -n "$prev"; then 57914b0ead49Smrg prev= 57924b0ead49Smrg else 57934b0ead49Smrg dest=$arg 57944b0ead49Smrg continue 57954b0ead49Smrg fi 57964b0ead49Smrg ;; 57974b0ead49Smrg esac 57984b0ead49Smrg 57994b0ead49Smrg # Aesthetically quote the argument. 58004b0ead49Smrg arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 58014b0ead49Smrg case $arg in 58024b0ead49Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 58034b0ead49Smrg arg="\"$arg\"" 58044b0ead49Smrg ;; 58054b0ead49Smrg esac 58064b0ead49Smrg install_prog="$install_prog $arg" 58074b0ead49Smrg done 58084b0ead49Smrg 58094b0ead49Smrg if test -z "$install_prog"; then 58104b0ead49Smrg $echo "$modename: you must specify an install program" 1>&2 58114b0ead49Smrg $echo "$help" 1>&2 58124b0ead49Smrg exit $EXIT_FAILURE 58134b0ead49Smrg fi 58144b0ead49Smrg 58154b0ead49Smrg if test -n "$prev"; then 58164b0ead49Smrg $echo "$modename: the \`$prev' option requires an argument" 1>&2 58174b0ead49Smrg $echo "$help" 1>&2 58184b0ead49Smrg exit $EXIT_FAILURE 58194b0ead49Smrg fi 58204b0ead49Smrg 58214b0ead49Smrg if test -z "$files"; then 58224b0ead49Smrg if test -z "$dest"; then 58234b0ead49Smrg $echo "$modename: no file or destination specified" 1>&2 58244b0ead49Smrg else 58254b0ead49Smrg $echo "$modename: you must specify a destination" 1>&2 58264b0ead49Smrg fi 58274b0ead49Smrg $echo "$help" 1>&2 58284b0ead49Smrg exit $EXIT_FAILURE 58294b0ead49Smrg fi 58304b0ead49Smrg 58314b0ead49Smrg # Strip any trailing slash from the destination. 58324b0ead49Smrg dest=`$echo "X$dest" | $Xsed -e 's%/$%%'` 58334b0ead49Smrg 58344b0ead49Smrg # Check to see that the destination is a directory. 58354b0ead49Smrg test -d "$dest" && isdir=yes 58364b0ead49Smrg if test "$isdir" = yes; then 58374b0ead49Smrg destdir="$dest" 58384b0ead49Smrg destname= 58394b0ead49Smrg else 58404b0ead49Smrg destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'` 58414b0ead49Smrg test "X$destdir" = "X$dest" && destdir=. 58424b0ead49Smrg destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'` 58434b0ead49Smrg 58444b0ead49Smrg # Not a directory, so check to see that there is only one file specified. 58454b0ead49Smrg set dummy $files 58464b0ead49Smrg if test "$#" -gt 2; then 58474b0ead49Smrg $echo "$modename: \`$dest' is not a directory" 1>&2 58484b0ead49Smrg $echo "$help" 1>&2 58494b0ead49Smrg exit $EXIT_FAILURE 58504b0ead49Smrg fi 58514b0ead49Smrg fi 58524b0ead49Smrg case $destdir in 58534b0ead49Smrg [\\/]* | [A-Za-z]:[\\/]*) ;; 58544b0ead49Smrg *) 58554b0ead49Smrg for file in $files; do 58564b0ead49Smrg case $file in 58574b0ead49Smrg *.lo) ;; 58584b0ead49Smrg *) 58594b0ead49Smrg $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 58604b0ead49Smrg $echo "$help" 1>&2 58614b0ead49Smrg exit $EXIT_FAILURE 58624b0ead49Smrg ;; 58634b0ead49Smrg esac 58644b0ead49Smrg done 58654b0ead49Smrg ;; 58664b0ead49Smrg esac 58674b0ead49Smrg 58684b0ead49Smrg # This variable tells wrapper scripts just to set variables rather 58694b0ead49Smrg # than running their programs. 58704b0ead49Smrg libtool_install_magic="$magic" 58714b0ead49Smrg 58724b0ead49Smrg staticlibs= 58734b0ead49Smrg future_libdirs= 58744b0ead49Smrg current_libdirs= 58754b0ead49Smrg for file in $files; do 58764b0ead49Smrg 58774b0ead49Smrg # Do each installation. 58784b0ead49Smrg case $file in 58794b0ead49Smrg *.$libext) 58804b0ead49Smrg # Do the static libraries later. 58814b0ead49Smrg staticlibs="$staticlibs $file" 58824b0ead49Smrg ;; 58834b0ead49Smrg 58844b0ead49Smrg *.la) 58854b0ead49Smrg # Check to see that this really is a libtool archive. 58864b0ead49Smrg if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : 58874b0ead49Smrg else 58884b0ead49Smrg $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 58894b0ead49Smrg $echo "$help" 1>&2 58904b0ead49Smrg exit $EXIT_FAILURE 58914b0ead49Smrg fi 58924b0ead49Smrg 58934b0ead49Smrg library_names= 58944b0ead49Smrg old_library= 58954b0ead49Smrg relink_command= 58964b0ead49Smrg # If there is no directory component, then add one. 58974b0ead49Smrg case $file in 58984b0ead49Smrg */* | *\\*) . $file ;; 58994b0ead49Smrg *) . ./$file ;; 59004b0ead49Smrg esac 59014b0ead49Smrg 59024b0ead49Smrg # Add the libdir to current_libdirs if it is the destination. 59034b0ead49Smrg if test "X$destdir" = "X$libdir"; then 59044b0ead49Smrg case "$current_libdirs " in 59054b0ead49Smrg *" $libdir "*) ;; 59064b0ead49Smrg *) current_libdirs="$current_libdirs $libdir" ;; 59074b0ead49Smrg esac 59084b0ead49Smrg else 59094b0ead49Smrg # Note the libdir as a future libdir. 59104b0ead49Smrg case "$future_libdirs " in 59114b0ead49Smrg *" $libdir "*) ;; 59124b0ead49Smrg *) future_libdirs="$future_libdirs $libdir" ;; 59134b0ead49Smrg esac 59144b0ead49Smrg fi 59154b0ead49Smrg 59164b0ead49Smrg dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/ 59174b0ead49Smrg test "X$dir" = "X$file/" && dir= 59184b0ead49Smrg dir="$dir$objdir" 59194b0ead49Smrg 59204b0ead49Smrg if test -n "$relink_command"; then 59214b0ead49Smrg # Determine the prefix the user has applied to our future dir. 59224b0ead49Smrg inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"` 59234b0ead49Smrg 59244b0ead49Smrg # Don't allow the user to place us outside of our expected 59254b0ead49Smrg # location b/c this prevents finding dependent libraries that 59264b0ead49Smrg # are installed to the same prefix. 59274b0ead49Smrg # At present, this check doesn't affect windows .dll's that 59284b0ead49Smrg # are installed into $libdir/../bin (currently, that works fine) 59294b0ead49Smrg # but it's something to keep an eye on. 59304b0ead49Smrg if test "$inst_prefix_dir" = "$destdir"; then 59314b0ead49Smrg $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2 59324b0ead49Smrg exit $EXIT_FAILURE 59334b0ead49Smrg fi 59344b0ead49Smrg 59354b0ead49Smrg if test -n "$inst_prefix_dir"; then 59364b0ead49Smrg # Stick the inst_prefix_dir data into the link command. 59374b0ead49Smrg relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` 59384b0ead49Smrg else 59394b0ead49Smrg relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%%"` 59404b0ead49Smrg fi 59414b0ead49Smrg 59424b0ead49Smrg $echo "$modename: warning: relinking \`$file'" 1>&2 59434b0ead49Smrg $show "$relink_command" 59444b0ead49Smrg if $run eval "$relink_command"; then : 59454b0ead49Smrg else 59464b0ead49Smrg $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 59474b0ead49Smrg exit $EXIT_FAILURE 59484b0ead49Smrg fi 59494b0ead49Smrg fi 59504b0ead49Smrg 59514b0ead49Smrg # See the names of the shared library. 59524b0ead49Smrg set dummy $library_names 59534b0ead49Smrg if test -n "$2"; then 59544b0ead49Smrg realname="$2" 59554b0ead49Smrg shift 59564b0ead49Smrg shift 59574b0ead49Smrg 59584b0ead49Smrg srcname="$realname" 59594b0ead49Smrg test -n "$relink_command" && srcname="$realname"T 59604b0ead49Smrg 59614b0ead49Smrg # Install the shared library and build the symlinks. 59624b0ead49Smrg $show "$install_prog $dir/$srcname $destdir/$realname" 59634b0ead49Smrg $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $? 59644b0ead49Smrg if test -n "$stripme" && test -n "$striplib"; then 59654b0ead49Smrg $show "$striplib $destdir/$realname" 59664b0ead49Smrg $run eval "$striplib $destdir/$realname" || exit $? 59674b0ead49Smrg fi 59684b0ead49Smrg 59694b0ead49Smrg if test "$#" -gt 0; then 59704b0ead49Smrg # Delete the old symlinks, and create new ones. 59714b0ead49Smrg # Try `ln -sf' first, because the `ln' binary might depend on 59724b0ead49Smrg # the symlink we replace! Solaris /bin/ln does not understand -f, 59734b0ead49Smrg # so we also need to try rm && ln -s. 59744b0ead49Smrg for linkname 59754b0ead49Smrg do 59764b0ead49Smrg if test "$linkname" != "$realname"; then 59774b0ead49Smrg $show "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })" 59784b0ead49Smrg $run eval "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })" 59794b0ead49Smrg fi 59804b0ead49Smrg done 59814b0ead49Smrg fi 59824b0ead49Smrg 59834b0ead49Smrg # Do each command in the postinstall commands. 59844b0ead49Smrg lib="$destdir/$realname" 59854b0ead49Smrg cmds=$postinstall_cmds 59864b0ead49Smrg save_ifs="$IFS"; IFS='~' 59874b0ead49Smrg for cmd in $cmds; do 59884b0ead49Smrg IFS="$save_ifs" 59894b0ead49Smrg eval cmd=\"$cmd\" 59904b0ead49Smrg $show "$cmd" 59914b0ead49Smrg $run eval "$cmd" || { 59924b0ead49Smrg lt_exit=$? 59934b0ead49Smrg 59944b0ead49Smrg # Restore the uninstalled library and exit 59954b0ead49Smrg if test "$mode" = relink; then 59964b0ead49Smrg $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)' 59974b0ead49Smrg fi 59984b0ead49Smrg 59994b0ead49Smrg exit $lt_exit 60004b0ead49Smrg } 60014b0ead49Smrg done 60024b0ead49Smrg IFS="$save_ifs" 60034b0ead49Smrg fi 60044b0ead49Smrg 60054b0ead49Smrg # Install the pseudo-library for information purposes. 60064b0ead49Smrg name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 60074b0ead49Smrg instname="$dir/$name"i 60084b0ead49Smrg $show "$install_prog $instname $destdir/$name" 60094b0ead49Smrg $run eval "$install_prog $instname $destdir/$name" || exit $? 60104b0ead49Smrg 60114b0ead49Smrg # Maybe install the static library, too. 60124b0ead49Smrg test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" 60134b0ead49Smrg ;; 60144b0ead49Smrg 60154b0ead49Smrg *.lo) 60164b0ead49Smrg # Install (i.e. copy) a libtool object. 60174b0ead49Smrg 60184b0ead49Smrg # Figure out destination file name, if it wasn't already specified. 60194b0ead49Smrg if test -n "$destname"; then 60204b0ead49Smrg destfile="$destdir/$destname" 60214b0ead49Smrg else 60224b0ead49Smrg destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 60234b0ead49Smrg destfile="$destdir/$destfile" 60244b0ead49Smrg fi 60254b0ead49Smrg 60264b0ead49Smrg # Deduce the name of the destination old-style object file. 60274b0ead49Smrg case $destfile in 60284b0ead49Smrg *.lo) 60294b0ead49Smrg staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"` 60304b0ead49Smrg ;; 60314b0ead49Smrg *.$objext) 60324b0ead49Smrg staticdest="$destfile" 60334b0ead49Smrg destfile= 60344b0ead49Smrg ;; 60354b0ead49Smrg *) 60364b0ead49Smrg $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 60374b0ead49Smrg $echo "$help" 1>&2 60384b0ead49Smrg exit $EXIT_FAILURE 60394b0ead49Smrg ;; 60404b0ead49Smrg esac 60414b0ead49Smrg 60424b0ead49Smrg # Install the libtool object if requested. 60434b0ead49Smrg if test -n "$destfile"; then 60444b0ead49Smrg $show "$install_prog $file $destfile" 60454b0ead49Smrg $run eval "$install_prog $file $destfile" || exit $? 60464b0ead49Smrg fi 60474b0ead49Smrg 60484b0ead49Smrg # Install the old object if enabled. 60494b0ead49Smrg if test "$build_old_libs" = yes; then 60504b0ead49Smrg # Deduce the name of the old-style object file. 60514b0ead49Smrg staticobj=`$echo "X$file" | $Xsed -e "$lo2o"` 60524b0ead49Smrg 60534b0ead49Smrg $show "$install_prog $staticobj $staticdest" 60544b0ead49Smrg $run eval "$install_prog \$staticobj \$staticdest" || exit $? 60554b0ead49Smrg fi 60564b0ead49Smrg exit $EXIT_SUCCESS 60574b0ead49Smrg ;; 60584b0ead49Smrg 60594b0ead49Smrg *) 60604b0ead49Smrg # Figure out destination file name, if it wasn't already specified. 60614b0ead49Smrg if test -n "$destname"; then 60624b0ead49Smrg destfile="$destdir/$destname" 60634b0ead49Smrg else 60644b0ead49Smrg destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 60654b0ead49Smrg destfile="$destdir/$destfile" 60664b0ead49Smrg fi 60674b0ead49Smrg 60684b0ead49Smrg # If the file is missing, and there is a .exe on the end, strip it 60694b0ead49Smrg # because it is most likely a libtool script we actually want to 60704b0ead49Smrg # install 60714b0ead49Smrg stripped_ext="" 60724b0ead49Smrg case $file in 60734b0ead49Smrg *.exe) 60744b0ead49Smrg if test ! -f "$file"; then 60754b0ead49Smrg file=`$echo $file|${SED} 's,.exe$,,'` 60764b0ead49Smrg stripped_ext=".exe" 60774b0ead49Smrg fi 60784b0ead49Smrg ;; 60794b0ead49Smrg esac 60804b0ead49Smrg 60814b0ead49Smrg # Do a test to see if this is really a libtool program. 60824b0ead49Smrg case $host in 60834b0ead49Smrg *cygwin*|*mingw*) 60844b0ead49Smrg wrapper=`$echo $file | ${SED} -e 's,.exe$,,'` 60854b0ead49Smrg ;; 60864b0ead49Smrg *) 60874b0ead49Smrg wrapper=$file 60884b0ead49Smrg ;; 60894b0ead49Smrg esac 60904b0ead49Smrg if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then 60914b0ead49Smrg notinst_deplibs= 60924b0ead49Smrg relink_command= 60934b0ead49Smrg 60944b0ead49Smrg # Note that it is not necessary on cygwin/mingw to append a dot to 60954b0ead49Smrg # foo even if both foo and FILE.exe exist: automatic-append-.exe 60964b0ead49Smrg # behavior happens only for exec(3), not for open(2)! Also, sourcing 60974b0ead49Smrg # `FILE.' does not work on cygwin managed mounts. 60984b0ead49Smrg # 60994b0ead49Smrg # If there is no directory component, then add one. 61004b0ead49Smrg case $wrapper in 61014b0ead49Smrg */* | *\\*) . ${wrapper} ;; 61024b0ead49Smrg *) . ./${wrapper} ;; 61034b0ead49Smrg esac 61044b0ead49Smrg 61054b0ead49Smrg # Check the variables that should have been set. 61064b0ead49Smrg if test -z "$notinst_deplibs"; then 61074b0ead49Smrg $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2 61084b0ead49Smrg exit $EXIT_FAILURE 61094b0ead49Smrg fi 61104b0ead49Smrg 61114b0ead49Smrg finalize=yes 61124b0ead49Smrg for lib in $notinst_deplibs; do 61134b0ead49Smrg # Check to see that each library is installed. 61144b0ead49Smrg libdir= 61154b0ead49Smrg if test -f "$lib"; then 61164b0ead49Smrg # If there is no directory component, then add one. 61174b0ead49Smrg case $lib in 61184b0ead49Smrg */* | *\\*) . $lib ;; 61194b0ead49Smrg *) . ./$lib ;; 61204b0ead49Smrg esac 61214b0ead49Smrg fi 61224b0ead49Smrg libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test 61234b0ead49Smrg if test -n "$libdir" && test ! -f "$libfile"; then 61244b0ead49Smrg $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 61254b0ead49Smrg finalize=no 61264b0ead49Smrg fi 61274b0ead49Smrg done 61284b0ead49Smrg 61294b0ead49Smrg relink_command= 61304b0ead49Smrg # Note that it is not necessary on cygwin/mingw to append a dot to 61314b0ead49Smrg # foo even if both foo and FILE.exe exist: automatic-append-.exe 61324b0ead49Smrg # behavior happens only for exec(3), not for open(2)! Also, sourcing 61334b0ead49Smrg # `FILE.' does not work on cygwin managed mounts. 61344b0ead49Smrg # 61354b0ead49Smrg # If there is no directory component, then add one. 61364b0ead49Smrg case $wrapper in 61374b0ead49Smrg */* | *\\*) . ${wrapper} ;; 61384b0ead49Smrg *) . ./${wrapper} ;; 61394b0ead49Smrg esac 61404b0ead49Smrg 61414b0ead49Smrg outputname= 61424b0ead49Smrg if test "$fast_install" = no && test -n "$relink_command"; then 61434b0ead49Smrg if test "$finalize" = yes && test -z "$run"; then 61444b0ead49Smrg tmpdir=`func_mktempdir` 61454b0ead49Smrg file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'` 61464b0ead49Smrg outputname="$tmpdir/$file" 61474b0ead49Smrg # Replace the output file specification. 61484b0ead49Smrg relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` 61494b0ead49Smrg 61504b0ead49Smrg $show "$relink_command" 61514b0ead49Smrg if $run eval "$relink_command"; then : 61524b0ead49Smrg else 61534b0ead49Smrg $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 61544b0ead49Smrg ${rm}r "$tmpdir" 61554b0ead49Smrg continue 61564b0ead49Smrg fi 61574b0ead49Smrg file="$outputname" 61584b0ead49Smrg else 61594b0ead49Smrg $echo "$modename: warning: cannot relink \`$file'" 1>&2 61604b0ead49Smrg fi 61614b0ead49Smrg else 61624b0ead49Smrg # Install the binary that we compiled earlier. 61634b0ead49Smrg file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` 61644b0ead49Smrg fi 61654b0ead49Smrg fi 61664b0ead49Smrg 61674b0ead49Smrg # remove .exe since cygwin /usr/bin/install will append another 61684b0ead49Smrg # one anyway 61694b0ead49Smrg case $install_prog,$host in 61704b0ead49Smrg */usr/bin/install*,*cygwin*) 61714b0ead49Smrg case $file:$destfile in 61724b0ead49Smrg *.exe:*.exe) 61734b0ead49Smrg # this is ok 61744b0ead49Smrg ;; 61754b0ead49Smrg *.exe:*) 61764b0ead49Smrg destfile=$destfile.exe 61774b0ead49Smrg ;; 61784b0ead49Smrg *:*.exe) 61794b0ead49Smrg destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'` 61804b0ead49Smrg ;; 61814b0ead49Smrg esac 61824b0ead49Smrg ;; 61834b0ead49Smrg esac 61844b0ead49Smrg $show "$install_prog$stripme $file $destfile" 61854b0ead49Smrg $run eval "$install_prog\$stripme \$file \$destfile" || exit $? 61864b0ead49Smrg test -n "$outputname" && ${rm}r "$tmpdir" 61874b0ead49Smrg ;; 61884b0ead49Smrg esac 61894b0ead49Smrg done 61904b0ead49Smrg 61914b0ead49Smrg for file in $staticlibs; do 61924b0ead49Smrg name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 61934b0ead49Smrg 61944b0ead49Smrg # Set up the ranlib parameters. 61954b0ead49Smrg oldlib="$destdir/$name" 61964b0ead49Smrg 61974b0ead49Smrg $show "$install_prog $file $oldlib" 61984b0ead49Smrg $run eval "$install_prog \$file \$oldlib" || exit $? 61994b0ead49Smrg 62004b0ead49Smrg if test -n "$stripme" && test -n "$old_striplib"; then 62014b0ead49Smrg $show "$old_striplib $oldlib" 62024b0ead49Smrg $run eval "$old_striplib $oldlib" || exit $? 62034b0ead49Smrg fi 62044b0ead49Smrg 62054b0ead49Smrg # Do each command in the postinstall commands. 62064b0ead49Smrg cmds=$old_postinstall_cmds 62074b0ead49Smrg save_ifs="$IFS"; IFS='~' 62084b0ead49Smrg for cmd in $cmds; do 62094b0ead49Smrg IFS="$save_ifs" 62104b0ead49Smrg eval cmd=\"$cmd\" 62114b0ead49Smrg $show "$cmd" 62124b0ead49Smrg $run eval "$cmd" || exit $? 62134b0ead49Smrg done 62144b0ead49Smrg IFS="$save_ifs" 62154b0ead49Smrg done 62164b0ead49Smrg 62174b0ead49Smrg if test -n "$future_libdirs"; then 62184b0ead49Smrg $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2 62194b0ead49Smrg fi 62204b0ead49Smrg 62214b0ead49Smrg if test -n "$current_libdirs"; then 62224b0ead49Smrg # Maybe just do a dry run. 62234b0ead49Smrg test -n "$run" && current_libdirs=" -n$current_libdirs" 62244b0ead49Smrg exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' 62254b0ead49Smrg else 62264b0ead49Smrg exit $EXIT_SUCCESS 62274b0ead49Smrg fi 62284b0ead49Smrg ;; 62294b0ead49Smrg 62304b0ead49Smrg # libtool finish mode 62314b0ead49Smrg finish) 62324b0ead49Smrg modename="$modename: finish" 62334b0ead49Smrg libdirs="$nonopt" 62344b0ead49Smrg admincmds= 62354b0ead49Smrg 62364b0ead49Smrg if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then 62374b0ead49Smrg for dir 62384b0ead49Smrg do 62394b0ead49Smrg libdirs="$libdirs $dir" 62404b0ead49Smrg done 62414b0ead49Smrg 62424b0ead49Smrg for libdir in $libdirs; do 62434b0ead49Smrg if test -n "$finish_cmds"; then 62444b0ead49Smrg # Do each command in the finish commands. 62454b0ead49Smrg cmds=$finish_cmds 62464b0ead49Smrg save_ifs="$IFS"; IFS='~' 62474b0ead49Smrg for cmd in $cmds; do 62484b0ead49Smrg IFS="$save_ifs" 62494b0ead49Smrg eval cmd=\"$cmd\" 62504b0ead49Smrg $show "$cmd" 62514b0ead49Smrg $run eval "$cmd" || admincmds="$admincmds 62524b0ead49Smrg $cmd" 62534b0ead49Smrg done 62544b0ead49Smrg IFS="$save_ifs" 62554b0ead49Smrg fi 62564b0ead49Smrg if test -n "$finish_eval"; then 62574b0ead49Smrg # Do the single finish_eval. 62584b0ead49Smrg eval cmds=\"$finish_eval\" 62594b0ead49Smrg $run eval "$cmds" || admincmds="$admincmds 62604b0ead49Smrg $cmds" 62614b0ead49Smrg fi 62624b0ead49Smrg done 62634b0ead49Smrg fi 62644b0ead49Smrg 62654b0ead49Smrg # Exit here if they wanted silent mode. 62664b0ead49Smrg test "$show" = : && exit $EXIT_SUCCESS 62674b0ead49Smrg 62684b0ead49Smrg $echo "X----------------------------------------------------------------------" | $Xsed 62694b0ead49Smrg $echo "Libraries have been installed in:" 62704b0ead49Smrg for libdir in $libdirs; do 62714b0ead49Smrg $echo " $libdir" 62724b0ead49Smrg done 62734b0ead49Smrg $echo 62744b0ead49Smrg $echo "If you ever happen to want to link against installed libraries" 62754b0ead49Smrg $echo "in a given directory, LIBDIR, you must either use libtool, and" 62764b0ead49Smrg $echo "specify the full pathname of the library, or use the \`-LLIBDIR'" 62774b0ead49Smrg $echo "flag during linking and do at least one of the following:" 62784b0ead49Smrg if test -n "$shlibpath_var"; then 62794b0ead49Smrg $echo " - add LIBDIR to the \`$shlibpath_var' environment variable" 62804b0ead49Smrg $echo " during execution" 62814b0ead49Smrg fi 62824b0ead49Smrg if test -n "$runpath_var"; then 62834b0ead49Smrg $echo " - add LIBDIR to the \`$runpath_var' environment variable" 62844b0ead49Smrg $echo " during linking" 62854b0ead49Smrg fi 62864b0ead49Smrg if test -n "$hardcode_libdir_flag_spec"; then 62874b0ead49Smrg libdir=LIBDIR 62884b0ead49Smrg eval flag=\"$hardcode_libdir_flag_spec\" 62894b0ead49Smrg 62904b0ead49Smrg $echo " - use the \`$flag' linker flag" 62914b0ead49Smrg fi 62924b0ead49Smrg if test -n "$admincmds"; then 62934b0ead49Smrg $echo " - have your system administrator run these commands:$admincmds" 62944b0ead49Smrg fi 62954b0ead49Smrg if test -f /etc/ld.so.conf; then 62964b0ead49Smrg $echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" 62974b0ead49Smrg fi 62984b0ead49Smrg $echo 62994b0ead49Smrg $echo "See any operating system documentation about shared libraries for" 63004b0ead49Smrg $echo "more information, such as the ld(1) and ld.so(8) manual pages." 63014b0ead49Smrg $echo "X----------------------------------------------------------------------" | $Xsed 63024b0ead49Smrg exit $EXIT_SUCCESS 63034b0ead49Smrg ;; 63044b0ead49Smrg 63054b0ead49Smrg # libtool execute mode 63064b0ead49Smrg execute) 63074b0ead49Smrg modename="$modename: execute" 63084b0ead49Smrg 63094b0ead49Smrg # The first argument is the command name. 63104b0ead49Smrg cmd="$nonopt" 63114b0ead49Smrg if test -z "$cmd"; then 63124b0ead49Smrg $echo "$modename: you must specify a COMMAND" 1>&2 63134b0ead49Smrg $echo "$help" 63144b0ead49Smrg exit $EXIT_FAILURE 63154b0ead49Smrg fi 63164b0ead49Smrg 63174b0ead49Smrg # Handle -dlopen flags immediately. 63184b0ead49Smrg for file in $execute_dlfiles; do 63194b0ead49Smrg if test ! -f "$file"; then 63204b0ead49Smrg $echo "$modename: \`$file' is not a file" 1>&2 63214b0ead49Smrg $echo "$help" 1>&2 63224b0ead49Smrg exit $EXIT_FAILURE 63234b0ead49Smrg fi 63244b0ead49Smrg 63254b0ead49Smrg dir= 63264b0ead49Smrg case $file in 63274b0ead49Smrg *.la) 63284b0ead49Smrg # Check to see that this really is a libtool archive. 63294b0ead49Smrg if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : 63304b0ead49Smrg else 63314b0ead49Smrg $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 63324b0ead49Smrg $echo "$help" 1>&2 63334b0ead49Smrg exit $EXIT_FAILURE 63344b0ead49Smrg fi 63354b0ead49Smrg 63364b0ead49Smrg # Read the libtool library. 63374b0ead49Smrg dlname= 63384b0ead49Smrg library_names= 63394b0ead49Smrg 63404b0ead49Smrg # If there is no directory component, then add one. 63414b0ead49Smrg case $file in 63424b0ead49Smrg */* | *\\*) . $file ;; 63434b0ead49Smrg *) . ./$file ;; 63444b0ead49Smrg esac 63454b0ead49Smrg 63464b0ead49Smrg # Skip this library if it cannot be dlopened. 63474b0ead49Smrg if test -z "$dlname"; then 63484b0ead49Smrg # Warn if it was a shared library. 63494b0ead49Smrg test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'" 63504b0ead49Smrg continue 63514b0ead49Smrg fi 63524b0ead49Smrg 63534b0ead49Smrg dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` 63544b0ead49Smrg test "X$dir" = "X$file" && dir=. 63554b0ead49Smrg 63564b0ead49Smrg if test -f "$dir/$objdir/$dlname"; then 63574b0ead49Smrg dir="$dir/$objdir" 63584b0ead49Smrg else 63594b0ead49Smrg $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 63604b0ead49Smrg exit $EXIT_FAILURE 63614b0ead49Smrg fi 63624b0ead49Smrg ;; 63634b0ead49Smrg 63644b0ead49Smrg *.lo) 63654b0ead49Smrg # Just add the directory containing the .lo file. 63664b0ead49Smrg dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` 63674b0ead49Smrg test "X$dir" = "X$file" && dir=. 63684b0ead49Smrg ;; 63694b0ead49Smrg 63704b0ead49Smrg *) 63714b0ead49Smrg $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2 63724b0ead49Smrg continue 63734b0ead49Smrg ;; 63744b0ead49Smrg esac 63754b0ead49Smrg 63764b0ead49Smrg # Get the absolute pathname. 63774b0ead49Smrg absdir=`cd "$dir" && pwd` 63784b0ead49Smrg test -n "$absdir" && dir="$absdir" 63794b0ead49Smrg 63804b0ead49Smrg # Now add the directory to shlibpath_var. 63814b0ead49Smrg if eval "test -z \"\$$shlibpath_var\""; then 63824b0ead49Smrg eval "$shlibpath_var=\"\$dir\"" 63834b0ead49Smrg else 63844b0ead49Smrg eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" 63854b0ead49Smrg fi 63864b0ead49Smrg done 63874b0ead49Smrg 63884b0ead49Smrg # This variable tells wrapper scripts just to set shlibpath_var 63894b0ead49Smrg # rather than running their programs. 63904b0ead49Smrg libtool_execute_magic="$magic" 63914b0ead49Smrg 63924b0ead49Smrg # Check if any of the arguments is a wrapper script. 63934b0ead49Smrg args= 63944b0ead49Smrg for file 63954b0ead49Smrg do 63964b0ead49Smrg case $file in 63974b0ead49Smrg -*) ;; 63984b0ead49Smrg *) 63994b0ead49Smrg # Do a test to see if this is really a libtool program. 64004b0ead49Smrg if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 64014b0ead49Smrg # If there is no directory component, then add one. 64024b0ead49Smrg case $file in 64034b0ead49Smrg */* | *\\*) . $file ;; 64044b0ead49Smrg *) . ./$file ;; 64054b0ead49Smrg esac 64064b0ead49Smrg 64074b0ead49Smrg # Transform arg to wrapped name. 64084b0ead49Smrg file="$progdir/$program" 64094b0ead49Smrg fi 64104b0ead49Smrg ;; 64114b0ead49Smrg esac 64124b0ead49Smrg # Quote arguments (to preserve shell metacharacters). 64134b0ead49Smrg file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"` 64144b0ead49Smrg args="$args \"$file\"" 64154b0ead49Smrg done 64164b0ead49Smrg 64174b0ead49Smrg if test -z "$run"; then 64184b0ead49Smrg if test -n "$shlibpath_var"; then 64194b0ead49Smrg # Export the shlibpath_var. 64204b0ead49Smrg eval "export $shlibpath_var" 64214b0ead49Smrg fi 64224b0ead49Smrg 64234b0ead49Smrg # Restore saved environment variables 64244b0ead49Smrg if test "${save_LC_ALL+set}" = set; then 64254b0ead49Smrg LC_ALL="$save_LC_ALL"; export LC_ALL 64264b0ead49Smrg fi 64274b0ead49Smrg if test "${save_LANG+set}" = set; then 64284b0ead49Smrg LANG="$save_LANG"; export LANG 64294b0ead49Smrg fi 64304b0ead49Smrg 64314b0ead49Smrg # Now prepare to actually exec the command. 64324b0ead49Smrg exec_cmd="\$cmd$args" 64334b0ead49Smrg else 64344b0ead49Smrg # Display what would be done. 64354b0ead49Smrg if test -n "$shlibpath_var"; then 64364b0ead49Smrg eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\"" 64374b0ead49Smrg $echo "export $shlibpath_var" 64384b0ead49Smrg fi 64394b0ead49Smrg $echo "$cmd$args" 64404b0ead49Smrg exit $EXIT_SUCCESS 64414b0ead49Smrg fi 64424b0ead49Smrg ;; 64434b0ead49Smrg 64444b0ead49Smrg # libtool clean and uninstall mode 64454b0ead49Smrg clean | uninstall) 64464b0ead49Smrg modename="$modename: $mode" 64474b0ead49Smrg rm="$nonopt" 64484b0ead49Smrg files= 64494b0ead49Smrg rmforce= 64504b0ead49Smrg exit_status=0 64514b0ead49Smrg 64524b0ead49Smrg # This variable tells wrapper scripts just to set variables rather 64534b0ead49Smrg # than running their programs. 64544b0ead49Smrg libtool_install_magic="$magic" 64554b0ead49Smrg 64564b0ead49Smrg for arg 64574b0ead49Smrg do 64584b0ead49Smrg case $arg in 64594b0ead49Smrg -f) rm="$rm $arg"; rmforce=yes ;; 64604b0ead49Smrg -*) rm="$rm $arg" ;; 64614b0ead49Smrg *) files="$files $arg" ;; 64624b0ead49Smrg esac 64634b0ead49Smrg done 64644b0ead49Smrg 64654b0ead49Smrg if test -z "$rm"; then 64664b0ead49Smrg $echo "$modename: you must specify an RM program" 1>&2 64674b0ead49Smrg $echo "$help" 1>&2 64684b0ead49Smrg exit $EXIT_FAILURE 64694b0ead49Smrg fi 64704b0ead49Smrg 64714b0ead49Smrg rmdirs= 64724b0ead49Smrg 64734b0ead49Smrg origobjdir="$objdir" 64744b0ead49Smrg for file in $files; do 64754b0ead49Smrg dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` 64764b0ead49Smrg if test "X$dir" = "X$file"; then 64774b0ead49Smrg dir=. 64784b0ead49Smrg objdir="$origobjdir" 64794b0ead49Smrg else 64804b0ead49Smrg objdir="$dir/$origobjdir" 64814b0ead49Smrg fi 64824b0ead49Smrg name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 64834b0ead49Smrg test "$mode" = uninstall && objdir="$dir" 64844b0ead49Smrg 64854b0ead49Smrg # Remember objdir for removal later, being careful to avoid duplicates 64864b0ead49Smrg if test "$mode" = clean; then 64874b0ead49Smrg case " $rmdirs " in 64884b0ead49Smrg *" $objdir "*) ;; 64894b0ead49Smrg *) rmdirs="$rmdirs $objdir" ;; 64904b0ead49Smrg esac 64914b0ead49Smrg fi 64924b0ead49Smrg 64934b0ead49Smrg # Don't error if the file doesn't exist and rm -f was used. 64944b0ead49Smrg if (test -L "$file") >/dev/null 2>&1 \ 64954b0ead49Smrg || (test -h "$file") >/dev/null 2>&1 \ 64964b0ead49Smrg || test -f "$file"; then 64974b0ead49Smrg : 64984b0ead49Smrg elif test -d "$file"; then 64994b0ead49Smrg exit_status=1 65004b0ead49Smrg continue 65014b0ead49Smrg elif test "$rmforce" = yes; then 65024b0ead49Smrg continue 65034b0ead49Smrg fi 65044b0ead49Smrg 65054b0ead49Smrg rmfiles="$file" 65064b0ead49Smrg 65074b0ead49Smrg case $name in 65084b0ead49Smrg *.la) 65094b0ead49Smrg # Possibly a libtool archive, so verify it. 65104b0ead49Smrg if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 65114b0ead49Smrg . $dir/$name 65124b0ead49Smrg 65134b0ead49Smrg # Delete the libtool libraries and symlinks. 65144b0ead49Smrg for n in $library_names; do 65154b0ead49Smrg rmfiles="$rmfiles $objdir/$n" 65164b0ead49Smrg done 65174b0ead49Smrg test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" 65184b0ead49Smrg 65194b0ead49Smrg case "$mode" in 65204b0ead49Smrg clean) 65214b0ead49Smrg case " $library_names " in 65224b0ead49Smrg # " " in the beginning catches empty $dlname 65234b0ead49Smrg *" $dlname "*) ;; 65244b0ead49Smrg *) rmfiles="$rmfiles $objdir/$dlname" ;; 65254b0ead49Smrg esac 65264b0ead49Smrg test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" 65274b0ead49Smrg ;; 65284b0ead49Smrg uninstall) 65294b0ead49Smrg if test -n "$library_names"; then 65304b0ead49Smrg # Do each command in the postuninstall commands. 65314b0ead49Smrg cmds=$postuninstall_cmds 65324b0ead49Smrg save_ifs="$IFS"; IFS='~' 65334b0ead49Smrg for cmd in $cmds; do 65344b0ead49Smrg IFS="$save_ifs" 65354b0ead49Smrg eval cmd=\"$cmd\" 65364b0ead49Smrg $show "$cmd" 65374b0ead49Smrg $run eval "$cmd" 65384b0ead49Smrg if test "$?" -ne 0 && test "$rmforce" != yes; then 65394b0ead49Smrg exit_status=1 65404b0ead49Smrg fi 65414b0ead49Smrg done 65424b0ead49Smrg IFS="$save_ifs" 65434b0ead49Smrg fi 65444b0ead49Smrg 65454b0ead49Smrg if test -n "$old_library"; then 65464b0ead49Smrg # Do each command in the old_postuninstall commands. 65474b0ead49Smrg cmds=$old_postuninstall_cmds 65484b0ead49Smrg save_ifs="$IFS"; IFS='~' 65494b0ead49Smrg for cmd in $cmds; do 65504b0ead49Smrg IFS="$save_ifs" 65514b0ead49Smrg eval cmd=\"$cmd\" 65524b0ead49Smrg $show "$cmd" 65534b0ead49Smrg $run eval "$cmd" 65544b0ead49Smrg if test "$?" -ne 0 && test "$rmforce" != yes; then 65554b0ead49Smrg exit_status=1 65564b0ead49Smrg fi 65574b0ead49Smrg done 65584b0ead49Smrg IFS="$save_ifs" 65594b0ead49Smrg fi 65604b0ead49Smrg # FIXME: should reinstall the best remaining shared library. 65614b0ead49Smrg ;; 65624b0ead49Smrg esac 65634b0ead49Smrg fi 65644b0ead49Smrg ;; 65654b0ead49Smrg 65664b0ead49Smrg *.lo) 65674b0ead49Smrg # Possibly a libtool object, so verify it. 65684b0ead49Smrg if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 65694b0ead49Smrg 65704b0ead49Smrg # Read the .lo file 65714b0ead49Smrg . $dir/$name 65724b0ead49Smrg 65734b0ead49Smrg # Add PIC object to the list of files to remove. 65744b0ead49Smrg if test -n "$pic_object" \ 65754b0ead49Smrg && test "$pic_object" != none; then 65764b0ead49Smrg rmfiles="$rmfiles $dir/$pic_object" 65774b0ead49Smrg fi 65784b0ead49Smrg 65794b0ead49Smrg # Add non-PIC object to the list of files to remove. 65804b0ead49Smrg if test -n "$non_pic_object" \ 65814b0ead49Smrg && test "$non_pic_object" != none; then 65824b0ead49Smrg rmfiles="$rmfiles $dir/$non_pic_object" 65834b0ead49Smrg fi 65844b0ead49Smrg fi 65854b0ead49Smrg ;; 65864b0ead49Smrg 65874b0ead49Smrg *) 65884b0ead49Smrg if test "$mode" = clean ; then 65894b0ead49Smrg noexename=$name 65904b0ead49Smrg case $file in 65914b0ead49Smrg *.exe) 65924b0ead49Smrg file=`$echo $file|${SED} 's,.exe$,,'` 65934b0ead49Smrg noexename=`$echo $name|${SED} 's,.exe$,,'` 65944b0ead49Smrg # $file with .exe has already been added to rmfiles, 65954b0ead49Smrg # add $file without .exe 65964b0ead49Smrg rmfiles="$rmfiles $file" 65974b0ead49Smrg ;; 65984b0ead49Smrg esac 65994b0ead49Smrg # Do a test to see if this is a libtool program. 66004b0ead49Smrg if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 66014b0ead49Smrg relink_command= 66024b0ead49Smrg . $dir/$noexename 66034b0ead49Smrg 66044b0ead49Smrg # note $name still contains .exe if it was in $file originally 66054b0ead49Smrg # as does the version of $file that was added into $rmfiles 66064b0ead49Smrg rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" 66074b0ead49Smrg if test "$fast_install" = yes && test -n "$relink_command"; then 66084b0ead49Smrg rmfiles="$rmfiles $objdir/lt-$name" 66094b0ead49Smrg fi 66104b0ead49Smrg if test "X$noexename" != "X$name" ; then 66114b0ead49Smrg rmfiles="$rmfiles $objdir/lt-${noexename}.c" 66124b0ead49Smrg fi 66134b0ead49Smrg fi 66144b0ead49Smrg fi 66154b0ead49Smrg ;; 66164b0ead49Smrg esac 66174b0ead49Smrg $show "$rm $rmfiles" 66184b0ead49Smrg $run $rm $rmfiles || exit_status=1 66194b0ead49Smrg done 66204b0ead49Smrg objdir="$origobjdir" 66214b0ead49Smrg 66224b0ead49Smrg # Try to remove the ${objdir}s in the directories where we deleted files 66234b0ead49Smrg for dir in $rmdirs; do 66244b0ead49Smrg if test -d "$dir"; then 66254b0ead49Smrg $show "rmdir $dir" 66264b0ead49Smrg $run rmdir $dir >/dev/null 2>&1 66274b0ead49Smrg fi 66284b0ead49Smrg done 66294b0ead49Smrg 66304b0ead49Smrg exit $exit_status 66314b0ead49Smrg ;; 66324b0ead49Smrg 66334b0ead49Smrg "") 66344b0ead49Smrg $echo "$modename: you must specify a MODE" 1>&2 66354b0ead49Smrg $echo "$generic_help" 1>&2 66364b0ead49Smrg exit $EXIT_FAILURE 66374b0ead49Smrg ;; 66384b0ead49Smrg esac 66394b0ead49Smrg 66404b0ead49Smrg if test -z "$exec_cmd"; then 66414b0ead49Smrg $echo "$modename: invalid operation mode \`$mode'" 1>&2 66424b0ead49Smrg $echo "$generic_help" 1>&2 66434b0ead49Smrg exit $EXIT_FAILURE 66444b0ead49Smrg fi 66454b0ead49Smrgfi # test -z "$show_help" 66464b0ead49Smrg 66474b0ead49Smrgif test -n "$exec_cmd"; then 66484b0ead49Smrg eval exec $exec_cmd 66494b0ead49Smrg exit $EXIT_FAILURE 66504b0ead49Smrgfi 66514b0ead49Smrg 66524b0ead49Smrg# We need to display help for each of the modes. 66534b0ead49Smrgcase $mode in 66544b0ead49Smrg"") $echo \ 66554b0ead49Smrg"Usage: $modename [OPTION]... [MODE-ARG]... 66564b0ead49Smrg 66574b0ead49SmrgProvide generalized library-building support services. 66584b0ead49Smrg 66594b0ead49Smrg --config show all configuration variables 66604b0ead49Smrg --debug enable verbose shell tracing 66614b0ead49Smrg-n, --dry-run display commands without modifying any files 66624b0ead49Smrg --features display basic configuration information and exit 66634b0ead49Smrg --finish same as \`--mode=finish' 66644b0ead49Smrg --help display this help message and exit 66654b0ead49Smrg --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] 66664b0ead49Smrg --quiet same as \`--silent' 66674b0ead49Smrg --silent don't print informational messages 66684b0ead49Smrg --tag=TAG use configuration variables from tag TAG 66694b0ead49Smrg --version print version information 66704b0ead49Smrg 66714b0ead49SmrgMODE must be one of the following: 66724b0ead49Smrg 66734b0ead49Smrg clean remove files from the build directory 66744b0ead49Smrg compile compile a source file into a libtool object 66754b0ead49Smrg execute automatically set library path, then run a program 66764b0ead49Smrg finish complete the installation of libtool libraries 66774b0ead49Smrg install install libraries or executables 66784b0ead49Smrg link create a library or an executable 66794b0ead49Smrg uninstall remove libraries from an installed directory 66804b0ead49Smrg 66814b0ead49SmrgMODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for 66824b0ead49Smrga more detailed description of MODE. 66834b0ead49Smrg 66844b0ead49SmrgReport bugs to <bug-libtool@gnu.org>." 66854b0ead49Smrg exit $EXIT_SUCCESS 66864b0ead49Smrg ;; 66874b0ead49Smrg 66884b0ead49Smrgclean) 66894b0ead49Smrg $echo \ 66904b0ead49Smrg"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE... 66914b0ead49Smrg 66924b0ead49SmrgRemove files from the build directory. 66934b0ead49Smrg 66944b0ead49SmrgRM is the name of the program to use to delete files associated with each FILE 66954b0ead49Smrg(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 66964b0ead49Smrgto RM. 66974b0ead49Smrg 66984b0ead49SmrgIf FILE is a libtool library, object or program, all the files associated 66994b0ead49Smrgwith it are deleted. Otherwise, only FILE itself is deleted using RM." 67004b0ead49Smrg ;; 67014b0ead49Smrg 67024b0ead49Smrgcompile) 67034b0ead49Smrg $echo \ 67044b0ead49Smrg"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE 67054b0ead49Smrg 67064b0ead49SmrgCompile a source file into a libtool library object. 67074b0ead49Smrg 67084b0ead49SmrgThis mode accepts the following additional options: 67094b0ead49Smrg 67104b0ead49Smrg -o OUTPUT-FILE set the output file name to OUTPUT-FILE 67114b0ead49Smrg -prefer-pic try to building PIC objects only 67124b0ead49Smrg -prefer-non-pic try to building non-PIC objects only 67134b0ead49Smrg -static always build a \`.o' file suitable for static linking 67144b0ead49Smrg 67154b0ead49SmrgCOMPILE-COMMAND is a command to be used in creating a \`standard' object file 67164b0ead49Smrgfrom the given SOURCEFILE. 67174b0ead49Smrg 67184b0ead49SmrgThe output file name is determined by removing the directory component from 67194b0ead49SmrgSOURCEFILE, then substituting the C source code suffix \`.c' with the 67204b0ead49Smrglibrary object suffix, \`.lo'." 67214b0ead49Smrg ;; 67224b0ead49Smrg 67234b0ead49Smrgexecute) 67244b0ead49Smrg $echo \ 67254b0ead49Smrg"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]... 67264b0ead49Smrg 67274b0ead49SmrgAutomatically set library path, then run a program. 67284b0ead49Smrg 67294b0ead49SmrgThis mode accepts the following additional options: 67304b0ead49Smrg 67314b0ead49Smrg -dlopen FILE add the directory containing FILE to the library path 67324b0ead49Smrg 67334b0ead49SmrgThis mode sets the library path environment variable according to \`-dlopen' 67344b0ead49Smrgflags. 67354b0ead49Smrg 67364b0ead49SmrgIf any of the ARGS are libtool executable wrappers, then they are translated 67374b0ead49Smrginto their corresponding uninstalled binary, and any of their required library 67384b0ead49Smrgdirectories are added to the library path. 67394b0ead49Smrg 67404b0ead49SmrgThen, COMMAND is executed, with ARGS as arguments." 67414b0ead49Smrg ;; 67424b0ead49Smrg 67434b0ead49Smrgfinish) 67444b0ead49Smrg $echo \ 67454b0ead49Smrg"Usage: $modename [OPTION]... --mode=finish [LIBDIR]... 67464b0ead49Smrg 67474b0ead49SmrgComplete the installation of libtool libraries. 67484b0ead49Smrg 67494b0ead49SmrgEach LIBDIR is a directory that contains libtool libraries. 67504b0ead49Smrg 67514b0ead49SmrgThe commands that this mode executes may require superuser privileges. Use 67524b0ead49Smrgthe \`--dry-run' option if you just want to see what would be executed." 67534b0ead49Smrg ;; 67544b0ead49Smrg 67554b0ead49Smrginstall) 67564b0ead49Smrg $echo \ 67574b0ead49Smrg"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND... 67584b0ead49Smrg 67594b0ead49SmrgInstall executables or libraries. 67604b0ead49Smrg 67614b0ead49SmrgINSTALL-COMMAND is the installation command. The first component should be 67624b0ead49Smrgeither the \`install' or \`cp' program. 67634b0ead49Smrg 67644b0ead49SmrgThe rest of the components are interpreted as arguments to that command (only 67654b0ead49SmrgBSD-compatible install options are recognized)." 67664b0ead49Smrg ;; 67674b0ead49Smrg 67684b0ead49Smrglink) 67694b0ead49Smrg $echo \ 67704b0ead49Smrg"Usage: $modename [OPTION]... --mode=link LINK-COMMAND... 67714b0ead49Smrg 67724b0ead49SmrgLink object files or libraries together to form another library, or to 67734b0ead49Smrgcreate an executable program. 67744b0ead49Smrg 67754b0ead49SmrgLINK-COMMAND is a command using the C compiler that you would use to create 67764b0ead49Smrga program from several object files. 67774b0ead49Smrg 67784b0ead49SmrgThe following components of LINK-COMMAND are treated specially: 67794b0ead49Smrg 67804b0ead49Smrg -all-static do not do any dynamic linking at all 67814b0ead49Smrg -avoid-version do not add a version suffix if possible 67824b0ead49Smrg -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime 67834b0ead49Smrg -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols 67844b0ead49Smrg -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) 67854b0ead49Smrg -export-symbols SYMFILE 67864b0ead49Smrg try to export only the symbols listed in SYMFILE 67874b0ead49Smrg -export-symbols-regex REGEX 67884b0ead49Smrg try to export only the symbols matching REGEX 67894b0ead49Smrg -LLIBDIR search LIBDIR for required installed libraries 67904b0ead49Smrg -lNAME OUTPUT-FILE requires the installed library libNAME 67914b0ead49Smrg -module build a library that can dlopened 67924b0ead49Smrg -no-fast-install disable the fast-install mode 67934b0ead49Smrg -no-install link a not-installable executable 67944b0ead49Smrg -no-undefined declare that a library does not refer to external symbols 67954b0ead49Smrg -o OUTPUT-FILE create OUTPUT-FILE from the specified objects 67964b0ead49Smrg -objectlist FILE Use a list of object files found in FILE to specify objects 67974b0ead49Smrg -precious-files-regex REGEX 67984b0ead49Smrg don't remove output files matching REGEX 67994b0ead49Smrg -release RELEASE specify package release information 68004b0ead49Smrg -rpath LIBDIR the created library will eventually be installed in LIBDIR 68014b0ead49Smrg -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries 68024b0ead49Smrg -static do not do any dynamic linking of libtool libraries 68034b0ead49Smrg -version-info CURRENT[:REVISION[:AGE]] 68044b0ead49Smrg specify library version info [each variable defaults to 0] 68054b0ead49Smrg 68064b0ead49SmrgAll other options (arguments beginning with \`-') are ignored. 68074b0ead49Smrg 68084b0ead49SmrgEvery other argument is treated as a filename. Files ending in \`.la' are 68094b0ead49Smrgtreated as uninstalled libtool libraries, other files are standard or library 68104b0ead49Smrgobject files. 68114b0ead49Smrg 68124b0ead49SmrgIf the OUTPUT-FILE ends in \`.la', then a libtool library is created, 68134b0ead49Smrgonly library objects (\`.lo' files) may be specified, and \`-rpath' is 68144b0ead49Smrgrequired, except when creating a convenience library. 68154b0ead49Smrg 68164b0ead49SmrgIf OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created 68174b0ead49Smrgusing \`ar' and \`ranlib', or on Windows using \`lib'. 68184b0ead49Smrg 68194b0ead49SmrgIf OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file 68204b0ead49Smrgis created, otherwise an executable program is created." 68214b0ead49Smrg ;; 68224b0ead49Smrg 68234b0ead49Smrguninstall) 68244b0ead49Smrg $echo \ 68254b0ead49Smrg"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... 68264b0ead49Smrg 68274b0ead49SmrgRemove libraries from an installation directory. 68284b0ead49Smrg 68294b0ead49SmrgRM is the name of the program to use to delete files associated with each FILE 68304b0ead49Smrg(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 68314b0ead49Smrgto RM. 68324b0ead49Smrg 68334b0ead49SmrgIf FILE is a libtool library, all the files associated with it are deleted. 68344b0ead49SmrgOtherwise, only FILE itself is deleted using RM." 68354b0ead49Smrg ;; 68364b0ead49Smrg 68374b0ead49Smrg*) 68384b0ead49Smrg $echo "$modename: invalid operation mode \`$mode'" 1>&2 68394b0ead49Smrg $echo "$help" 1>&2 68404b0ead49Smrg exit $EXIT_FAILURE 68414b0ead49Smrg ;; 68424b0ead49Smrgesac 68434b0ead49Smrg 68444b0ead49Smrg$echo 68454b0ead49Smrg$echo "Try \`$modename --help' for more information about other modes." 68464b0ead49Smrg 68474b0ead49Smrgexit $? 68484b0ead49Smrg 68494b0ead49Smrg# The TAGs below are defined such that we never get into a situation 68504b0ead49Smrg# in which we disable both kinds of libraries. Given conflicting 68514b0ead49Smrg# choices, we go for a static library, that is the most portable, 68524b0ead49Smrg# since we can't tell whether shared libraries were disabled because 68534b0ead49Smrg# the user asked for that or because the platform doesn't support 68544b0ead49Smrg# them. This is particularly important on AIX, because we don't 68554b0ead49Smrg# support having both static and shared libraries enabled at the same 68564b0ead49Smrg# time on that platform, so we default to a shared-only configuration. 68574b0ead49Smrg# If a disable-shared tag is given, we'll fallback to a static-only 68584b0ead49Smrg# configuration. But we'll never go from static-only to shared-only. 68594b0ead49Smrg 68604b0ead49Smrg# ### BEGIN LIBTOOL TAG CONFIG: disable-shared 68614b0ead49Smrgdisable_libs=shared 68624b0ead49Smrg# ### END LIBTOOL TAG CONFIG: disable-shared 68634b0ead49Smrg 68644b0ead49Smrg# ### BEGIN LIBTOOL TAG CONFIG: disable-static 68654b0ead49Smrgdisable_libs=static 68664b0ead49Smrg# ### END LIBTOOL TAG CONFIG: disable-static 68674b0ead49Smrg 68684b0ead49Smrg# Local Variables: 68694b0ead49Smrg# mode:shell-script 68704b0ead49Smrg# sh-indentation:2 68714b0ead49Smrg# End: 6872