ltmain.sh revision 5f5b92ff
15f5b92ffSmrg# Generated from ltmain.m4sh. 25f5b92ffSmrg 35f5b92ffSmrg# ltmain.sh (GNU libtool) 2.2.6b 45f5b92ffSmrg# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 55f5b92ffSmrg 65f5b92ffSmrg# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 2008 Free Software Foundation, Inc. 75f5b92ffSmrg# This is free software; see the source for copying conditions. There is NO 85f5b92ffSmrg# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 95f5b92ffSmrg 105f5b92ffSmrg# GNU Libtool is free software; you can redistribute it and/or modify 1117a48c7cSmrg# it under the terms of the GNU General Public License as published by 1217a48c7cSmrg# the Free Software Foundation; either version 2 of the License, or 1317a48c7cSmrg# (at your option) any later version. 1417a48c7cSmrg# 155f5b92ffSmrg# As a special exception to the GNU General Public License, 165f5b92ffSmrg# if you distribute this file as part of a program or library that 175f5b92ffSmrg# is built using GNU Libtool, you may include this file under the 185f5b92ffSmrg# same distribution terms that you use for the rest of that program. 195f5b92ffSmrg# 205f5b92ffSmrg# GNU Libtool is distributed in the hope that it will be useful, but 2117a48c7cSmrg# WITHOUT ANY WARRANTY; without even the implied warranty of 2217a48c7cSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2317a48c7cSmrg# General Public License for more details. 2417a48c7cSmrg# 2517a48c7cSmrg# You should have received a copy of the GNU General Public License 265f5b92ffSmrg# along with GNU Libtool; see the file COPYING. If not, a copy 275f5b92ffSmrg# can be downloaded from http://www.gnu.org/licenses/gpl.html, 285f5b92ffSmrg# or obtained by writing to the Free Software Foundation, Inc., 295f5b92ffSmrg# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 3017a48c7cSmrg 315f5b92ffSmrg# Usage: $progname [OPTION]... [MODE-ARG]... 325f5b92ffSmrg# 335f5b92ffSmrg# Provide generalized library-building support services. 345f5b92ffSmrg# 355f5b92ffSmrg# --config show all configuration variables 365f5b92ffSmrg# --debug enable verbose shell tracing 375f5b92ffSmrg# -n, --dry-run display commands without modifying any files 385f5b92ffSmrg# --features display basic configuration information and exit 395f5b92ffSmrg# --mode=MODE use operation mode MODE 405f5b92ffSmrg# --preserve-dup-deps don't remove duplicate dependency libraries 415f5b92ffSmrg# --quiet, --silent don't print informational messages 425f5b92ffSmrg# --tag=TAG use configuration variables from tag TAG 435f5b92ffSmrg# -v, --verbose print informational messages (default) 445f5b92ffSmrg# --version print version information 455f5b92ffSmrg# -h, --help print short or long help message 465f5b92ffSmrg# 475f5b92ffSmrg# MODE must be one of the following: 485f5b92ffSmrg# 495f5b92ffSmrg# clean remove files from the build directory 505f5b92ffSmrg# compile compile a source file into a libtool object 515f5b92ffSmrg# execute automatically set library path, then run a program 525f5b92ffSmrg# finish complete the installation of libtool libraries 535f5b92ffSmrg# install install libraries or executables 545f5b92ffSmrg# link create a library or an executable 555f5b92ffSmrg# uninstall remove libraries from an installed directory 565f5b92ffSmrg# 575f5b92ffSmrg# MODE-ARGS vary depending on the MODE. 585f5b92ffSmrg# Try `$progname --help --mode=MODE' for a more detailed description of MODE. 595f5b92ffSmrg# 605f5b92ffSmrg# When reporting a bug, please describe a test case to reproduce it and 615f5b92ffSmrg# include the following information: 625f5b92ffSmrg# 635f5b92ffSmrg# host-triplet: $host 645f5b92ffSmrg# shell: $SHELL 655f5b92ffSmrg# compiler: $LTCC 665f5b92ffSmrg# compiler flags: $LTCFLAGS 675f5b92ffSmrg# linker: $LD (gnu? $with_gnu_ld) 685f5b92ffSmrg# $progname: (GNU libtool) 2.2.6b 695f5b92ffSmrg# automake: $automake_version 705f5b92ffSmrg# autoconf: $autoconf_version 715f5b92ffSmrg# 725f5b92ffSmrg# Report bugs to <bug-libtool@gnu.org>. 7317a48c7cSmrg 7417a48c7cSmrgPROGRAM=ltmain.sh 7517a48c7cSmrgPACKAGE=libtool 765f5b92ffSmrgVERSION=2.2.6b 775f5b92ffSmrgTIMESTAMP="" 785f5b92ffSmrgpackage_revision=1.3017 7917a48c7cSmrg 805f5b92ffSmrg# Be Bourne compatible 818e0ed500Smrgif test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then 828e0ed500Smrg emulate sh 838e0ed500Smrg NULLCMD=: 848e0ed500Smrg # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which 858e0ed500Smrg # is contrary to our usage. Disable this feature. 868e0ed500Smrg alias -g '${1+"$@"}'='"$@"' 8717a48c7cSmrg setopt NO_GLOB_SUBST 888e0ed500Smrgelse 898e0ed500Smrg case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac 9017a48c7cSmrgfi 91fbed5abfSmrgBIN_SH=xpg4; export BIN_SH # for Tru64 92fbed5abfSmrgDUALCASE=1; export DUALCASE # for MKS sh 9317a48c7cSmrg 945f5b92ffSmrg# NLS nuisances: We save the old values to restore during execute mode. 9517a48c7cSmrg# Only set LANG and LC_ALL to C if already set. 9617a48c7cSmrg# These must not be set unconditionally because not all systems understand 9717a48c7cSmrg# e.g. LANG=C (notably SCO). 985f5b92ffSmrglt_user_locale= 995f5b92ffSmrglt_safe_locale= 100fbed5abfSmrgfor lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 1018e0ed500Smrgdo 1028e0ed500Smrg eval "if test \"\${$lt_var+set}\" = set; then 1035f5b92ffSmrg save_$lt_var=\$$lt_var 1045f5b92ffSmrg $lt_var=C 105fbed5abfSmrg export $lt_var 1065f5b92ffSmrg lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" 1075f5b92ffSmrg lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" 108fbed5abfSmrg fi" 1098e0ed500Smrgdone 11017a48c7cSmrg 1115f5b92ffSmrg$lt_unset CDPATH 1125f5b92ffSmrg 1135f5b92ffSmrg 1145f5b92ffSmrg 1155f5b92ffSmrg 1165f5b92ffSmrg 1175f5b92ffSmrg: ${CP="cp -f"} 1185f5b92ffSmrg: ${ECHO="echo"} 1195f5b92ffSmrg: ${EGREP="/bin/grep -E"} 1205f5b92ffSmrg: ${FGREP="/bin/grep -F"} 1215f5b92ffSmrg: ${GREP="/bin/grep"} 1225f5b92ffSmrg: ${LN_S="ln -s"} 1235f5b92ffSmrg: ${MAKE="make"} 1245f5b92ffSmrg: ${MKDIR="mkdir"} 1255f5b92ffSmrg: ${MV="mv -f"} 1265f5b92ffSmrg: ${RM="rm -f"} 1275f5b92ffSmrg: ${SED="/bin/sed"} 1285f5b92ffSmrg: ${SHELL="${CONFIG_SHELL-/bin/sh}"} 1295f5b92ffSmrg: ${Xsed="$SED -e 1s/^X//"} 1305f5b92ffSmrg 1315f5b92ffSmrg# Global variables: 1325f5b92ffSmrgEXIT_SUCCESS=0 1335f5b92ffSmrgEXIT_FAILURE=1 1345f5b92ffSmrgEXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. 1355f5b92ffSmrgEXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. 1365f5b92ffSmrg 1375f5b92ffSmrgexit_status=$EXIT_SUCCESS 138fbed5abfSmrg 13917a48c7cSmrg# Make sure IFS has a sensible default 14017a48c7cSmrglt_nl=' 14117a48c7cSmrg' 14217a48c7cSmrgIFS=" $lt_nl" 14317a48c7cSmrg 1445f5b92ffSmrgdirname="s,/[^/]*$,," 1455f5b92ffSmrgbasename="s,^.*/,," 1465f5b92ffSmrg 1475f5b92ffSmrg# func_dirname_and_basename file append nondir_replacement 1485f5b92ffSmrg# perform func_basename and func_dirname in a single function 1495f5b92ffSmrg# call: 1505f5b92ffSmrg# dirname: Compute the dirname of FILE. If nonempty, 1515f5b92ffSmrg# add APPEND to the result, otherwise set result 1525f5b92ffSmrg# to NONDIR_REPLACEMENT. 1535f5b92ffSmrg# value returned in "$func_dirname_result" 1545f5b92ffSmrg# basename: Compute filename of FILE. 1555f5b92ffSmrg# value retuned in "$func_basename_result" 1565f5b92ffSmrg# Implementation must be kept synchronized with func_dirname 1575f5b92ffSmrg# and func_basename. For efficiency, we do not delegate to 1585f5b92ffSmrg# those functions but instead duplicate the functionality here. 1595f5b92ffSmrgfunc_dirname_and_basename () 1605f5b92ffSmrg{ 1615f5b92ffSmrg # Extract subdirectory from the argument. 1625f5b92ffSmrg func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` 1635f5b92ffSmrg if test "X$func_dirname_result" = "X${1}"; then 1645f5b92ffSmrg func_dirname_result="${3}" 1655f5b92ffSmrg else 1665f5b92ffSmrg func_dirname_result="$func_dirname_result${2}" 1675f5b92ffSmrg fi 1685f5b92ffSmrg func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` 1695f5b92ffSmrg} 17017a48c7cSmrg 1715f5b92ffSmrg# Generated shell functions inserted here. 1725f5b92ffSmrg 1735f5b92ffSmrg# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh 1745f5b92ffSmrg# is ksh but when the shell is invoked as "sh" and the current value of 1755f5b92ffSmrg# the _XPG environment variable is not equal to 1 (one), the special 1765f5b92ffSmrg# positional parameter $0, within a function call, is the name of the 1775f5b92ffSmrg# function. 1785f5b92ffSmrgprogpath="$0" 1795f5b92ffSmrg 1805f5b92ffSmrg# The name of this program: 1815f5b92ffSmrg# In the unlikely event $progname began with a '-', it would play havoc with 1825f5b92ffSmrg# func_echo (imagine progname=-n), so we prepend ./ in that case: 1835f5b92ffSmrgfunc_dirname_and_basename "$progpath" 1845f5b92ffSmrgprogname=$func_basename_result 1855f5b92ffSmrgcase $progname in 1865f5b92ffSmrg -*) progname=./$progname ;; 1875f5b92ffSmrgesac 1885f5b92ffSmrg 1895f5b92ffSmrg# Make sure we have an absolute path for reexecution: 1905f5b92ffSmrgcase $progpath in 1915f5b92ffSmrg [\\/]*|[A-Za-z]:\\*) ;; 1925f5b92ffSmrg *[\\/]*) 1935f5b92ffSmrg progdir=$func_dirname_result 1945f5b92ffSmrg progdir=`cd "$progdir" && pwd` 1955f5b92ffSmrg progpath="$progdir/$progname" 1965f5b92ffSmrg ;; 1975f5b92ffSmrg *) 1985f5b92ffSmrg save_IFS="$IFS" 1995f5b92ffSmrg IFS=: 2005f5b92ffSmrg for progdir in $PATH; do 2015f5b92ffSmrg IFS="$save_IFS" 2025f5b92ffSmrg test -x "$progdir/$progname" && break 2035f5b92ffSmrg done 2045f5b92ffSmrg IFS="$save_IFS" 2055f5b92ffSmrg test -n "$progdir" || progdir=`pwd` 2065f5b92ffSmrg progpath="$progdir/$progname" 2075f5b92ffSmrg ;; 2085f5b92ffSmrgesac 2095f5b92ffSmrg 2105f5b92ffSmrg# Sed substitution that helps us do robust quoting. It backslashifies 2115f5b92ffSmrg# metacharacters that are still active within double-quoted strings. 2125f5b92ffSmrgXsed="${SED}"' -e 1s/^X//' 2135f5b92ffSmrgsed_quote_subst='s/\([`"$\\]\)/\\\1/g' 2145f5b92ffSmrg 2155f5b92ffSmrg# Same as above, but do not quote variable references. 2165f5b92ffSmrgdouble_quote_subst='s/\(["`\\]\)/\\\1/g' 2175f5b92ffSmrg 2185f5b92ffSmrg# Re-`\' parameter expansions in output of double_quote_subst that were 2195f5b92ffSmrg# `\'-ed in input to the same. If an odd number of `\' preceded a '$' 2205f5b92ffSmrg# in input to double_quote_subst, that '$' was protected from expansion. 2215f5b92ffSmrg# Since each input `\' is now two `\'s, look for any number of runs of 2225f5b92ffSmrg# four `\'s followed by two `\'s and then a '$'. `\' that '$'. 2235f5b92ffSmrgbs='\\' 2245f5b92ffSmrgbs2='\\\\' 2255f5b92ffSmrgbs4='\\\\\\\\' 2265f5b92ffSmrgdollar='\$' 2275f5b92ffSmrgsed_double_backslash="\ 2285f5b92ffSmrg s/$bs4/&\\ 2295f5b92ffSmrg/g 2305f5b92ffSmrg s/^$bs2$dollar/$bs&/ 2315f5b92ffSmrg s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g 2325f5b92ffSmrg s/\n//g" 2335f5b92ffSmrg 2345f5b92ffSmrg# Standard options: 2355f5b92ffSmrgopt_dry_run=false 2365f5b92ffSmrgopt_help=false 2375f5b92ffSmrgopt_quiet=false 2385f5b92ffSmrgopt_verbose=false 2395f5b92ffSmrgopt_warning=: 2405f5b92ffSmrg 2415f5b92ffSmrg# func_echo arg... 2425f5b92ffSmrg# Echo program name prefixed message, along with the current mode 2435f5b92ffSmrg# name if it has been set yet. 2445f5b92ffSmrgfunc_echo () 2455f5b92ffSmrg{ 2465f5b92ffSmrg $ECHO "$progname${mode+: }$mode: $*" 2475f5b92ffSmrg} 2485f5b92ffSmrg 2495f5b92ffSmrg# func_verbose arg... 2505f5b92ffSmrg# Echo program name prefixed message in verbose mode only. 2515f5b92ffSmrgfunc_verbose () 2525f5b92ffSmrg{ 2535f5b92ffSmrg $opt_verbose && func_echo ${1+"$@"} 2545f5b92ffSmrg 2555f5b92ffSmrg # A bug in bash halts the script if the last line of a function 2565f5b92ffSmrg # fails when set -e is in force, so we need another command to 2575f5b92ffSmrg # work around that: 2585f5b92ffSmrg : 2595f5b92ffSmrg} 2605f5b92ffSmrg 2615f5b92ffSmrg# func_error arg... 2625f5b92ffSmrg# Echo program name prefixed message to standard error. 2635f5b92ffSmrgfunc_error () 2645f5b92ffSmrg{ 2655f5b92ffSmrg $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2 2665f5b92ffSmrg} 2675f5b92ffSmrg 2685f5b92ffSmrg# func_warning arg... 2695f5b92ffSmrg# Echo program name prefixed warning message to standard error. 2705f5b92ffSmrgfunc_warning () 2715f5b92ffSmrg{ 2725f5b92ffSmrg $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2 2735f5b92ffSmrg 2745f5b92ffSmrg # bash bug again: 2755f5b92ffSmrg : 2765f5b92ffSmrg} 2775f5b92ffSmrg 2785f5b92ffSmrg# func_fatal_error arg... 2795f5b92ffSmrg# Echo program name prefixed message to standard error, and exit. 2805f5b92ffSmrgfunc_fatal_error () 2815f5b92ffSmrg{ 2825f5b92ffSmrg func_error ${1+"$@"} 2835f5b92ffSmrg exit $EXIT_FAILURE 2845f5b92ffSmrg} 2855f5b92ffSmrg 2865f5b92ffSmrg# func_fatal_help arg... 2875f5b92ffSmrg# Echo program name prefixed message to standard error, followed by 2885f5b92ffSmrg# a help hint, and exit. 2895f5b92ffSmrgfunc_fatal_help () 2905f5b92ffSmrg{ 2915f5b92ffSmrg func_error ${1+"$@"} 2925f5b92ffSmrg func_fatal_error "$help" 2935f5b92ffSmrg} 2945f5b92ffSmrghelp="Try \`$progname --help' for more information." ## default 2955f5b92ffSmrg 2965f5b92ffSmrg 2975f5b92ffSmrg# func_grep expression filename 2985f5b92ffSmrg# Check whether EXPRESSION matches any line of FILENAME, without output. 2995f5b92ffSmrgfunc_grep () 3005f5b92ffSmrg{ 3015f5b92ffSmrg $GREP "$1" "$2" >/dev/null 2>&1 3025f5b92ffSmrg} 3035f5b92ffSmrg 3045f5b92ffSmrg 3055f5b92ffSmrg# func_mkdir_p directory-path 3065f5b92ffSmrg# Make sure the entire path to DIRECTORY-PATH is available. 3075f5b92ffSmrgfunc_mkdir_p () 3085f5b92ffSmrg{ 3095f5b92ffSmrg my_directory_path="$1" 3105f5b92ffSmrg my_dir_list= 3115f5b92ffSmrg 3125f5b92ffSmrg if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then 3135f5b92ffSmrg 3145f5b92ffSmrg # Protect directory names starting with `-' 3155f5b92ffSmrg case $my_directory_path in 3165f5b92ffSmrg -*) my_directory_path="./$my_directory_path" ;; 3175f5b92ffSmrg esac 3185f5b92ffSmrg 3195f5b92ffSmrg # While some portion of DIR does not yet exist... 3205f5b92ffSmrg while test ! -d "$my_directory_path"; do 3215f5b92ffSmrg # ...make a list in topmost first order. Use a colon delimited 3225f5b92ffSmrg # list incase some portion of path contains whitespace. 3235f5b92ffSmrg my_dir_list="$my_directory_path:$my_dir_list" 3245f5b92ffSmrg 3255f5b92ffSmrg # If the last portion added has no slash in it, the list is done 3265f5b92ffSmrg case $my_directory_path in */*) ;; *) break ;; esac 3275f5b92ffSmrg 3285f5b92ffSmrg # ...otherwise throw away the child directory and loop 3295f5b92ffSmrg my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"` 3305f5b92ffSmrg done 3315f5b92ffSmrg my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'` 3325f5b92ffSmrg 3335f5b92ffSmrg save_mkdir_p_IFS="$IFS"; IFS=':' 3345f5b92ffSmrg for my_dir in $my_dir_list; do 3355f5b92ffSmrg IFS="$save_mkdir_p_IFS" 3365f5b92ffSmrg # mkdir can fail with a `File exist' error if two processes 3375f5b92ffSmrg # try to create one of the directories concurrently. Don't 3385f5b92ffSmrg # stop in that case! 3395f5b92ffSmrg $MKDIR "$my_dir" 2>/dev/null || : 3405f5b92ffSmrg done 3415f5b92ffSmrg IFS="$save_mkdir_p_IFS" 3425f5b92ffSmrg 3435f5b92ffSmrg # Bail out if we (or some other process) failed to create a directory. 3445f5b92ffSmrg test -d "$my_directory_path" || \ 3455f5b92ffSmrg func_fatal_error "Failed to create \`$1'" 3465f5b92ffSmrg fi 3475f5b92ffSmrg} 34817a48c7cSmrg 34917a48c7cSmrg 35017a48c7cSmrg# func_mktempdir [string] 35117a48c7cSmrg# Make a temporary directory that won't clash with other running 35217a48c7cSmrg# libtool processes, and avoids race conditions if possible. If 35317a48c7cSmrg# given, STRING is the basename for that directory. 35417a48c7cSmrgfunc_mktempdir () 35517a48c7cSmrg{ 35617a48c7cSmrg my_template="${TMPDIR-/tmp}/${1-$progname}" 35717a48c7cSmrg 3585f5b92ffSmrg if test "$opt_dry_run" = ":"; then 35917a48c7cSmrg # Return a directory name, but don't create it in dry-run mode 36017a48c7cSmrg my_tmpdir="${my_template}-$$" 36117a48c7cSmrg else 36217a48c7cSmrg 36317a48c7cSmrg # If mktemp works, use that first and foremost 36417a48c7cSmrg my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` 36517a48c7cSmrg 36617a48c7cSmrg if test ! -d "$my_tmpdir"; then 3675f5b92ffSmrg # Failing that, at least try and use $RANDOM to avoid a race 3685f5b92ffSmrg my_tmpdir="${my_template}-${RANDOM-0}$$" 36917a48c7cSmrg 3705f5b92ffSmrg save_mktempdir_umask=`umask` 3715f5b92ffSmrg umask 0077 3725f5b92ffSmrg $MKDIR "$my_tmpdir" 3735f5b92ffSmrg umask $save_mktempdir_umask 37417a48c7cSmrg fi 37517a48c7cSmrg 37617a48c7cSmrg # If we're not in dry-run mode, bomb out on failure 3775f5b92ffSmrg test -d "$my_tmpdir" || \ 3785f5b92ffSmrg func_fatal_error "cannot create temporary directory \`$my_tmpdir'" 37917a48c7cSmrg fi 38017a48c7cSmrg 3815f5b92ffSmrg $ECHO "X$my_tmpdir" | $Xsed 38217a48c7cSmrg} 38317a48c7cSmrg 38417a48c7cSmrg 3855f5b92ffSmrg# func_quote_for_eval arg 3865f5b92ffSmrg# Aesthetically quote ARG to be evaled later. 3875f5b92ffSmrg# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT 3885f5b92ffSmrg# is double-quoted, suitable for a subsequent eval, whereas 3895f5b92ffSmrg# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters 3905f5b92ffSmrg# which are still active within double quotes backslashified. 3915f5b92ffSmrgfunc_quote_for_eval () 39217a48c7cSmrg{ 3935f5b92ffSmrg case $1 in 3945f5b92ffSmrg *[\\\`\"\$]*) 3955f5b92ffSmrg func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;; 3965f5b92ffSmrg *) 3975f5b92ffSmrg func_quote_for_eval_unquoted_result="$1" ;; 3985f5b92ffSmrg esac 3995f5b92ffSmrg 4005f5b92ffSmrg case $func_quote_for_eval_unquoted_result in 4015f5b92ffSmrg # Double-quote args containing shell metacharacters to delay 4025f5b92ffSmrg # word splitting, command substitution and and variable 4035f5b92ffSmrg # expansion for a subsequent eval. 4045f5b92ffSmrg # Many Bourne shells cannot handle close brackets correctly 4055f5b92ffSmrg # in scan sets, so we specify it separately. 4065f5b92ffSmrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 4075f5b92ffSmrg func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" 4085f5b92ffSmrg ;; 4095f5b92ffSmrg *) 4105f5b92ffSmrg func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" 41117a48c7cSmrg esac 41217a48c7cSmrg} 41317a48c7cSmrg 41417a48c7cSmrg 4155f5b92ffSmrg# func_quote_for_expand arg 4165f5b92ffSmrg# Aesthetically quote ARG to be evaled later; same as above, 4175f5b92ffSmrg# but do not quote variable references. 4185f5b92ffSmrgfunc_quote_for_expand () 41917a48c7cSmrg{ 4205f5b92ffSmrg case $1 in 4215f5b92ffSmrg *[\\\`\"]*) 4225f5b92ffSmrg my_arg=`$ECHO "X$1" | $Xsed \ 4235f5b92ffSmrg -e "$double_quote_subst" -e "$sed_double_backslash"` ;; 42417a48c7cSmrg *) 4255f5b92ffSmrg my_arg="$1" ;; 4265f5b92ffSmrg esac 4275f5b92ffSmrg 4285f5b92ffSmrg case $my_arg in 4295f5b92ffSmrg # Double-quote args containing shell metacharacters to delay 4305f5b92ffSmrg # word splitting and command substitution for a subsequent eval. 4315f5b92ffSmrg # Many Bourne shells cannot handle close brackets correctly 4325f5b92ffSmrg # in scan sets, so we specify it separately. 4335f5b92ffSmrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 4345f5b92ffSmrg my_arg="\"$my_arg\"" 4355f5b92ffSmrg ;; 4365f5b92ffSmrg esac 4375f5b92ffSmrg 4385f5b92ffSmrg func_quote_for_expand_result="$my_arg" 43917a48c7cSmrg} 44017a48c7cSmrg 44117a48c7cSmrg 4425f5b92ffSmrg# func_show_eval cmd [fail_exp] 4435f5b92ffSmrg# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is 4445f5b92ffSmrg# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP 4455f5b92ffSmrg# is given, then evaluate it. 4465f5b92ffSmrgfunc_show_eval () 44717a48c7cSmrg{ 4485f5b92ffSmrg my_cmd="$1" 4495f5b92ffSmrg my_fail_exp="${2-:}" 45017a48c7cSmrg 4515f5b92ffSmrg ${opt_silent-false} || { 4525f5b92ffSmrg func_quote_for_expand "$my_cmd" 4535f5b92ffSmrg eval "func_echo $func_quote_for_expand_result" 4545f5b92ffSmrg } 4555f5b92ffSmrg 4565f5b92ffSmrg if ${opt_dry_run-false}; then :; else 4575f5b92ffSmrg eval "$my_cmd" 4585f5b92ffSmrg my_status=$? 4595f5b92ffSmrg if test "$my_status" -eq 0; then :; else 4605f5b92ffSmrg eval "(exit $my_status); $my_fail_exp" 4615f5b92ffSmrg fi 46217a48c7cSmrg fi 46317a48c7cSmrg} 46417a48c7cSmrg 4655f5b92ffSmrg 4665f5b92ffSmrg# func_show_eval_locale cmd [fail_exp] 4675f5b92ffSmrg# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is 4685f5b92ffSmrg# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP 4695f5b92ffSmrg# is given, then evaluate it. Use the saved locale for evaluation. 4705f5b92ffSmrgfunc_show_eval_locale () 47117a48c7cSmrg{ 4725f5b92ffSmrg my_cmd="$1" 4735f5b92ffSmrg my_fail_exp="${2-:}" 4745f5b92ffSmrg 4755f5b92ffSmrg ${opt_silent-false} || { 4765f5b92ffSmrg func_quote_for_expand "$my_cmd" 4775f5b92ffSmrg eval "func_echo $func_quote_for_expand_result" 4785f5b92ffSmrg } 4795f5b92ffSmrg 4805f5b92ffSmrg if ${opt_dry_run-false}; then :; else 4815f5b92ffSmrg eval "$lt_user_locale 4825f5b92ffSmrg $my_cmd" 4835f5b92ffSmrg my_status=$? 4845f5b92ffSmrg eval "$lt_safe_locale" 4855f5b92ffSmrg if test "$my_status" -eq 0; then :; else 4865f5b92ffSmrg eval "(exit $my_status); $my_fail_exp" 4875f5b92ffSmrg fi 48817a48c7cSmrg fi 4895f5b92ffSmrg} 49017a48c7cSmrg 49117a48c7cSmrg 4925f5b92ffSmrg 4935f5b92ffSmrg 4945f5b92ffSmrg 4955f5b92ffSmrg# func_version 4965f5b92ffSmrg# Echo version message to standard output and exit. 4975f5b92ffSmrgfunc_version () 4985f5b92ffSmrg{ 4995f5b92ffSmrg $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / { 5005f5b92ffSmrg s/^# // 5015f5b92ffSmrg s/^# *$// 5025f5b92ffSmrg s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ 5035f5b92ffSmrg p 5045f5b92ffSmrg }' < "$progpath" 5055f5b92ffSmrg exit $? 5065f5b92ffSmrg} 5075f5b92ffSmrg 5085f5b92ffSmrg# func_usage 5095f5b92ffSmrg# Echo short help message to standard output and exit. 5105f5b92ffSmrgfunc_usage () 5115f5b92ffSmrg{ 5125f5b92ffSmrg $SED -n '/^# Usage:/,/# -h/ { 5135f5b92ffSmrg s/^# // 5145f5b92ffSmrg s/^# *$// 5155f5b92ffSmrg s/\$progname/'$progname'/ 5165f5b92ffSmrg p 5175f5b92ffSmrg }' < "$progpath" 5185f5b92ffSmrg $ECHO 5195f5b92ffSmrg $ECHO "run \`$progname --help | more' for full usage" 5205f5b92ffSmrg exit $? 5215f5b92ffSmrg} 5225f5b92ffSmrg 5235f5b92ffSmrg# func_help 5245f5b92ffSmrg# Echo long help message to standard output and exit. 5255f5b92ffSmrgfunc_help () 5265f5b92ffSmrg{ 5275f5b92ffSmrg $SED -n '/^# Usage:/,/# Report bugs to/ { 5285f5b92ffSmrg s/^# // 5295f5b92ffSmrg s/^# *$// 5305f5b92ffSmrg s*\$progname*'$progname'* 5315f5b92ffSmrg s*\$host*'"$host"'* 5325f5b92ffSmrg s*\$SHELL*'"$SHELL"'* 5335f5b92ffSmrg s*\$LTCC*'"$LTCC"'* 5345f5b92ffSmrg s*\$LTCFLAGS*'"$LTCFLAGS"'* 5355f5b92ffSmrg s*\$LD*'"$LD"'* 5365f5b92ffSmrg s/\$with_gnu_ld/'"$with_gnu_ld"'/ 5375f5b92ffSmrg s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/ 5385f5b92ffSmrg s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/ 5395f5b92ffSmrg p 5405f5b92ffSmrg }' < "$progpath" 5415f5b92ffSmrg exit $? 5425f5b92ffSmrg} 5435f5b92ffSmrg 5445f5b92ffSmrg# func_missing_arg argname 5455f5b92ffSmrg# Echo program name prefixed message to standard error and set global 5465f5b92ffSmrg# exit_cmd. 5475f5b92ffSmrgfunc_missing_arg () 5485f5b92ffSmrg{ 5495f5b92ffSmrg func_error "missing argument for $1" 5505f5b92ffSmrg exit_cmd=exit 55117a48c7cSmrg} 55217a48c7cSmrg 5535f5b92ffSmrgexit_cmd=: 55417a48c7cSmrg 55517a48c7cSmrg 5565f5b92ffSmrg 5575f5b92ffSmrg 5585f5b92ffSmrg 5595f5b92ffSmrg# Check that we have a working $ECHO. 5605f5b92ffSmrgif test "X$1" = X--no-reexec; then 5615f5b92ffSmrg # Discard the --no-reexec flag, and continue. 56217a48c7cSmrg shift 5635f5b92ffSmrgelif test "X$1" = X--fallback-echo; then 5645f5b92ffSmrg # Avoid inline document here, it may be left over 5655f5b92ffSmrg : 5665f5b92ffSmrgelif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then 5675f5b92ffSmrg # Yippee, $ECHO works! 5685f5b92ffSmrg : 5695f5b92ffSmrgelse 5705f5b92ffSmrg # Restart under the correct shell, and then maybe $ECHO will work. 5715f5b92ffSmrg exec $SHELL "$progpath" --no-reexec ${1+"$@"} 5725f5b92ffSmrgfi 57317a48c7cSmrg 5745f5b92ffSmrgif test "X$1" = X--fallback-echo; then 5755f5b92ffSmrg # used as fallback echo 5765f5b92ffSmrg shift 5775f5b92ffSmrg cat <<EOF 5785f5b92ffSmrg$* 5795f5b92ffSmrgEOF 5805f5b92ffSmrg exit $EXIT_SUCCESS 5815f5b92ffSmrgfi 58217a48c7cSmrg 5835f5b92ffSmrgmagic="%%%MAGIC variable%%%" 5845f5b92ffSmrgmagic_exe="%%%MAGIC EXE variable%%%" 58517a48c7cSmrg 5865f5b92ffSmrg# Global variables. 5875f5b92ffSmrg# $mode is unset 5885f5b92ffSmrgnonopt= 5895f5b92ffSmrgexecute_dlfiles= 5905f5b92ffSmrgpreserve_args= 5915f5b92ffSmrglo2o="s/\\.lo\$/.${objext}/" 5925f5b92ffSmrgo2lo="s/\\.${objext}\$/.lo/" 5935f5b92ffSmrgextracted_archives= 5945f5b92ffSmrgextracted_serial=0 59517a48c7cSmrg 5965f5b92ffSmrgopt_dry_run=false 5975f5b92ffSmrgopt_duplicate_deps=false 5985f5b92ffSmrgopt_silent=false 5995f5b92ffSmrgopt_debug=: 60017a48c7cSmrg 6015f5b92ffSmrg# If this variable is set in any of the actions, the command in it 6025f5b92ffSmrg# will be execed at the end. This prevents here-documents from being 6035f5b92ffSmrg# left over by shells. 6045f5b92ffSmrgexec_cmd= 6055f5b92ffSmrg 6065f5b92ffSmrg# func_fatal_configuration arg... 6075f5b92ffSmrg# Echo program name prefixed message to standard error, followed by 6085f5b92ffSmrg# a configuration failure hint, and exit. 6095f5b92ffSmrgfunc_fatal_configuration () 6105f5b92ffSmrg{ 6115f5b92ffSmrg func_error ${1+"$@"} 6125f5b92ffSmrg func_error "See the $PACKAGE documentation for more information." 6135f5b92ffSmrg func_fatal_error "Fatal configuration error." 6145f5b92ffSmrg} 61517a48c7cSmrg 616fbed5abfSmrg 6175f5b92ffSmrg# func_config 6185f5b92ffSmrg# Display the configuration for all the tags in this script. 6195f5b92ffSmrgfunc_config () 6205f5b92ffSmrg{ 6215f5b92ffSmrg re_begincf='^# ### BEGIN LIBTOOL' 6225f5b92ffSmrg re_endcf='^# ### END LIBTOOL' 6235f5b92ffSmrg 6245f5b92ffSmrg # Default configuration. 6255f5b92ffSmrg $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" 62617a48c7cSmrg 62717a48c7cSmrg # Now print the configurations for the tags. 62817a48c7cSmrg for tagname in $taglist; do 6295f5b92ffSmrg $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" 63017a48c7cSmrg done 63117a48c7cSmrg 6325f5b92ffSmrg exit $? 6335f5b92ffSmrg} 63417a48c7cSmrg 6355f5b92ffSmrg# func_features 6365f5b92ffSmrg# Display the features supported by this script. 6375f5b92ffSmrgfunc_features () 6385f5b92ffSmrg{ 6395f5b92ffSmrg $ECHO "host: $host" 64017a48c7cSmrg if test "$build_libtool_libs" = yes; then 6415f5b92ffSmrg $ECHO "enable shared libraries" 64217a48c7cSmrg else 6435f5b92ffSmrg $ECHO "disable shared libraries" 64417a48c7cSmrg fi 64517a48c7cSmrg if test "$build_old_libs" = yes; then 6465f5b92ffSmrg $ECHO "enable static libraries" 64717a48c7cSmrg else 6485f5b92ffSmrg $ECHO "disable static libraries" 64917a48c7cSmrg fi 6505f5b92ffSmrg 65117a48c7cSmrg exit $? 6525f5b92ffSmrg} 65317a48c7cSmrg 6545f5b92ffSmrg# func_enable_tag tagname 6555f5b92ffSmrg# Verify that TAGNAME is valid, and either flag an error and exit, or 6565f5b92ffSmrg# enable the TAGNAME tag. We also add TAGNAME to the global $taglist 6575f5b92ffSmrg# variable here. 6585f5b92ffSmrgfunc_enable_tag () 6595f5b92ffSmrg{ 6605f5b92ffSmrg # Global variable: 6615f5b92ffSmrg tagname="$1" 66217a48c7cSmrg 6635f5b92ffSmrg re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" 6645f5b92ffSmrg re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" 6655f5b92ffSmrg sed_extractcf="/$re_begincf/,/$re_endcf/p" 66617a48c7cSmrg 6675f5b92ffSmrg # Validate tagname. 6685f5b92ffSmrg case $tagname in 6695f5b92ffSmrg *[!-_A-Za-z0-9,/]*) 6705f5b92ffSmrg func_fatal_error "invalid tag name: $tagname" 6715f5b92ffSmrg ;; 6725f5b92ffSmrg esac 67317a48c7cSmrg 6745f5b92ffSmrg # Don't test for the "default" C tag, as we know it's 6755f5b92ffSmrg # there but not specially marked. 6765f5b92ffSmrg case $tagname in 6775f5b92ffSmrg CC) ;; 6785f5b92ffSmrg *) 6795f5b92ffSmrg if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then 6805f5b92ffSmrg taglist="$taglist $tagname" 6815f5b92ffSmrg 6825f5b92ffSmrg # Evaluate the configuration. Be careful to quote the path 6835f5b92ffSmrg # and the sed script, to avoid splitting on whitespace, but 6845f5b92ffSmrg # also don't use non-portable quotes within backquotes within 6855f5b92ffSmrg # quotes we have to do it in 2 steps: 6865f5b92ffSmrg extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` 6875f5b92ffSmrg eval "$extractedcf" 6885f5b92ffSmrg else 6895f5b92ffSmrg func_error "ignoring unknown tag $tagname" 6905f5b92ffSmrg fi 6915f5b92ffSmrg ;; 6925f5b92ffSmrg esac 6935f5b92ffSmrg} 6945f5b92ffSmrg 6955f5b92ffSmrg# Parse options once, thoroughly. This comes as soon as possible in 6965f5b92ffSmrg# the script to make things like `libtool --version' happen quickly. 6975f5b92ffSmrg{ 69817a48c7cSmrg 6995f5b92ffSmrg # Shorthand for --mode=foo, only valid as the first argument 7005f5b92ffSmrg case $1 in 7015f5b92ffSmrg clean|clea|cle|cl) 7025f5b92ffSmrg shift; set dummy --mode clean ${1+"$@"}; shift 70317a48c7cSmrg ;; 7045f5b92ffSmrg compile|compil|compi|comp|com|co|c) 7055f5b92ffSmrg shift; set dummy --mode compile ${1+"$@"}; shift 70617a48c7cSmrg ;; 7075f5b92ffSmrg execute|execut|execu|exec|exe|ex|e) 7085f5b92ffSmrg shift; set dummy --mode execute ${1+"$@"}; shift 70917a48c7cSmrg ;; 7105f5b92ffSmrg finish|finis|fini|fin|fi|f) 7115f5b92ffSmrg shift; set dummy --mode finish ${1+"$@"}; shift 71217a48c7cSmrg ;; 7135f5b92ffSmrg install|instal|insta|inst|ins|in|i) 7145f5b92ffSmrg shift; set dummy --mode install ${1+"$@"}; shift 7155f5b92ffSmrg ;; 7165f5b92ffSmrg link|lin|li|l) 7175f5b92ffSmrg shift; set dummy --mode link ${1+"$@"}; shift 7185f5b92ffSmrg ;; 7195f5b92ffSmrg uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) 7205f5b92ffSmrg shift; set dummy --mode uninstall ${1+"$@"}; shift 72117a48c7cSmrg ;; 72217a48c7cSmrg esac 72317a48c7cSmrg 7245f5b92ffSmrg # Parse non-mode specific arguments: 7255f5b92ffSmrg while test "$#" -gt 0; do 7265f5b92ffSmrg opt="$1" 7275f5b92ffSmrg shift 72817a48c7cSmrg 7295f5b92ffSmrg case $opt in 7305f5b92ffSmrg --config) func_config ;; 73117a48c7cSmrg 7325f5b92ffSmrg --debug) preserve_args="$preserve_args $opt" 7335f5b92ffSmrg func_echo "enabling shell trace mode" 7345f5b92ffSmrg opt_debug='set -x' 7355f5b92ffSmrg $opt_debug 7365f5b92ffSmrg ;; 73717a48c7cSmrg 7385f5b92ffSmrg -dlopen) test "$#" -eq 0 && func_missing_arg "$opt" && break 7395f5b92ffSmrg execute_dlfiles="$execute_dlfiles $1" 7405f5b92ffSmrg shift 7415f5b92ffSmrg ;; 74217a48c7cSmrg 7435f5b92ffSmrg --dry-run | -n) opt_dry_run=: ;; 7445f5b92ffSmrg --features) func_features ;; 7455f5b92ffSmrg --finish) mode="finish" ;; 7465f5b92ffSmrg 7475f5b92ffSmrg --mode) test "$#" -eq 0 && func_missing_arg "$opt" && break 7485f5b92ffSmrg case $1 in 7495f5b92ffSmrg # Valid mode arguments: 7505f5b92ffSmrg clean) ;; 7515f5b92ffSmrg compile) ;; 7525f5b92ffSmrg execute) ;; 7535f5b92ffSmrg finish) ;; 7545f5b92ffSmrg install) ;; 7555f5b92ffSmrg link) ;; 7565f5b92ffSmrg relink) ;; 7575f5b92ffSmrg uninstall) ;; 7585f5b92ffSmrg 7595f5b92ffSmrg # Catch anything else as an error 7605f5b92ffSmrg *) func_error "invalid argument for $opt" 7615f5b92ffSmrg exit_cmd=exit 7625f5b92ffSmrg break 7635f5b92ffSmrg ;; 7645f5b92ffSmrg esac 7655f5b92ffSmrg 7665f5b92ffSmrg mode="$1" 7675f5b92ffSmrg shift 7685f5b92ffSmrg ;; 7695f5b92ffSmrg 7705f5b92ffSmrg --preserve-dup-deps) 7715f5b92ffSmrg opt_duplicate_deps=: ;; 7725f5b92ffSmrg 7735f5b92ffSmrg --quiet|--silent) preserve_args="$preserve_args $opt" 7745f5b92ffSmrg opt_silent=: 7755f5b92ffSmrg ;; 7765f5b92ffSmrg 7775f5b92ffSmrg --verbose| -v) preserve_args="$preserve_args $opt" 7785f5b92ffSmrg opt_silent=false 7795f5b92ffSmrg ;; 7805f5b92ffSmrg 7815f5b92ffSmrg --tag) test "$#" -eq 0 && func_missing_arg "$opt" && break 7825f5b92ffSmrg preserve_args="$preserve_args $opt $1" 7835f5b92ffSmrg func_enable_tag "$1" # tagname is set here 7845f5b92ffSmrg shift 7855f5b92ffSmrg ;; 7865f5b92ffSmrg 7875f5b92ffSmrg # Separate optargs to long options: 7885f5b92ffSmrg -dlopen=*|--mode=*|--tag=*) 7895f5b92ffSmrg func_opt_split "$opt" 7905f5b92ffSmrg set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"} 7915f5b92ffSmrg shift 7925f5b92ffSmrg ;; 7935f5b92ffSmrg 7945f5b92ffSmrg -\?|-h) func_usage ;; 7955f5b92ffSmrg --help) opt_help=: ;; 7965f5b92ffSmrg --version) func_version ;; 7975f5b92ffSmrg 7985f5b92ffSmrg -*) func_fatal_help "unrecognized option \`$opt'" ;; 7995f5b92ffSmrg 8005f5b92ffSmrg *) nonopt="$opt" 8015f5b92ffSmrg break 8025f5b92ffSmrg ;; 8035f5b92ffSmrg esac 8045f5b92ffSmrg done 8055f5b92ffSmrg 8065f5b92ffSmrg 8075f5b92ffSmrg case $host in 8085f5b92ffSmrg *cygwin* | *mingw* | *pw32* | *cegcc*) 8095f5b92ffSmrg # don't eliminate duplications in $postdeps and $predeps 8105f5b92ffSmrg opt_duplicate_compiler_generated_deps=: 81117a48c7cSmrg ;; 81217a48c7cSmrg *) 8135f5b92ffSmrg opt_duplicate_compiler_generated_deps=$opt_duplicate_deps 8145f5b92ffSmrg ;; 8155f5b92ffSmrg esac 81617a48c7cSmrg 8175f5b92ffSmrg # Having warned about all mis-specified options, bail out if 8185f5b92ffSmrg # anything was wrong. 8195f5b92ffSmrg $exit_cmd $EXIT_FAILURE 8205f5b92ffSmrg} 8215f5b92ffSmrg 8225f5b92ffSmrg# func_check_version_match 8235f5b92ffSmrg# Ensure that we are using m4 macros, and libtool script from the same 8245f5b92ffSmrg# release of libtool. 8255f5b92ffSmrgfunc_check_version_match () 8265f5b92ffSmrg{ 8275f5b92ffSmrg if test "$package_revision" != "$macro_revision"; then 8285f5b92ffSmrg if test "$VERSION" != "$macro_version"; then 8295f5b92ffSmrg if test -z "$macro_version"; then 8305f5b92ffSmrg cat >&2 <<_LT_EOF 8315f5b92ffSmrg$progname: Version mismatch error. This is $PACKAGE $VERSION, but the 8325f5b92ffSmrg$progname: definition of this LT_INIT comes from an older release. 8335f5b92ffSmrg$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION 8345f5b92ffSmrg$progname: and run autoconf again. 8355f5b92ffSmrg_LT_EOF 8365f5b92ffSmrg else 8375f5b92ffSmrg cat >&2 <<_LT_EOF 8385f5b92ffSmrg$progname: Version mismatch error. This is $PACKAGE $VERSION, but the 8395f5b92ffSmrg$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. 8405f5b92ffSmrg$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION 8415f5b92ffSmrg$progname: and run autoconf again. 8425f5b92ffSmrg_LT_EOF 84317a48c7cSmrg fi 8445f5b92ffSmrg else 8455f5b92ffSmrg cat >&2 <<_LT_EOF 8465f5b92ffSmrg$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, 8475f5b92ffSmrg$progname: but the definition of this LT_INIT comes from revision $macro_revision. 8485f5b92ffSmrg$progname: You should recreate aclocal.m4 with macros from revision $package_revision 8495f5b92ffSmrg$progname: of $PACKAGE $VERSION and run autoconf again. 8505f5b92ffSmrg_LT_EOF 8515f5b92ffSmrg fi 8525f5b92ffSmrg 8535f5b92ffSmrg exit $EXIT_MISMATCH 8545f5b92ffSmrg fi 8555f5b92ffSmrg} 8565f5b92ffSmrg 8575f5b92ffSmrg 8585f5b92ffSmrg## ----------- ## 8595f5b92ffSmrg## Main. ## 8605f5b92ffSmrg## ----------- ## 8615f5b92ffSmrg 8625f5b92ffSmrg$opt_help || { 8635f5b92ffSmrg # Sanity checks first: 8645f5b92ffSmrg func_check_version_match 8655f5b92ffSmrg 8665f5b92ffSmrg if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then 8675f5b92ffSmrg func_fatal_configuration "not configured to build any kind of library" 86817a48c7cSmrg fi 86917a48c7cSmrg 8705f5b92ffSmrg test -z "$mode" && func_fatal_error "error: you must specify a MODE." 8715f5b92ffSmrg 8725f5b92ffSmrg 8735f5b92ffSmrg # Darwin sucks 8745f5b92ffSmrg eval std_shrext=\"$shrext_cmds\" 8755f5b92ffSmrg 8765f5b92ffSmrg 87717a48c7cSmrg # Only execute mode is allowed to have -dlopen flags. 87817a48c7cSmrg if test -n "$execute_dlfiles" && test "$mode" != execute; then 8795f5b92ffSmrg func_error "unrecognized option \`-dlopen'" 8805f5b92ffSmrg $ECHO "$help" 1>&2 88117a48c7cSmrg exit $EXIT_FAILURE 88217a48c7cSmrg fi 88317a48c7cSmrg 88417a48c7cSmrg # Change the help message to a mode-specific one. 88517a48c7cSmrg generic_help="$help" 8865f5b92ffSmrg help="Try \`$progname --help --mode=$mode' for more information." 8875f5b92ffSmrg} 88817a48c7cSmrg 88917a48c7cSmrg 8905f5b92ffSmrg# func_lalib_p file 8915f5b92ffSmrg# True iff FILE is a libtool `.la' library or `.lo' object file. 8925f5b92ffSmrg# This function is only a basic sanity check; it will hardly flush out 8935f5b92ffSmrg# determined imposters. 8945f5b92ffSmrgfunc_lalib_p () 8955f5b92ffSmrg{ 8965f5b92ffSmrg test -f "$1" && 8975f5b92ffSmrg $SED -e 4q "$1" 2>/dev/null \ 8985f5b92ffSmrg | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 8995f5b92ffSmrg} 90017a48c7cSmrg 9015f5b92ffSmrg# func_lalib_unsafe_p file 9025f5b92ffSmrg# True iff FILE is a libtool `.la' library or `.lo' object file. 9035f5b92ffSmrg# This function implements the same check as func_lalib_p without 9045f5b92ffSmrg# resorting to external programs. To this end, it redirects stdin and 9055f5b92ffSmrg# closes it afterwards, without saving the original file descriptor. 9065f5b92ffSmrg# As a safety measure, use it only where a negative result would be 9075f5b92ffSmrg# fatal anyway. Works if `file' does not exist. 9085f5b92ffSmrgfunc_lalib_unsafe_p () 9095f5b92ffSmrg{ 9105f5b92ffSmrg lalib_p=no 9115f5b92ffSmrg if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then 9125f5b92ffSmrg for lalib_p_l in 1 2 3 4 9135f5b92ffSmrg do 9145f5b92ffSmrg read lalib_p_line 9155f5b92ffSmrg case "$lalib_p_line" in 9165f5b92ffSmrg \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; 9175f5b92ffSmrg esac 9185f5b92ffSmrg done 9195f5b92ffSmrg exec 0<&5 5<&- 9205f5b92ffSmrg fi 9215f5b92ffSmrg test "$lalib_p" = yes 9225f5b92ffSmrg} 92317a48c7cSmrg 9245f5b92ffSmrg# func_ltwrapper_script_p file 9255f5b92ffSmrg# True iff FILE is a libtool wrapper script 9265f5b92ffSmrg# This function is only a basic sanity check; it will hardly flush out 9275f5b92ffSmrg# determined imposters. 9285f5b92ffSmrgfunc_ltwrapper_script_p () 9295f5b92ffSmrg{ 9305f5b92ffSmrg func_lalib_p "$1" 9315f5b92ffSmrg} 93217a48c7cSmrg 9335f5b92ffSmrg# func_ltwrapper_executable_p file 9345f5b92ffSmrg# True iff FILE is a libtool wrapper executable 9355f5b92ffSmrg# This function is only a basic sanity check; it will hardly flush out 9365f5b92ffSmrg# determined imposters. 9375f5b92ffSmrgfunc_ltwrapper_executable_p () 9385f5b92ffSmrg{ 9395f5b92ffSmrg func_ltwrapper_exec_suffix= 9405f5b92ffSmrg case $1 in 9415f5b92ffSmrg *.exe) ;; 9425f5b92ffSmrg *) func_ltwrapper_exec_suffix=.exe ;; 9435f5b92ffSmrg esac 9445f5b92ffSmrg $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 9455f5b92ffSmrg} 94617a48c7cSmrg 9475f5b92ffSmrg# func_ltwrapper_scriptname file 9485f5b92ffSmrg# Assumes file is an ltwrapper_executable 9495f5b92ffSmrg# uses $file to determine the appropriate filename for a 9505f5b92ffSmrg# temporary ltwrapper_script. 9515f5b92ffSmrgfunc_ltwrapper_scriptname () 9525f5b92ffSmrg{ 9535f5b92ffSmrg func_ltwrapper_scriptname_result="" 9545f5b92ffSmrg if func_ltwrapper_executable_p "$1"; then 9555f5b92ffSmrg func_dirname_and_basename "$1" "" "." 9565f5b92ffSmrg func_stripname '' '.exe' "$func_basename_result" 9575f5b92ffSmrg func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" 9585f5b92ffSmrg fi 9595f5b92ffSmrg} 9605f5b92ffSmrg 9615f5b92ffSmrg# func_ltwrapper_p file 9625f5b92ffSmrg# True iff FILE is a libtool wrapper script or wrapper executable 9635f5b92ffSmrg# This function is only a basic sanity check; it will hardly flush out 9645f5b92ffSmrg# determined imposters. 9655f5b92ffSmrgfunc_ltwrapper_p () 9665f5b92ffSmrg{ 9675f5b92ffSmrg func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" 9685f5b92ffSmrg} 9695f5b92ffSmrg 9705f5b92ffSmrg 9715f5b92ffSmrg# func_execute_cmds commands fail_cmd 9725f5b92ffSmrg# Execute tilde-delimited COMMANDS. 9735f5b92ffSmrg# If FAIL_CMD is given, eval that upon failure. 9745f5b92ffSmrg# FAIL_CMD may read-access the current command in variable CMD! 9755f5b92ffSmrgfunc_execute_cmds () 9765f5b92ffSmrg{ 9775f5b92ffSmrg $opt_debug 9785f5b92ffSmrg save_ifs=$IFS; IFS='~' 9795f5b92ffSmrg for cmd in $1; do 9805f5b92ffSmrg IFS=$save_ifs 9815f5b92ffSmrg eval cmd=\"$cmd\" 9825f5b92ffSmrg func_show_eval "$cmd" "${2-:}" 9835f5b92ffSmrg done 9845f5b92ffSmrg IFS=$save_ifs 9855f5b92ffSmrg} 9865f5b92ffSmrg 9875f5b92ffSmrg 9885f5b92ffSmrg# func_source file 9895f5b92ffSmrg# Source FILE, adding directory component if necessary. 9905f5b92ffSmrg# Note that it is not necessary on cygwin/mingw to append a dot to 9915f5b92ffSmrg# FILE even if both FILE and FILE.exe exist: automatic-append-.exe 9925f5b92ffSmrg# behavior happens only for exec(3), not for open(2)! Also, sourcing 9935f5b92ffSmrg# `FILE.' does not work on cygwin managed mounts. 9945f5b92ffSmrgfunc_source () 9955f5b92ffSmrg{ 9965f5b92ffSmrg $opt_debug 9975f5b92ffSmrg case $1 in 9985f5b92ffSmrg */* | *\\*) . "$1" ;; 9995f5b92ffSmrg *) . "./$1" ;; 10005f5b92ffSmrg esac 10015f5b92ffSmrg} 10025f5b92ffSmrg 10035f5b92ffSmrg 10045f5b92ffSmrg# func_infer_tag arg 10055f5b92ffSmrg# Infer tagged configuration to use if any are available and 10065f5b92ffSmrg# if one wasn't chosen via the "--tag" command line option. 10075f5b92ffSmrg# Only attempt this if the compiler in the base compile 10085f5b92ffSmrg# command doesn't match the default compiler. 10095f5b92ffSmrg# arg is usually of the form 'gcc ...' 10105f5b92ffSmrgfunc_infer_tag () 10115f5b92ffSmrg{ 10125f5b92ffSmrg $opt_debug 10135f5b92ffSmrg if test -n "$available_tags" && test -z "$tagname"; then 10145f5b92ffSmrg CC_quoted= 10155f5b92ffSmrg for arg in $CC; do 10165f5b92ffSmrg func_quote_for_eval "$arg" 10175f5b92ffSmrg CC_quoted="$CC_quoted $func_quote_for_eval_result" 10185f5b92ffSmrg done 10195f5b92ffSmrg case $@ in 10205f5b92ffSmrg # Blanks in the command may have been stripped by the calling shell, 10215f5b92ffSmrg # but not from the CC environment variable when configure was run. 10225f5b92ffSmrg " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;; 10235f5b92ffSmrg # Blanks at the start of $base_compile will cause this to fail 10245f5b92ffSmrg # if we don't check for them as well. 10255f5b92ffSmrg *) 10265f5b92ffSmrg for z in $available_tags; do 10275f5b92ffSmrg if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then 10285f5b92ffSmrg # Evaluate the configuration. 10295f5b92ffSmrg eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" 10305f5b92ffSmrg CC_quoted= 10315f5b92ffSmrg for arg in $CC; do 10325f5b92ffSmrg # Double-quote args containing other shell metacharacters. 10335f5b92ffSmrg func_quote_for_eval "$arg" 10345f5b92ffSmrg CC_quoted="$CC_quoted $func_quote_for_eval_result" 10355f5b92ffSmrg done 10365f5b92ffSmrg case "$@ " in 10375f5b92ffSmrg " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) 10385f5b92ffSmrg # The compiler in the base compile command matches 10395f5b92ffSmrg # the one in the tagged configuration. 10405f5b92ffSmrg # Assume this is the tagged configuration we want. 10415f5b92ffSmrg tagname=$z 10425f5b92ffSmrg break 10435f5b92ffSmrg ;; 10445f5b92ffSmrg esac 10455f5b92ffSmrg fi 10465f5b92ffSmrg done 10475f5b92ffSmrg # If $tagname still isn't set, then no tagged configuration 10485f5b92ffSmrg # was found and let the user know that the "--tag" command 10495f5b92ffSmrg # line option must be used. 10505f5b92ffSmrg if test -z "$tagname"; then 10515f5b92ffSmrg func_echo "unable to infer tagged configuration" 10525f5b92ffSmrg func_fatal_error "specify a tag with \`--tag'" 10535f5b92ffSmrg# else 10545f5b92ffSmrg# func_verbose "using $tagname tagged configuration" 10555f5b92ffSmrg fi 10565f5b92ffSmrg ;; 10575f5b92ffSmrg esac 10585f5b92ffSmrg fi 10595f5b92ffSmrg} 10605f5b92ffSmrg 10615f5b92ffSmrg 10625f5b92ffSmrg 10635f5b92ffSmrg# func_write_libtool_object output_name pic_name nonpic_name 10645f5b92ffSmrg# Create a libtool object file (analogous to a ".la" file), 10655f5b92ffSmrg# but don't create it if we're doing a dry run. 10665f5b92ffSmrgfunc_write_libtool_object () 10675f5b92ffSmrg{ 10685f5b92ffSmrg write_libobj=${1} 10695f5b92ffSmrg if test "$build_libtool_libs" = yes; then 10705f5b92ffSmrg write_lobj=\'${2}\' 10715f5b92ffSmrg else 10725f5b92ffSmrg write_lobj=none 10735f5b92ffSmrg fi 10745f5b92ffSmrg 10755f5b92ffSmrg if test "$build_old_libs" = yes; then 10765f5b92ffSmrg write_oldobj=\'${3}\' 10775f5b92ffSmrg else 10785f5b92ffSmrg write_oldobj=none 10795f5b92ffSmrg fi 10805f5b92ffSmrg 10815f5b92ffSmrg $opt_dry_run || { 10825f5b92ffSmrg cat >${write_libobj}T <<EOF 10835f5b92ffSmrg# $write_libobj - a libtool object file 10845f5b92ffSmrg# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 10855f5b92ffSmrg# 10865f5b92ffSmrg# Please DO NOT delete this file! 10875f5b92ffSmrg# It is necessary for linking the library. 10885f5b92ffSmrg 10895f5b92ffSmrg# Name of the PIC object. 10905f5b92ffSmrgpic_object=$write_lobj 10915f5b92ffSmrg 10925f5b92ffSmrg# Name of the non-PIC object 10935f5b92ffSmrgnon_pic_object=$write_oldobj 10945f5b92ffSmrg 10955f5b92ffSmrgEOF 10965f5b92ffSmrg $MV "${write_libobj}T" "${write_libobj}" 10975f5b92ffSmrg } 10985f5b92ffSmrg} 10995f5b92ffSmrg 11005f5b92ffSmrg# func_mode_compile arg... 11015f5b92ffSmrgfunc_mode_compile () 11025f5b92ffSmrg{ 11035f5b92ffSmrg $opt_debug 11045f5b92ffSmrg # Get the compilation command and the source file. 11055f5b92ffSmrg base_compile= 11065f5b92ffSmrg srcfile="$nonopt" # always keep a non-empty value in "srcfile" 11075f5b92ffSmrg suppress_opt=yes 11085f5b92ffSmrg suppress_output= 11095f5b92ffSmrg arg_mode=normal 11105f5b92ffSmrg libobj= 11115f5b92ffSmrg later= 11125f5b92ffSmrg pie_flag= 11135f5b92ffSmrg 11145f5b92ffSmrg for arg 11155f5b92ffSmrg do 11165f5b92ffSmrg case $arg_mode in 11175f5b92ffSmrg arg ) 11185f5b92ffSmrg # do not "continue". Instead, add this to base_compile 11195f5b92ffSmrg lastarg="$arg" 11205f5b92ffSmrg arg_mode=normal 11215f5b92ffSmrg ;; 11225f5b92ffSmrg 11235f5b92ffSmrg target ) 11245f5b92ffSmrg libobj="$arg" 11255f5b92ffSmrg arg_mode=normal 11265f5b92ffSmrg continue 11275f5b92ffSmrg ;; 11285f5b92ffSmrg 11295f5b92ffSmrg normal ) 11305f5b92ffSmrg # Accept any command-line options. 11315f5b92ffSmrg case $arg in 11325f5b92ffSmrg -o) 11335f5b92ffSmrg test -n "$libobj" && \ 11345f5b92ffSmrg func_fatal_error "you cannot specify \`-o' more than once" 11355f5b92ffSmrg arg_mode=target 11365f5b92ffSmrg continue 11375f5b92ffSmrg ;; 11385f5b92ffSmrg 11395f5b92ffSmrg -pie | -fpie | -fPIE) 11405f5b92ffSmrg pie_flag="$pie_flag $arg" 11415f5b92ffSmrg continue 11425f5b92ffSmrg ;; 11435f5b92ffSmrg 11445f5b92ffSmrg -shared | -static | -prefer-pic | -prefer-non-pic) 11455f5b92ffSmrg later="$later $arg" 11465f5b92ffSmrg continue 11475f5b92ffSmrg ;; 11485f5b92ffSmrg 11495f5b92ffSmrg -no-suppress) 115017a48c7cSmrg suppress_opt=no 115117a48c7cSmrg continue 115217a48c7cSmrg ;; 115317a48c7cSmrg 115417a48c7cSmrg -Xcompiler) 115517a48c7cSmrg arg_mode=arg # the next one goes into the "base_compile" arg list 115617a48c7cSmrg continue # The current "srcfile" will either be retained or 115717a48c7cSmrg ;; # replaced later. I would guess that would be a bug. 115817a48c7cSmrg 115917a48c7cSmrg -Wc,*) 11605f5b92ffSmrg func_stripname '-Wc,' '' "$arg" 11615f5b92ffSmrg args=$func_stripname_result 116217a48c7cSmrg lastarg= 116317a48c7cSmrg save_ifs="$IFS"; IFS=',' 11645f5b92ffSmrg for arg in $args; do 116517a48c7cSmrg IFS="$save_ifs" 11665f5b92ffSmrg func_quote_for_eval "$arg" 11675f5b92ffSmrg lastarg="$lastarg $func_quote_for_eval_result" 116817a48c7cSmrg done 116917a48c7cSmrg IFS="$save_ifs" 11705f5b92ffSmrg func_stripname ' ' '' "$lastarg" 11715f5b92ffSmrg lastarg=$func_stripname_result 117217a48c7cSmrg 117317a48c7cSmrg # Add the arguments to base_compile. 117417a48c7cSmrg base_compile="$base_compile $lastarg" 117517a48c7cSmrg continue 117617a48c7cSmrg ;; 117717a48c7cSmrg 11785f5b92ffSmrg *) 117917a48c7cSmrg # Accept the current argument as the source file. 118017a48c7cSmrg # The previous "srcfile" becomes the current argument. 118117a48c7cSmrg # 118217a48c7cSmrg lastarg="$srcfile" 118317a48c7cSmrg srcfile="$arg" 118417a48c7cSmrg ;; 118517a48c7cSmrg esac # case $arg 118617a48c7cSmrg ;; 118717a48c7cSmrg esac # case $arg_mode 118817a48c7cSmrg 118917a48c7cSmrg # Aesthetically quote the previous argument. 11905f5b92ffSmrg func_quote_for_eval "$lastarg" 11915f5b92ffSmrg base_compile="$base_compile $func_quote_for_eval_result" 119217a48c7cSmrg done # for arg 119317a48c7cSmrg 119417a48c7cSmrg case $arg_mode in 119517a48c7cSmrg arg) 11965f5b92ffSmrg func_fatal_error "you must specify an argument for -Xcompile" 119717a48c7cSmrg ;; 119817a48c7cSmrg target) 11995f5b92ffSmrg func_fatal_error "you must specify a target with \`-o'" 120017a48c7cSmrg ;; 120117a48c7cSmrg *) 120217a48c7cSmrg # Get the name of the library object. 12035f5b92ffSmrg test -z "$libobj" && { 12045f5b92ffSmrg func_basename "$srcfile" 12055f5b92ffSmrg libobj="$func_basename_result" 12065f5b92ffSmrg } 120717a48c7cSmrg ;; 120817a48c7cSmrg esac 120917a48c7cSmrg 121017a48c7cSmrg # Recognize several different file suffixes. 121117a48c7cSmrg # If the user specifies -o file.o, it is replaced with file.lo 121217a48c7cSmrg case $libobj in 12135f5b92ffSmrg *.[cCFSifmso] | \ 12145f5b92ffSmrg *.ada | *.adb | *.ads | *.asm | \ 12155f5b92ffSmrg *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ 12165f5b92ffSmrg *.[fF][09]? | *.for | *.java | *.obj | *.sx) 12175f5b92ffSmrg func_xform "$libobj" 12185f5b92ffSmrg libobj=$func_xform_result 12195f5b92ffSmrg ;; 122017a48c7cSmrg esac 122117a48c7cSmrg 122217a48c7cSmrg case $libobj in 12235f5b92ffSmrg *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; 122417a48c7cSmrg *) 12255f5b92ffSmrg func_fatal_error "cannot determine name of library object from \`$libobj'" 122617a48c7cSmrg ;; 122717a48c7cSmrg esac 122817a48c7cSmrg 122917a48c7cSmrg func_infer_tag $base_compile 123017a48c7cSmrg 123117a48c7cSmrg for arg in $later; do 123217a48c7cSmrg case $arg in 12335f5b92ffSmrg -shared) 12345f5b92ffSmrg test "$build_libtool_libs" != yes && \ 12355f5b92ffSmrg func_fatal_configuration "can not build a shared library" 12365f5b92ffSmrg build_old_libs=no 12375f5b92ffSmrg continue 12385f5b92ffSmrg ;; 12395f5b92ffSmrg 124017a48c7cSmrg -static) 12415f5b92ffSmrg build_libtool_libs=no 124217a48c7cSmrg build_old_libs=yes 124317a48c7cSmrg continue 124417a48c7cSmrg ;; 124517a48c7cSmrg 124617a48c7cSmrg -prefer-pic) 124717a48c7cSmrg pic_mode=yes 124817a48c7cSmrg continue 124917a48c7cSmrg ;; 125017a48c7cSmrg 125117a48c7cSmrg -prefer-non-pic) 125217a48c7cSmrg pic_mode=no 125317a48c7cSmrg continue 125417a48c7cSmrg ;; 125517a48c7cSmrg esac 125617a48c7cSmrg done 125717a48c7cSmrg 12585f5b92ffSmrg func_quote_for_eval "$libobj" 12595f5b92ffSmrg test "X$libobj" != "X$func_quote_for_eval_result" \ 12605f5b92ffSmrg && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ 12615f5b92ffSmrg && func_warning "libobj name \`$libobj' may not contain shell special characters." 12625f5b92ffSmrg func_dirname_and_basename "$obj" "/" "" 12635f5b92ffSmrg objname="$func_basename_result" 12645f5b92ffSmrg xdir="$func_dirname_result" 126517a48c7cSmrg lobj=${xdir}$objdir/$objname 126617a48c7cSmrg 12675f5b92ffSmrg test -z "$base_compile" && \ 12685f5b92ffSmrg func_fatal_help "you must specify a compilation command" 126917a48c7cSmrg 127017a48c7cSmrg # Delete any leftover library objects. 127117a48c7cSmrg if test "$build_old_libs" = yes; then 127217a48c7cSmrg removelist="$obj $lobj $libobj ${libobj}T" 127317a48c7cSmrg else 127417a48c7cSmrg removelist="$lobj $libobj ${libobj}T" 127517a48c7cSmrg fi 127617a48c7cSmrg 127717a48c7cSmrg # On Cygwin there's no "real" PIC flag so we must build both object types 127817a48c7cSmrg case $host_os in 12795f5b92ffSmrg cygwin* | mingw* | pw32* | os2* | cegcc*) 128017a48c7cSmrg pic_mode=default 128117a48c7cSmrg ;; 128217a48c7cSmrg esac 128317a48c7cSmrg if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then 128417a48c7cSmrg # non-PIC code in shared libraries is not supported 128517a48c7cSmrg pic_mode=default 128617a48c7cSmrg fi 128717a48c7cSmrg 128817a48c7cSmrg # Calculate the filename of the output object if compiler does 128917a48c7cSmrg # not support -o with -c 129017a48c7cSmrg if test "$compiler_c_o" = no; then 12915f5b92ffSmrg output_obj=`$ECHO "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} 129217a48c7cSmrg lockfile="$output_obj.lock" 129317a48c7cSmrg else 129417a48c7cSmrg output_obj= 129517a48c7cSmrg need_locks=no 129617a48c7cSmrg lockfile= 129717a48c7cSmrg fi 129817a48c7cSmrg 129917a48c7cSmrg # Lock this critical section if it is needed 130017a48c7cSmrg # We use this script file to make the link, it avoids creating a new file 130117a48c7cSmrg if test "$need_locks" = yes; then 13025f5b92ffSmrg until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do 13035f5b92ffSmrg func_echo "Waiting for $lockfile to be removed" 130417a48c7cSmrg sleep 2 130517a48c7cSmrg done 130617a48c7cSmrg elif test "$need_locks" = warn; then 130717a48c7cSmrg if test -f "$lockfile"; then 13085f5b92ffSmrg $ECHO "\ 130917a48c7cSmrg*** ERROR, $lockfile exists and contains: 131017a48c7cSmrg`cat $lockfile 2>/dev/null` 131117a48c7cSmrg 131217a48c7cSmrgThis indicates that another process is trying to use the same 131317a48c7cSmrgtemporary object file, and libtool could not work around it because 131417a48c7cSmrgyour compiler does not support \`-c' and \`-o' together. If you 131517a48c7cSmrgrepeat this compilation, it may succeed, by chance, but you had better 131617a48c7cSmrgavoid parallel builds (make -j) in this platform, or get a better 131717a48c7cSmrgcompiler." 131817a48c7cSmrg 13195f5b92ffSmrg $opt_dry_run || $RM $removelist 132017a48c7cSmrg exit $EXIT_FAILURE 132117a48c7cSmrg fi 13225f5b92ffSmrg removelist="$removelist $output_obj" 13235f5b92ffSmrg $ECHO "$srcfile" > "$lockfile" 132417a48c7cSmrg fi 132517a48c7cSmrg 13265f5b92ffSmrg $opt_dry_run || $RM $removelist 13275f5b92ffSmrg removelist="$removelist $lockfile" 13285f5b92ffSmrg trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 13295f5b92ffSmrg 133017a48c7cSmrg if test -n "$fix_srcfile_path"; then 133117a48c7cSmrg eval srcfile=\"$fix_srcfile_path\" 133217a48c7cSmrg fi 13335f5b92ffSmrg func_quote_for_eval "$srcfile" 13345f5b92ffSmrg qsrcfile=$func_quote_for_eval_result 133517a48c7cSmrg 133617a48c7cSmrg # Only build a PIC object if we are building libtool libraries. 133717a48c7cSmrg if test "$build_libtool_libs" = yes; then 133817a48c7cSmrg # Without this assignment, base_compile gets emptied. 133917a48c7cSmrg fbsd_hideous_sh_bug=$base_compile 134017a48c7cSmrg 134117a48c7cSmrg if test "$pic_mode" != no; then 134217a48c7cSmrg command="$base_compile $qsrcfile $pic_flag" 134317a48c7cSmrg else 134417a48c7cSmrg # Don't build PIC code 134517a48c7cSmrg command="$base_compile $qsrcfile" 134617a48c7cSmrg fi 134717a48c7cSmrg 13485f5b92ffSmrg func_mkdir_p "$xdir$objdir" 134917a48c7cSmrg 135017a48c7cSmrg if test -z "$output_obj"; then 135117a48c7cSmrg # Place PIC objects in $objdir 135217a48c7cSmrg command="$command -o $lobj" 135317a48c7cSmrg fi 135417a48c7cSmrg 13555f5b92ffSmrg func_show_eval_locale "$command" \ 13565f5b92ffSmrg 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' 135717a48c7cSmrg 135817a48c7cSmrg if test "$need_locks" = warn && 135917a48c7cSmrg test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 13605f5b92ffSmrg $ECHO "\ 136117a48c7cSmrg*** ERROR, $lockfile contains: 136217a48c7cSmrg`cat $lockfile 2>/dev/null` 136317a48c7cSmrg 136417a48c7cSmrgbut it should contain: 136517a48c7cSmrg$srcfile 136617a48c7cSmrg 136717a48c7cSmrgThis indicates that another process is trying to use the same 136817a48c7cSmrgtemporary object file, and libtool could not work around it because 136917a48c7cSmrgyour compiler does not support \`-c' and \`-o' together. If you 137017a48c7cSmrgrepeat this compilation, it may succeed, by chance, but you had better 137117a48c7cSmrgavoid parallel builds (make -j) in this platform, or get a better 137217a48c7cSmrgcompiler." 137317a48c7cSmrg 13745f5b92ffSmrg $opt_dry_run || $RM $removelist 137517a48c7cSmrg exit $EXIT_FAILURE 137617a48c7cSmrg fi 137717a48c7cSmrg 137817a48c7cSmrg # Just move the object if needed, then go on to compile the next one 137917a48c7cSmrg if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then 13805f5b92ffSmrg func_show_eval '$MV "$output_obj" "$lobj"' \ 13815f5b92ffSmrg 'error=$?; $opt_dry_run || $RM $removelist; exit $error' 138217a48c7cSmrg fi 138317a48c7cSmrg 138417a48c7cSmrg # Allow error messages only from the first compilation. 138517a48c7cSmrg if test "$suppress_opt" = yes; then 13865f5b92ffSmrg suppress_output=' >/dev/null 2>&1' 138717a48c7cSmrg fi 138817a48c7cSmrg fi 138917a48c7cSmrg 139017a48c7cSmrg # Only build a position-dependent object if we build old libraries. 139117a48c7cSmrg if test "$build_old_libs" = yes; then 139217a48c7cSmrg if test "$pic_mode" != yes; then 139317a48c7cSmrg # Don't build PIC code 13945f5b92ffSmrg command="$base_compile $qsrcfile$pie_flag" 139517a48c7cSmrg else 139617a48c7cSmrg command="$base_compile $qsrcfile $pic_flag" 139717a48c7cSmrg fi 139817a48c7cSmrg if test "$compiler_c_o" = yes; then 139917a48c7cSmrg command="$command -o $obj" 140017a48c7cSmrg fi 140117a48c7cSmrg 140217a48c7cSmrg # Suppress compiler output if we already did a PIC compilation. 140317a48c7cSmrg command="$command$suppress_output" 14045f5b92ffSmrg func_show_eval_locale "$command" \ 14055f5b92ffSmrg '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 140617a48c7cSmrg 140717a48c7cSmrg if test "$need_locks" = warn && 140817a48c7cSmrg test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 14095f5b92ffSmrg $ECHO "\ 141017a48c7cSmrg*** ERROR, $lockfile contains: 141117a48c7cSmrg`cat $lockfile 2>/dev/null` 141217a48c7cSmrg 141317a48c7cSmrgbut it should contain: 141417a48c7cSmrg$srcfile 141517a48c7cSmrg 141617a48c7cSmrgThis indicates that another process is trying to use the same 141717a48c7cSmrgtemporary object file, and libtool could not work around it because 141817a48c7cSmrgyour compiler does not support \`-c' and \`-o' together. If you 141917a48c7cSmrgrepeat this compilation, it may succeed, by chance, but you had better 142017a48c7cSmrgavoid parallel builds (make -j) in this platform, or get a better 142117a48c7cSmrgcompiler." 142217a48c7cSmrg 14235f5b92ffSmrg $opt_dry_run || $RM $removelist 142417a48c7cSmrg exit $EXIT_FAILURE 142517a48c7cSmrg fi 142617a48c7cSmrg 142717a48c7cSmrg # Just move the object if needed 142817a48c7cSmrg if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then 14295f5b92ffSmrg func_show_eval '$MV "$output_obj" "$obj"' \ 14305f5b92ffSmrg 'error=$?; $opt_dry_run || $RM $removelist; exit $error' 143117a48c7cSmrg fi 143217a48c7cSmrg fi 143317a48c7cSmrg 14345f5b92ffSmrg $opt_dry_run || { 14355f5b92ffSmrg func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" 143617a48c7cSmrg 14375f5b92ffSmrg # Unlock the critical section if it was locked 14385f5b92ffSmrg if test "$need_locks" != no; then 14395f5b92ffSmrg removelist=$lockfile 14405f5b92ffSmrg $RM "$lockfile" 14415f5b92ffSmrg fi 14425f5b92ffSmrg } 144317a48c7cSmrg 144417a48c7cSmrg exit $EXIT_SUCCESS 14455f5b92ffSmrg} 144617a48c7cSmrg 14475f5b92ffSmrg$opt_help || { 14485f5b92ffSmrgtest "$mode" = compile && func_mode_compile ${1+"$@"} 14495f5b92ffSmrg} 145017a48c7cSmrg 14515f5b92ffSmrgfunc_mode_help () 14525f5b92ffSmrg{ 14535f5b92ffSmrg # We need to display help for each of the modes. 14545f5b92ffSmrg case $mode in 14555f5b92ffSmrg "") 14565f5b92ffSmrg # Generic help is extracted from the usage comments 14575f5b92ffSmrg # at the start of this file. 14585f5b92ffSmrg func_help 14595f5b92ffSmrg ;; 146017a48c7cSmrg 14615f5b92ffSmrg clean) 14625f5b92ffSmrg $ECHO \ 14635f5b92ffSmrg"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... 146417a48c7cSmrg 14655f5b92ffSmrgRemove files from the build directory. 146617a48c7cSmrg 14675f5b92ffSmrgRM is the name of the program to use to delete files associated with each FILE 14685f5b92ffSmrg(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 14695f5b92ffSmrgto RM. 147017a48c7cSmrg 14715f5b92ffSmrgIf FILE is a libtool library, object or program, all the files associated 14725f5b92ffSmrgwith it are deleted. Otherwise, only FILE itself is deleted using RM." 14735f5b92ffSmrg ;; 147417a48c7cSmrg 14755f5b92ffSmrg compile) 14765f5b92ffSmrg $ECHO \ 14775f5b92ffSmrg"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE 147817a48c7cSmrg 14795f5b92ffSmrgCompile a source file into a libtool library object. 148017a48c7cSmrg 14815f5b92ffSmrgThis mode accepts the following additional options: 148217a48c7cSmrg 14835f5b92ffSmrg -o OUTPUT-FILE set the output file name to OUTPUT-FILE 14845f5b92ffSmrg -no-suppress do not suppress compiler output for multiple passes 14855f5b92ffSmrg -prefer-pic try to building PIC objects only 14865f5b92ffSmrg -prefer-non-pic try to building non-PIC objects only 14875f5b92ffSmrg -shared do not build a \`.o' file suitable for static linking 14885f5b92ffSmrg -static only build a \`.o' file suitable for static linking 148917a48c7cSmrg 14905f5b92ffSmrgCOMPILE-COMMAND is a command to be used in creating a \`standard' object file 14915f5b92ffSmrgfrom the given SOURCEFILE. 149217a48c7cSmrg 14935f5b92ffSmrgThe output file name is determined by removing the directory component from 14945f5b92ffSmrgSOURCEFILE, then substituting the C source code suffix \`.c' with the 14955f5b92ffSmrglibrary object suffix, \`.lo'." 14965f5b92ffSmrg ;; 149717a48c7cSmrg 14985f5b92ffSmrg execute) 14995f5b92ffSmrg $ECHO \ 15005f5b92ffSmrg"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... 150117a48c7cSmrg 15025f5b92ffSmrgAutomatically set library path, then run a program. 150317a48c7cSmrg 15045f5b92ffSmrgThis mode accepts the following additional options: 150517a48c7cSmrg 15065f5b92ffSmrg -dlopen FILE add the directory containing FILE to the library path 150717a48c7cSmrg 15085f5b92ffSmrgThis mode sets the library path environment variable according to \`-dlopen' 15095f5b92ffSmrgflags. 151017a48c7cSmrg 15115f5b92ffSmrgIf any of the ARGS are libtool executable wrappers, then they are translated 15125f5b92ffSmrginto their corresponding uninstalled binary, and any of their required library 15135f5b92ffSmrgdirectories are added to the library path. 151417a48c7cSmrg 15155f5b92ffSmrgThen, COMMAND is executed, with ARGS as arguments." 15165f5b92ffSmrg ;; 151717a48c7cSmrg 15185f5b92ffSmrg finish) 15195f5b92ffSmrg $ECHO \ 15205f5b92ffSmrg"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... 152117a48c7cSmrg 15225f5b92ffSmrgComplete the installation of libtool libraries. 152317a48c7cSmrg 15245f5b92ffSmrgEach LIBDIR is a directory that contains libtool libraries. 152517a48c7cSmrg 15265f5b92ffSmrgThe commands that this mode executes may require superuser privileges. Use 15275f5b92ffSmrgthe \`--dry-run' option if you just want to see what would be executed." 15285f5b92ffSmrg ;; 152917a48c7cSmrg 15305f5b92ffSmrg install) 15315f5b92ffSmrg $ECHO \ 15325f5b92ffSmrg"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... 153317a48c7cSmrg 15345f5b92ffSmrgInstall executables or libraries. 153517a48c7cSmrg 15365f5b92ffSmrgINSTALL-COMMAND is the installation command. The first component should be 15375f5b92ffSmrgeither the \`install' or \`cp' program. 153817a48c7cSmrg 15395f5b92ffSmrgThe following components of INSTALL-COMMAND are treated specially: 154017a48c7cSmrg 15415f5b92ffSmrg -inst-prefix PREFIX-DIR Use PREFIX-DIR as a staging area for installation 154217a48c7cSmrg 15435f5b92ffSmrgThe rest of the components are interpreted as arguments to that command (only 15445f5b92ffSmrgBSD-compatible install options are recognized)." 15455f5b92ffSmrg ;; 154617a48c7cSmrg 15475f5b92ffSmrg link) 15485f5b92ffSmrg $ECHO \ 15495f5b92ffSmrg"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... 155017a48c7cSmrg 15515f5b92ffSmrgLink object files or libraries together to form another library, or to 15525f5b92ffSmrgcreate an executable program. 155317a48c7cSmrg 15545f5b92ffSmrgLINK-COMMAND is a command using the C compiler that you would use to create 15555f5b92ffSmrga program from several object files. 155617a48c7cSmrg 15575f5b92ffSmrgThe following components of LINK-COMMAND are treated specially: 155817a48c7cSmrg 15595f5b92ffSmrg -all-static do not do any dynamic linking at all 15605f5b92ffSmrg -avoid-version do not add a version suffix if possible 15615f5b92ffSmrg -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime 15625f5b92ffSmrg -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols 15635f5b92ffSmrg -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) 15645f5b92ffSmrg -export-symbols SYMFILE 15655f5b92ffSmrg try to export only the symbols listed in SYMFILE 15665f5b92ffSmrg -export-symbols-regex REGEX 15675f5b92ffSmrg try to export only the symbols matching REGEX 15685f5b92ffSmrg -LLIBDIR search LIBDIR for required installed libraries 15695f5b92ffSmrg -lNAME OUTPUT-FILE requires the installed library libNAME 15705f5b92ffSmrg -module build a library that can dlopened 15715f5b92ffSmrg -no-fast-install disable the fast-install mode 15725f5b92ffSmrg -no-install link a not-installable executable 15735f5b92ffSmrg -no-undefined declare that a library does not refer to external symbols 15745f5b92ffSmrg -o OUTPUT-FILE create OUTPUT-FILE from the specified objects 15755f5b92ffSmrg -objectlist FILE Use a list of object files found in FILE to specify objects 15765f5b92ffSmrg -precious-files-regex REGEX 15775f5b92ffSmrg don't remove output files matching REGEX 15785f5b92ffSmrg -release RELEASE specify package release information 15795f5b92ffSmrg -rpath LIBDIR the created library will eventually be installed in LIBDIR 15805f5b92ffSmrg -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries 15815f5b92ffSmrg -shared only do dynamic linking of libtool libraries 15825f5b92ffSmrg -shrext SUFFIX override the standard shared library file extension 15835f5b92ffSmrg -static do not do any dynamic linking of uninstalled libtool libraries 15845f5b92ffSmrg -static-libtool-libs 15855f5b92ffSmrg do not do any dynamic linking of libtool libraries 15865f5b92ffSmrg -version-info CURRENT[:REVISION[:AGE]] 15875f5b92ffSmrg specify library version info [each variable defaults to 0] 15885f5b92ffSmrg -weak LIBNAME declare that the target provides the LIBNAME interface 158917a48c7cSmrg 15905f5b92ffSmrgAll other options (arguments beginning with \`-') are ignored. 159117a48c7cSmrg 15925f5b92ffSmrgEvery other argument is treated as a filename. Files ending in \`.la' are 15935f5b92ffSmrgtreated as uninstalled libtool libraries, other files are standard or library 15945f5b92ffSmrgobject files. 1595fbed5abfSmrg 15965f5b92ffSmrgIf the OUTPUT-FILE ends in \`.la', then a libtool library is created, 15975f5b92ffSmrgonly library objects (\`.lo' files) may be specified, and \`-rpath' is 15985f5b92ffSmrgrequired, except when creating a convenience library. 159917a48c7cSmrg 16005f5b92ffSmrgIf OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created 16015f5b92ffSmrgusing \`ar' and \`ranlib', or on Windows using \`lib'. 160217a48c7cSmrg 16035f5b92ffSmrgIf OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file 16045f5b92ffSmrgis created, otherwise an executable program is created." 160517a48c7cSmrg ;; 160617a48c7cSmrg 16075f5b92ffSmrg uninstall) 16085f5b92ffSmrg $ECHO \ 16095f5b92ffSmrg"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... 161017a48c7cSmrg 16115f5b92ffSmrgRemove libraries from an installation directory. 161217a48c7cSmrg 16135f5b92ffSmrgRM is the name of the program to use to delete files associated with each FILE 16145f5b92ffSmrg(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 16155f5b92ffSmrgto RM. 161617a48c7cSmrg 16175f5b92ffSmrgIf FILE is a libtool library, all the files associated with it are deleted. 16185f5b92ffSmrgOtherwise, only FILE itself is deleted using RM." 16195f5b92ffSmrg ;; 162017a48c7cSmrg 16215f5b92ffSmrg *) 16225f5b92ffSmrg func_fatal_help "invalid operation mode \`$mode'" 16235f5b92ffSmrg ;; 16245f5b92ffSmrg esac 162517a48c7cSmrg 16265f5b92ffSmrg $ECHO 16275f5b92ffSmrg $ECHO "Try \`$progname --help' for more information about other modes." 162817a48c7cSmrg 16295f5b92ffSmrg exit $? 16305f5b92ffSmrg} 163117a48c7cSmrg 16325f5b92ffSmrg # Now that we've collected a possible --mode arg, show help if necessary 16335f5b92ffSmrg $opt_help && func_mode_help 163417a48c7cSmrg 163517a48c7cSmrg 16365f5b92ffSmrg# func_mode_execute arg... 16375f5b92ffSmrgfunc_mode_execute () 16385f5b92ffSmrg{ 16395f5b92ffSmrg $opt_debug 16405f5b92ffSmrg # The first argument is the command name. 16415f5b92ffSmrg cmd="$nonopt" 16425f5b92ffSmrg test -z "$cmd" && \ 16435f5b92ffSmrg func_fatal_help "you must specify a COMMAND" 164417a48c7cSmrg 16455f5b92ffSmrg # Handle -dlopen flags immediately. 16465f5b92ffSmrg for file in $execute_dlfiles; do 16475f5b92ffSmrg test -f "$file" \ 16485f5b92ffSmrg || func_fatal_help "\`$file' is not a file" 164917a48c7cSmrg 16505f5b92ffSmrg dir= 16515f5b92ffSmrg case $file in 16525f5b92ffSmrg *.la) 16535f5b92ffSmrg # Check to see that this really is a libtool archive. 16545f5b92ffSmrg func_lalib_unsafe_p "$file" \ 16555f5b92ffSmrg || func_fatal_help "\`$lib' is not a valid libtool archive" 165617a48c7cSmrg 16575f5b92ffSmrg # Read the libtool library. 16585f5b92ffSmrg dlname= 16595f5b92ffSmrg library_names= 16605f5b92ffSmrg func_source "$file" 166117a48c7cSmrg 16625f5b92ffSmrg # Skip this library if it cannot be dlopened. 16635f5b92ffSmrg if test -z "$dlname"; then 16645f5b92ffSmrg # Warn if it was a shared library. 16655f5b92ffSmrg test -n "$library_names" && \ 16665f5b92ffSmrg func_warning "\`$file' was not linked with \`-export-dynamic'" 16675f5b92ffSmrg continue 16685f5b92ffSmrg fi 166917a48c7cSmrg 16705f5b92ffSmrg func_dirname "$file" "" "." 16715f5b92ffSmrg dir="$func_dirname_result" 167217a48c7cSmrg 16735f5b92ffSmrg if test -f "$dir/$objdir/$dlname"; then 16745f5b92ffSmrg dir="$dir/$objdir" 16755f5b92ffSmrg else 16765f5b92ffSmrg if test ! -f "$dir/$dlname"; then 16775f5b92ffSmrg func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 16785f5b92ffSmrg fi 16795f5b92ffSmrg fi 168017a48c7cSmrg ;; 168117a48c7cSmrg 16825f5b92ffSmrg *.lo) 16835f5b92ffSmrg # Just add the directory containing the .lo file. 16845f5b92ffSmrg func_dirname "$file" "" "." 16855f5b92ffSmrg dir="$func_dirname_result" 168617a48c7cSmrg ;; 168717a48c7cSmrg 16885f5b92ffSmrg *) 16895f5b92ffSmrg func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" 169017a48c7cSmrg continue 169117a48c7cSmrg ;; 16925f5b92ffSmrg esac 169317a48c7cSmrg 16945f5b92ffSmrg # Get the absolute pathname. 16955f5b92ffSmrg absdir=`cd "$dir" && pwd` 16965f5b92ffSmrg test -n "$absdir" && dir="$absdir" 169717a48c7cSmrg 16985f5b92ffSmrg # Now add the directory to shlibpath_var. 16995f5b92ffSmrg if eval "test -z \"\$$shlibpath_var\""; then 17005f5b92ffSmrg eval "$shlibpath_var=\"\$dir\"" 17015f5b92ffSmrg else 17025f5b92ffSmrg eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" 17035f5b92ffSmrg fi 17045f5b92ffSmrg done 170517a48c7cSmrg 17065f5b92ffSmrg # This variable tells wrapper scripts just to set shlibpath_var 17075f5b92ffSmrg # rather than running their programs. 17085f5b92ffSmrg libtool_execute_magic="$magic" 170917a48c7cSmrg 17105f5b92ffSmrg # Check if any of the arguments is a wrapper script. 17115f5b92ffSmrg args= 17125f5b92ffSmrg for file 17135f5b92ffSmrg do 17145f5b92ffSmrg case $file in 17155f5b92ffSmrg -*) ;; 17165f5b92ffSmrg *) 17175f5b92ffSmrg # Do a test to see if this is really a libtool program. 17185f5b92ffSmrg if func_ltwrapper_script_p "$file"; then 17195f5b92ffSmrg func_source "$file" 17205f5b92ffSmrg # Transform arg to wrapped name. 17215f5b92ffSmrg file="$progdir/$program" 17225f5b92ffSmrg elif func_ltwrapper_executable_p "$file"; then 17235f5b92ffSmrg func_ltwrapper_scriptname "$file" 17245f5b92ffSmrg func_source "$func_ltwrapper_scriptname_result" 17255f5b92ffSmrg # Transform arg to wrapped name. 17265f5b92ffSmrg file="$progdir/$program" 17275f5b92ffSmrg fi 17285f5b92ffSmrg ;; 17295f5b92ffSmrg esac 17305f5b92ffSmrg # Quote arguments (to preserve shell metacharacters). 17315f5b92ffSmrg func_quote_for_eval "$file" 17325f5b92ffSmrg args="$args $func_quote_for_eval_result" 17335f5b92ffSmrg done 173417a48c7cSmrg 17355f5b92ffSmrg if test "X$opt_dry_run" = Xfalse; then 17365f5b92ffSmrg if test -n "$shlibpath_var"; then 17375f5b92ffSmrg # Export the shlibpath_var. 17385f5b92ffSmrg eval "export $shlibpath_var" 17395f5b92ffSmrg fi 174017a48c7cSmrg 17415f5b92ffSmrg # Restore saved environment variables 17425f5b92ffSmrg for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 17435f5b92ffSmrg do 17445f5b92ffSmrg eval "if test \"\${save_$lt_var+set}\" = set; then 17455f5b92ffSmrg $lt_var=\$save_$lt_var; export $lt_var 174617a48c7cSmrg else 17475f5b92ffSmrg $lt_unset $lt_var 17485f5b92ffSmrg fi" 17495f5b92ffSmrg done 175017a48c7cSmrg 17515f5b92ffSmrg # Now prepare to actually exec the command. 17525f5b92ffSmrg exec_cmd="\$cmd$args" 17535f5b92ffSmrg else 17545f5b92ffSmrg # Display what would be done. 17555f5b92ffSmrg if test -n "$shlibpath_var"; then 17565f5b92ffSmrg eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" 17575f5b92ffSmrg $ECHO "export $shlibpath_var" 17585f5b92ffSmrg fi 17595f5b92ffSmrg $ECHO "$cmd$args" 17605f5b92ffSmrg exit $EXIT_SUCCESS 17615f5b92ffSmrg fi 17625f5b92ffSmrg} 176317a48c7cSmrg 17645f5b92ffSmrgtest "$mode" = execute && func_mode_execute ${1+"$@"} 176517a48c7cSmrg 176617a48c7cSmrg 17675f5b92ffSmrg# func_mode_finish arg... 17685f5b92ffSmrgfunc_mode_finish () 17695f5b92ffSmrg{ 17705f5b92ffSmrg $opt_debug 17715f5b92ffSmrg libdirs="$nonopt" 17725f5b92ffSmrg admincmds= 177317a48c7cSmrg 17745f5b92ffSmrg if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then 17755f5b92ffSmrg for dir 17765f5b92ffSmrg do 17775f5b92ffSmrg libdirs="$libdirs $dir" 17785f5b92ffSmrg done 177917a48c7cSmrg 17805f5b92ffSmrg for libdir in $libdirs; do 17815f5b92ffSmrg if test -n "$finish_cmds"; then 17825f5b92ffSmrg # Do each command in the finish commands. 17835f5b92ffSmrg func_execute_cmds "$finish_cmds" 'admincmds="$admincmds 17845f5b92ffSmrg'"$cmd"'"' 178517a48c7cSmrg fi 17865f5b92ffSmrg if test -n "$finish_eval"; then 17875f5b92ffSmrg # Do the single finish_eval. 17885f5b92ffSmrg eval cmds=\"$finish_eval\" 17895f5b92ffSmrg $opt_dry_run || eval "$cmds" || admincmds="$admincmds 17905f5b92ffSmrg $cmds" 17915f5b92ffSmrg fi 17925f5b92ffSmrg done 17935f5b92ffSmrg fi 179417a48c7cSmrg 17955f5b92ffSmrg # Exit here if they wanted silent mode. 17965f5b92ffSmrg $opt_silent && exit $EXIT_SUCCESS 179717a48c7cSmrg 17985f5b92ffSmrg $ECHO "X----------------------------------------------------------------------" | $Xsed 17995f5b92ffSmrg $ECHO "Libraries have been installed in:" 18005f5b92ffSmrg for libdir in $libdirs; do 18015f5b92ffSmrg $ECHO " $libdir" 18025f5b92ffSmrg done 18035f5b92ffSmrg $ECHO 18045f5b92ffSmrg $ECHO "If you ever happen to want to link against installed libraries" 18055f5b92ffSmrg $ECHO "in a given directory, LIBDIR, you must either use libtool, and" 18065f5b92ffSmrg $ECHO "specify the full pathname of the library, or use the \`-LLIBDIR'" 18075f5b92ffSmrg $ECHO "flag during linking and do at least one of the following:" 18085f5b92ffSmrg if test -n "$shlibpath_var"; then 18095f5b92ffSmrg $ECHO " - add LIBDIR to the \`$shlibpath_var' environment variable" 18105f5b92ffSmrg $ECHO " during execution" 18115f5b92ffSmrg fi 18125f5b92ffSmrg if test -n "$runpath_var"; then 18135f5b92ffSmrg $ECHO " - add LIBDIR to the \`$runpath_var' environment variable" 18145f5b92ffSmrg $ECHO " during linking" 18155f5b92ffSmrg fi 18165f5b92ffSmrg if test -n "$hardcode_libdir_flag_spec"; then 18175f5b92ffSmrg libdir=LIBDIR 18185f5b92ffSmrg eval flag=\"$hardcode_libdir_flag_spec\" 18195f5b92ffSmrg 18205f5b92ffSmrg $ECHO " - use the \`$flag' linker flag" 18215f5b92ffSmrg fi 18225f5b92ffSmrg if test -n "$admincmds"; then 18235f5b92ffSmrg $ECHO " - have your system administrator run these commands:$admincmds" 18245f5b92ffSmrg fi 18255f5b92ffSmrg if test -f /etc/ld.so.conf; then 18265f5b92ffSmrg $ECHO " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" 18275f5b92ffSmrg fi 18285f5b92ffSmrg $ECHO 18295f5b92ffSmrg 18305f5b92ffSmrg $ECHO "See any operating system documentation about shared libraries for" 18315f5b92ffSmrg case $host in 18325f5b92ffSmrg solaris2.[6789]|solaris2.1[0-9]) 18335f5b92ffSmrg $ECHO "more information, such as the ld(1), crle(1) and ld.so(8) manual" 18345f5b92ffSmrg $ECHO "pages." 18355f5b92ffSmrg ;; 18365f5b92ffSmrg *) 18375f5b92ffSmrg $ECHO "more information, such as the ld(1) and ld.so(8) manual pages." 18385f5b92ffSmrg ;; 18395f5b92ffSmrg esac 18405f5b92ffSmrg $ECHO "X----------------------------------------------------------------------" | $Xsed 18415f5b92ffSmrg exit $EXIT_SUCCESS 18425f5b92ffSmrg} 18435f5b92ffSmrg 18445f5b92ffSmrgtest "$mode" = finish && func_mode_finish ${1+"$@"} 18455f5b92ffSmrg 18465f5b92ffSmrg 18475f5b92ffSmrg# func_mode_install arg... 18485f5b92ffSmrgfunc_mode_install () 18495f5b92ffSmrg{ 18505f5b92ffSmrg $opt_debug 18515f5b92ffSmrg # There may be an optional sh(1) argument at the beginning of 18525f5b92ffSmrg # install_prog (especially on Windows NT). 18535f5b92ffSmrg if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || 18545f5b92ffSmrg # Allow the use of GNU shtool's install command. 18555f5b92ffSmrg $ECHO "X$nonopt" | $GREP shtool >/dev/null; then 18565f5b92ffSmrg # Aesthetically quote it. 18575f5b92ffSmrg func_quote_for_eval "$nonopt" 18585f5b92ffSmrg install_prog="$func_quote_for_eval_result " 18595f5b92ffSmrg arg=$1 18605f5b92ffSmrg shift 18615f5b92ffSmrg else 18625f5b92ffSmrg install_prog= 18635f5b92ffSmrg arg=$nonopt 18645f5b92ffSmrg fi 18655f5b92ffSmrg 18665f5b92ffSmrg # The real first argument should be the name of the installation program. 18675f5b92ffSmrg # Aesthetically quote it. 18685f5b92ffSmrg func_quote_for_eval "$arg" 18695f5b92ffSmrg install_prog="$install_prog$func_quote_for_eval_result" 18705f5b92ffSmrg 18715f5b92ffSmrg # We need to accept at least all the BSD install flags. 18725f5b92ffSmrg dest= 18735f5b92ffSmrg files= 18745f5b92ffSmrg opts= 18755f5b92ffSmrg prev= 18765f5b92ffSmrg install_type= 18775f5b92ffSmrg isdir=no 18785f5b92ffSmrg stripme= 18795f5b92ffSmrg for arg 18805f5b92ffSmrg do 18815f5b92ffSmrg if test -n "$dest"; then 18825f5b92ffSmrg files="$files $dest" 18835f5b92ffSmrg dest=$arg 18845f5b92ffSmrg continue 18855f5b92ffSmrg fi 18865f5b92ffSmrg 18875f5b92ffSmrg case $arg in 18885f5b92ffSmrg -d) isdir=yes ;; 18895f5b92ffSmrg -f) 18905f5b92ffSmrg case " $install_prog " in 18915f5b92ffSmrg *[\\\ /]cp\ *) ;; 18925f5b92ffSmrg *) prev=$arg ;; 18935f5b92ffSmrg esac 18945f5b92ffSmrg ;; 18955f5b92ffSmrg -g | -m | -o) 18965f5b92ffSmrg prev=$arg 18975f5b92ffSmrg ;; 18985f5b92ffSmrg -s) 18995f5b92ffSmrg stripme=" -s" 19005f5b92ffSmrg continue 19015f5b92ffSmrg ;; 19025f5b92ffSmrg -*) 19035f5b92ffSmrg ;; 19045f5b92ffSmrg *) 19055f5b92ffSmrg # If the previous option needed an argument, then skip it. 19065f5b92ffSmrg if test -n "$prev"; then 190717a48c7cSmrg prev= 190817a48c7cSmrg else 19095f5b92ffSmrg dest=$arg 19105f5b92ffSmrg continue 191117a48c7cSmrg fi 191217a48c7cSmrg ;; 19135f5b92ffSmrg esac 191417a48c7cSmrg 19155f5b92ffSmrg # Aesthetically quote the argument. 19165f5b92ffSmrg func_quote_for_eval "$arg" 19175f5b92ffSmrg install_prog="$install_prog $func_quote_for_eval_result" 19185f5b92ffSmrg done 191917a48c7cSmrg 19205f5b92ffSmrg test -z "$install_prog" && \ 19215f5b92ffSmrg func_fatal_help "you must specify an install program" 192217a48c7cSmrg 19235f5b92ffSmrg test -n "$prev" && \ 19245f5b92ffSmrg func_fatal_help "the \`$prev' option requires an argument" 192517a48c7cSmrg 19265f5b92ffSmrg if test -z "$files"; then 19275f5b92ffSmrg if test -z "$dest"; then 19285f5b92ffSmrg func_fatal_help "no file or destination specified" 19295f5b92ffSmrg else 19305f5b92ffSmrg func_fatal_help "you must specify a destination" 19315f5b92ffSmrg fi 193217a48c7cSmrg fi 193317a48c7cSmrg 19345f5b92ffSmrg # Strip any trailing slash from the destination. 19355f5b92ffSmrg func_stripname '' '/' "$dest" 19365f5b92ffSmrg dest=$func_stripname_result 193717a48c7cSmrg 19385f5b92ffSmrg # Check to see that the destination is a directory. 19395f5b92ffSmrg test -d "$dest" && isdir=yes 19405f5b92ffSmrg if test "$isdir" = yes; then 19415f5b92ffSmrg destdir="$dest" 19425f5b92ffSmrg destname= 194317a48c7cSmrg else 19445f5b92ffSmrg func_dirname_and_basename "$dest" "" "." 19455f5b92ffSmrg destdir="$func_dirname_result" 19465f5b92ffSmrg destname="$func_basename_result" 194717a48c7cSmrg 19485f5b92ffSmrg # Not a directory, so check to see that there is only one file specified. 19495f5b92ffSmrg set dummy $files; shift 19505f5b92ffSmrg test "$#" -gt 1 && \ 19515f5b92ffSmrg func_fatal_help "\`$dest' is not a directory" 195217a48c7cSmrg fi 19535f5b92ffSmrg case $destdir in 19545f5b92ffSmrg [\\/]* | [A-Za-z]:[\\/]*) ;; 195517a48c7cSmrg *) 19565f5b92ffSmrg for file in $files; do 19575f5b92ffSmrg case $file in 19585f5b92ffSmrg *.lo) ;; 19595f5b92ffSmrg *) 19605f5b92ffSmrg func_fatal_help "\`$destdir' must be an absolute directory name" 19615f5b92ffSmrg ;; 19625f5b92ffSmrg esac 19635f5b92ffSmrg done 196417a48c7cSmrg ;; 196517a48c7cSmrg esac 196617a48c7cSmrg 19675f5b92ffSmrg # This variable tells wrapper scripts just to set variables rather 19685f5b92ffSmrg # than running their programs. 19695f5b92ffSmrg libtool_install_magic="$magic" 197017a48c7cSmrg 19715f5b92ffSmrg staticlibs= 19725f5b92ffSmrg future_libdirs= 19735f5b92ffSmrg current_libdirs= 19745f5b92ffSmrg for file in $files; do 197517a48c7cSmrg 19765f5b92ffSmrg # Do each installation. 19775f5b92ffSmrg case $file in 19785f5b92ffSmrg *.$libext) 19795f5b92ffSmrg # Do the static libraries later. 19805f5b92ffSmrg staticlibs="$staticlibs $file" 19815f5b92ffSmrg ;; 19825f5b92ffSmrg 19835f5b92ffSmrg *.la) 19845f5b92ffSmrg # Check to see that this really is a libtool archive. 19855f5b92ffSmrg func_lalib_unsafe_p "$file" \ 19865f5b92ffSmrg || func_fatal_help "\`$file' is not a valid libtool archive" 19875f5b92ffSmrg 19885f5b92ffSmrg library_names= 19895f5b92ffSmrg old_library= 19905f5b92ffSmrg relink_command= 19915f5b92ffSmrg func_source "$file" 19925f5b92ffSmrg 19935f5b92ffSmrg # Add the libdir to current_libdirs if it is the destination. 19945f5b92ffSmrg if test "X$destdir" = "X$libdir"; then 19955f5b92ffSmrg case "$current_libdirs " in 19965f5b92ffSmrg *" $libdir "*) ;; 19975f5b92ffSmrg *) current_libdirs="$current_libdirs $libdir" ;; 199817a48c7cSmrg esac 19995f5b92ffSmrg else 20005f5b92ffSmrg # Note the libdir as a future libdir. 20015f5b92ffSmrg case "$future_libdirs " in 20025f5b92ffSmrg *" $libdir "*) ;; 20035f5b92ffSmrg *) future_libdirs="$future_libdirs $libdir" ;; 20045f5b92ffSmrg esac 20055f5b92ffSmrg fi 200617a48c7cSmrg 20075f5b92ffSmrg func_dirname "$file" "/" "" 20085f5b92ffSmrg dir="$func_dirname_result" 20095f5b92ffSmrg dir="$dir$objdir" 20105f5b92ffSmrg 20115f5b92ffSmrg if test -n "$relink_command"; then 20125f5b92ffSmrg # Determine the prefix the user has applied to our future dir. 20135f5b92ffSmrg inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"` 20145f5b92ffSmrg 20155f5b92ffSmrg # Don't allow the user to place us outside of our expected 20165f5b92ffSmrg # location b/c this prevents finding dependent libraries that 20175f5b92ffSmrg # are installed to the same prefix. 20185f5b92ffSmrg # At present, this check doesn't affect windows .dll's that 20195f5b92ffSmrg # are installed into $libdir/../bin (currently, that works fine) 20205f5b92ffSmrg # but it's something to keep an eye on. 20215f5b92ffSmrg test "$inst_prefix_dir" = "$destdir" && \ 20225f5b92ffSmrg func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" 20235f5b92ffSmrg 20245f5b92ffSmrg if test -n "$inst_prefix_dir"; then 20255f5b92ffSmrg # Stick the inst_prefix_dir data into the link command. 20265f5b92ffSmrg relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` 20275f5b92ffSmrg else 20285f5b92ffSmrg relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"` 20295f5b92ffSmrg fi 20305f5b92ffSmrg 20315f5b92ffSmrg func_warning "relinking \`$file'" 20325f5b92ffSmrg func_show_eval "$relink_command" \ 20335f5b92ffSmrg 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' 20345f5b92ffSmrg fi 20355f5b92ffSmrg 20365f5b92ffSmrg # See the names of the shared library. 20375f5b92ffSmrg set dummy $library_names; shift 20385f5b92ffSmrg if test -n "$1"; then 20395f5b92ffSmrg realname="$1" 20405f5b92ffSmrg shift 20415f5b92ffSmrg 20425f5b92ffSmrg srcname="$realname" 20435f5b92ffSmrg test -n "$relink_command" && srcname="$realname"T 20445f5b92ffSmrg 20455f5b92ffSmrg # Install the shared library and build the symlinks. 20465f5b92ffSmrg func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \ 20475f5b92ffSmrg 'exit $?' 20485f5b92ffSmrg tstripme="$stripme" 20495f5b92ffSmrg case $host_os in 20505f5b92ffSmrg cygwin* | mingw* | pw32* | cegcc*) 20515f5b92ffSmrg case $realname in 20525f5b92ffSmrg *.dll.a) 20535f5b92ffSmrg tstripme="" 20545f5b92ffSmrg ;; 20555f5b92ffSmrg esac 205617a48c7cSmrg ;; 205717a48c7cSmrg esac 20585f5b92ffSmrg if test -n "$tstripme" && test -n "$striplib"; then 20595f5b92ffSmrg func_show_eval "$striplib $destdir/$realname" 'exit $?' 206017a48c7cSmrg fi 20615f5b92ffSmrg 20625f5b92ffSmrg if test "$#" -gt 0; then 20635f5b92ffSmrg # Delete the old symlinks, and create new ones. 20645f5b92ffSmrg # Try `ln -sf' first, because the `ln' binary might depend on 20655f5b92ffSmrg # the symlink we replace! Solaris /bin/ln does not understand -f, 20665f5b92ffSmrg # so we also need to try rm && ln -s. 20675f5b92ffSmrg for linkname 20685f5b92ffSmrg do 20695f5b92ffSmrg test "$linkname" != "$realname" \ 20705f5b92ffSmrg && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" 207117a48c7cSmrg done 207217a48c7cSmrg fi 207317a48c7cSmrg 20745f5b92ffSmrg # Do each command in the postinstall commands. 20755f5b92ffSmrg lib="$destdir/$realname" 20765f5b92ffSmrg func_execute_cmds "$postinstall_cmds" 'exit $?' 207717a48c7cSmrg fi 207817a48c7cSmrg 20795f5b92ffSmrg # Install the pseudo-library for information purposes. 20805f5b92ffSmrg func_basename "$file" 20815f5b92ffSmrg name="$func_basename_result" 20825f5b92ffSmrg instname="$dir/$name"i 20835f5b92ffSmrg func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' 208417a48c7cSmrg 20855f5b92ffSmrg # Maybe install the static library, too. 20865f5b92ffSmrg test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" 20875f5b92ffSmrg ;; 208817a48c7cSmrg 20895f5b92ffSmrg *.lo) 20905f5b92ffSmrg # Install (i.e. copy) a libtool object. 209117a48c7cSmrg 20925f5b92ffSmrg # Figure out destination file name, if it wasn't already specified. 20935f5b92ffSmrg if test -n "$destname"; then 20945f5b92ffSmrg destfile="$destdir/$destname" 20955f5b92ffSmrg else 20965f5b92ffSmrg func_basename "$file" 20975f5b92ffSmrg destfile="$func_basename_result" 20985f5b92ffSmrg destfile="$destdir/$destfile" 209917a48c7cSmrg fi 210017a48c7cSmrg 21015f5b92ffSmrg # Deduce the name of the destination old-style object file. 21025f5b92ffSmrg case $destfile in 21035f5b92ffSmrg *.lo) 21045f5b92ffSmrg func_lo2o "$destfile" 21055f5b92ffSmrg staticdest=$func_lo2o_result 21065f5b92ffSmrg ;; 21075f5b92ffSmrg *.$objext) 21085f5b92ffSmrg staticdest="$destfile" 21095f5b92ffSmrg destfile= 21105f5b92ffSmrg ;; 21115f5b92ffSmrg *) 21125f5b92ffSmrg func_fatal_help "cannot copy a libtool object to \`$destfile'" 21135f5b92ffSmrg ;; 21145f5b92ffSmrg esac 211517a48c7cSmrg 21165f5b92ffSmrg # Install the libtool object if requested. 21175f5b92ffSmrg test -n "$destfile" && \ 21185f5b92ffSmrg func_show_eval "$install_prog $file $destfile" 'exit $?' 211917a48c7cSmrg 21205f5b92ffSmrg # Install the old object if enabled. 21215f5b92ffSmrg if test "$build_old_libs" = yes; then 21225f5b92ffSmrg # Deduce the name of the old-style object file. 21235f5b92ffSmrg func_lo2o "$file" 21245f5b92ffSmrg staticobj=$func_lo2o_result 21255f5b92ffSmrg func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' 212617a48c7cSmrg fi 21275f5b92ffSmrg exit $EXIT_SUCCESS 21285f5b92ffSmrg ;; 212917a48c7cSmrg 21305f5b92ffSmrg *) 21315f5b92ffSmrg # Figure out destination file name, if it wasn't already specified. 21325f5b92ffSmrg if test -n "$destname"; then 21335f5b92ffSmrg destfile="$destdir/$destname" 21345f5b92ffSmrg else 21355f5b92ffSmrg func_basename "$file" 21365f5b92ffSmrg destfile="$func_basename_result" 21375f5b92ffSmrg destfile="$destdir/$destfile" 21385f5b92ffSmrg fi 213917a48c7cSmrg 21405f5b92ffSmrg # If the file is missing, and there is a .exe on the end, strip it 21415f5b92ffSmrg # because it is most likely a libtool script we actually want to 21425f5b92ffSmrg # install 21435f5b92ffSmrg stripped_ext="" 21445f5b92ffSmrg case $file in 21455f5b92ffSmrg *.exe) 21465f5b92ffSmrg if test ! -f "$file"; then 21475f5b92ffSmrg func_stripname '' '.exe' "$file" 21485f5b92ffSmrg file=$func_stripname_result 21495f5b92ffSmrg stripped_ext=".exe" 21505f5b92ffSmrg fi 21515f5b92ffSmrg ;; 21525f5b92ffSmrg esac 21535f5b92ffSmrg 21545f5b92ffSmrg # Do a test to see if this is really a libtool program. 21555f5b92ffSmrg case $host in 21565f5b92ffSmrg *cygwin* | *mingw*) 21575f5b92ffSmrg if func_ltwrapper_executable_p "$file"; then 21585f5b92ffSmrg func_ltwrapper_scriptname "$file" 21595f5b92ffSmrg wrapper=$func_ltwrapper_scriptname_result 21605f5b92ffSmrg else 21615f5b92ffSmrg func_stripname '' '.exe' "$file" 21625f5b92ffSmrg wrapper=$func_stripname_result 21635f5b92ffSmrg fi 21645f5b92ffSmrg ;; 216517a48c7cSmrg *) 21665f5b92ffSmrg wrapper=$file 21675f5b92ffSmrg ;; 21685f5b92ffSmrg esac 21695f5b92ffSmrg if func_ltwrapper_script_p "$wrapper"; then 21705f5b92ffSmrg notinst_deplibs= 21715f5b92ffSmrg relink_command= 21725f5b92ffSmrg 21735f5b92ffSmrg func_source "$wrapper" 21745f5b92ffSmrg 21755f5b92ffSmrg # Check the variables that should have been set. 21765f5b92ffSmrg test -z "$generated_by_libtool_version" && \ 21775f5b92ffSmrg func_fatal_error "invalid libtool wrapper script \`$wrapper'" 21785f5b92ffSmrg 21795f5b92ffSmrg finalize=yes 21805f5b92ffSmrg for lib in $notinst_deplibs; do 21815f5b92ffSmrg # Check to see that each library is installed. 21825f5b92ffSmrg libdir= 21835f5b92ffSmrg if test -f "$lib"; then 21845f5b92ffSmrg func_source "$lib" 21855f5b92ffSmrg fi 21865f5b92ffSmrg libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test 21875f5b92ffSmrg if test -n "$libdir" && test ! -f "$libfile"; then 21885f5b92ffSmrg func_warning "\`$lib' has not been installed in \`$libdir'" 21895f5b92ffSmrg finalize=no 21905f5b92ffSmrg fi 21915f5b92ffSmrg done 21925f5b92ffSmrg 21935f5b92ffSmrg relink_command= 21945f5b92ffSmrg func_source "$wrapper" 21955f5b92ffSmrg 21965f5b92ffSmrg outputname= 21975f5b92ffSmrg if test "$fast_install" = no && test -n "$relink_command"; then 21985f5b92ffSmrg $opt_dry_run || { 21995f5b92ffSmrg if test "$finalize" = yes; then 22005f5b92ffSmrg tmpdir=`func_mktempdir` 22015f5b92ffSmrg func_basename "$file$stripped_ext" 22025f5b92ffSmrg file="$func_basename_result" 22035f5b92ffSmrg outputname="$tmpdir/$file" 22045f5b92ffSmrg # Replace the output file specification. 22055f5b92ffSmrg relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` 22065f5b92ffSmrg 22075f5b92ffSmrg $opt_silent || { 22085f5b92ffSmrg func_quote_for_expand "$relink_command" 22095f5b92ffSmrg eval "func_echo $func_quote_for_expand_result" 22105f5b92ffSmrg } 22115f5b92ffSmrg if eval "$relink_command"; then : 22125f5b92ffSmrg else 22135f5b92ffSmrg func_error "error: relink \`$file' with the above command before installing it" 22145f5b92ffSmrg $opt_dry_run || ${RM}r "$tmpdir" 22155f5b92ffSmrg continue 22165f5b92ffSmrg fi 22175f5b92ffSmrg file="$outputname" 22185f5b92ffSmrg else 22195f5b92ffSmrg func_warning "cannot relink \`$file'" 22205f5b92ffSmrg fi 22215f5b92ffSmrg } 22225f5b92ffSmrg else 22235f5b92ffSmrg # Install the binary that we compiled earlier. 22245f5b92ffSmrg file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` 222517a48c7cSmrg fi 22265f5b92ffSmrg fi 22275f5b92ffSmrg 22285f5b92ffSmrg # remove .exe since cygwin /usr/bin/install will append another 22295f5b92ffSmrg # one anyway 22305f5b92ffSmrg case $install_prog,$host in 22315f5b92ffSmrg */usr/bin/install*,*cygwin*) 22325f5b92ffSmrg case $file:$destfile in 22335f5b92ffSmrg *.exe:*.exe) 22345f5b92ffSmrg # this is ok 22355f5b92ffSmrg ;; 22365f5b92ffSmrg *.exe:*) 22375f5b92ffSmrg destfile=$destfile.exe 22385f5b92ffSmrg ;; 22395f5b92ffSmrg *:*.exe) 22405f5b92ffSmrg func_stripname '' '.exe' "$destfile" 22415f5b92ffSmrg destfile=$func_stripname_result 22425f5b92ffSmrg ;; 22435f5b92ffSmrg esac 224417a48c7cSmrg ;; 224517a48c7cSmrg esac 22465f5b92ffSmrg func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' 22475f5b92ffSmrg $opt_dry_run || if test -n "$outputname"; then 22485f5b92ffSmrg ${RM}r "$tmpdir" 22495f5b92ffSmrg fi 22505f5b92ffSmrg ;; 22515f5b92ffSmrg esac 22525f5b92ffSmrg done 225317a48c7cSmrg 22545f5b92ffSmrg for file in $staticlibs; do 22555f5b92ffSmrg func_basename "$file" 22565f5b92ffSmrg name="$func_basename_result" 22575f5b92ffSmrg 22585f5b92ffSmrg # Set up the ranlib parameters. 22595f5b92ffSmrg oldlib="$destdir/$name" 22605f5b92ffSmrg 22615f5b92ffSmrg func_show_eval "$install_prog \$file \$oldlib" 'exit $?' 22625f5b92ffSmrg 22635f5b92ffSmrg if test -n "$stripme" && test -n "$old_striplib"; then 22645f5b92ffSmrg func_show_eval "$old_striplib $oldlib" 'exit $?' 22655f5b92ffSmrg fi 22665f5b92ffSmrg 22675f5b92ffSmrg # Do each command in the postinstall commands. 22685f5b92ffSmrg func_execute_cmds "$old_postinstall_cmds" 'exit $?' 22695f5b92ffSmrg done 22705f5b92ffSmrg 22715f5b92ffSmrg test -n "$future_libdirs" && \ 22725f5b92ffSmrg func_warning "remember to run \`$progname --finish$future_libdirs'" 22735f5b92ffSmrg 22745f5b92ffSmrg if test -n "$current_libdirs"; then 22755f5b92ffSmrg # Maybe just do a dry run. 22765f5b92ffSmrg $opt_dry_run && current_libdirs=" -n$current_libdirs" 22775f5b92ffSmrg exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' 22785f5b92ffSmrg else 22795f5b92ffSmrg exit $EXIT_SUCCESS 22805f5b92ffSmrg fi 22815f5b92ffSmrg} 22825f5b92ffSmrg 22835f5b92ffSmrgtest "$mode" = install && func_mode_install ${1+"$@"} 22845f5b92ffSmrg 22855f5b92ffSmrg 22865f5b92ffSmrg# func_generate_dlsyms outputname originator pic_p 22875f5b92ffSmrg# Extract symbols from dlprefiles and create ${outputname}S.o with 22885f5b92ffSmrg# a dlpreopen symbol table. 22895f5b92ffSmrgfunc_generate_dlsyms () 22905f5b92ffSmrg{ 22915f5b92ffSmrg $opt_debug 22925f5b92ffSmrg my_outputname="$1" 22935f5b92ffSmrg my_originator="$2" 22945f5b92ffSmrg my_pic_p="${3-no}" 22955f5b92ffSmrg my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` 22965f5b92ffSmrg my_dlsyms= 22975f5b92ffSmrg 22985f5b92ffSmrg if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 22995f5b92ffSmrg if test -n "$NM" && test -n "$global_symbol_pipe"; then 23005f5b92ffSmrg my_dlsyms="${my_outputname}S.c" 23015f5b92ffSmrg else 23025f5b92ffSmrg func_error "not configured to extract global symbols from dlpreopened files" 23035f5b92ffSmrg fi 23045f5b92ffSmrg fi 23055f5b92ffSmrg 23065f5b92ffSmrg if test -n "$my_dlsyms"; then 23075f5b92ffSmrg case $my_dlsyms in 23085f5b92ffSmrg "") ;; 23095f5b92ffSmrg *.c) 23105f5b92ffSmrg # Discover the nlist of each of the dlfiles. 23115f5b92ffSmrg nlist="$output_objdir/${my_outputname}.nm" 23125f5b92ffSmrg 23135f5b92ffSmrg func_show_eval "$RM $nlist ${nlist}S ${nlist}T" 23145f5b92ffSmrg 23155f5b92ffSmrg # Parse the name list into a source file. 23165f5b92ffSmrg func_verbose "creating $output_objdir/$my_dlsyms" 23175f5b92ffSmrg 23185f5b92ffSmrg $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ 23195f5b92ffSmrg/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ 23205f5b92ffSmrg/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ 23215f5b92ffSmrg 23225f5b92ffSmrg#ifdef __cplusplus 23235f5b92ffSmrgextern \"C\" { 23245f5b92ffSmrg#endif 23255f5b92ffSmrg 23265f5b92ffSmrg/* External symbol declarations for the compiler. */\ 23275f5b92ffSmrg" 23285f5b92ffSmrg 23295f5b92ffSmrg if test "$dlself" = yes; then 23305f5b92ffSmrg func_verbose "generating symbol list for \`$output'" 23315f5b92ffSmrg 23325f5b92ffSmrg $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" 23335f5b92ffSmrg 23345f5b92ffSmrg # Add our own program objects to the symbol list. 23355f5b92ffSmrg progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 23365f5b92ffSmrg for progfile in $progfiles; do 23375f5b92ffSmrg func_verbose "extracting global C symbols from \`$progfile'" 23385f5b92ffSmrg $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'" 23395f5b92ffSmrg done 23405f5b92ffSmrg 23415f5b92ffSmrg if test -n "$exclude_expsyms"; then 23425f5b92ffSmrg $opt_dry_run || { 23435f5b92ffSmrg eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' 23445f5b92ffSmrg eval '$MV "$nlist"T "$nlist"' 23455f5b92ffSmrg } 234617a48c7cSmrg fi 23475f5b92ffSmrg 23485f5b92ffSmrg if test -n "$export_symbols_regex"; then 23495f5b92ffSmrg $opt_dry_run || { 23505f5b92ffSmrg eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' 23515f5b92ffSmrg eval '$MV "$nlist"T "$nlist"' 23525f5b92ffSmrg } 23535f5b92ffSmrg fi 23545f5b92ffSmrg 23555f5b92ffSmrg # Prepare the list of exported symbols 23565f5b92ffSmrg if test -z "$export_symbols"; then 23575f5b92ffSmrg export_symbols="$output_objdir/$outputname.exp" 23585f5b92ffSmrg $opt_dry_run || { 23595f5b92ffSmrg $RM $export_symbols 23605f5b92ffSmrg eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' 23615f5b92ffSmrg case $host in 23625f5b92ffSmrg *cygwin* | *mingw* | *cegcc* ) 23635f5b92ffSmrg eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 23645f5b92ffSmrg eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' 23655f5b92ffSmrg ;; 23665f5b92ffSmrg esac 23675f5b92ffSmrg } 236817a48c7cSmrg else 23695f5b92ffSmrg $opt_dry_run || { 23705f5b92ffSmrg eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' 23715f5b92ffSmrg eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' 23725f5b92ffSmrg eval '$MV "$nlist"T "$nlist"' 23735f5b92ffSmrg case $host in 23745f5b92ffSmrg *cygwin | *mingw* | *cegcc* ) 23755f5b92ffSmrg eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 23765f5b92ffSmrg eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' 23775f5b92ffSmrg ;; 23785f5b92ffSmrg esac 23795f5b92ffSmrg } 238017a48c7cSmrg fi 23815f5b92ffSmrg fi 238217a48c7cSmrg 23835f5b92ffSmrg for dlprefile in $dlprefiles; do 23845f5b92ffSmrg func_verbose "extracting global C symbols from \`$dlprefile'" 23855f5b92ffSmrg func_basename "$dlprefile" 23865f5b92ffSmrg name="$func_basename_result" 23875f5b92ffSmrg $opt_dry_run || { 23885f5b92ffSmrg eval '$ECHO ": $name " >> "$nlist"' 23895f5b92ffSmrg eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'" 23905f5b92ffSmrg } 23915f5b92ffSmrg done 23925f5b92ffSmrg 23935f5b92ffSmrg $opt_dry_run || { 23945f5b92ffSmrg # Make sure we have at least an empty file. 23955f5b92ffSmrg test -f "$nlist" || : > "$nlist" 23965f5b92ffSmrg 23975f5b92ffSmrg if test -n "$exclude_expsyms"; then 23985f5b92ffSmrg $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T 23995f5b92ffSmrg $MV "$nlist"T "$nlist" 240017a48c7cSmrg fi 24015f5b92ffSmrg 24025f5b92ffSmrg # Try sorting and uniquifying the output. 24035f5b92ffSmrg if $GREP -v "^: " < "$nlist" | 24045f5b92ffSmrg if sort -k 3 </dev/null >/dev/null 2>&1; then 24055f5b92ffSmrg sort -k 3 24065f5b92ffSmrg else 24075f5b92ffSmrg sort +2 24085f5b92ffSmrg fi | 24095f5b92ffSmrg uniq > "$nlist"S; then 24105f5b92ffSmrg : 241117a48c7cSmrg else 24125f5b92ffSmrg $GREP -v "^: " < "$nlist" > "$nlist"S 241317a48c7cSmrg fi 241417a48c7cSmrg 24155f5b92ffSmrg if test -f "$nlist"S; then 24165f5b92ffSmrg eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' 241717a48c7cSmrg else 24185f5b92ffSmrg $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms" 241917a48c7cSmrg fi 242017a48c7cSmrg 24215f5b92ffSmrg $ECHO >> "$output_objdir/$my_dlsyms" "\ 242217a48c7cSmrg 24235f5b92ffSmrg/* The mapping between symbol names and symbols. */ 24245f5b92ffSmrgtypedef struct { 24255f5b92ffSmrg const char *name; 24265f5b92ffSmrg void *address; 24275f5b92ffSmrg} lt_dlsymlist; 24285f5b92ffSmrg" 24295f5b92ffSmrg case $host in 24305f5b92ffSmrg *cygwin* | *mingw* | *cegcc* ) 24315f5b92ffSmrg $ECHO >> "$output_objdir/$my_dlsyms" "\ 24325f5b92ffSmrg/* DATA imports from DLLs on WIN32 con't be const, because 24335f5b92ffSmrg runtime relocations are performed -- see ld's documentation 24345f5b92ffSmrg on pseudo-relocs. */" 24355f5b92ffSmrg lt_dlsym_const= ;; 24365f5b92ffSmrg *osf5*) 24375f5b92ffSmrg echo >> "$output_objdir/$my_dlsyms" "\ 24385f5b92ffSmrg/* This system does not cope well with relocations in const data */" 24395f5b92ffSmrg lt_dlsym_const= ;; 24405f5b92ffSmrg *) 24415f5b92ffSmrg lt_dlsym_const=const ;; 24425f5b92ffSmrg esac 244317a48c7cSmrg 24445f5b92ffSmrg $ECHO >> "$output_objdir/$my_dlsyms" "\ 24455f5b92ffSmrgextern $lt_dlsym_const lt_dlsymlist 24465f5b92ffSmrglt_${my_prefix}_LTX_preloaded_symbols[]; 24475f5b92ffSmrg$lt_dlsym_const lt_dlsymlist 24485f5b92ffSmrglt_${my_prefix}_LTX_preloaded_symbols[] = 24495f5b92ffSmrg{\ 24505f5b92ffSmrg { \"$my_originator\", (void *) 0 }," 245117a48c7cSmrg 24525f5b92ffSmrg case $need_lib_prefix in 24535f5b92ffSmrg no) 24545f5b92ffSmrg eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" 24555f5b92ffSmrg ;; 24565f5b92ffSmrg *) 24575f5b92ffSmrg eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" 24585f5b92ffSmrg ;; 24595f5b92ffSmrg esac 24605f5b92ffSmrg $ECHO >> "$output_objdir/$my_dlsyms" "\ 24615f5b92ffSmrg {0, (void *) 0} 24625f5b92ffSmrg}; 246317a48c7cSmrg 24645f5b92ffSmrg/* This works around a problem in FreeBSD linker */ 24655f5b92ffSmrg#ifdef FREEBSD_WORKAROUND 24665f5b92ffSmrgstatic const void *lt_preloaded_setup() { 24675f5b92ffSmrg return lt_${my_prefix}_LTX_preloaded_symbols; 24685f5b92ffSmrg} 24695f5b92ffSmrg#endif 24705f5b92ffSmrg 24715f5b92ffSmrg#ifdef __cplusplus 24725f5b92ffSmrg} 24735f5b92ffSmrg#endif\ 24745f5b92ffSmrg" 24755f5b92ffSmrg } # !$opt_dry_run 24765f5b92ffSmrg 24775f5b92ffSmrg pic_flag_for_symtable= 24785f5b92ffSmrg case "$compile_command " in 24795f5b92ffSmrg *" -static "*) ;; 24805f5b92ffSmrg *) 24815f5b92ffSmrg case $host in 24825f5b92ffSmrg # compiling the symbol table file with pic_flag works around 24835f5b92ffSmrg # a FreeBSD bug that causes programs to crash when -lm is 24845f5b92ffSmrg # linked before any other PIC object. But we must not use 24855f5b92ffSmrg # pic_flag when linking with -static. The problem exists in 24865f5b92ffSmrg # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. 24875f5b92ffSmrg *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) 24885f5b92ffSmrg pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; 24895f5b92ffSmrg *-*-hpux*) 24905f5b92ffSmrg pic_flag_for_symtable=" $pic_flag" ;; 24915f5b92ffSmrg *) 24925f5b92ffSmrg if test "X$my_pic_p" != Xno; then 24935f5b92ffSmrg pic_flag_for_symtable=" $pic_flag" 249417a48c7cSmrg fi 24955f5b92ffSmrg ;; 24965f5b92ffSmrg esac 24975f5b92ffSmrg ;; 24985f5b92ffSmrg esac 24995f5b92ffSmrg symtab_cflags= 25005f5b92ffSmrg for arg in $LTCFLAGS; do 25015f5b92ffSmrg case $arg in 25025f5b92ffSmrg -pie | -fpie | -fPIE) ;; 25035f5b92ffSmrg *) symtab_cflags="$symtab_cflags $arg" ;; 25045f5b92ffSmrg esac 25055f5b92ffSmrg done 250617a48c7cSmrg 25075f5b92ffSmrg # Now compile the dynamic symbol file. 25085f5b92ffSmrg func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' 250917a48c7cSmrg 25105f5b92ffSmrg # Clean up the generated files. 25115f5b92ffSmrg func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' 251217a48c7cSmrg 25135f5b92ffSmrg # Transform the symbol file into the correct name. 25145f5b92ffSmrg symfileobj="$output_objdir/${my_outputname}S.$objext" 25155f5b92ffSmrg case $host in 25165f5b92ffSmrg *cygwin* | *mingw* | *cegcc* ) 25175f5b92ffSmrg if test -f "$output_objdir/$my_outputname.def"; then 25185f5b92ffSmrg compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` 25195f5b92ffSmrg finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` 25205f5b92ffSmrg else 25215f5b92ffSmrg compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` 25225f5b92ffSmrg finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` 252317a48c7cSmrg fi 25245f5b92ffSmrg ;; 25255f5b92ffSmrg *) 25265f5b92ffSmrg compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` 25275f5b92ffSmrg finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` 25285f5b92ffSmrg ;; 25295f5b92ffSmrg esac 25305f5b92ffSmrg ;; 25315f5b92ffSmrg *) 25325f5b92ffSmrg func_fatal_error "unknown suffix for \`$my_dlsyms'" 25335f5b92ffSmrg ;; 25345f5b92ffSmrg esac 25355f5b92ffSmrg else 25365f5b92ffSmrg # We keep going just in case the user didn't refer to 25375f5b92ffSmrg # lt_preloaded_symbols. The linker will fail if global_symbol_pipe 25385f5b92ffSmrg # really was required. 253917a48c7cSmrg 25405f5b92ffSmrg # Nullify the symbol file. 25415f5b92ffSmrg compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` 25425f5b92ffSmrg finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` 25435f5b92ffSmrg fi 25445f5b92ffSmrg} 254517a48c7cSmrg 25465f5b92ffSmrg# func_win32_libid arg 25475f5b92ffSmrg# return the library type of file 'arg' 25485f5b92ffSmrg# 25495f5b92ffSmrg# Need a lot of goo to handle *both* DLLs and import libs 25505f5b92ffSmrg# Has to be a shell function in order to 'eat' the argument 25515f5b92ffSmrg# that is supplied when $file_magic_command is called. 25525f5b92ffSmrgfunc_win32_libid () 25535f5b92ffSmrg{ 25545f5b92ffSmrg $opt_debug 25555f5b92ffSmrg win32_libid_type="unknown" 25565f5b92ffSmrg win32_fileres=`file -L $1 2>/dev/null` 25575f5b92ffSmrg case $win32_fileres in 25585f5b92ffSmrg *ar\ archive\ import\ library*) # definitely import 25595f5b92ffSmrg win32_libid_type="x86 archive import" 25605f5b92ffSmrg ;; 25615f5b92ffSmrg *ar\ archive*) # could be an import, or static 25625f5b92ffSmrg if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | 25635f5b92ffSmrg $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then 25645f5b92ffSmrg win32_nmres=`eval $NM -f posix -A $1 | 25655f5b92ffSmrg $SED -n -e ' 25665f5b92ffSmrg 1,100{ 25675f5b92ffSmrg / I /{ 25685f5b92ffSmrg s,.*,import, 25695f5b92ffSmrg p 25705f5b92ffSmrg q 25715f5b92ffSmrg } 25725f5b92ffSmrg }'` 25735f5b92ffSmrg case $win32_nmres in 25745f5b92ffSmrg import*) win32_libid_type="x86 archive import";; 25755f5b92ffSmrg *) win32_libid_type="x86 archive static";; 25765f5b92ffSmrg esac 25775f5b92ffSmrg fi 25785f5b92ffSmrg ;; 25795f5b92ffSmrg *DLL*) 25805f5b92ffSmrg win32_libid_type="x86 DLL" 25815f5b92ffSmrg ;; 25825f5b92ffSmrg *executable*) # but shell scripts are "executable" too... 25835f5b92ffSmrg case $win32_fileres in 25845f5b92ffSmrg *MS\ Windows\ PE\ Intel*) 25855f5b92ffSmrg win32_libid_type="x86 DLL" 25865f5b92ffSmrg ;; 25875f5b92ffSmrg esac 25885f5b92ffSmrg ;; 25895f5b92ffSmrg esac 25905f5b92ffSmrg $ECHO "$win32_libid_type" 25915f5b92ffSmrg} 259217a48c7cSmrg 259317a48c7cSmrg 259417a48c7cSmrg 25955f5b92ffSmrg# func_extract_an_archive dir oldlib 25965f5b92ffSmrgfunc_extract_an_archive () 25975f5b92ffSmrg{ 25985f5b92ffSmrg $opt_debug 25995f5b92ffSmrg f_ex_an_ar_dir="$1"; shift 26005f5b92ffSmrg f_ex_an_ar_oldlib="$1" 26015f5b92ffSmrg func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" 'exit $?' 26025f5b92ffSmrg if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then 26035f5b92ffSmrg : 26045f5b92ffSmrg else 26055f5b92ffSmrg func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 26065f5b92ffSmrg fi 26075f5b92ffSmrg} 260817a48c7cSmrg 260917a48c7cSmrg 26105f5b92ffSmrg# func_extract_archives gentop oldlib ... 26115f5b92ffSmrgfunc_extract_archives () 26125f5b92ffSmrg{ 26135f5b92ffSmrg $opt_debug 26145f5b92ffSmrg my_gentop="$1"; shift 26155f5b92ffSmrg my_oldlibs=${1+"$@"} 26165f5b92ffSmrg my_oldobjs="" 26175f5b92ffSmrg my_xlib="" 26185f5b92ffSmrg my_xabs="" 26195f5b92ffSmrg my_xdir="" 262017a48c7cSmrg 26215f5b92ffSmrg for my_xlib in $my_oldlibs; do 26225f5b92ffSmrg # Extract the objects. 26235f5b92ffSmrg case $my_xlib in 26245f5b92ffSmrg [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; 26255f5b92ffSmrg *) my_xabs=`pwd`"/$my_xlib" ;; 26265f5b92ffSmrg esac 26275f5b92ffSmrg func_basename "$my_xlib" 26285f5b92ffSmrg my_xlib="$func_basename_result" 26295f5b92ffSmrg my_xlib_u=$my_xlib 26305f5b92ffSmrg while :; do 26315f5b92ffSmrg case " $extracted_archives " in 26325f5b92ffSmrg *" $my_xlib_u "*) 26335f5b92ffSmrg func_arith $extracted_serial + 1 26345f5b92ffSmrg extracted_serial=$func_arith_result 26355f5b92ffSmrg my_xlib_u=lt$extracted_serial-$my_xlib ;; 26365f5b92ffSmrg *) break ;; 26375f5b92ffSmrg esac 26385f5b92ffSmrg done 26395f5b92ffSmrg extracted_archives="$extracted_archives $my_xlib_u" 26405f5b92ffSmrg my_xdir="$my_gentop/$my_xlib_u" 264117a48c7cSmrg 26425f5b92ffSmrg func_mkdir_p "$my_xdir" 264317a48c7cSmrg 26445f5b92ffSmrg case $host in 26455f5b92ffSmrg *-darwin*) 26465f5b92ffSmrg func_verbose "Extracting $my_xabs" 26475f5b92ffSmrg # Do not bother doing anything if just a dry run 26485f5b92ffSmrg $opt_dry_run || { 26495f5b92ffSmrg darwin_orig_dir=`pwd` 26505f5b92ffSmrg cd $my_xdir || exit $? 26515f5b92ffSmrg darwin_archive=$my_xabs 26525f5b92ffSmrg darwin_curdir=`pwd` 26535f5b92ffSmrg darwin_base_archive=`basename "$darwin_archive"` 26545f5b92ffSmrg darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` 26555f5b92ffSmrg if test -n "$darwin_arches"; then 26565f5b92ffSmrg darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` 26575f5b92ffSmrg darwin_arch= 26585f5b92ffSmrg func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" 26595f5b92ffSmrg for darwin_arch in $darwin_arches ; do 26605f5b92ffSmrg func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" 26615f5b92ffSmrg $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" 26625f5b92ffSmrg cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" 26635f5b92ffSmrg func_extract_an_archive "`pwd`" "${darwin_base_archive}" 26645f5b92ffSmrg cd "$darwin_curdir" 26655f5b92ffSmrg $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" 26665f5b92ffSmrg done # $darwin_arches 26675f5b92ffSmrg ## Okay now we've a bunch of thin objects, gotta fatten them up :) 26685f5b92ffSmrg darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` 26695f5b92ffSmrg darwin_file= 26705f5b92ffSmrg darwin_files= 26715f5b92ffSmrg for darwin_file in $darwin_filelist; do 26725f5b92ffSmrg darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` 26735f5b92ffSmrg $LIPO -create -output "$darwin_file" $darwin_files 26745f5b92ffSmrg done # $darwin_filelist 26755f5b92ffSmrg $RM -rf unfat-$$ 26765f5b92ffSmrg cd "$darwin_orig_dir" 267717a48c7cSmrg else 26785f5b92ffSmrg cd $darwin_orig_dir 26795f5b92ffSmrg func_extract_an_archive "$my_xdir" "$my_xabs" 26805f5b92ffSmrg fi # $darwin_arches 26815f5b92ffSmrg } # !$opt_dry_run 26825f5b92ffSmrg ;; 26835f5b92ffSmrg *) 26845f5b92ffSmrg func_extract_an_archive "$my_xdir" "$my_xabs" 26855f5b92ffSmrg ;; 26865f5b92ffSmrg esac 26875f5b92ffSmrg my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` 26885f5b92ffSmrg done 268917a48c7cSmrg 26905f5b92ffSmrg func_extract_archives_result="$my_oldobjs" 26915f5b92ffSmrg} 269217a48c7cSmrg 269317a48c7cSmrg 269417a48c7cSmrg 26955f5b92ffSmrg# func_emit_wrapper_part1 [arg=no] 26965f5b92ffSmrg# 26975f5b92ffSmrg# Emit the first part of a libtool wrapper script on stdout. 26985f5b92ffSmrg# For more information, see the description associated with 26995f5b92ffSmrg# func_emit_wrapper(), below. 27005f5b92ffSmrgfunc_emit_wrapper_part1 () 27015f5b92ffSmrg{ 27025f5b92ffSmrg func_emit_wrapper_part1_arg1=no 27035f5b92ffSmrg if test -n "$1" ; then 27045f5b92ffSmrg func_emit_wrapper_part1_arg1=$1 270517a48c7cSmrg fi 270617a48c7cSmrg 27075f5b92ffSmrg $ECHO "\ 27085f5b92ffSmrg#! $SHELL 270917a48c7cSmrg 27105f5b92ffSmrg# $output - temporary wrapper script for $objdir/$outputname 27115f5b92ffSmrg# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 27125f5b92ffSmrg# 27135f5b92ffSmrg# The $output program cannot be directly executed until all the libtool 27145f5b92ffSmrg# libraries that it depends on are installed. 27155f5b92ffSmrg# 27165f5b92ffSmrg# This wrapper script should never be moved out of the build directory. 27175f5b92ffSmrg# If it is, it will not operate correctly. 271817a48c7cSmrg 27195f5b92ffSmrg# Sed substitution that helps us do robust quoting. It backslashifies 27205f5b92ffSmrg# metacharacters that are still active within double-quoted strings. 27215f5b92ffSmrgXsed='${SED} -e 1s/^X//' 27225f5b92ffSmrgsed_quote_subst='$sed_quote_subst' 272317a48c7cSmrg 27245f5b92ffSmrg# Be Bourne compatible 27255f5b92ffSmrgif test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then 27265f5b92ffSmrg emulate sh 27275f5b92ffSmrg NULLCMD=: 27285f5b92ffSmrg # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which 27295f5b92ffSmrg # is contrary to our usage. Disable this feature. 27305f5b92ffSmrg alias -g '\${1+\"\$@\"}'='\"\$@\"' 27315f5b92ffSmrg setopt NO_GLOB_SUBST 27325f5b92ffSmrgelse 27335f5b92ffSmrg case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac 27345f5b92ffSmrgfi 27355f5b92ffSmrgBIN_SH=xpg4; export BIN_SH # for Tru64 27365f5b92ffSmrgDUALCASE=1; export DUALCASE # for MKS sh 273717a48c7cSmrg 27385f5b92ffSmrg# The HP-UX ksh and POSIX shell print the target directory to stdout 27395f5b92ffSmrg# if CDPATH is set. 27405f5b92ffSmrg(unset CDPATH) >/dev/null 2>&1 && unset CDPATH 274117a48c7cSmrg 27425f5b92ffSmrgrelink_command=\"$relink_command\" 274317a48c7cSmrg 27445f5b92ffSmrg# This environment variable determines our operation mode. 27455f5b92ffSmrgif test \"\$libtool_install_magic\" = \"$magic\"; then 27465f5b92ffSmrg # install mode needs the following variables: 27475f5b92ffSmrg generated_by_libtool_version='$macro_version' 27485f5b92ffSmrg notinst_deplibs='$notinst_deplibs' 27495f5b92ffSmrgelse 27505f5b92ffSmrg # When we are sourced in execute mode, \$file and \$ECHO are already set. 27515f5b92ffSmrg if test \"\$libtool_execute_magic\" != \"$magic\"; then 27525f5b92ffSmrg ECHO=\"$qecho\" 27535f5b92ffSmrg file=\"\$0\" 27545f5b92ffSmrg # Make sure echo works. 27555f5b92ffSmrg if test \"X\$1\" = X--no-reexec; then 27565f5b92ffSmrg # Discard the --no-reexec flag, and continue. 27575f5b92ffSmrg shift 27585f5b92ffSmrg elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then 27595f5b92ffSmrg # Yippee, \$ECHO works! 27605f5b92ffSmrg : 27615f5b92ffSmrg else 27625f5b92ffSmrg # Restart under the correct shell, and then maybe \$ECHO will work. 27635f5b92ffSmrg exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} 27645f5b92ffSmrg fi 27655f5b92ffSmrg fi\ 27665f5b92ffSmrg" 27675f5b92ffSmrg $ECHO "\ 276817a48c7cSmrg 27695f5b92ffSmrg # Find the directory that this script lives in. 27705f5b92ffSmrg thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` 27715f5b92ffSmrg test \"x\$thisdir\" = \"x\$file\" && thisdir=. 277217a48c7cSmrg 27735f5b92ffSmrg # Follow symbolic links until we get to the real thisdir. 27745f5b92ffSmrg file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` 27755f5b92ffSmrg while test -n \"\$file\"; do 27765f5b92ffSmrg destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` 277717a48c7cSmrg 27785f5b92ffSmrg # If there was a directory component, then change thisdir. 27795f5b92ffSmrg if test \"x\$destdir\" != \"x\$file\"; then 27805f5b92ffSmrg case \"\$destdir\" in 27815f5b92ffSmrg [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; 27825f5b92ffSmrg *) thisdir=\"\$thisdir/\$destdir\" ;; 278317a48c7cSmrg esac 27845f5b92ffSmrg fi 278517a48c7cSmrg 27865f5b92ffSmrg file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\` 27875f5b92ffSmrg file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` 27885f5b92ffSmrg done 27895f5b92ffSmrg" 27905f5b92ffSmrg} 27915f5b92ffSmrg# end: func_emit_wrapper_part1 27925f5b92ffSmrg 27935f5b92ffSmrg# func_emit_wrapper_part2 [arg=no] 27945f5b92ffSmrg# 27955f5b92ffSmrg# Emit the second part of a libtool wrapper script on stdout. 27965f5b92ffSmrg# For more information, see the description associated with 27975f5b92ffSmrg# func_emit_wrapper(), below. 27985f5b92ffSmrgfunc_emit_wrapper_part2 () 27995f5b92ffSmrg{ 28005f5b92ffSmrg func_emit_wrapper_part2_arg1=no 28015f5b92ffSmrg if test -n "$1" ; then 28025f5b92ffSmrg func_emit_wrapper_part2_arg1=$1 280317a48c7cSmrg fi 280417a48c7cSmrg 28055f5b92ffSmrg $ECHO "\ 280617a48c7cSmrg 28075f5b92ffSmrg # Usually 'no', except on cygwin/mingw when embedded into 28085f5b92ffSmrg # the cwrapper. 28095f5b92ffSmrg WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_part2_arg1 28105f5b92ffSmrg if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then 28115f5b92ffSmrg # special case for '.' 28125f5b92ffSmrg if test \"\$thisdir\" = \".\"; then 28135f5b92ffSmrg thisdir=\`pwd\` 28145f5b92ffSmrg fi 28155f5b92ffSmrg # remove .libs from thisdir 28165f5b92ffSmrg case \"\$thisdir\" in 28175f5b92ffSmrg *[\\\\/]$objdir ) thisdir=\`\$ECHO \"X\$thisdir\" | \$Xsed -e 's%[\\\\/][^\\\\/]*$%%'\` ;; 28185f5b92ffSmrg $objdir ) thisdir=. ;; 28195f5b92ffSmrg esac 28205f5b92ffSmrg fi 28215f5b92ffSmrg 28225f5b92ffSmrg # Try to get the absolute directory name. 28235f5b92ffSmrg absdir=\`cd \"\$thisdir\" && pwd\` 28245f5b92ffSmrg test -n \"\$absdir\" && thisdir=\"\$absdir\" 28255f5b92ffSmrg" 28265f5b92ffSmrg 28275f5b92ffSmrg if test "$fast_install" = yes; then 28285f5b92ffSmrg $ECHO "\ 28295f5b92ffSmrg program=lt-'$outputname'$exeext 28305f5b92ffSmrg progdir=\"\$thisdir/$objdir\" 28315f5b92ffSmrg 28325f5b92ffSmrg if test ! -f \"\$progdir/\$program\" || 28335f5b92ffSmrg { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ 28345f5b92ffSmrg test \"X\$file\" != \"X\$progdir/\$program\"; }; then 28355f5b92ffSmrg 28365f5b92ffSmrg file=\"\$\$-\$program\" 28375f5b92ffSmrg 28385f5b92ffSmrg if test ! -d \"\$progdir\"; then 28395f5b92ffSmrg $MKDIR \"\$progdir\" 28405f5b92ffSmrg else 28415f5b92ffSmrg $RM \"\$progdir/\$file\" 28425f5b92ffSmrg fi" 28435f5b92ffSmrg 28445f5b92ffSmrg $ECHO "\ 28455f5b92ffSmrg 28465f5b92ffSmrg # relink executable if necessary 28475f5b92ffSmrg if test -n \"\$relink_command\"; then 28485f5b92ffSmrg if relink_command_output=\`eval \$relink_command 2>&1\`; then : 28495f5b92ffSmrg else 28505f5b92ffSmrg $ECHO \"\$relink_command_output\" >&2 28515f5b92ffSmrg $RM \"\$progdir/\$file\" 28525f5b92ffSmrg exit 1 285317a48c7cSmrg fi 28545f5b92ffSmrg fi 285517a48c7cSmrg 28565f5b92ffSmrg $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || 28575f5b92ffSmrg { $RM \"\$progdir/\$program\"; 28585f5b92ffSmrg $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } 28595f5b92ffSmrg $RM \"\$progdir/\$file\" 28605f5b92ffSmrg fi" 28615f5b92ffSmrg else 28625f5b92ffSmrg $ECHO "\ 28635f5b92ffSmrg program='$outputname' 28645f5b92ffSmrg progdir=\"\$thisdir/$objdir\" 28655f5b92ffSmrg" 286617a48c7cSmrg fi 286717a48c7cSmrg 28685f5b92ffSmrg $ECHO "\ 286917a48c7cSmrg 28705f5b92ffSmrg if test -f \"\$progdir/\$program\"; then" 287117a48c7cSmrg 28725f5b92ffSmrg # Export our shlibpath_var if we have one. 28735f5b92ffSmrg if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 28745f5b92ffSmrg $ECHO "\ 28755f5b92ffSmrg # Add our own library path to $shlibpath_var 28765f5b92ffSmrg $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" 28775f5b92ffSmrg 28785f5b92ffSmrg # Some systems cannot cope with colon-terminated $shlibpath_var 28795f5b92ffSmrg # The second colon is a workaround for a bug in BeOS R4 sed 28805f5b92ffSmrg $shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` 288117a48c7cSmrg 28825f5b92ffSmrg export $shlibpath_var 28835f5b92ffSmrg" 288417a48c7cSmrg fi 288517a48c7cSmrg 28865f5b92ffSmrg # fixup the dll searchpath if we need to. 28875f5b92ffSmrg if test -n "$dllsearchpath"; then 28885f5b92ffSmrg $ECHO "\ 28895f5b92ffSmrg # Add the dll search path components to the executable PATH 28905f5b92ffSmrg PATH=$dllsearchpath:\$PATH 28915f5b92ffSmrg" 28925f5b92ffSmrg fi 289317a48c7cSmrg 28945f5b92ffSmrg $ECHO "\ 28955f5b92ffSmrg if test \"\$libtool_execute_magic\" != \"$magic\"; then 28965f5b92ffSmrg # Run the actual program with our arguments. 28975f5b92ffSmrg" 28985f5b92ffSmrg case $host in 28995f5b92ffSmrg # Backslashes separate directories on plain windows 29005f5b92ffSmrg *-*-mingw | *-*-os2* | *-cegcc*) 29015f5b92ffSmrg $ECHO "\ 29025f5b92ffSmrg exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} 29035f5b92ffSmrg" 290417a48c7cSmrg ;; 290517a48c7cSmrg 290617a48c7cSmrg *) 29075f5b92ffSmrg $ECHO "\ 29085f5b92ffSmrg exec \"\$progdir/\$program\" \${1+\"\$@\"} 29095f5b92ffSmrg" 291017a48c7cSmrg ;; 291117a48c7cSmrg esac 29125f5b92ffSmrg $ECHO "\ 29135f5b92ffSmrg \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 29145f5b92ffSmrg exit 1 29155f5b92ffSmrg fi 29165f5b92ffSmrg else 29175f5b92ffSmrg # The program doesn't exist. 29185f5b92ffSmrg \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 29195f5b92ffSmrg \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 29205f5b92ffSmrg $ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 29215f5b92ffSmrg exit 1 29225f5b92ffSmrg fi 29235f5b92ffSmrgfi\ 29245f5b92ffSmrg" 29255f5b92ffSmrg} 29265f5b92ffSmrg# end: func_emit_wrapper_part2 292717a48c7cSmrg 292817a48c7cSmrg 29295f5b92ffSmrg# func_emit_wrapper [arg=no] 29305f5b92ffSmrg# 29315f5b92ffSmrg# Emit a libtool wrapper script on stdout. 29325f5b92ffSmrg# Don't directly open a file because we may want to 29335f5b92ffSmrg# incorporate the script contents within a cygwin/mingw 29345f5b92ffSmrg# wrapper executable. Must ONLY be called from within 29355f5b92ffSmrg# func_mode_link because it depends on a number of variables 29365f5b92ffSmrg# set therein. 29375f5b92ffSmrg# 29385f5b92ffSmrg# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR 29395f5b92ffSmrg# variable will take. If 'yes', then the emitted script 29405f5b92ffSmrg# will assume that the directory in which it is stored is 29415f5b92ffSmrg# the $objdir directory. This is a cygwin/mingw-specific 29425f5b92ffSmrg# behavior. 29435f5b92ffSmrgfunc_emit_wrapper () 29445f5b92ffSmrg{ 29455f5b92ffSmrg func_emit_wrapper_arg1=no 29465f5b92ffSmrg if test -n "$1" ; then 29475f5b92ffSmrg func_emit_wrapper_arg1=$1 294817a48c7cSmrg fi 294917a48c7cSmrg 29505f5b92ffSmrg # split this up so that func_emit_cwrapperexe_src 29515f5b92ffSmrg # can call each part independently. 29525f5b92ffSmrg func_emit_wrapper_part1 "${func_emit_wrapper_arg1}" 29535f5b92ffSmrg func_emit_wrapper_part2 "${func_emit_wrapper_arg1}" 29545f5b92ffSmrg} 295517a48c7cSmrg 295617a48c7cSmrg 29575f5b92ffSmrg# func_to_host_path arg 29585f5b92ffSmrg# 29595f5b92ffSmrg# Convert paths to host format when used with build tools. 29605f5b92ffSmrg# Intended for use with "native" mingw (where libtool itself 29615f5b92ffSmrg# is running under the msys shell), or in the following cross- 29625f5b92ffSmrg# build environments: 29635f5b92ffSmrg# $build $host 29645f5b92ffSmrg# mingw (msys) mingw [e.g. native] 29655f5b92ffSmrg# cygwin mingw 29665f5b92ffSmrg# *nix + wine mingw 29675f5b92ffSmrg# where wine is equipped with the `winepath' executable. 29685f5b92ffSmrg# In the native mingw case, the (msys) shell automatically 29695f5b92ffSmrg# converts paths for any non-msys applications it launches, 29705f5b92ffSmrg# but that facility isn't available from inside the cwrapper. 29715f5b92ffSmrg# Similar accommodations are necessary for $host mingw and 29725f5b92ffSmrg# $build cygwin. Calling this function does no harm for other 29735f5b92ffSmrg# $host/$build combinations not listed above. 29745f5b92ffSmrg# 29755f5b92ffSmrg# ARG is the path (on $build) that should be converted to 29765f5b92ffSmrg# the proper representation for $host. The result is stored 29775f5b92ffSmrg# in $func_to_host_path_result. 29785f5b92ffSmrgfunc_to_host_path () 29795f5b92ffSmrg{ 29805f5b92ffSmrg func_to_host_path_result="$1" 29815f5b92ffSmrg if test -n "$1" ; then 29825f5b92ffSmrg case $host in 29835f5b92ffSmrg *mingw* ) 29845f5b92ffSmrg lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' 29855f5b92ffSmrg case $build in 29865f5b92ffSmrg *mingw* ) # actually, msys 29875f5b92ffSmrg # awkward: cmd appends spaces to result 29885f5b92ffSmrg lt_sed_strip_trailing_spaces="s/[ ]*\$//" 29895f5b92ffSmrg func_to_host_path_tmp1=`( cmd //c echo "$1" |\ 29905f5b92ffSmrg $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""` 29915f5b92ffSmrg func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ 29925f5b92ffSmrg $SED -e "$lt_sed_naive_backslashify"` 29935f5b92ffSmrg ;; 29945f5b92ffSmrg *cygwin* ) 29955f5b92ffSmrg func_to_host_path_tmp1=`cygpath -w "$1"` 29965f5b92ffSmrg func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ 29975f5b92ffSmrg $SED -e "$lt_sed_naive_backslashify"` 29985f5b92ffSmrg ;; 29995f5b92ffSmrg * ) 30005f5b92ffSmrg # Unfortunately, winepath does not exit with a non-zero 30015f5b92ffSmrg # error code, so we are forced to check the contents of 30025f5b92ffSmrg # stdout. On the other hand, if the command is not 30035f5b92ffSmrg # found, the shell will set an exit code of 127 and print 30045f5b92ffSmrg # *an error message* to stdout. So we must check for both 30055f5b92ffSmrg # error code of zero AND non-empty stdout, which explains 30065f5b92ffSmrg # the odd construction: 30075f5b92ffSmrg func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null` 30085f5b92ffSmrg if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then 30095f5b92ffSmrg func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ 30105f5b92ffSmrg $SED -e "$lt_sed_naive_backslashify"` 30115f5b92ffSmrg else 30125f5b92ffSmrg # Allow warning below. 30135f5b92ffSmrg func_to_host_path_result="" 30145f5b92ffSmrg fi 30155f5b92ffSmrg ;; 30165f5b92ffSmrg esac 30175f5b92ffSmrg if test -z "$func_to_host_path_result" ; then 30185f5b92ffSmrg func_error "Could not determine host path corresponding to" 30195f5b92ffSmrg func_error " '$1'" 30205f5b92ffSmrg func_error "Continuing, but uninstalled executables may not work." 30215f5b92ffSmrg # Fallback: 30225f5b92ffSmrg func_to_host_path_result="$1" 30235f5b92ffSmrg fi 30245f5b92ffSmrg ;; 30255f5b92ffSmrg esac 30265f5b92ffSmrg fi 30275f5b92ffSmrg} 30285f5b92ffSmrg# end: func_to_host_path 302917a48c7cSmrg 30305f5b92ffSmrg# func_to_host_pathlist arg 30315f5b92ffSmrg# 30325f5b92ffSmrg# Convert pathlists to host format when used with build tools. 30335f5b92ffSmrg# See func_to_host_path(), above. This function supports the 30345f5b92ffSmrg# following $build/$host combinations (but does no harm for 30355f5b92ffSmrg# combinations not listed here): 30365f5b92ffSmrg# $build $host 30375f5b92ffSmrg# mingw (msys) mingw [e.g. native] 30385f5b92ffSmrg# cygwin mingw 30395f5b92ffSmrg# *nix + wine mingw 30405f5b92ffSmrg# 30415f5b92ffSmrg# Path separators are also converted from $build format to 30425f5b92ffSmrg# $host format. If ARG begins or ends with a path separator 30435f5b92ffSmrg# character, it is preserved (but converted to $host format) 30445f5b92ffSmrg# on output. 30455f5b92ffSmrg# 30465f5b92ffSmrg# ARG is a pathlist (on $build) that should be converted to 30475f5b92ffSmrg# the proper representation on $host. The result is stored 30485f5b92ffSmrg# in $func_to_host_pathlist_result. 30495f5b92ffSmrgfunc_to_host_pathlist () 30505f5b92ffSmrg{ 30515f5b92ffSmrg func_to_host_pathlist_result="$1" 30525f5b92ffSmrg if test -n "$1" ; then 30535f5b92ffSmrg case $host in 30545f5b92ffSmrg *mingw* ) 30555f5b92ffSmrg lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' 30565f5b92ffSmrg # Remove leading and trailing path separator characters from 30575f5b92ffSmrg # ARG. msys behavior is inconsistent here, cygpath turns them 30585f5b92ffSmrg # into '.;' and ';.', and winepath ignores them completely. 30595f5b92ffSmrg func_to_host_pathlist_tmp2="$1" 30605f5b92ffSmrg # Once set for this call, this variable should not be 30615f5b92ffSmrg # reassigned. It is used in tha fallback case. 30625f5b92ffSmrg func_to_host_pathlist_tmp1=`echo "$func_to_host_pathlist_tmp2" |\ 30635f5b92ffSmrg $SED -e 's|^:*||' -e 's|:*$||'` 30645f5b92ffSmrg case $build in 30655f5b92ffSmrg *mingw* ) # Actually, msys. 30665f5b92ffSmrg # Awkward: cmd appends spaces to result. 30675f5b92ffSmrg lt_sed_strip_trailing_spaces="s/[ ]*\$//" 30685f5b92ffSmrg func_to_host_pathlist_tmp2=`( cmd //c echo "$func_to_host_pathlist_tmp1" |\ 30695f5b92ffSmrg $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""` 30705f5b92ffSmrg func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\ 30715f5b92ffSmrg $SED -e "$lt_sed_naive_backslashify"` 30725f5b92ffSmrg ;; 30735f5b92ffSmrg *cygwin* ) 30745f5b92ffSmrg func_to_host_pathlist_tmp2=`cygpath -w -p "$func_to_host_pathlist_tmp1"` 30755f5b92ffSmrg func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\ 30765f5b92ffSmrg $SED -e "$lt_sed_naive_backslashify"` 30775f5b92ffSmrg ;; 30785f5b92ffSmrg * ) 30795f5b92ffSmrg # unfortunately, winepath doesn't convert pathlists 30805f5b92ffSmrg func_to_host_pathlist_result="" 30815f5b92ffSmrg func_to_host_pathlist_oldIFS=$IFS 30825f5b92ffSmrg IFS=: 30835f5b92ffSmrg for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do 30845f5b92ffSmrg IFS=$func_to_host_pathlist_oldIFS 30855f5b92ffSmrg if test -n "$func_to_host_pathlist_f" ; then 30865f5b92ffSmrg func_to_host_path "$func_to_host_pathlist_f" 30875f5b92ffSmrg if test -n "$func_to_host_path_result" ; then 30885f5b92ffSmrg if test -z "$func_to_host_pathlist_result" ; then 30895f5b92ffSmrg func_to_host_pathlist_result="$func_to_host_path_result" 30905f5b92ffSmrg else 30915f5b92ffSmrg func_to_host_pathlist_result="$func_to_host_pathlist_result;$func_to_host_path_result" 30925f5b92ffSmrg fi 30935f5b92ffSmrg fi 30945f5b92ffSmrg fi 30955f5b92ffSmrg IFS=: 30965f5b92ffSmrg done 30975f5b92ffSmrg IFS=$func_to_host_pathlist_oldIFS 30985f5b92ffSmrg ;; 30995f5b92ffSmrg esac 31005f5b92ffSmrg if test -z "$func_to_host_pathlist_result" ; then 31015f5b92ffSmrg func_error "Could not determine the host path(s) corresponding to" 31025f5b92ffSmrg func_error " '$1'" 31035f5b92ffSmrg func_error "Continuing, but uninstalled executables may not work." 31045f5b92ffSmrg # Fallback. This may break if $1 contains DOS-style drive 31055f5b92ffSmrg # specifications. The fix is not to complicate the expression 31065f5b92ffSmrg # below, but for the user to provide a working wine installation 31075f5b92ffSmrg # with winepath so that path translation in the cross-to-mingw 31085f5b92ffSmrg # case works properly. 31095f5b92ffSmrg lt_replace_pathsep_nix_to_dos="s|:|;|g" 31105f5b92ffSmrg func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\ 31115f5b92ffSmrg $SED -e "$lt_replace_pathsep_nix_to_dos"` 31125f5b92ffSmrg fi 31135f5b92ffSmrg # Now, add the leading and trailing path separators back 31145f5b92ffSmrg case "$1" in 31155f5b92ffSmrg :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result" 31165f5b92ffSmrg ;; 31175f5b92ffSmrg esac 31185f5b92ffSmrg case "$1" in 31195f5b92ffSmrg *: ) func_to_host_pathlist_result="$func_to_host_pathlist_result;" 31205f5b92ffSmrg ;; 31215f5b92ffSmrg esac 31225f5b92ffSmrg ;; 31235f5b92ffSmrg esac 31245f5b92ffSmrg fi 31255f5b92ffSmrg} 31265f5b92ffSmrg# end: func_to_host_pathlist 312717a48c7cSmrg 31285f5b92ffSmrg# func_emit_cwrapperexe_src 31295f5b92ffSmrg# emit the source code for a wrapper executable on stdout 31305f5b92ffSmrg# Must ONLY be called from within func_mode_link because 31315f5b92ffSmrg# it depends on a number of variable set therein. 31325f5b92ffSmrgfunc_emit_cwrapperexe_src () 31335f5b92ffSmrg{ 31345f5b92ffSmrg cat <<EOF 313517a48c7cSmrg 31365f5b92ffSmrg/* $cwrappersource - temporary wrapper executable for $objdir/$outputname 31375f5b92ffSmrg Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 313817a48c7cSmrg 31395f5b92ffSmrg The $output program cannot be directly executed until all the libtool 31405f5b92ffSmrg libraries that it depends on are installed. 314117a48c7cSmrg 31425f5b92ffSmrg This wrapper executable should never be moved out of the build directory. 31435f5b92ffSmrg If it is, it will not operate correctly. 314417a48c7cSmrg 31455f5b92ffSmrg Currently, it simply execs the wrapper *script* "$SHELL $output", 31465f5b92ffSmrg but could eventually absorb all of the scripts functionality and 31475f5b92ffSmrg exec $objdir/$outputname directly. 31485f5b92ffSmrg*/ 31495f5b92ffSmrgEOF 31505f5b92ffSmrg cat <<"EOF" 31515f5b92ffSmrg#include <stdio.h> 31525f5b92ffSmrg#include <stdlib.h> 31535f5b92ffSmrg#ifdef _MSC_VER 31545f5b92ffSmrg# include <direct.h> 31555f5b92ffSmrg# include <process.h> 31565f5b92ffSmrg# include <io.h> 31575f5b92ffSmrg# define setmode _setmode 31585f5b92ffSmrg#else 31595f5b92ffSmrg# include <unistd.h> 31605f5b92ffSmrg# include <stdint.h> 31615f5b92ffSmrg# ifdef __CYGWIN__ 31625f5b92ffSmrg# include <io.h> 31635f5b92ffSmrg# define HAVE_SETENV 31645f5b92ffSmrg# ifdef __STRICT_ANSI__ 31655f5b92ffSmrgchar *realpath (const char *, char *); 31665f5b92ffSmrgint putenv (char *); 31675f5b92ffSmrgint setenv (const char *, const char *, int); 31685f5b92ffSmrg# endif 31695f5b92ffSmrg# endif 31705f5b92ffSmrg#endif 31715f5b92ffSmrg#include <malloc.h> 31725f5b92ffSmrg#include <stdarg.h> 31735f5b92ffSmrg#include <assert.h> 31745f5b92ffSmrg#include <string.h> 31755f5b92ffSmrg#include <ctype.h> 31765f5b92ffSmrg#include <errno.h> 31775f5b92ffSmrg#include <fcntl.h> 31785f5b92ffSmrg#include <sys/stat.h> 317917a48c7cSmrg 31805f5b92ffSmrg#if defined(PATH_MAX) 31815f5b92ffSmrg# define LT_PATHMAX PATH_MAX 31825f5b92ffSmrg#elif defined(MAXPATHLEN) 31835f5b92ffSmrg# define LT_PATHMAX MAXPATHLEN 31845f5b92ffSmrg#else 31855f5b92ffSmrg# define LT_PATHMAX 1024 31865f5b92ffSmrg#endif 318717a48c7cSmrg 31885f5b92ffSmrg#ifndef S_IXOTH 31895f5b92ffSmrg# define S_IXOTH 0 31905f5b92ffSmrg#endif 31915f5b92ffSmrg#ifndef S_IXGRP 31925f5b92ffSmrg# define S_IXGRP 0 31935f5b92ffSmrg#endif 319417a48c7cSmrg 31955f5b92ffSmrg#ifdef _MSC_VER 31965f5b92ffSmrg# define S_IXUSR _S_IEXEC 31975f5b92ffSmrg# define stat _stat 31985f5b92ffSmrg# ifndef _INTPTR_T_DEFINED 31995f5b92ffSmrg# define intptr_t int 32005f5b92ffSmrg# endif 32015f5b92ffSmrg#endif 320217a48c7cSmrg 32035f5b92ffSmrg#ifndef DIR_SEPARATOR 32045f5b92ffSmrg# define DIR_SEPARATOR '/' 32055f5b92ffSmrg# define PATH_SEPARATOR ':' 32065f5b92ffSmrg#endif 320717a48c7cSmrg 32085f5b92ffSmrg#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ 32095f5b92ffSmrg defined (__OS2__) 32105f5b92ffSmrg# define HAVE_DOS_BASED_FILE_SYSTEM 32115f5b92ffSmrg# define FOPEN_WB "wb" 32125f5b92ffSmrg# ifndef DIR_SEPARATOR_2 32135f5b92ffSmrg# define DIR_SEPARATOR_2 '\\' 32145f5b92ffSmrg# endif 32155f5b92ffSmrg# ifndef PATH_SEPARATOR_2 32165f5b92ffSmrg# define PATH_SEPARATOR_2 ';' 32175f5b92ffSmrg# endif 32185f5b92ffSmrg#endif 321917a48c7cSmrg 32205f5b92ffSmrg#ifndef DIR_SEPARATOR_2 32215f5b92ffSmrg# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) 32225f5b92ffSmrg#else /* DIR_SEPARATOR_2 */ 32235f5b92ffSmrg# define IS_DIR_SEPARATOR(ch) \ 32245f5b92ffSmrg (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) 32255f5b92ffSmrg#endif /* DIR_SEPARATOR_2 */ 322617a48c7cSmrg 32275f5b92ffSmrg#ifndef PATH_SEPARATOR_2 32285f5b92ffSmrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) 32295f5b92ffSmrg#else /* PATH_SEPARATOR_2 */ 32305f5b92ffSmrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) 32315f5b92ffSmrg#endif /* PATH_SEPARATOR_2 */ 323217a48c7cSmrg 32335f5b92ffSmrg#ifdef __CYGWIN__ 32345f5b92ffSmrg# define FOPEN_WB "wb" 32355f5b92ffSmrg#endif 323617a48c7cSmrg 32375f5b92ffSmrg#ifndef FOPEN_WB 32385f5b92ffSmrg# define FOPEN_WB "w" 32395f5b92ffSmrg#endif 32405f5b92ffSmrg#ifndef _O_BINARY 32415f5b92ffSmrg# define _O_BINARY 0 32425f5b92ffSmrg#endif 324317a48c7cSmrg 32445f5b92ffSmrg#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) 32455f5b92ffSmrg#define XFREE(stale) do { \ 32465f5b92ffSmrg if (stale) { free ((void *) stale); stale = 0; } \ 32475f5b92ffSmrg} while (0) 324817a48c7cSmrg 32495f5b92ffSmrg#undef LTWRAPPER_DEBUGPRINTF 32505f5b92ffSmrg#if defined DEBUGWRAPPER 32515f5b92ffSmrg# define LTWRAPPER_DEBUGPRINTF(args) ltwrapper_debugprintf args 32525f5b92ffSmrgstatic void 32535f5b92ffSmrgltwrapper_debugprintf (const char *fmt, ...) 32545f5b92ffSmrg{ 32555f5b92ffSmrg va_list args; 32565f5b92ffSmrg va_start (args, fmt); 32575f5b92ffSmrg (void) vfprintf (stderr, fmt, args); 32585f5b92ffSmrg va_end (args); 32595f5b92ffSmrg} 32605f5b92ffSmrg#else 32615f5b92ffSmrg# define LTWRAPPER_DEBUGPRINTF(args) 32625f5b92ffSmrg#endif 326317a48c7cSmrg 32645f5b92ffSmrgconst char *program_name = NULL; 326517a48c7cSmrg 32665f5b92ffSmrgvoid *xmalloc (size_t num); 32675f5b92ffSmrgchar *xstrdup (const char *string); 32685f5b92ffSmrgconst char *base_name (const char *name); 32695f5b92ffSmrgchar *find_executable (const char *wrapper); 32705f5b92ffSmrgchar *chase_symlinks (const char *pathspec); 32715f5b92ffSmrgint make_executable (const char *path); 32725f5b92ffSmrgint check_executable (const char *path); 32735f5b92ffSmrgchar *strendzap (char *str, const char *pat); 32745f5b92ffSmrgvoid lt_fatal (const char *message, ...); 32755f5b92ffSmrgvoid lt_setenv (const char *name, const char *value); 32765f5b92ffSmrgchar *lt_extend_str (const char *orig_value, const char *add, int to_end); 32775f5b92ffSmrgvoid lt_opt_process_env_set (const char *arg); 32785f5b92ffSmrgvoid lt_opt_process_env_prepend (const char *arg); 32795f5b92ffSmrgvoid lt_opt_process_env_append (const char *arg); 32805f5b92ffSmrgint lt_split_name_value (const char *arg, char** name, char** value); 32815f5b92ffSmrgvoid lt_update_exe_path (const char *name, const char *value); 32825f5b92ffSmrgvoid lt_update_lib_path (const char *name, const char *value); 32835f5b92ffSmrg 32845f5b92ffSmrgstatic const char *script_text_part1 = 32855f5b92ffSmrgEOF 328617a48c7cSmrg 32875f5b92ffSmrg func_emit_wrapper_part1 yes | 32885f5b92ffSmrg $SED -e 's/\([\\"]\)/\\\1/g' \ 32895f5b92ffSmrg -e 's/^/ "/' -e 's/$/\\n"/' 32905f5b92ffSmrg echo ";" 32915f5b92ffSmrg cat <<EOF 329217a48c7cSmrg 32935f5b92ffSmrgstatic const char *script_text_part2 = 32945f5b92ffSmrgEOF 32955f5b92ffSmrg func_emit_wrapper_part2 yes | 32965f5b92ffSmrg $SED -e 's/\([\\"]\)/\\\1/g' \ 32975f5b92ffSmrg -e 's/^/ "/' -e 's/$/\\n"/' 32985f5b92ffSmrg echo ";" 32995f5b92ffSmrg 33005f5b92ffSmrg cat <<EOF 33015f5b92ffSmrgconst char * MAGIC_EXE = "$magic_exe"; 33025f5b92ffSmrgconst char * LIB_PATH_VARNAME = "$shlibpath_var"; 33035f5b92ffSmrgEOF 330417a48c7cSmrg 33055f5b92ffSmrg if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 33065f5b92ffSmrg func_to_host_pathlist "$temp_rpath" 33075f5b92ffSmrg cat <<EOF 33085f5b92ffSmrgconst char * LIB_PATH_VALUE = "$func_to_host_pathlist_result"; 33095f5b92ffSmrgEOF 33105f5b92ffSmrg else 33115f5b92ffSmrg cat <<"EOF" 33125f5b92ffSmrgconst char * LIB_PATH_VALUE = ""; 33135f5b92ffSmrgEOF 331417a48c7cSmrg fi 331517a48c7cSmrg 33165f5b92ffSmrg if test -n "$dllsearchpath"; then 33175f5b92ffSmrg func_to_host_pathlist "$dllsearchpath:" 33185f5b92ffSmrg cat <<EOF 33195f5b92ffSmrgconst char * EXE_PATH_VARNAME = "PATH"; 33205f5b92ffSmrgconst char * EXE_PATH_VALUE = "$func_to_host_pathlist_result"; 332117a48c7cSmrgEOF 332217a48c7cSmrg else 33235f5b92ffSmrg cat <<"EOF" 33245f5b92ffSmrgconst char * EXE_PATH_VARNAME = ""; 33255f5b92ffSmrgconst char * EXE_PATH_VALUE = ""; 33265f5b92ffSmrgEOF 332717a48c7cSmrg fi 33285f5b92ffSmrg 33295f5b92ffSmrg if test "$fast_install" = yes; then 33305f5b92ffSmrg cat <<EOF 33315f5b92ffSmrgconst char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */ 33325f5b92ffSmrgEOF 333317a48c7cSmrg else 33345f5b92ffSmrg cat <<EOF 33355f5b92ffSmrgconst char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */ 33365f5b92ffSmrgEOF 333717a48c7cSmrg fi 333817a48c7cSmrg 333917a48c7cSmrg 33405f5b92ffSmrg cat <<"EOF" 334117a48c7cSmrg 33425f5b92ffSmrg#define LTWRAPPER_OPTION_PREFIX "--lt-" 33435f5b92ffSmrg#define LTWRAPPER_OPTION_PREFIX_LENGTH 5 334417a48c7cSmrg 33455f5b92ffSmrgstatic const size_t opt_prefix_len = LTWRAPPER_OPTION_PREFIX_LENGTH; 33465f5b92ffSmrgstatic const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX; 334717a48c7cSmrg 33485f5b92ffSmrgstatic const char *dumpscript_opt = LTWRAPPER_OPTION_PREFIX "dump-script"; 334917a48c7cSmrg 33505f5b92ffSmrgstatic const size_t env_set_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 7; 33515f5b92ffSmrgstatic const char *env_set_opt = LTWRAPPER_OPTION_PREFIX "env-set"; 33525f5b92ffSmrg /* argument is putenv-style "foo=bar", value of foo is set to bar */ 335317a48c7cSmrg 33545f5b92ffSmrgstatic const size_t env_prepend_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 11; 33555f5b92ffSmrgstatic const char *env_prepend_opt = LTWRAPPER_OPTION_PREFIX "env-prepend"; 33565f5b92ffSmrg /* argument is putenv-style "foo=bar", new value of foo is bar${foo} */ 335717a48c7cSmrg 33585f5b92ffSmrgstatic const size_t env_append_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 10; 33595f5b92ffSmrgstatic const char *env_append_opt = LTWRAPPER_OPTION_PREFIX "env-append"; 33605f5b92ffSmrg /* argument is putenv-style "foo=bar", new value of foo is ${foo}bar */ 336117a48c7cSmrg 33625f5b92ffSmrgint 33635f5b92ffSmrgmain (int argc, char *argv[]) 33645f5b92ffSmrg{ 33655f5b92ffSmrg char **newargz; 33665f5b92ffSmrg int newargc; 33675f5b92ffSmrg char *tmp_pathspec; 33685f5b92ffSmrg char *actual_cwrapper_path; 33695f5b92ffSmrg char *actual_cwrapper_name; 33705f5b92ffSmrg char *target_name; 33715f5b92ffSmrg char *lt_argv_zero; 33725f5b92ffSmrg intptr_t rval = 127; 337317a48c7cSmrg 33745f5b92ffSmrg int i; 337517a48c7cSmrg 33765f5b92ffSmrg program_name = (char *) xstrdup (base_name (argv[0])); 33775f5b92ffSmrg LTWRAPPER_DEBUGPRINTF (("(main) argv[0] : %s\n", argv[0])); 33785f5b92ffSmrg LTWRAPPER_DEBUGPRINTF (("(main) program_name : %s\n", program_name)); 337917a48c7cSmrg 33805f5b92ffSmrg /* very simple arg parsing; don't want to rely on getopt */ 33815f5b92ffSmrg for (i = 1; i < argc; i++) 33825f5b92ffSmrg { 33835f5b92ffSmrg if (strcmp (argv[i], dumpscript_opt) == 0) 33845f5b92ffSmrg { 33855f5b92ffSmrgEOF 33865f5b92ffSmrg case "$host" in 33875f5b92ffSmrg *mingw* | *cygwin* ) 33885f5b92ffSmrg # make stdout use "unix" line endings 33895f5b92ffSmrg echo " setmode(1,_O_BINARY);" 33905f5b92ffSmrg ;; 33915f5b92ffSmrg esac 339217a48c7cSmrg 33935f5b92ffSmrg cat <<"EOF" 33945f5b92ffSmrg printf ("%s", script_text_part1); 33955f5b92ffSmrg printf ("%s", script_text_part2); 33965f5b92ffSmrg return 0; 33975f5b92ffSmrg } 33985f5b92ffSmrg } 339917a48c7cSmrg 34005f5b92ffSmrg newargz = XMALLOC (char *, argc + 1); 34015f5b92ffSmrg tmp_pathspec = find_executable (argv[0]); 34025f5b92ffSmrg if (tmp_pathspec == NULL) 34035f5b92ffSmrg lt_fatal ("Couldn't find %s", argv[0]); 34045f5b92ffSmrg LTWRAPPER_DEBUGPRINTF (("(main) found exe (before symlink chase) at : %s\n", 34055f5b92ffSmrg tmp_pathspec)); 34065f5b92ffSmrg 34075f5b92ffSmrg actual_cwrapper_path = chase_symlinks (tmp_pathspec); 34085f5b92ffSmrg LTWRAPPER_DEBUGPRINTF (("(main) found exe (after symlink chase) at : %s\n", 34095f5b92ffSmrg actual_cwrapper_path)); 34105f5b92ffSmrg XFREE (tmp_pathspec); 34115f5b92ffSmrg 34125f5b92ffSmrg actual_cwrapper_name = xstrdup( base_name (actual_cwrapper_path)); 34135f5b92ffSmrg strendzap (actual_cwrapper_path, actual_cwrapper_name); 34145f5b92ffSmrg 34155f5b92ffSmrg /* wrapper name transforms */ 34165f5b92ffSmrg strendzap (actual_cwrapper_name, ".exe"); 34175f5b92ffSmrg tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1); 34185f5b92ffSmrg XFREE (actual_cwrapper_name); 34195f5b92ffSmrg actual_cwrapper_name = tmp_pathspec; 34205f5b92ffSmrg tmp_pathspec = 0; 34215f5b92ffSmrg 34225f5b92ffSmrg /* target_name transforms -- use actual target program name; might have lt- prefix */ 34235f5b92ffSmrg target_name = xstrdup (base_name (TARGET_PROGRAM_NAME)); 34245f5b92ffSmrg strendzap (target_name, ".exe"); 34255f5b92ffSmrg tmp_pathspec = lt_extend_str (target_name, ".exe", 1); 34265f5b92ffSmrg XFREE (target_name); 34275f5b92ffSmrg target_name = tmp_pathspec; 34285f5b92ffSmrg tmp_pathspec = 0; 34295f5b92ffSmrg 34305f5b92ffSmrg LTWRAPPER_DEBUGPRINTF (("(main) libtool target name: %s\n", 34315f5b92ffSmrg target_name)); 34325f5b92ffSmrgEOF 343317a48c7cSmrg 34345f5b92ffSmrg cat <<EOF 34355f5b92ffSmrg newargz[0] = 34365f5b92ffSmrg XMALLOC (char, (strlen (actual_cwrapper_path) + 34375f5b92ffSmrg strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1)); 34385f5b92ffSmrg strcpy (newargz[0], actual_cwrapper_path); 34395f5b92ffSmrg strcat (newargz[0], "$objdir"); 34405f5b92ffSmrg strcat (newargz[0], "/"); 34415f5b92ffSmrgEOF 344217a48c7cSmrg 34435f5b92ffSmrg cat <<"EOF" 34445f5b92ffSmrg /* stop here, and copy so we don't have to do this twice */ 34455f5b92ffSmrg tmp_pathspec = xstrdup (newargz[0]); 344617a48c7cSmrg 34475f5b92ffSmrg /* do NOT want the lt- prefix here, so use actual_cwrapper_name */ 34485f5b92ffSmrg strcat (newargz[0], actual_cwrapper_name); 344917a48c7cSmrg 34505f5b92ffSmrg /* DO want the lt- prefix here if it exists, so use target_name */ 34515f5b92ffSmrg lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1); 34525f5b92ffSmrg XFREE (tmp_pathspec); 34535f5b92ffSmrg tmp_pathspec = NULL; 34545f5b92ffSmrgEOF 345517a48c7cSmrg 34565f5b92ffSmrg case $host_os in 34575f5b92ffSmrg mingw*) 34585f5b92ffSmrg cat <<"EOF" 34595f5b92ffSmrg { 34605f5b92ffSmrg char* p; 34615f5b92ffSmrg while ((p = strchr (newargz[0], '\\')) != NULL) 34625f5b92ffSmrg { 34635f5b92ffSmrg *p = '/'; 34645f5b92ffSmrg } 34655f5b92ffSmrg while ((p = strchr (lt_argv_zero, '\\')) != NULL) 34665f5b92ffSmrg { 34675f5b92ffSmrg *p = '/'; 34685f5b92ffSmrg } 34695f5b92ffSmrg } 34705f5b92ffSmrgEOF 34715f5b92ffSmrg ;; 34725f5b92ffSmrg esac 347317a48c7cSmrg 34745f5b92ffSmrg cat <<"EOF" 34755f5b92ffSmrg XFREE (target_name); 34765f5b92ffSmrg XFREE (actual_cwrapper_path); 34775f5b92ffSmrg XFREE (actual_cwrapper_name); 347817a48c7cSmrg 34795f5b92ffSmrg lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */ 34805f5b92ffSmrg lt_setenv ("DUALCASE", "1"); /* for MSK sh */ 34815f5b92ffSmrg lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE); 34825f5b92ffSmrg lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE); 348317a48c7cSmrg 34845f5b92ffSmrg newargc=0; 34855f5b92ffSmrg for (i = 1; i < argc; i++) 34865f5b92ffSmrg { 34875f5b92ffSmrg if (strncmp (argv[i], env_set_opt, env_set_opt_len) == 0) 34885f5b92ffSmrg { 34895f5b92ffSmrg if (argv[i][env_set_opt_len] == '=') 34905f5b92ffSmrg { 34915f5b92ffSmrg const char *p = argv[i] + env_set_opt_len + 1; 34925f5b92ffSmrg lt_opt_process_env_set (p); 34935f5b92ffSmrg } 34945f5b92ffSmrg else if (argv[i][env_set_opt_len] == '\0' && i + 1 < argc) 34955f5b92ffSmrg { 34965f5b92ffSmrg lt_opt_process_env_set (argv[++i]); /* don't copy */ 34975f5b92ffSmrg } 34985f5b92ffSmrg else 34995f5b92ffSmrg lt_fatal ("%s missing required argument", env_set_opt); 35005f5b92ffSmrg continue; 35015f5b92ffSmrg } 35025f5b92ffSmrg if (strncmp (argv[i], env_prepend_opt, env_prepend_opt_len) == 0) 35035f5b92ffSmrg { 35045f5b92ffSmrg if (argv[i][env_prepend_opt_len] == '=') 35055f5b92ffSmrg { 35065f5b92ffSmrg const char *p = argv[i] + env_prepend_opt_len + 1; 35075f5b92ffSmrg lt_opt_process_env_prepend (p); 35085f5b92ffSmrg } 35095f5b92ffSmrg else if (argv[i][env_prepend_opt_len] == '\0' && i + 1 < argc) 35105f5b92ffSmrg { 35115f5b92ffSmrg lt_opt_process_env_prepend (argv[++i]); /* don't copy */ 35125f5b92ffSmrg } 35135f5b92ffSmrg else 35145f5b92ffSmrg lt_fatal ("%s missing required argument", env_prepend_opt); 35155f5b92ffSmrg continue; 35165f5b92ffSmrg } 35175f5b92ffSmrg if (strncmp (argv[i], env_append_opt, env_append_opt_len) == 0) 35185f5b92ffSmrg { 35195f5b92ffSmrg if (argv[i][env_append_opt_len] == '=') 35205f5b92ffSmrg { 35215f5b92ffSmrg const char *p = argv[i] + env_append_opt_len + 1; 35225f5b92ffSmrg lt_opt_process_env_append (p); 35235f5b92ffSmrg } 35245f5b92ffSmrg else if (argv[i][env_append_opt_len] == '\0' && i + 1 < argc) 35255f5b92ffSmrg { 35265f5b92ffSmrg lt_opt_process_env_append (argv[++i]); /* don't copy */ 35275f5b92ffSmrg } 35285f5b92ffSmrg else 35295f5b92ffSmrg lt_fatal ("%s missing required argument", env_append_opt); 35305f5b92ffSmrg continue; 35315f5b92ffSmrg } 35325f5b92ffSmrg if (strncmp (argv[i], ltwrapper_option_prefix, opt_prefix_len) == 0) 35335f5b92ffSmrg { 35345f5b92ffSmrg /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX 35355f5b92ffSmrg namespace, but it is not one of the ones we know about and 35365f5b92ffSmrg have already dealt with, above (inluding dump-script), then 35375f5b92ffSmrg report an error. Otherwise, targets might begin to believe 35385f5b92ffSmrg they are allowed to use options in the LTWRAPPER_OPTION_PREFIX 35395f5b92ffSmrg namespace. The first time any user complains about this, we'll 35405f5b92ffSmrg need to make LTWRAPPER_OPTION_PREFIX a configure-time option 35415f5b92ffSmrg or a configure.ac-settable value. 35425f5b92ffSmrg */ 35435f5b92ffSmrg lt_fatal ("Unrecognized option in %s namespace: '%s'", 35445f5b92ffSmrg ltwrapper_option_prefix, argv[i]); 35455f5b92ffSmrg } 35465f5b92ffSmrg /* otherwise ... */ 35475f5b92ffSmrg newargz[++newargc] = xstrdup (argv[i]); 35485f5b92ffSmrg } 35495f5b92ffSmrg newargz[++newargc] = NULL; 355017a48c7cSmrg 35515f5b92ffSmrg LTWRAPPER_DEBUGPRINTF (("(main) lt_argv_zero : %s\n", (lt_argv_zero ? lt_argv_zero : "<NULL>"))); 35525f5b92ffSmrg for (i = 0; i < newargc; i++) 35535f5b92ffSmrg { 35545f5b92ffSmrg LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d] : %s\n", i, (newargz[i] ? newargz[i] : "<NULL>"))); 35555f5b92ffSmrg } 355617a48c7cSmrg 35575f5b92ffSmrgEOF 355817a48c7cSmrg 35595f5b92ffSmrg case $host_os in 35605f5b92ffSmrg mingw*) 35615f5b92ffSmrg cat <<"EOF" 35625f5b92ffSmrg /* execv doesn't actually work on mingw as expected on unix */ 35635f5b92ffSmrg rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz); 35645f5b92ffSmrg if (rval == -1) 35655f5b92ffSmrg { 35665f5b92ffSmrg /* failed to start process */ 35675f5b92ffSmrg LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"%s\": errno = %d\n", lt_argv_zero, errno)); 35685f5b92ffSmrg return 127; 35695f5b92ffSmrg } 35705f5b92ffSmrg return rval; 35715f5b92ffSmrgEOF 35725f5b92ffSmrg ;; 35735f5b92ffSmrg *) 35745f5b92ffSmrg cat <<"EOF" 35755f5b92ffSmrg execv (lt_argv_zero, newargz); 35765f5b92ffSmrg return rval; /* =127, but avoids unused variable warning */ 35775f5b92ffSmrgEOF 35785f5b92ffSmrg ;; 35795f5b92ffSmrg esac 358017a48c7cSmrg 35815f5b92ffSmrg cat <<"EOF" 35825f5b92ffSmrg} 358317a48c7cSmrg 35845f5b92ffSmrgvoid * 35855f5b92ffSmrgxmalloc (size_t num) 35865f5b92ffSmrg{ 35875f5b92ffSmrg void *p = (void *) malloc (num); 35885f5b92ffSmrg if (!p) 35895f5b92ffSmrg lt_fatal ("Memory exhausted"); 359017a48c7cSmrg 35915f5b92ffSmrg return p; 35925f5b92ffSmrg} 359317a48c7cSmrg 35945f5b92ffSmrgchar * 35955f5b92ffSmrgxstrdup (const char *string) 35965f5b92ffSmrg{ 35975f5b92ffSmrg return string ? strcpy ((char *) xmalloc (strlen (string) + 1), 35985f5b92ffSmrg string) : NULL; 35995f5b92ffSmrg} 360017a48c7cSmrg 36015f5b92ffSmrgconst char * 36025f5b92ffSmrgbase_name (const char *name) 36035f5b92ffSmrg{ 36045f5b92ffSmrg const char *base; 360517a48c7cSmrg 36065f5b92ffSmrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 36075f5b92ffSmrg /* Skip over the disk name in MSDOS pathnames. */ 36085f5b92ffSmrg if (isalpha ((unsigned char) name[0]) && name[1] == ':') 36095f5b92ffSmrg name += 2; 36105f5b92ffSmrg#endif 361117a48c7cSmrg 36125f5b92ffSmrg for (base = name; *name; name++) 36135f5b92ffSmrg if (IS_DIR_SEPARATOR (*name)) 36145f5b92ffSmrg base = name + 1; 36155f5b92ffSmrg return base; 36165f5b92ffSmrg} 361717a48c7cSmrg 36185f5b92ffSmrgint 36195f5b92ffSmrgcheck_executable (const char *path) 36205f5b92ffSmrg{ 36215f5b92ffSmrg struct stat st; 362217a48c7cSmrg 36235f5b92ffSmrg LTWRAPPER_DEBUGPRINTF (("(check_executable) : %s\n", 36245f5b92ffSmrg path ? (*path ? path : "EMPTY!") : "NULL!")); 36255f5b92ffSmrg if ((!path) || (!*path)) 36265f5b92ffSmrg return 0; 362717a48c7cSmrg 36285f5b92ffSmrg if ((stat (path, &st) >= 0) 36295f5b92ffSmrg && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) 36305f5b92ffSmrg return 1; 36315f5b92ffSmrg else 36325f5b92ffSmrg return 0; 36335f5b92ffSmrg} 363417a48c7cSmrg 36355f5b92ffSmrgint 36365f5b92ffSmrgmake_executable (const char *path) 36375f5b92ffSmrg{ 36385f5b92ffSmrg int rval = 0; 36395f5b92ffSmrg struct stat st; 364017a48c7cSmrg 36415f5b92ffSmrg LTWRAPPER_DEBUGPRINTF (("(make_executable) : %s\n", 36425f5b92ffSmrg path ? (*path ? path : "EMPTY!") : "NULL!")); 36435f5b92ffSmrg if ((!path) || (!*path)) 36445f5b92ffSmrg return 0; 364517a48c7cSmrg 36465f5b92ffSmrg if (stat (path, &st) >= 0) 36475f5b92ffSmrg { 36485f5b92ffSmrg rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); 36495f5b92ffSmrg } 36505f5b92ffSmrg return rval; 36515f5b92ffSmrg} 365217a48c7cSmrg 36535f5b92ffSmrg/* Searches for the full path of the wrapper. Returns 36545f5b92ffSmrg newly allocated full path name if found, NULL otherwise 36555f5b92ffSmrg Does not chase symlinks, even on platforms that support them. 36565f5b92ffSmrg*/ 36575f5b92ffSmrgchar * 36585f5b92ffSmrgfind_executable (const char *wrapper) 36595f5b92ffSmrg{ 36605f5b92ffSmrg int has_slash = 0; 36615f5b92ffSmrg const char *p; 36625f5b92ffSmrg const char *p_next; 36635f5b92ffSmrg /* static buffer for getcwd */ 36645f5b92ffSmrg char tmp[LT_PATHMAX + 1]; 36655f5b92ffSmrg int tmp_len; 36665f5b92ffSmrg char *concat_name; 366717a48c7cSmrg 36685f5b92ffSmrg LTWRAPPER_DEBUGPRINTF (("(find_executable) : %s\n", 36695f5b92ffSmrg wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!")); 367017a48c7cSmrg 36715f5b92ffSmrg if ((wrapper == NULL) || (*wrapper == '\0')) 36725f5b92ffSmrg return NULL; 367317a48c7cSmrg 36745f5b92ffSmrg /* Absolute path? */ 36755f5b92ffSmrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 36765f5b92ffSmrg if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') 36775f5b92ffSmrg { 36785f5b92ffSmrg concat_name = xstrdup (wrapper); 36795f5b92ffSmrg if (check_executable (concat_name)) 36805f5b92ffSmrg return concat_name; 36815f5b92ffSmrg XFREE (concat_name); 36825f5b92ffSmrg } 36835f5b92ffSmrg else 36845f5b92ffSmrg { 36855f5b92ffSmrg#endif 36865f5b92ffSmrg if (IS_DIR_SEPARATOR (wrapper[0])) 36875f5b92ffSmrg { 36885f5b92ffSmrg concat_name = xstrdup (wrapper); 36895f5b92ffSmrg if (check_executable (concat_name)) 36905f5b92ffSmrg return concat_name; 36915f5b92ffSmrg XFREE (concat_name); 36925f5b92ffSmrg } 36935f5b92ffSmrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 36945f5b92ffSmrg } 36955f5b92ffSmrg#endif 369617a48c7cSmrg 36975f5b92ffSmrg for (p = wrapper; *p; p++) 36985f5b92ffSmrg if (*p == '/') 36995f5b92ffSmrg { 37005f5b92ffSmrg has_slash = 1; 37015f5b92ffSmrg break; 37025f5b92ffSmrg } 37035f5b92ffSmrg if (!has_slash) 37045f5b92ffSmrg { 37055f5b92ffSmrg /* no slashes; search PATH */ 37065f5b92ffSmrg const char *path = getenv ("PATH"); 37075f5b92ffSmrg if (path != NULL) 37085f5b92ffSmrg { 37095f5b92ffSmrg for (p = path; *p; p = p_next) 37105f5b92ffSmrg { 37115f5b92ffSmrg const char *q; 37125f5b92ffSmrg size_t p_len; 37135f5b92ffSmrg for (q = p; *q; q++) 37145f5b92ffSmrg if (IS_PATH_SEPARATOR (*q)) 37155f5b92ffSmrg break; 37165f5b92ffSmrg p_len = q - p; 37175f5b92ffSmrg p_next = (*q == '\0' ? q : q + 1); 37185f5b92ffSmrg if (p_len == 0) 37195f5b92ffSmrg { 37205f5b92ffSmrg /* empty path: current directory */ 37215f5b92ffSmrg if (getcwd (tmp, LT_PATHMAX) == NULL) 37225f5b92ffSmrg lt_fatal ("getcwd failed"); 37235f5b92ffSmrg tmp_len = strlen (tmp); 37245f5b92ffSmrg concat_name = 37255f5b92ffSmrg XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); 37265f5b92ffSmrg memcpy (concat_name, tmp, tmp_len); 37275f5b92ffSmrg concat_name[tmp_len] = '/'; 37285f5b92ffSmrg strcpy (concat_name + tmp_len + 1, wrapper); 37295f5b92ffSmrg } 37305f5b92ffSmrg else 37315f5b92ffSmrg { 37325f5b92ffSmrg concat_name = 37335f5b92ffSmrg XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); 37345f5b92ffSmrg memcpy (concat_name, p, p_len); 37355f5b92ffSmrg concat_name[p_len] = '/'; 37365f5b92ffSmrg strcpy (concat_name + p_len + 1, wrapper); 37375f5b92ffSmrg } 37385f5b92ffSmrg if (check_executable (concat_name)) 37395f5b92ffSmrg return concat_name; 37405f5b92ffSmrg XFREE (concat_name); 37415f5b92ffSmrg } 37425f5b92ffSmrg } 37435f5b92ffSmrg /* not found in PATH; assume curdir */ 37445f5b92ffSmrg } 37455f5b92ffSmrg /* Relative path | not found in path: prepend cwd */ 37465f5b92ffSmrg if (getcwd (tmp, LT_PATHMAX) == NULL) 37475f5b92ffSmrg lt_fatal ("getcwd failed"); 37485f5b92ffSmrg tmp_len = strlen (tmp); 37495f5b92ffSmrg concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); 37505f5b92ffSmrg memcpy (concat_name, tmp, tmp_len); 37515f5b92ffSmrg concat_name[tmp_len] = '/'; 37525f5b92ffSmrg strcpy (concat_name + tmp_len + 1, wrapper); 375317a48c7cSmrg 37545f5b92ffSmrg if (check_executable (concat_name)) 37555f5b92ffSmrg return concat_name; 37565f5b92ffSmrg XFREE (concat_name); 37575f5b92ffSmrg return NULL; 37585f5b92ffSmrg} 375917a48c7cSmrg 37605f5b92ffSmrgchar * 37615f5b92ffSmrgchase_symlinks (const char *pathspec) 37625f5b92ffSmrg{ 37635f5b92ffSmrg#ifndef S_ISLNK 37645f5b92ffSmrg return xstrdup (pathspec); 37655f5b92ffSmrg#else 37665f5b92ffSmrg char buf[LT_PATHMAX]; 37675f5b92ffSmrg struct stat s; 37685f5b92ffSmrg char *tmp_pathspec = xstrdup (pathspec); 37695f5b92ffSmrg char *p; 37705f5b92ffSmrg int has_symlinks = 0; 37715f5b92ffSmrg while (strlen (tmp_pathspec) && !has_symlinks) 37725f5b92ffSmrg { 37735f5b92ffSmrg LTWRAPPER_DEBUGPRINTF (("checking path component for symlinks: %s\n", 37745f5b92ffSmrg tmp_pathspec)); 37755f5b92ffSmrg if (lstat (tmp_pathspec, &s) == 0) 37765f5b92ffSmrg { 37775f5b92ffSmrg if (S_ISLNK (s.st_mode) != 0) 37785f5b92ffSmrg { 37795f5b92ffSmrg has_symlinks = 1; 37805f5b92ffSmrg break; 37815f5b92ffSmrg } 378217a48c7cSmrg 37835f5b92ffSmrg /* search backwards for last DIR_SEPARATOR */ 37845f5b92ffSmrg p = tmp_pathspec + strlen (tmp_pathspec) - 1; 37855f5b92ffSmrg while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) 37865f5b92ffSmrg p--; 37875f5b92ffSmrg if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) 37885f5b92ffSmrg { 37895f5b92ffSmrg /* no more DIR_SEPARATORS left */ 37905f5b92ffSmrg break; 37915f5b92ffSmrg } 37925f5b92ffSmrg *p = '\0'; 37935f5b92ffSmrg } 37945f5b92ffSmrg else 37955f5b92ffSmrg { 37965f5b92ffSmrg char *errstr = strerror (errno); 37975f5b92ffSmrg lt_fatal ("Error accessing file %s (%s)", tmp_pathspec, errstr); 37985f5b92ffSmrg } 37995f5b92ffSmrg } 38005f5b92ffSmrg XFREE (tmp_pathspec); 380117a48c7cSmrg 38025f5b92ffSmrg if (!has_symlinks) 38035f5b92ffSmrg { 38045f5b92ffSmrg return xstrdup (pathspec); 38055f5b92ffSmrg } 380617a48c7cSmrg 38075f5b92ffSmrg tmp_pathspec = realpath (pathspec, buf); 38085f5b92ffSmrg if (tmp_pathspec == 0) 38095f5b92ffSmrg { 38105f5b92ffSmrg lt_fatal ("Could not follow symlinks for %s", pathspec); 38115f5b92ffSmrg } 38125f5b92ffSmrg return xstrdup (tmp_pathspec); 38135f5b92ffSmrg#endif 38145f5b92ffSmrg} 381517a48c7cSmrg 38165f5b92ffSmrgchar * 38175f5b92ffSmrgstrendzap (char *str, const char *pat) 38185f5b92ffSmrg{ 38195f5b92ffSmrg size_t len, patlen; 382017a48c7cSmrg 38215f5b92ffSmrg assert (str != NULL); 38225f5b92ffSmrg assert (pat != NULL); 382317a48c7cSmrg 38245f5b92ffSmrg len = strlen (str); 38255f5b92ffSmrg patlen = strlen (pat); 382617a48c7cSmrg 38275f5b92ffSmrg if (patlen <= len) 38285f5b92ffSmrg { 38295f5b92ffSmrg str += len - patlen; 38305f5b92ffSmrg if (strcmp (str, pat) == 0) 38315f5b92ffSmrg *str = '\0'; 38325f5b92ffSmrg } 38335f5b92ffSmrg return str; 38345f5b92ffSmrg} 383517a48c7cSmrg 38365f5b92ffSmrgstatic void 38375f5b92ffSmrglt_error_core (int exit_status, const char *mode, 38385f5b92ffSmrg const char *message, va_list ap) 38395f5b92ffSmrg{ 38405f5b92ffSmrg fprintf (stderr, "%s: %s: ", program_name, mode); 38415f5b92ffSmrg vfprintf (stderr, message, ap); 38425f5b92ffSmrg fprintf (stderr, ".\n"); 384317a48c7cSmrg 38445f5b92ffSmrg if (exit_status >= 0) 38455f5b92ffSmrg exit (exit_status); 38465f5b92ffSmrg} 384717a48c7cSmrg 38485f5b92ffSmrgvoid 38495f5b92ffSmrglt_fatal (const char *message, ...) 38505f5b92ffSmrg{ 38515f5b92ffSmrg va_list ap; 38525f5b92ffSmrg va_start (ap, message); 38535f5b92ffSmrg lt_error_core (EXIT_FAILURE, "FATAL", message, ap); 38545f5b92ffSmrg va_end (ap); 38555f5b92ffSmrg} 385617a48c7cSmrg 38575f5b92ffSmrgvoid 38585f5b92ffSmrglt_setenv (const char *name, const char *value) 38595f5b92ffSmrg{ 38605f5b92ffSmrg LTWRAPPER_DEBUGPRINTF (("(lt_setenv) setting '%s' to '%s'\n", 38615f5b92ffSmrg (name ? name : "<NULL>"), 38625f5b92ffSmrg (value ? value : "<NULL>"))); 38635f5b92ffSmrg { 38645f5b92ffSmrg#ifdef HAVE_SETENV 38655f5b92ffSmrg /* always make a copy, for consistency with !HAVE_SETENV */ 38665f5b92ffSmrg char *str = xstrdup (value); 38675f5b92ffSmrg setenv (name, str, 1); 38685f5b92ffSmrg#else 38695f5b92ffSmrg int len = strlen (name) + 1 + strlen (value) + 1; 38705f5b92ffSmrg char *str = XMALLOC (char, len); 38715f5b92ffSmrg sprintf (str, "%s=%s", name, value); 38725f5b92ffSmrg if (putenv (str) != EXIT_SUCCESS) 38735f5b92ffSmrg { 38745f5b92ffSmrg XFREE (str); 38755f5b92ffSmrg } 38765f5b92ffSmrg#endif 38775f5b92ffSmrg } 38785f5b92ffSmrg} 387917a48c7cSmrg 38805f5b92ffSmrgchar * 38815f5b92ffSmrglt_extend_str (const char *orig_value, const char *add, int to_end) 38825f5b92ffSmrg{ 38835f5b92ffSmrg char *new_value; 38845f5b92ffSmrg if (orig_value && *orig_value) 38855f5b92ffSmrg { 38865f5b92ffSmrg int orig_value_len = strlen (orig_value); 38875f5b92ffSmrg int add_len = strlen (add); 38885f5b92ffSmrg new_value = XMALLOC (char, add_len + orig_value_len + 1); 38895f5b92ffSmrg if (to_end) 38905f5b92ffSmrg { 38915f5b92ffSmrg strcpy (new_value, orig_value); 38925f5b92ffSmrg strcpy (new_value + orig_value_len, add); 38935f5b92ffSmrg } 38945f5b92ffSmrg else 38955f5b92ffSmrg { 38965f5b92ffSmrg strcpy (new_value, add); 38975f5b92ffSmrg strcpy (new_value + add_len, orig_value); 38985f5b92ffSmrg } 38995f5b92ffSmrg } 39005f5b92ffSmrg else 39015f5b92ffSmrg { 39025f5b92ffSmrg new_value = xstrdup (add); 39035f5b92ffSmrg } 39045f5b92ffSmrg return new_value; 39055f5b92ffSmrg} 390617a48c7cSmrg 39075f5b92ffSmrgint 39085f5b92ffSmrglt_split_name_value (const char *arg, char** name, char** value) 39095f5b92ffSmrg{ 39105f5b92ffSmrg const char *p; 39115f5b92ffSmrg int len; 39125f5b92ffSmrg if (!arg || !*arg) 39135f5b92ffSmrg return 1; 391417a48c7cSmrg 39155f5b92ffSmrg p = strchr (arg, (int)'='); 391617a48c7cSmrg 39175f5b92ffSmrg if (!p) 39185f5b92ffSmrg return 1; 391917a48c7cSmrg 39205f5b92ffSmrg *value = xstrdup (++p); 392117a48c7cSmrg 39225f5b92ffSmrg len = strlen (arg) - strlen (*value); 39235f5b92ffSmrg *name = XMALLOC (char, len); 39245f5b92ffSmrg strncpy (*name, arg, len-1); 39255f5b92ffSmrg (*name)[len - 1] = '\0'; 392617a48c7cSmrg 39275f5b92ffSmrg return 0; 39285f5b92ffSmrg} 392917a48c7cSmrg 39305f5b92ffSmrgvoid 39315f5b92ffSmrglt_opt_process_env_set (const char *arg) 39325f5b92ffSmrg{ 39335f5b92ffSmrg char *name = NULL; 39345f5b92ffSmrg char *value = NULL; 393517a48c7cSmrg 39365f5b92ffSmrg if (lt_split_name_value (arg, &name, &value) != 0) 39375f5b92ffSmrg { 39385f5b92ffSmrg XFREE (name); 39395f5b92ffSmrg XFREE (value); 39405f5b92ffSmrg lt_fatal ("bad argument for %s: '%s'", env_set_opt, arg); 39415f5b92ffSmrg } 394217a48c7cSmrg 39435f5b92ffSmrg lt_setenv (name, value); 39445f5b92ffSmrg XFREE (name); 39455f5b92ffSmrg XFREE (value); 39465f5b92ffSmrg} 394717a48c7cSmrg 39485f5b92ffSmrgvoid 39495f5b92ffSmrglt_opt_process_env_prepend (const char *arg) 39505f5b92ffSmrg{ 39515f5b92ffSmrg char *name = NULL; 39525f5b92ffSmrg char *value = NULL; 39535f5b92ffSmrg char *new_value = NULL; 395417a48c7cSmrg 39555f5b92ffSmrg if (lt_split_name_value (arg, &name, &value) != 0) 39565f5b92ffSmrg { 39575f5b92ffSmrg XFREE (name); 39585f5b92ffSmrg XFREE (value); 39595f5b92ffSmrg lt_fatal ("bad argument for %s: '%s'", env_prepend_opt, arg); 39605f5b92ffSmrg } 396117a48c7cSmrg 39625f5b92ffSmrg new_value = lt_extend_str (getenv (name), value, 0); 39635f5b92ffSmrg lt_setenv (name, new_value); 39645f5b92ffSmrg XFREE (new_value); 39655f5b92ffSmrg XFREE (name); 39665f5b92ffSmrg XFREE (value); 39675f5b92ffSmrg} 396817a48c7cSmrg 39695f5b92ffSmrgvoid 39705f5b92ffSmrglt_opt_process_env_append (const char *arg) 39715f5b92ffSmrg{ 39725f5b92ffSmrg char *name = NULL; 39735f5b92ffSmrg char *value = NULL; 39745f5b92ffSmrg char *new_value = NULL; 397517a48c7cSmrg 39765f5b92ffSmrg if (lt_split_name_value (arg, &name, &value) != 0) 39775f5b92ffSmrg { 39785f5b92ffSmrg XFREE (name); 39795f5b92ffSmrg XFREE (value); 39805f5b92ffSmrg lt_fatal ("bad argument for %s: '%s'", env_append_opt, arg); 39815f5b92ffSmrg } 398217a48c7cSmrg 39835f5b92ffSmrg new_value = lt_extend_str (getenv (name), value, 1); 39845f5b92ffSmrg lt_setenv (name, new_value); 39855f5b92ffSmrg XFREE (new_value); 39865f5b92ffSmrg XFREE (name); 39875f5b92ffSmrg XFREE (value); 39885f5b92ffSmrg} 398917a48c7cSmrg 39905f5b92ffSmrgvoid 39915f5b92ffSmrglt_update_exe_path (const char *name, const char *value) 39925f5b92ffSmrg{ 39935f5b92ffSmrg LTWRAPPER_DEBUGPRINTF (("(lt_update_exe_path) modifying '%s' by prepending '%s'\n", 39945f5b92ffSmrg (name ? name : "<NULL>"), 39955f5b92ffSmrg (value ? value : "<NULL>"))); 399617a48c7cSmrg 39975f5b92ffSmrg if (name && *name && value && *value) 39985f5b92ffSmrg { 39995f5b92ffSmrg char *new_value = lt_extend_str (getenv (name), value, 0); 40005f5b92ffSmrg /* some systems can't cope with a ':'-terminated path #' */ 40015f5b92ffSmrg int len = strlen (new_value); 40025f5b92ffSmrg while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) 40035f5b92ffSmrg { 40045f5b92ffSmrg new_value[len-1] = '\0'; 40055f5b92ffSmrg } 40065f5b92ffSmrg lt_setenv (name, new_value); 40075f5b92ffSmrg XFREE (new_value); 40085f5b92ffSmrg } 40095f5b92ffSmrg} 401017a48c7cSmrg 40115f5b92ffSmrgvoid 40125f5b92ffSmrglt_update_lib_path (const char *name, const char *value) 40135f5b92ffSmrg{ 40145f5b92ffSmrg LTWRAPPER_DEBUGPRINTF (("(lt_update_lib_path) modifying '%s' by prepending '%s'\n", 40155f5b92ffSmrg (name ? name : "<NULL>"), 40165f5b92ffSmrg (value ? value : "<NULL>"))); 401717a48c7cSmrg 40185f5b92ffSmrg if (name && *name && value && *value) 40195f5b92ffSmrg { 40205f5b92ffSmrg char *new_value = lt_extend_str (getenv (name), value, 0); 40215f5b92ffSmrg lt_setenv (name, new_value); 40225f5b92ffSmrg XFREE (new_value); 40235f5b92ffSmrg } 40245f5b92ffSmrg} 402517a48c7cSmrg 402617a48c7cSmrg 40275f5b92ffSmrgEOF 40285f5b92ffSmrg} 40295f5b92ffSmrg# end: func_emit_cwrapperexe_src 403017a48c7cSmrg 40315f5b92ffSmrg# func_mode_link arg... 40325f5b92ffSmrgfunc_mode_link () 40335f5b92ffSmrg{ 40345f5b92ffSmrg $opt_debug 40355f5b92ffSmrg case $host in 40365f5b92ffSmrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 40375f5b92ffSmrg # It is impossible to link a dll without this setting, and 40385f5b92ffSmrg # we shouldn't force the makefile maintainer to figure out 40395f5b92ffSmrg # which system we are compiling for in order to pass an extra 40405f5b92ffSmrg # flag for every libtool invocation. 40415f5b92ffSmrg # allow_undefined=no 404217a48c7cSmrg 40435f5b92ffSmrg # FIXME: Unfortunately, there are problems with the above when trying 40445f5b92ffSmrg # to make a dll which has undefined symbols, in which case not 40455f5b92ffSmrg # even a static library is built. For now, we need to specify 40465f5b92ffSmrg # -no-undefined on the libtool link line when we can be certain 40475f5b92ffSmrg # that all symbols are satisfied, otherwise we get a static library. 40485f5b92ffSmrg allow_undefined=yes 40495f5b92ffSmrg ;; 40505f5b92ffSmrg *) 40515f5b92ffSmrg allow_undefined=yes 40525f5b92ffSmrg ;; 40535f5b92ffSmrg esac 40545f5b92ffSmrg libtool_args=$nonopt 40555f5b92ffSmrg base_compile="$nonopt $@" 40565f5b92ffSmrg compile_command=$nonopt 40575f5b92ffSmrg finalize_command=$nonopt 405817a48c7cSmrg 40595f5b92ffSmrg compile_rpath= 40605f5b92ffSmrg finalize_rpath= 40615f5b92ffSmrg compile_shlibpath= 40625f5b92ffSmrg finalize_shlibpath= 40635f5b92ffSmrg convenience= 40645f5b92ffSmrg old_convenience= 40655f5b92ffSmrg deplibs= 40665f5b92ffSmrg old_deplibs= 40675f5b92ffSmrg compiler_flags= 40685f5b92ffSmrg linker_flags= 40695f5b92ffSmrg dllsearchpath= 40705f5b92ffSmrg lib_search_path=`pwd` 40715f5b92ffSmrg inst_prefix_dir= 40725f5b92ffSmrg new_inherited_linker_flags= 407317a48c7cSmrg 40745f5b92ffSmrg avoid_version=no 40755f5b92ffSmrg dlfiles= 40765f5b92ffSmrg dlprefiles= 40775f5b92ffSmrg dlself=no 40785f5b92ffSmrg export_dynamic=no 40795f5b92ffSmrg export_symbols= 40805f5b92ffSmrg export_symbols_regex= 40815f5b92ffSmrg generated= 40825f5b92ffSmrg libobjs= 40835f5b92ffSmrg ltlibs= 40845f5b92ffSmrg module=no 40855f5b92ffSmrg no_install=no 40865f5b92ffSmrg objs= 40875f5b92ffSmrg non_pic_objects= 40885f5b92ffSmrg precious_files_regex= 40895f5b92ffSmrg prefer_static_libs=no 40905f5b92ffSmrg preload=no 40915f5b92ffSmrg prev= 40925f5b92ffSmrg prevarg= 40935f5b92ffSmrg release= 40945f5b92ffSmrg rpath= 40955f5b92ffSmrg xrpath= 40965f5b92ffSmrg perm_rpath= 40975f5b92ffSmrg temp_rpath= 40985f5b92ffSmrg thread_safe=no 40995f5b92ffSmrg vinfo= 41005f5b92ffSmrg vinfo_number=no 41015f5b92ffSmrg weak_libs= 41025f5b92ffSmrg single_module="${wl}-single_module" 41035f5b92ffSmrg func_infer_tag $base_compile 41045f5b92ffSmrg 41055f5b92ffSmrg # We need to know -static, to get the right output filenames. 41065f5b92ffSmrg for arg 41075f5b92ffSmrg do 41085f5b92ffSmrg case $arg in 41095f5b92ffSmrg -shared) 41105f5b92ffSmrg test "$build_libtool_libs" != yes && \ 41115f5b92ffSmrg func_fatal_configuration "can not build a shared library" 41125f5b92ffSmrg build_old_libs=no 41135f5b92ffSmrg break 41145f5b92ffSmrg ;; 41155f5b92ffSmrg -all-static | -static | -static-libtool-libs) 41165f5b92ffSmrg case $arg in 41175f5b92ffSmrg -all-static) 41185f5b92ffSmrg if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then 41195f5b92ffSmrg func_warning "complete static linking is impossible in this configuration" 41205f5b92ffSmrg fi 41215f5b92ffSmrg if test -n "$link_static_flag"; then 41225f5b92ffSmrg dlopen_self=$dlopen_self_static 41235f5b92ffSmrg fi 41245f5b92ffSmrg prefer_static_libs=yes 41255f5b92ffSmrg ;; 41265f5b92ffSmrg -static) 41275f5b92ffSmrg if test -z "$pic_flag" && test -n "$link_static_flag"; then 41285f5b92ffSmrg dlopen_self=$dlopen_self_static 41295f5b92ffSmrg fi 41305f5b92ffSmrg prefer_static_libs=built 41315f5b92ffSmrg ;; 41325f5b92ffSmrg -static-libtool-libs) 41335f5b92ffSmrg if test -z "$pic_flag" && test -n "$link_static_flag"; then 41345f5b92ffSmrg dlopen_self=$dlopen_self_static 413517a48c7cSmrg fi 41365f5b92ffSmrg prefer_static_libs=yes 41375f5b92ffSmrg ;; 41385f5b92ffSmrg esac 41395f5b92ffSmrg build_libtool_libs=no 41405f5b92ffSmrg build_old_libs=yes 41415f5b92ffSmrg break 41425f5b92ffSmrg ;; 41435f5b92ffSmrg esac 41445f5b92ffSmrg done 414517a48c7cSmrg 41465f5b92ffSmrg # See if our shared archives depend on static archives. 41475f5b92ffSmrg test -n "$old_archive_from_new_cmds" && build_old_libs=yes 414817a48c7cSmrg 41495f5b92ffSmrg # Go through the arguments, transforming them on the way. 41505f5b92ffSmrg while test "$#" -gt 0; do 41515f5b92ffSmrg arg="$1" 41525f5b92ffSmrg shift 41535f5b92ffSmrg func_quote_for_eval "$arg" 41545f5b92ffSmrg qarg=$func_quote_for_eval_unquoted_result 41555f5b92ffSmrg func_append libtool_args " $func_quote_for_eval_result" 415617a48c7cSmrg 41575f5b92ffSmrg # If the previous option needs an argument, assign it. 41585f5b92ffSmrg if test -n "$prev"; then 41595f5b92ffSmrg case $prev in 41605f5b92ffSmrg output) 41615f5b92ffSmrg func_append compile_command " @OUTPUT@" 41625f5b92ffSmrg func_append finalize_command " @OUTPUT@" 41635f5b92ffSmrg ;; 41645f5b92ffSmrg esac 416517a48c7cSmrg 41665f5b92ffSmrg case $prev in 41675f5b92ffSmrg dlfiles|dlprefiles) 41685f5b92ffSmrg if test "$preload" = no; then 41695f5b92ffSmrg # Add the symbol object into the linking commands. 41705f5b92ffSmrg func_append compile_command " @SYMFILE@" 41715f5b92ffSmrg func_append finalize_command " @SYMFILE@" 41725f5b92ffSmrg preload=yes 41735f5b92ffSmrg fi 41745f5b92ffSmrg case $arg in 41755f5b92ffSmrg *.la | *.lo) ;; # We handle these cases below. 41765f5b92ffSmrg force) 41775f5b92ffSmrg if test "$dlself" = no; then 41785f5b92ffSmrg dlself=needless 41795f5b92ffSmrg export_dynamic=yes 41805f5b92ffSmrg fi 41815f5b92ffSmrg prev= 41825f5b92ffSmrg continue 41835f5b92ffSmrg ;; 41845f5b92ffSmrg self) 41855f5b92ffSmrg if test "$prev" = dlprefiles; then 41865f5b92ffSmrg dlself=yes 41875f5b92ffSmrg elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then 41885f5b92ffSmrg dlself=yes 418917a48c7cSmrg else 41905f5b92ffSmrg dlself=needless 41915f5b92ffSmrg export_dynamic=yes 419217a48c7cSmrg fi 41935f5b92ffSmrg prev= 41945f5b92ffSmrg continue 41955f5b92ffSmrg ;; 41965f5b92ffSmrg *) 41975f5b92ffSmrg if test "$prev" = dlfiles; then 41985f5b92ffSmrg dlfiles="$dlfiles $arg" 419917a48c7cSmrg else 42005f5b92ffSmrg dlprefiles="$dlprefiles $arg" 420117a48c7cSmrg fi 42025f5b92ffSmrg prev= 42035f5b92ffSmrg continue 42045f5b92ffSmrg ;; 42055f5b92ffSmrg esac 42065f5b92ffSmrg ;; 42075f5b92ffSmrg expsyms) 42085f5b92ffSmrg export_symbols="$arg" 42095f5b92ffSmrg test -f "$arg" \ 42105f5b92ffSmrg || func_fatal_error "symbol file \`$arg' does not exist" 42115f5b92ffSmrg prev= 42125f5b92ffSmrg continue 42135f5b92ffSmrg ;; 42145f5b92ffSmrg expsyms_regex) 42155f5b92ffSmrg export_symbols_regex="$arg" 42165f5b92ffSmrg prev= 42175f5b92ffSmrg continue 42185f5b92ffSmrg ;; 42195f5b92ffSmrg framework) 422017a48c7cSmrg case $host in 42215f5b92ffSmrg *-*-darwin*) 42225f5b92ffSmrg case "$deplibs " in 42235f5b92ffSmrg *" $qarg.ltframework "*) ;; 42245f5b92ffSmrg *) deplibs="$deplibs $qarg.ltframework" # this is fixed later 42255f5b92ffSmrg ;; 42265f5b92ffSmrg esac 42275f5b92ffSmrg ;; 422817a48c7cSmrg esac 42295f5b92ffSmrg prev= 42305f5b92ffSmrg continue 423117a48c7cSmrg ;; 42325f5b92ffSmrg inst_prefix) 42335f5b92ffSmrg inst_prefix_dir="$arg" 42345f5b92ffSmrg prev= 42355f5b92ffSmrg continue 423617a48c7cSmrg ;; 42375f5b92ffSmrg objectlist) 42385f5b92ffSmrg if test -f "$arg"; then 42395f5b92ffSmrg save_arg=$arg 42405f5b92ffSmrg moreargs= 42415f5b92ffSmrg for fil in `cat "$save_arg"` 42425f5b92ffSmrg do 42435f5b92ffSmrg# moreargs="$moreargs $fil" 42445f5b92ffSmrg arg=$fil 42455f5b92ffSmrg # A libtool-controlled object. 424617a48c7cSmrg 42475f5b92ffSmrg # Check to see that this really is a libtool object. 42485f5b92ffSmrg if func_lalib_unsafe_p "$arg"; then 42495f5b92ffSmrg pic_object= 42505f5b92ffSmrg non_pic_object= 425117a48c7cSmrg 42525f5b92ffSmrg # Read the .lo file 42535f5b92ffSmrg func_source "$arg" 425417a48c7cSmrg 42555f5b92ffSmrg if test -z "$pic_object" || 42565f5b92ffSmrg test -z "$non_pic_object" || 42575f5b92ffSmrg test "$pic_object" = none && 42585f5b92ffSmrg test "$non_pic_object" = none; then 42595f5b92ffSmrg func_fatal_error "cannot find name of object for \`$arg'" 42605f5b92ffSmrg fi 426117a48c7cSmrg 42625f5b92ffSmrg # Extract subdirectory from the argument. 42635f5b92ffSmrg func_dirname "$arg" "/" "" 42645f5b92ffSmrg xdir="$func_dirname_result" 426517a48c7cSmrg 42665f5b92ffSmrg if test "$pic_object" != none; then 42675f5b92ffSmrg # Prepend the subdirectory the object is found in. 42685f5b92ffSmrg pic_object="$xdir$pic_object" 426917a48c7cSmrg 42705f5b92ffSmrg if test "$prev" = dlfiles; then 42715f5b92ffSmrg if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 42725f5b92ffSmrg dlfiles="$dlfiles $pic_object" 42735f5b92ffSmrg prev= 42745f5b92ffSmrg continue 42755f5b92ffSmrg else 42765f5b92ffSmrg # If libtool objects are unsupported, then we need to preload. 42775f5b92ffSmrg prev=dlprefiles 42785f5b92ffSmrg fi 42795f5b92ffSmrg fi 428017a48c7cSmrg 42815f5b92ffSmrg # CHECK ME: I think I busted this. -Ossama 42825f5b92ffSmrg if test "$prev" = dlprefiles; then 42835f5b92ffSmrg # Preload the old-style object. 42845f5b92ffSmrg dlprefiles="$dlprefiles $pic_object" 42855f5b92ffSmrg prev= 42865f5b92ffSmrg fi 428717a48c7cSmrg 42885f5b92ffSmrg # A PIC object. 42895f5b92ffSmrg func_append libobjs " $pic_object" 42905f5b92ffSmrg arg="$pic_object" 42915f5b92ffSmrg fi 429217a48c7cSmrg 42935f5b92ffSmrg # Non-PIC object. 42945f5b92ffSmrg if test "$non_pic_object" != none; then 42955f5b92ffSmrg # Prepend the subdirectory the object is found in. 42965f5b92ffSmrg non_pic_object="$xdir$non_pic_object" 429717a48c7cSmrg 42985f5b92ffSmrg # A standard non-PIC object 42995f5b92ffSmrg func_append non_pic_objects " $non_pic_object" 43005f5b92ffSmrg if test -z "$pic_object" || test "$pic_object" = none ; then 43015f5b92ffSmrg arg="$non_pic_object" 43025f5b92ffSmrg fi 43035f5b92ffSmrg else 43045f5b92ffSmrg # If the PIC object exists, use it instead. 43055f5b92ffSmrg # $xdir was prepended to $pic_object above. 43065f5b92ffSmrg non_pic_object="$pic_object" 43075f5b92ffSmrg func_append non_pic_objects " $non_pic_object" 43085f5b92ffSmrg fi 43095f5b92ffSmrg else 43105f5b92ffSmrg # Only an error if not doing a dry-run. 43115f5b92ffSmrg if $opt_dry_run; then 43125f5b92ffSmrg # Extract subdirectory from the argument. 43135f5b92ffSmrg func_dirname "$arg" "/" "" 43145f5b92ffSmrg xdir="$func_dirname_result" 43155f5b92ffSmrg 43165f5b92ffSmrg func_lo2o "$arg" 43175f5b92ffSmrg pic_object=$xdir$objdir/$func_lo2o_result 43185f5b92ffSmrg non_pic_object=$xdir$func_lo2o_result 43195f5b92ffSmrg func_append libobjs " $pic_object" 43205f5b92ffSmrg func_append non_pic_objects " $non_pic_object" 43215f5b92ffSmrg else 43225f5b92ffSmrg func_fatal_error "\`$arg' is not a valid libtool object" 43235f5b92ffSmrg fi 43245f5b92ffSmrg fi 43255f5b92ffSmrg done 432617a48c7cSmrg else 43275f5b92ffSmrg func_fatal_error "link input file \`$arg' does not exist" 432817a48c7cSmrg fi 43295f5b92ffSmrg arg=$save_arg 43305f5b92ffSmrg prev= 43315f5b92ffSmrg continue 43325f5b92ffSmrg ;; 43335f5b92ffSmrg precious_regex) 43345f5b92ffSmrg precious_files_regex="$arg" 43355f5b92ffSmrg prev= 43365f5b92ffSmrg continue 43375f5b92ffSmrg ;; 43385f5b92ffSmrg release) 43395f5b92ffSmrg release="-$arg" 43405f5b92ffSmrg prev= 43415f5b92ffSmrg continue 43425f5b92ffSmrg ;; 43435f5b92ffSmrg rpath | xrpath) 43445f5b92ffSmrg # We need an absolute path. 43455f5b92ffSmrg case $arg in 43465f5b92ffSmrg [\\/]* | [A-Za-z]:[\\/]*) ;; 43475f5b92ffSmrg *) 43485f5b92ffSmrg func_fatal_error "only absolute run-paths are allowed" 43495f5b92ffSmrg ;; 43505f5b92ffSmrg esac 43515f5b92ffSmrg if test "$prev" = rpath; then 43525f5b92ffSmrg case "$rpath " in 43535f5b92ffSmrg *" $arg "*) ;; 43545f5b92ffSmrg *) rpath="$rpath $arg" ;; 43555f5b92ffSmrg esac 435617a48c7cSmrg else 43575f5b92ffSmrg case "$xrpath " in 43585f5b92ffSmrg *" $arg "*) ;; 43595f5b92ffSmrg *) xrpath="$xrpath $arg" ;; 43605f5b92ffSmrg esac 436117a48c7cSmrg fi 43625f5b92ffSmrg prev= 43635f5b92ffSmrg continue 43645f5b92ffSmrg ;; 43655f5b92ffSmrg shrext) 43665f5b92ffSmrg shrext_cmds="$arg" 43675f5b92ffSmrg prev= 43685f5b92ffSmrg continue 43695f5b92ffSmrg ;; 43705f5b92ffSmrg weak) 43715f5b92ffSmrg weak_libs="$weak_libs $arg" 43725f5b92ffSmrg prev= 43735f5b92ffSmrg continue 43745f5b92ffSmrg ;; 43755f5b92ffSmrg xcclinker) 43765f5b92ffSmrg linker_flags="$linker_flags $qarg" 43775f5b92ffSmrg compiler_flags="$compiler_flags $qarg" 43785f5b92ffSmrg prev= 43795f5b92ffSmrg func_append compile_command " $qarg" 43805f5b92ffSmrg func_append finalize_command " $qarg" 43815f5b92ffSmrg continue 43825f5b92ffSmrg ;; 43835f5b92ffSmrg xcompiler) 43845f5b92ffSmrg compiler_flags="$compiler_flags $qarg" 43855f5b92ffSmrg prev= 43865f5b92ffSmrg func_append compile_command " $qarg" 43875f5b92ffSmrg func_append finalize_command " $qarg" 43885f5b92ffSmrg continue 43895f5b92ffSmrg ;; 43905f5b92ffSmrg xlinker) 43915f5b92ffSmrg linker_flags="$linker_flags $qarg" 43925f5b92ffSmrg compiler_flags="$compiler_flags $wl$qarg" 43935f5b92ffSmrg prev= 43945f5b92ffSmrg func_append compile_command " $wl$qarg" 43955f5b92ffSmrg func_append finalize_command " $wl$qarg" 43965f5b92ffSmrg continue 43975f5b92ffSmrg ;; 43985f5b92ffSmrg *) 43995f5b92ffSmrg eval "$prev=\"\$arg\"" 44005f5b92ffSmrg prev= 44015f5b92ffSmrg continue 44025f5b92ffSmrg ;; 440317a48c7cSmrg esac 44045f5b92ffSmrg fi # test -n "$prev" 440517a48c7cSmrg 44065f5b92ffSmrg prevarg="$arg" 440717a48c7cSmrg 44085f5b92ffSmrg case $arg in 44095f5b92ffSmrg -all-static) 44105f5b92ffSmrg if test -n "$link_static_flag"; then 44115f5b92ffSmrg # See comment for -static flag below, for more details. 44125f5b92ffSmrg func_append compile_command " $link_static_flag" 44135f5b92ffSmrg func_append finalize_command " $link_static_flag" 44145f5b92ffSmrg fi 44155f5b92ffSmrg continue 44165f5b92ffSmrg ;; 441717a48c7cSmrg 44185f5b92ffSmrg -allow-undefined) 44195f5b92ffSmrg # FIXME: remove this flag sometime in the future. 44205f5b92ffSmrg func_fatal_error "\`-allow-undefined' must not be used because it is the default" 44215f5b92ffSmrg ;; 442217a48c7cSmrg 44235f5b92ffSmrg -avoid-version) 44245f5b92ffSmrg avoid_version=yes 44255f5b92ffSmrg continue 44265f5b92ffSmrg ;; 442717a48c7cSmrg 44285f5b92ffSmrg -dlopen) 44295f5b92ffSmrg prev=dlfiles 44305f5b92ffSmrg continue 44315f5b92ffSmrg ;; 443217a48c7cSmrg 44335f5b92ffSmrg -dlpreopen) 44345f5b92ffSmrg prev=dlprefiles 44355f5b92ffSmrg continue 44365f5b92ffSmrg ;; 443717a48c7cSmrg 44385f5b92ffSmrg -export-dynamic) 44395f5b92ffSmrg export_dynamic=yes 44405f5b92ffSmrg continue 44415f5b92ffSmrg ;; 444217a48c7cSmrg 44435f5b92ffSmrg -export-symbols | -export-symbols-regex) 44445f5b92ffSmrg if test -n "$export_symbols" || test -n "$export_symbols_regex"; then 44455f5b92ffSmrg func_fatal_error "more than one -exported-symbols argument is not allowed" 44465f5b92ffSmrg fi 44475f5b92ffSmrg if test "X$arg" = "X-export-symbols"; then 44485f5b92ffSmrg prev=expsyms 44495f5b92ffSmrg else 44505f5b92ffSmrg prev=expsyms_regex 44515f5b92ffSmrg fi 44525f5b92ffSmrg continue 44535f5b92ffSmrg ;; 445417a48c7cSmrg 44555f5b92ffSmrg -framework) 44565f5b92ffSmrg prev=framework 44575f5b92ffSmrg continue 44585f5b92ffSmrg ;; 445917a48c7cSmrg 44605f5b92ffSmrg -inst-prefix-dir) 44615f5b92ffSmrg prev=inst_prefix 44625f5b92ffSmrg continue 44635f5b92ffSmrg ;; 446417a48c7cSmrg 44655f5b92ffSmrg # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* 44665f5b92ffSmrg # so, if we see these flags be careful not to treat them like -L 44675f5b92ffSmrg -L[A-Z][A-Z]*:*) 44685f5b92ffSmrg case $with_gcc/$host in 44695f5b92ffSmrg no/*-*-irix* | /*-*-irix*) 44705f5b92ffSmrg func_append compile_command " $arg" 44715f5b92ffSmrg func_append finalize_command " $arg" 44725f5b92ffSmrg ;; 44735f5b92ffSmrg esac 44745f5b92ffSmrg continue 44755f5b92ffSmrg ;; 447617a48c7cSmrg 44775f5b92ffSmrg -L*) 44785f5b92ffSmrg func_stripname '-L' '' "$arg" 44795f5b92ffSmrg dir=$func_stripname_result 44805f5b92ffSmrg if test -z "$dir"; then 44815f5b92ffSmrg if test "$#" -gt 0; then 44825f5b92ffSmrg func_fatal_error "require no space between \`-L' and \`$1'" 44835f5b92ffSmrg else 44845f5b92ffSmrg func_fatal_error "need path for \`-L' option" 44855f5b92ffSmrg fi 44865f5b92ffSmrg fi 44875f5b92ffSmrg # We need an absolute path. 44885f5b92ffSmrg case $dir in 44895f5b92ffSmrg [\\/]* | [A-Za-z]:[\\/]*) ;; 44905f5b92ffSmrg *) 44915f5b92ffSmrg absdir=`cd "$dir" && pwd` 44925f5b92ffSmrg test -z "$absdir" && \ 44935f5b92ffSmrg func_fatal_error "cannot determine absolute directory name of \`$dir'" 44945f5b92ffSmrg dir="$absdir" 44955f5b92ffSmrg ;; 44965f5b92ffSmrg esac 44975f5b92ffSmrg case "$deplibs " in 44985f5b92ffSmrg *" -L$dir "*) ;; 44995f5b92ffSmrg *) 45005f5b92ffSmrg deplibs="$deplibs -L$dir" 45015f5b92ffSmrg lib_search_path="$lib_search_path $dir" 45025f5b92ffSmrg ;; 45035f5b92ffSmrg esac 45045f5b92ffSmrg case $host in 45055f5b92ffSmrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 45065f5b92ffSmrg testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'` 45075f5b92ffSmrg case :$dllsearchpath: in 45085f5b92ffSmrg *":$dir:"*) ;; 45095f5b92ffSmrg ::) dllsearchpath=$dir;; 45105f5b92ffSmrg *) dllsearchpath="$dllsearchpath:$dir";; 45115f5b92ffSmrg esac 45125f5b92ffSmrg case :$dllsearchpath: in 45135f5b92ffSmrg *":$testbindir:"*) ;; 45145f5b92ffSmrg ::) dllsearchpath=$testbindir;; 45155f5b92ffSmrg *) dllsearchpath="$dllsearchpath:$testbindir";; 45165f5b92ffSmrg esac 45175f5b92ffSmrg ;; 45185f5b92ffSmrg esac 45195f5b92ffSmrg continue 45205f5b92ffSmrg ;; 452117a48c7cSmrg 45225f5b92ffSmrg -l*) 45235f5b92ffSmrg if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then 45245f5b92ffSmrg case $host in 45255f5b92ffSmrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc*) 45265f5b92ffSmrg # These systems don't actually have a C or math library (as such) 45275f5b92ffSmrg continue 45285f5b92ffSmrg ;; 45295f5b92ffSmrg *-*-os2*) 45305f5b92ffSmrg # These systems don't actually have a C library (as such) 45315f5b92ffSmrg test "X$arg" = "X-lc" && continue 45325f5b92ffSmrg ;; 45335f5b92ffSmrg *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 45345f5b92ffSmrg # Do not include libc due to us having libc/libc_r. 45355f5b92ffSmrg test "X$arg" = "X-lc" && continue 45365f5b92ffSmrg ;; 45375f5b92ffSmrg *-*-rhapsody* | *-*-darwin1.[012]) 45385f5b92ffSmrg # Rhapsody C and math libraries are in the System framework 45395f5b92ffSmrg deplibs="$deplibs System.ltframework" 45405f5b92ffSmrg continue 45415f5b92ffSmrg ;; 45425f5b92ffSmrg *-*-sco3.2v5* | *-*-sco5v6*) 45435f5b92ffSmrg # Causes problems with __ctype 45445f5b92ffSmrg test "X$arg" = "X-lc" && continue 45455f5b92ffSmrg ;; 45465f5b92ffSmrg *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 45475f5b92ffSmrg # Compiler inserts libc in the correct place for threads to work 45485f5b92ffSmrg test "X$arg" = "X-lc" && continue 45495f5b92ffSmrg ;; 45505f5b92ffSmrg esac 45515f5b92ffSmrg elif test "X$arg" = "X-lc_r"; then 45525f5b92ffSmrg case $host in 45535f5b92ffSmrg *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 45545f5b92ffSmrg # Do not include libc_r directly, use -pthread flag. 45555f5b92ffSmrg continue 45565f5b92ffSmrg ;; 45575f5b92ffSmrg esac 45585f5b92ffSmrg fi 45595f5b92ffSmrg deplibs="$deplibs $arg" 45605f5b92ffSmrg continue 45615f5b92ffSmrg ;; 456217a48c7cSmrg 45635f5b92ffSmrg -module) 45645f5b92ffSmrg module=yes 45655f5b92ffSmrg continue 45665f5b92ffSmrg ;; 456717a48c7cSmrg 45685f5b92ffSmrg # Tru64 UNIX uses -model [arg] to determine the layout of C++ 45695f5b92ffSmrg # classes, name mangling, and exception handling. 45705f5b92ffSmrg # Darwin uses the -arch flag to determine output architecture. 45715f5b92ffSmrg -model|-arch|-isysroot) 45725f5b92ffSmrg compiler_flags="$compiler_flags $arg" 45735f5b92ffSmrg func_append compile_command " $arg" 45745f5b92ffSmrg func_append finalize_command " $arg" 45755f5b92ffSmrg prev=xcompiler 45765f5b92ffSmrg continue 45775f5b92ffSmrg ;; 457817a48c7cSmrg 45795f5b92ffSmrg -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) 45805f5b92ffSmrg compiler_flags="$compiler_flags $arg" 45815f5b92ffSmrg func_append compile_command " $arg" 45825f5b92ffSmrg func_append finalize_command " $arg" 45835f5b92ffSmrg case "$new_inherited_linker_flags " in 45845f5b92ffSmrg *" $arg "*) ;; 45855f5b92ffSmrg * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;; 45865f5b92ffSmrg esac 45875f5b92ffSmrg continue 45885f5b92ffSmrg ;; 458917a48c7cSmrg 45905f5b92ffSmrg -multi_module) 45915f5b92ffSmrg single_module="${wl}-multi_module" 45925f5b92ffSmrg continue 45935f5b92ffSmrg ;; 459417a48c7cSmrg 45955f5b92ffSmrg -no-fast-install) 45965f5b92ffSmrg fast_install=no 45975f5b92ffSmrg continue 45985f5b92ffSmrg ;; 459917a48c7cSmrg 46005f5b92ffSmrg -no-install) 46015f5b92ffSmrg case $host in 46025f5b92ffSmrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) 46035f5b92ffSmrg # The PATH hackery in wrapper scripts is required on Windows 46045f5b92ffSmrg # and Darwin in order for the loader to find any dlls it needs. 46055f5b92ffSmrg func_warning "\`-no-install' is ignored for $host" 46065f5b92ffSmrg func_warning "assuming \`-no-fast-install' instead" 46075f5b92ffSmrg fast_install=no 46085f5b92ffSmrg ;; 46095f5b92ffSmrg *) no_install=yes ;; 46105f5b92ffSmrg esac 46115f5b92ffSmrg continue 46125f5b92ffSmrg ;; 461317a48c7cSmrg 46145f5b92ffSmrg -no-undefined) 46155f5b92ffSmrg allow_undefined=no 46165f5b92ffSmrg continue 46175f5b92ffSmrg ;; 461817a48c7cSmrg 46195f5b92ffSmrg -objectlist) 46205f5b92ffSmrg prev=objectlist 46215f5b92ffSmrg continue 46225f5b92ffSmrg ;; 462317a48c7cSmrg 46245f5b92ffSmrg -o) prev=output ;; 462517a48c7cSmrg 46265f5b92ffSmrg -precious-files-regex) 46275f5b92ffSmrg prev=precious_regex 46285f5b92ffSmrg continue 46295f5b92ffSmrg ;; 463017a48c7cSmrg 46315f5b92ffSmrg -release) 46325f5b92ffSmrg prev=release 46335f5b92ffSmrg continue 46345f5b92ffSmrg ;; 463517a48c7cSmrg 46365f5b92ffSmrg -rpath) 46375f5b92ffSmrg prev=rpath 46385f5b92ffSmrg continue 46395f5b92ffSmrg ;; 464017a48c7cSmrg 46415f5b92ffSmrg -R) 46425f5b92ffSmrg prev=xrpath 46435f5b92ffSmrg continue 46445f5b92ffSmrg ;; 464517a48c7cSmrg 46465f5b92ffSmrg -R*) 46475f5b92ffSmrg func_stripname '-R' '' "$arg" 46485f5b92ffSmrg dir=$func_stripname_result 46495f5b92ffSmrg # We need an absolute path. 46505f5b92ffSmrg case $dir in 46515f5b92ffSmrg [\\/]* | [A-Za-z]:[\\/]*) ;; 46525f5b92ffSmrg *) 46535f5b92ffSmrg func_fatal_error "only absolute run-paths are allowed" 46545f5b92ffSmrg ;; 46555f5b92ffSmrg esac 46565f5b92ffSmrg case "$xrpath " in 46575f5b92ffSmrg *" $dir "*) ;; 46585f5b92ffSmrg *) xrpath="$xrpath $dir" ;; 46595f5b92ffSmrg esac 46605f5b92ffSmrg continue 46615f5b92ffSmrg ;; 466217a48c7cSmrg 46635f5b92ffSmrg -shared) 46645f5b92ffSmrg # The effects of -shared are defined in a previous loop. 46655f5b92ffSmrg continue 46665f5b92ffSmrg ;; 466717a48c7cSmrg 46685f5b92ffSmrg -shrext) 46695f5b92ffSmrg prev=shrext 46705f5b92ffSmrg continue 46715f5b92ffSmrg ;; 467217a48c7cSmrg 46735f5b92ffSmrg -static | -static-libtool-libs) 46745f5b92ffSmrg # The effects of -static are defined in a previous loop. 46755f5b92ffSmrg # We used to do the same as -all-static on platforms that 46765f5b92ffSmrg # didn't have a PIC flag, but the assumption that the effects 46775f5b92ffSmrg # would be equivalent was wrong. It would break on at least 46785f5b92ffSmrg # Digital Unix and AIX. 46795f5b92ffSmrg continue 46805f5b92ffSmrg ;; 468117a48c7cSmrg 46825f5b92ffSmrg -thread-safe) 46835f5b92ffSmrg thread_safe=yes 46845f5b92ffSmrg continue 46855f5b92ffSmrg ;; 468617a48c7cSmrg 46875f5b92ffSmrg -version-info) 46885f5b92ffSmrg prev=vinfo 46895f5b92ffSmrg continue 46905f5b92ffSmrg ;; 469117a48c7cSmrg 46925f5b92ffSmrg -version-number) 46935f5b92ffSmrg prev=vinfo 46945f5b92ffSmrg vinfo_number=yes 46955f5b92ffSmrg continue 46965f5b92ffSmrg ;; 469717a48c7cSmrg 46985f5b92ffSmrg -weak) 46995f5b92ffSmrg prev=weak 47005f5b92ffSmrg continue 47015f5b92ffSmrg ;; 470217a48c7cSmrg 47035f5b92ffSmrg -Wc,*) 47045f5b92ffSmrg func_stripname '-Wc,' '' "$arg" 47055f5b92ffSmrg args=$func_stripname_result 47065f5b92ffSmrg arg= 47075f5b92ffSmrg save_ifs="$IFS"; IFS=',' 47085f5b92ffSmrg for flag in $args; do 47095f5b92ffSmrg IFS="$save_ifs" 47105f5b92ffSmrg func_quote_for_eval "$flag" 47115f5b92ffSmrg arg="$arg $wl$func_quote_for_eval_result" 47125f5b92ffSmrg compiler_flags="$compiler_flags $func_quote_for_eval_result" 47135f5b92ffSmrg done 47145f5b92ffSmrg IFS="$save_ifs" 47155f5b92ffSmrg func_stripname ' ' '' "$arg" 47165f5b92ffSmrg arg=$func_stripname_result 47175f5b92ffSmrg ;; 471817a48c7cSmrg 47195f5b92ffSmrg -Wl,*) 47205f5b92ffSmrg func_stripname '-Wl,' '' "$arg" 47215f5b92ffSmrg args=$func_stripname_result 47225f5b92ffSmrg arg= 47235f5b92ffSmrg save_ifs="$IFS"; IFS=',' 47245f5b92ffSmrg for flag in $args; do 47255f5b92ffSmrg IFS="$save_ifs" 47265f5b92ffSmrg func_quote_for_eval "$flag" 47275f5b92ffSmrg arg="$arg $wl$func_quote_for_eval_result" 47285f5b92ffSmrg compiler_flags="$compiler_flags $wl$func_quote_for_eval_result" 47295f5b92ffSmrg linker_flags="$linker_flags $func_quote_for_eval_result" 47305f5b92ffSmrg done 47315f5b92ffSmrg IFS="$save_ifs" 47325f5b92ffSmrg func_stripname ' ' '' "$arg" 47335f5b92ffSmrg arg=$func_stripname_result 47345f5b92ffSmrg ;; 473517a48c7cSmrg 47365f5b92ffSmrg -Xcompiler) 47375f5b92ffSmrg prev=xcompiler 47385f5b92ffSmrg continue 47395f5b92ffSmrg ;; 474017a48c7cSmrg 47415f5b92ffSmrg -Xlinker) 47425f5b92ffSmrg prev=xlinker 47435f5b92ffSmrg continue 47445f5b92ffSmrg ;; 474517a48c7cSmrg 47465f5b92ffSmrg -XCClinker) 47475f5b92ffSmrg prev=xcclinker 47485f5b92ffSmrg continue 47495f5b92ffSmrg ;; 475017a48c7cSmrg 47515f5b92ffSmrg # -msg_* for osf cc 47525f5b92ffSmrg -msg_*) 47535f5b92ffSmrg func_quote_for_eval "$arg" 47545f5b92ffSmrg arg="$func_quote_for_eval_result" 47555f5b92ffSmrg ;; 475617a48c7cSmrg 47575f5b92ffSmrg # -64, -mips[0-9] enable 64-bit mode on the SGI compiler 47585f5b92ffSmrg # -r[0-9][0-9]* specifies the processor on the SGI compiler 47595f5b92ffSmrg # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler 47605f5b92ffSmrg # +DA*, +DD* enable 64-bit mode on the HP compiler 47615f5b92ffSmrg # -q* pass through compiler args for the IBM compiler 47625f5b92ffSmrg # -m*, -t[45]*, -txscale* pass through architecture-specific 47635f5b92ffSmrg # compiler args for GCC 47645f5b92ffSmrg # -F/path gives path to uninstalled frameworks, gcc on darwin 47655f5b92ffSmrg # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC 47665f5b92ffSmrg # @file GCC response files 47675f5b92ffSmrg -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ 47685f5b92ffSmrg -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*) 47695f5b92ffSmrg func_quote_for_eval "$arg" 47705f5b92ffSmrg arg="$func_quote_for_eval_result" 47715f5b92ffSmrg func_append compile_command " $arg" 47725f5b92ffSmrg func_append finalize_command " $arg" 47735f5b92ffSmrg compiler_flags="$compiler_flags $arg" 47745f5b92ffSmrg continue 47755f5b92ffSmrg ;; 477617a48c7cSmrg 47775f5b92ffSmrg # Some other compiler flag. 47785f5b92ffSmrg -* | +*) 47795f5b92ffSmrg func_quote_for_eval "$arg" 47805f5b92ffSmrg arg="$func_quote_for_eval_result" 47815f5b92ffSmrg ;; 478217a48c7cSmrg 47835f5b92ffSmrg *.$objext) 47845f5b92ffSmrg # A standard object. 47855f5b92ffSmrg objs="$objs $arg" 47865f5b92ffSmrg ;; 478717a48c7cSmrg 47885f5b92ffSmrg *.lo) 47895f5b92ffSmrg # A libtool-controlled object. 479017a48c7cSmrg 47915f5b92ffSmrg # Check to see that this really is a libtool object. 47925f5b92ffSmrg if func_lalib_unsafe_p "$arg"; then 47935f5b92ffSmrg pic_object= 47945f5b92ffSmrg non_pic_object= 479517a48c7cSmrg 47965f5b92ffSmrg # Read the .lo file 47975f5b92ffSmrg func_source "$arg" 479817a48c7cSmrg 47995f5b92ffSmrg if test -z "$pic_object" || 48005f5b92ffSmrg test -z "$non_pic_object" || 48015f5b92ffSmrg test "$pic_object" = none && 48025f5b92ffSmrg test "$non_pic_object" = none; then 48035f5b92ffSmrg func_fatal_error "cannot find name of object for \`$arg'" 48045f5b92ffSmrg fi 480517a48c7cSmrg 48065f5b92ffSmrg # Extract subdirectory from the argument. 48075f5b92ffSmrg func_dirname "$arg" "/" "" 48085f5b92ffSmrg xdir="$func_dirname_result" 48098e0ed500Smrg 48105f5b92ffSmrg if test "$pic_object" != none; then 48115f5b92ffSmrg # Prepend the subdirectory the object is found in. 48125f5b92ffSmrg pic_object="$xdir$pic_object" 481317a48c7cSmrg 48145f5b92ffSmrg if test "$prev" = dlfiles; then 48155f5b92ffSmrg if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 48165f5b92ffSmrg dlfiles="$dlfiles $pic_object" 48175f5b92ffSmrg prev= 48185f5b92ffSmrg continue 48195f5b92ffSmrg else 48205f5b92ffSmrg # If libtool objects are unsupported, then we need to preload. 48215f5b92ffSmrg prev=dlprefiles 48225f5b92ffSmrg fi 48235f5b92ffSmrg fi 482417a48c7cSmrg 48255f5b92ffSmrg # CHECK ME: I think I busted this. -Ossama 48265f5b92ffSmrg if test "$prev" = dlprefiles; then 48275f5b92ffSmrg # Preload the old-style object. 48285f5b92ffSmrg dlprefiles="$dlprefiles $pic_object" 48295f5b92ffSmrg prev= 48305f5b92ffSmrg fi 483117a48c7cSmrg 48325f5b92ffSmrg # A PIC object. 48335f5b92ffSmrg func_append libobjs " $pic_object" 48345f5b92ffSmrg arg="$pic_object" 48355f5b92ffSmrg fi 483617a48c7cSmrg 48375f5b92ffSmrg # Non-PIC object. 48385f5b92ffSmrg if test "$non_pic_object" != none; then 48395f5b92ffSmrg # Prepend the subdirectory the object is found in. 48405f5b92ffSmrg non_pic_object="$xdir$non_pic_object" 484117a48c7cSmrg 48425f5b92ffSmrg # A standard non-PIC object 48435f5b92ffSmrg func_append non_pic_objects " $non_pic_object" 48445f5b92ffSmrg if test -z "$pic_object" || test "$pic_object" = none ; then 48455f5b92ffSmrg arg="$non_pic_object" 48465f5b92ffSmrg fi 48475f5b92ffSmrg else 48485f5b92ffSmrg # If the PIC object exists, use it instead. 48495f5b92ffSmrg # $xdir was prepended to $pic_object above. 48505f5b92ffSmrg non_pic_object="$pic_object" 48515f5b92ffSmrg func_append non_pic_objects " $non_pic_object" 48525f5b92ffSmrg fi 48535f5b92ffSmrg else 48545f5b92ffSmrg # Only an error if not doing a dry-run. 48555f5b92ffSmrg if $opt_dry_run; then 48565f5b92ffSmrg # Extract subdirectory from the argument. 48575f5b92ffSmrg func_dirname "$arg" "/" "" 48585f5b92ffSmrg xdir="$func_dirname_result" 48595f5b92ffSmrg 48605f5b92ffSmrg func_lo2o "$arg" 48615f5b92ffSmrg pic_object=$xdir$objdir/$func_lo2o_result 48625f5b92ffSmrg non_pic_object=$xdir$func_lo2o_result 48635f5b92ffSmrg func_append libobjs " $pic_object" 48645f5b92ffSmrg func_append non_pic_objects " $non_pic_object" 48655f5b92ffSmrg else 48665f5b92ffSmrg func_fatal_error "\`$arg' is not a valid libtool object" 48675f5b92ffSmrg fi 48685f5b92ffSmrg fi 48695f5b92ffSmrg ;; 487017a48c7cSmrg 48715f5b92ffSmrg *.$libext) 48725f5b92ffSmrg # An archive. 48735f5b92ffSmrg deplibs="$deplibs $arg" 48745f5b92ffSmrg old_deplibs="$old_deplibs $arg" 48755f5b92ffSmrg continue 48765f5b92ffSmrg ;; 48775f5b92ffSmrg 48785f5b92ffSmrg *.la) 48795f5b92ffSmrg # A libtool-controlled library. 48805f5b92ffSmrg 48815f5b92ffSmrg if test "$prev" = dlfiles; then 48825f5b92ffSmrg # This library was specified with -dlopen. 48835f5b92ffSmrg dlfiles="$dlfiles $arg" 48845f5b92ffSmrg prev= 48855f5b92ffSmrg elif test "$prev" = dlprefiles; then 48865f5b92ffSmrg # The library was specified with -dlpreopen. 48875f5b92ffSmrg dlprefiles="$dlprefiles $arg" 48885f5b92ffSmrg prev= 48895f5b92ffSmrg else 48905f5b92ffSmrg deplibs="$deplibs $arg" 48915f5b92ffSmrg fi 48925f5b92ffSmrg continue 48935f5b92ffSmrg ;; 48945f5b92ffSmrg 48955f5b92ffSmrg # Some other compiler argument. 48965f5b92ffSmrg *) 48975f5b92ffSmrg # Unknown arguments in both finalize_command and compile_command need 48985f5b92ffSmrg # to be aesthetically quoted because they are evaled later. 48995f5b92ffSmrg func_quote_for_eval "$arg" 49005f5b92ffSmrg arg="$func_quote_for_eval_result" 49015f5b92ffSmrg ;; 49025f5b92ffSmrg esac # arg 49035f5b92ffSmrg 49045f5b92ffSmrg # Now actually substitute the argument into the commands. 49055f5b92ffSmrg if test -n "$arg"; then 49065f5b92ffSmrg func_append compile_command " $arg" 49075f5b92ffSmrg func_append finalize_command " $arg" 49085f5b92ffSmrg fi 49095f5b92ffSmrg done # argument parsing loop 49105f5b92ffSmrg 49115f5b92ffSmrg test -n "$prev" && \ 49125f5b92ffSmrg func_fatal_help "the \`$prevarg' option requires an argument" 49135f5b92ffSmrg 49145f5b92ffSmrg if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then 49155f5b92ffSmrg eval arg=\"$export_dynamic_flag_spec\" 49165f5b92ffSmrg func_append compile_command " $arg" 49175f5b92ffSmrg func_append finalize_command " $arg" 49185f5b92ffSmrg fi 49195f5b92ffSmrg 49205f5b92ffSmrg oldlibs= 49215f5b92ffSmrg # calculate the name of the file, without its directory 49225f5b92ffSmrg func_basename "$output" 49235f5b92ffSmrg outputname="$func_basename_result" 49245f5b92ffSmrg libobjs_save="$libobjs" 49255f5b92ffSmrg 49265f5b92ffSmrg if test -n "$shlibpath_var"; then 49275f5b92ffSmrg # get the directories listed in $shlibpath_var 49285f5b92ffSmrg eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` 49295f5b92ffSmrg else 49305f5b92ffSmrg shlib_search_path= 49315f5b92ffSmrg fi 49325f5b92ffSmrg eval sys_lib_search_path=\"$sys_lib_search_path_spec\" 49335f5b92ffSmrg eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" 49345f5b92ffSmrg 49355f5b92ffSmrg func_dirname "$output" "/" "" 49365f5b92ffSmrg output_objdir="$func_dirname_result$objdir" 49375f5b92ffSmrg # Create the object directory. 49385f5b92ffSmrg func_mkdir_p "$output_objdir" 49395f5b92ffSmrg 49405f5b92ffSmrg # Determine the type of output 49415f5b92ffSmrg case $output in 49425f5b92ffSmrg "") 49435f5b92ffSmrg func_fatal_help "you must specify an output file" 49445f5b92ffSmrg ;; 49455f5b92ffSmrg *.$libext) linkmode=oldlib ;; 49465f5b92ffSmrg *.lo | *.$objext) linkmode=obj ;; 49475f5b92ffSmrg *.la) linkmode=lib ;; 49485f5b92ffSmrg *) linkmode=prog ;; # Anything else should be a program. 49495f5b92ffSmrg esac 49505f5b92ffSmrg 49515f5b92ffSmrg specialdeplibs= 49525f5b92ffSmrg 49535f5b92ffSmrg libs= 49545f5b92ffSmrg # Find all interdependent deplibs by searching for libraries 49555f5b92ffSmrg # that are linked more than once (e.g. -la -lb -la) 49565f5b92ffSmrg for deplib in $deplibs; do 49575f5b92ffSmrg if $opt_duplicate_deps ; then 49585f5b92ffSmrg case "$libs " in 49595f5b92ffSmrg *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 49605f5b92ffSmrg esac 49615f5b92ffSmrg fi 49625f5b92ffSmrg libs="$libs $deplib" 49635f5b92ffSmrg done 49645f5b92ffSmrg 49655f5b92ffSmrg if test "$linkmode" = lib; then 49665f5b92ffSmrg libs="$predeps $libs $compiler_lib_search_path $postdeps" 49675f5b92ffSmrg 49685f5b92ffSmrg # Compute libraries that are listed more than once in $predeps 49695f5b92ffSmrg # $postdeps and mark them as special (i.e., whose duplicates are 49705f5b92ffSmrg # not to be eliminated). 49715f5b92ffSmrg pre_post_deps= 49725f5b92ffSmrg if $opt_duplicate_compiler_generated_deps; then 49735f5b92ffSmrg for pre_post_dep in $predeps $postdeps; do 49745f5b92ffSmrg case "$pre_post_deps " in 49755f5b92ffSmrg *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; 49765f5b92ffSmrg esac 49775f5b92ffSmrg pre_post_deps="$pre_post_deps $pre_post_dep" 49785f5b92ffSmrg done 49795f5b92ffSmrg fi 49805f5b92ffSmrg pre_post_deps= 49815f5b92ffSmrg fi 49825f5b92ffSmrg 49835f5b92ffSmrg deplibs= 49845f5b92ffSmrg newdependency_libs= 49855f5b92ffSmrg newlib_search_path= 49865f5b92ffSmrg need_relink=no # whether we're linking any uninstalled libtool libraries 49875f5b92ffSmrg notinst_deplibs= # not-installed libtool libraries 49885f5b92ffSmrg notinst_path= # paths that contain not-installed libtool libraries 49895f5b92ffSmrg 49905f5b92ffSmrg case $linkmode in 49915f5b92ffSmrg lib) 49925f5b92ffSmrg passes="conv dlpreopen link" 49935f5b92ffSmrg for file in $dlfiles $dlprefiles; do 49945f5b92ffSmrg case $file in 49955f5b92ffSmrg *.la) ;; 49965f5b92ffSmrg *) 49975f5b92ffSmrg func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" 49985f5b92ffSmrg ;; 49995f5b92ffSmrg esac 50005f5b92ffSmrg done 50015f5b92ffSmrg ;; 50025f5b92ffSmrg prog) 50035f5b92ffSmrg compile_deplibs= 50045f5b92ffSmrg finalize_deplibs= 50055f5b92ffSmrg alldeplibs=no 50065f5b92ffSmrg newdlfiles= 50075f5b92ffSmrg newdlprefiles= 50085f5b92ffSmrg passes="conv scan dlopen dlpreopen link" 50095f5b92ffSmrg ;; 50105f5b92ffSmrg *) passes="conv" 50115f5b92ffSmrg ;; 50125f5b92ffSmrg esac 50135f5b92ffSmrg 50145f5b92ffSmrg for pass in $passes; do 50155f5b92ffSmrg # The preopen pass in lib mode reverses $deplibs; put it back here 50165f5b92ffSmrg # so that -L comes before libs that need it for instance... 50175f5b92ffSmrg if test "$linkmode,$pass" = "lib,link"; then 50185f5b92ffSmrg ## FIXME: Find the place where the list is rebuilt in the wrong 50195f5b92ffSmrg ## order, and fix it there properly 50205f5b92ffSmrg tmp_deplibs= 50215f5b92ffSmrg for deplib in $deplibs; do 50225f5b92ffSmrg tmp_deplibs="$deplib $tmp_deplibs" 50235f5b92ffSmrg done 50245f5b92ffSmrg deplibs="$tmp_deplibs" 50255f5b92ffSmrg fi 50265f5b92ffSmrg 50275f5b92ffSmrg if test "$linkmode,$pass" = "lib,link" || 50285f5b92ffSmrg test "$linkmode,$pass" = "prog,scan"; then 50295f5b92ffSmrg libs="$deplibs" 50305f5b92ffSmrg deplibs= 50315f5b92ffSmrg fi 50325f5b92ffSmrg if test "$linkmode" = prog; then 50335f5b92ffSmrg case $pass in 50345f5b92ffSmrg dlopen) libs="$dlfiles" ;; 50355f5b92ffSmrg dlpreopen) libs="$dlprefiles" ;; 50365f5b92ffSmrg link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; 50375f5b92ffSmrg esac 50385f5b92ffSmrg fi 50395f5b92ffSmrg if test "$linkmode,$pass" = "lib,dlpreopen"; then 50405f5b92ffSmrg # Collect and forward deplibs of preopened libtool libs 50415f5b92ffSmrg for lib in $dlprefiles; do 50425f5b92ffSmrg # Ignore non-libtool-libs 50435f5b92ffSmrg dependency_libs= 50445f5b92ffSmrg case $lib in 50455f5b92ffSmrg *.la) func_source "$lib" ;; 50465f5b92ffSmrg esac 50475f5b92ffSmrg 50485f5b92ffSmrg # Collect preopened libtool deplibs, except any this library 50495f5b92ffSmrg # has declared as weak libs 50505f5b92ffSmrg for deplib in $dependency_libs; do 50515f5b92ffSmrg deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"` 50525f5b92ffSmrg case " $weak_libs " in 50535f5b92ffSmrg *" $deplib_base "*) ;; 50545f5b92ffSmrg *) deplibs="$deplibs $deplib" ;; 50555f5b92ffSmrg esac 50565f5b92ffSmrg done 50575f5b92ffSmrg done 50585f5b92ffSmrg libs="$dlprefiles" 50595f5b92ffSmrg fi 50605f5b92ffSmrg if test "$pass" = dlopen; then 50615f5b92ffSmrg # Collect dlpreopened libraries 50625f5b92ffSmrg save_deplibs="$deplibs" 50635f5b92ffSmrg deplibs= 50645f5b92ffSmrg fi 50655f5b92ffSmrg 50665f5b92ffSmrg for deplib in $libs; do 50675f5b92ffSmrg lib= 50685f5b92ffSmrg found=no 50695f5b92ffSmrg case $deplib in 50705f5b92ffSmrg -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) 50715f5b92ffSmrg if test "$linkmode,$pass" = "prog,link"; then 50725f5b92ffSmrg compile_deplibs="$deplib $compile_deplibs" 50735f5b92ffSmrg finalize_deplibs="$deplib $finalize_deplibs" 50745f5b92ffSmrg else 50755f5b92ffSmrg compiler_flags="$compiler_flags $deplib" 50765f5b92ffSmrg if test "$linkmode" = lib ; then 50775f5b92ffSmrg case "$new_inherited_linker_flags " in 50785f5b92ffSmrg *" $deplib "*) ;; 50795f5b92ffSmrg * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; 50805f5b92ffSmrg esac 50815f5b92ffSmrg fi 50825f5b92ffSmrg fi 50835f5b92ffSmrg continue 50845f5b92ffSmrg ;; 50855f5b92ffSmrg -l*) 50865f5b92ffSmrg if test "$linkmode" != lib && test "$linkmode" != prog; then 50875f5b92ffSmrg func_warning "\`-l' is ignored for archives/objects" 50885f5b92ffSmrg continue 50895f5b92ffSmrg fi 50905f5b92ffSmrg func_stripname '-l' '' "$deplib" 50915f5b92ffSmrg name=$func_stripname_result 50925f5b92ffSmrg if test "$linkmode" = lib; then 50935f5b92ffSmrg searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" 50945f5b92ffSmrg else 50955f5b92ffSmrg searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" 50965f5b92ffSmrg fi 50975f5b92ffSmrg for searchdir in $searchdirs; do 50985f5b92ffSmrg for search_ext in .la $std_shrext .so .a; do 50995f5b92ffSmrg # Search the libtool library 51005f5b92ffSmrg lib="$searchdir/lib${name}${search_ext}" 51015f5b92ffSmrg if test -f "$lib"; then 51025f5b92ffSmrg if test "$search_ext" = ".la"; then 51035f5b92ffSmrg found=yes 51045f5b92ffSmrg else 51055f5b92ffSmrg found=no 51065f5b92ffSmrg fi 51075f5b92ffSmrg break 2 51085f5b92ffSmrg fi 51095f5b92ffSmrg done 51105f5b92ffSmrg done 51115f5b92ffSmrg if test "$found" != yes; then 51125f5b92ffSmrg # deplib doesn't seem to be a libtool library 51135f5b92ffSmrg if test "$linkmode,$pass" = "prog,link"; then 51145f5b92ffSmrg compile_deplibs="$deplib $compile_deplibs" 51155f5b92ffSmrg finalize_deplibs="$deplib $finalize_deplibs" 51165f5b92ffSmrg else 51175f5b92ffSmrg deplibs="$deplib $deplibs" 51185f5b92ffSmrg test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 51195f5b92ffSmrg fi 51205f5b92ffSmrg continue 51215f5b92ffSmrg else # deplib is a libtool library 51225f5b92ffSmrg # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, 51235f5b92ffSmrg # We need to do some special things here, and not later. 51245f5b92ffSmrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 51255f5b92ffSmrg case " $predeps $postdeps " in 51265f5b92ffSmrg *" $deplib "*) 51275f5b92ffSmrg if func_lalib_p "$lib"; then 51285f5b92ffSmrg library_names= 51295f5b92ffSmrg old_library= 51305f5b92ffSmrg func_source "$lib" 51315f5b92ffSmrg for l in $old_library $library_names; do 51325f5b92ffSmrg ll="$l" 51335f5b92ffSmrg done 51345f5b92ffSmrg if test "X$ll" = "X$old_library" ; then # only static version available 51355f5b92ffSmrg found=no 51365f5b92ffSmrg func_dirname "$lib" "" "." 51375f5b92ffSmrg ladir="$func_dirname_result" 51385f5b92ffSmrg lib=$ladir/$old_library 51395f5b92ffSmrg if test "$linkmode,$pass" = "prog,link"; then 51405f5b92ffSmrg compile_deplibs="$deplib $compile_deplibs" 51415f5b92ffSmrg finalize_deplibs="$deplib $finalize_deplibs" 51425f5b92ffSmrg else 51435f5b92ffSmrg deplibs="$deplib $deplibs" 51445f5b92ffSmrg test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 51455f5b92ffSmrg fi 51465f5b92ffSmrg continue 51475f5b92ffSmrg fi 51485f5b92ffSmrg fi 51495f5b92ffSmrg ;; 51505f5b92ffSmrg *) ;; 51515f5b92ffSmrg esac 51525f5b92ffSmrg fi 51535f5b92ffSmrg fi 51545f5b92ffSmrg ;; # -l 51555f5b92ffSmrg *.ltframework) 51565f5b92ffSmrg if test "$linkmode,$pass" = "prog,link"; then 51575f5b92ffSmrg compile_deplibs="$deplib $compile_deplibs" 51585f5b92ffSmrg finalize_deplibs="$deplib $finalize_deplibs" 51595f5b92ffSmrg else 51605f5b92ffSmrg deplibs="$deplib $deplibs" 51615f5b92ffSmrg if test "$linkmode" = lib ; then 51625f5b92ffSmrg case "$new_inherited_linker_flags " in 51635f5b92ffSmrg *" $deplib "*) ;; 51645f5b92ffSmrg * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; 51655f5b92ffSmrg esac 51665f5b92ffSmrg fi 51675f5b92ffSmrg fi 51685f5b92ffSmrg continue 51695f5b92ffSmrg ;; 51705f5b92ffSmrg -L*) 51715f5b92ffSmrg case $linkmode in 51725f5b92ffSmrg lib) 51735f5b92ffSmrg deplibs="$deplib $deplibs" 51745f5b92ffSmrg test "$pass" = conv && continue 51755f5b92ffSmrg newdependency_libs="$deplib $newdependency_libs" 51765f5b92ffSmrg func_stripname '-L' '' "$deplib" 51775f5b92ffSmrg newlib_search_path="$newlib_search_path $func_stripname_result" 51785f5b92ffSmrg ;; 51795f5b92ffSmrg prog) 51805f5b92ffSmrg if test "$pass" = conv; then 51815f5b92ffSmrg deplibs="$deplib $deplibs" 51825f5b92ffSmrg continue 51835f5b92ffSmrg fi 51845f5b92ffSmrg if test "$pass" = scan; then 51855f5b92ffSmrg deplibs="$deplib $deplibs" 51865f5b92ffSmrg else 51875f5b92ffSmrg compile_deplibs="$deplib $compile_deplibs" 51885f5b92ffSmrg finalize_deplibs="$deplib $finalize_deplibs" 51895f5b92ffSmrg fi 51905f5b92ffSmrg func_stripname '-L' '' "$deplib" 51915f5b92ffSmrg newlib_search_path="$newlib_search_path $func_stripname_result" 51925f5b92ffSmrg ;; 51935f5b92ffSmrg *) 51945f5b92ffSmrg func_warning "\`-L' is ignored for archives/objects" 51955f5b92ffSmrg ;; 51965f5b92ffSmrg esac # linkmode 51975f5b92ffSmrg continue 51985f5b92ffSmrg ;; # -L 51995f5b92ffSmrg -R*) 52005f5b92ffSmrg if test "$pass" = link; then 52015f5b92ffSmrg func_stripname '-R' '' "$deplib" 52025f5b92ffSmrg dir=$func_stripname_result 52035f5b92ffSmrg # Make sure the xrpath contains only unique directories. 52045f5b92ffSmrg case "$xrpath " in 52055f5b92ffSmrg *" $dir "*) ;; 52065f5b92ffSmrg *) xrpath="$xrpath $dir" ;; 52075f5b92ffSmrg esac 52085f5b92ffSmrg fi 52095f5b92ffSmrg deplibs="$deplib $deplibs" 52105f5b92ffSmrg continue 52115f5b92ffSmrg ;; 52125f5b92ffSmrg *.la) lib="$deplib" ;; 52135f5b92ffSmrg *.$libext) 52145f5b92ffSmrg if test "$pass" = conv; then 52155f5b92ffSmrg deplibs="$deplib $deplibs" 52165f5b92ffSmrg continue 52175f5b92ffSmrg fi 52185f5b92ffSmrg case $linkmode in 52195f5b92ffSmrg lib) 52205f5b92ffSmrg # Linking convenience modules into shared libraries is allowed, 52215f5b92ffSmrg # but linking other static libraries is non-portable. 52225f5b92ffSmrg case " $dlpreconveniencelibs " in 52235f5b92ffSmrg *" $deplib "*) ;; 52245f5b92ffSmrg *) 52255f5b92ffSmrg valid_a_lib=no 52265f5b92ffSmrg case $deplibs_check_method in 52275f5b92ffSmrg match_pattern*) 52285f5b92ffSmrg set dummy $deplibs_check_method; shift 52295f5b92ffSmrg match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 52305f5b92ffSmrg if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \ 52315f5b92ffSmrg | $EGREP "$match_pattern_regex" > /dev/null; then 52325f5b92ffSmrg valid_a_lib=yes 52335f5b92ffSmrg fi 52345f5b92ffSmrg ;; 52355f5b92ffSmrg pass_all) 52365f5b92ffSmrg valid_a_lib=yes 52375f5b92ffSmrg ;; 52385f5b92ffSmrg esac 52395f5b92ffSmrg if test "$valid_a_lib" != yes; then 52405f5b92ffSmrg $ECHO 52415f5b92ffSmrg $ECHO "*** Warning: Trying to link with static lib archive $deplib." 52425f5b92ffSmrg $ECHO "*** I have the capability to make that library automatically link in when" 52435f5b92ffSmrg $ECHO "*** you link to this library. But I can only do this if you have a" 52445f5b92ffSmrg $ECHO "*** shared version of the library, which you do not appear to have" 52455f5b92ffSmrg $ECHO "*** because the file extensions .$libext of this argument makes me believe" 52465f5b92ffSmrg $ECHO "*** that it is just a static archive that I should not use here." 52475f5b92ffSmrg else 52485f5b92ffSmrg $ECHO 52495f5b92ffSmrg $ECHO "*** Warning: Linking the shared library $output against the" 52505f5b92ffSmrg $ECHO "*** static library $deplib is not portable!" 52515f5b92ffSmrg deplibs="$deplib $deplibs" 52525f5b92ffSmrg fi 52535f5b92ffSmrg ;; 52545f5b92ffSmrg esac 52555f5b92ffSmrg continue 52565f5b92ffSmrg ;; 52575f5b92ffSmrg prog) 52585f5b92ffSmrg if test "$pass" != link; then 52595f5b92ffSmrg deplibs="$deplib $deplibs" 52605f5b92ffSmrg else 52615f5b92ffSmrg compile_deplibs="$deplib $compile_deplibs" 52625f5b92ffSmrg finalize_deplibs="$deplib $finalize_deplibs" 52635f5b92ffSmrg fi 52645f5b92ffSmrg continue 52655f5b92ffSmrg ;; 52665f5b92ffSmrg esac # linkmode 52675f5b92ffSmrg ;; # *.$libext 52685f5b92ffSmrg *.lo | *.$objext) 52695f5b92ffSmrg if test "$pass" = conv; then 52705f5b92ffSmrg deplibs="$deplib $deplibs" 52715f5b92ffSmrg elif test "$linkmode" = prog; then 52725f5b92ffSmrg if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then 52735f5b92ffSmrg # If there is no dlopen support or we're linking statically, 52745f5b92ffSmrg # we need to preload. 52755f5b92ffSmrg newdlprefiles="$newdlprefiles $deplib" 52765f5b92ffSmrg compile_deplibs="$deplib $compile_deplibs" 52775f5b92ffSmrg finalize_deplibs="$deplib $finalize_deplibs" 52785f5b92ffSmrg else 52795f5b92ffSmrg newdlfiles="$newdlfiles $deplib" 52805f5b92ffSmrg fi 52815f5b92ffSmrg fi 52825f5b92ffSmrg continue 52835f5b92ffSmrg ;; 52845f5b92ffSmrg %DEPLIBS%) 52855f5b92ffSmrg alldeplibs=yes 52865f5b92ffSmrg continue 52875f5b92ffSmrg ;; 52885f5b92ffSmrg esac # case $deplib 52895f5b92ffSmrg 52905f5b92ffSmrg if test "$found" = yes || test -f "$lib"; then : 52915f5b92ffSmrg else 52925f5b92ffSmrg func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" 52935f5b92ffSmrg fi 52945f5b92ffSmrg 52955f5b92ffSmrg # Check to see that this really is a libtool archive. 52965f5b92ffSmrg func_lalib_unsafe_p "$lib" \ 52975f5b92ffSmrg || func_fatal_error "\`$lib' is not a valid libtool archive" 52985f5b92ffSmrg 52995f5b92ffSmrg func_dirname "$lib" "" "." 53005f5b92ffSmrg ladir="$func_dirname_result" 53015f5b92ffSmrg 53025f5b92ffSmrg dlname= 53035f5b92ffSmrg dlopen= 53045f5b92ffSmrg dlpreopen= 53055f5b92ffSmrg libdir= 53065f5b92ffSmrg library_names= 53075f5b92ffSmrg old_library= 53085f5b92ffSmrg inherited_linker_flags= 53095f5b92ffSmrg # If the library was installed with an old release of libtool, 53105f5b92ffSmrg # it will not redefine variables installed, or shouldnotlink 53115f5b92ffSmrg installed=yes 53125f5b92ffSmrg shouldnotlink=no 53135f5b92ffSmrg avoidtemprpath= 53145f5b92ffSmrg 53155f5b92ffSmrg 53165f5b92ffSmrg # Read the .la file 53175f5b92ffSmrg func_source "$lib" 53185f5b92ffSmrg 53195f5b92ffSmrg # Convert "-framework foo" to "foo.ltframework" 53205f5b92ffSmrg if test -n "$inherited_linker_flags"; then 53215f5b92ffSmrg tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'` 53225f5b92ffSmrg for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do 53235f5b92ffSmrg case " $new_inherited_linker_flags " in 53245f5b92ffSmrg *" $tmp_inherited_linker_flag "*) ;; 53255f5b92ffSmrg *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";; 53265f5b92ffSmrg esac 53275f5b92ffSmrg done 53285f5b92ffSmrg fi 53295f5b92ffSmrg dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` 53305f5b92ffSmrg if test "$linkmode,$pass" = "lib,link" || 53315f5b92ffSmrg test "$linkmode,$pass" = "prog,scan" || 53325f5b92ffSmrg { test "$linkmode" != prog && test "$linkmode" != lib; }; then 53335f5b92ffSmrg test -n "$dlopen" && dlfiles="$dlfiles $dlopen" 53345f5b92ffSmrg test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" 53355f5b92ffSmrg fi 53365f5b92ffSmrg 53375f5b92ffSmrg if test "$pass" = conv; then 53385f5b92ffSmrg # Only check for convenience libraries 53395f5b92ffSmrg deplibs="$lib $deplibs" 53405f5b92ffSmrg if test -z "$libdir"; then 53415f5b92ffSmrg if test -z "$old_library"; then 53425f5b92ffSmrg func_fatal_error "cannot find name of link library for \`$lib'" 53435f5b92ffSmrg fi 53445f5b92ffSmrg # It is a libtool convenience library, so add in its objects. 53455f5b92ffSmrg convenience="$convenience $ladir/$objdir/$old_library" 53465f5b92ffSmrg old_convenience="$old_convenience $ladir/$objdir/$old_library" 53475f5b92ffSmrg elif test "$linkmode" != prog && test "$linkmode" != lib; then 53485f5b92ffSmrg func_fatal_error "\`$lib' is not a convenience library" 53495f5b92ffSmrg fi 53505f5b92ffSmrg tmp_libs= 53515f5b92ffSmrg for deplib in $dependency_libs; do 53525f5b92ffSmrg deplibs="$deplib $deplibs" 53535f5b92ffSmrg if $opt_duplicate_deps ; then 53545f5b92ffSmrg case "$tmp_libs " in 53555f5b92ffSmrg *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 53565f5b92ffSmrg esac 53575f5b92ffSmrg fi 53585f5b92ffSmrg tmp_libs="$tmp_libs $deplib" 53595f5b92ffSmrg done 53605f5b92ffSmrg continue 53615f5b92ffSmrg fi # $pass = conv 53625f5b92ffSmrg 53635f5b92ffSmrg 53645f5b92ffSmrg # Get the name of the library we link against. 53655f5b92ffSmrg linklib= 53665f5b92ffSmrg for l in $old_library $library_names; do 53675f5b92ffSmrg linklib="$l" 53685f5b92ffSmrg done 53695f5b92ffSmrg if test -z "$linklib"; then 53705f5b92ffSmrg func_fatal_error "cannot find name of link library for \`$lib'" 53715f5b92ffSmrg fi 53725f5b92ffSmrg 53735f5b92ffSmrg # This library was specified with -dlopen. 53745f5b92ffSmrg if test "$pass" = dlopen; then 53755f5b92ffSmrg if test -z "$libdir"; then 53765f5b92ffSmrg func_fatal_error "cannot -dlopen a convenience library: \`$lib'" 53775f5b92ffSmrg fi 53785f5b92ffSmrg if test -z "$dlname" || 53795f5b92ffSmrg test "$dlopen_support" != yes || 53805f5b92ffSmrg test "$build_libtool_libs" = no; then 53815f5b92ffSmrg # If there is no dlname, no dlopen support or we're linking 53825f5b92ffSmrg # statically, we need to preload. We also need to preload any 53835f5b92ffSmrg # dependent libraries so libltdl's deplib preloader doesn't 53845f5b92ffSmrg # bomb out in the load deplibs phase. 53855f5b92ffSmrg dlprefiles="$dlprefiles $lib $dependency_libs" 53865f5b92ffSmrg else 53875f5b92ffSmrg newdlfiles="$newdlfiles $lib" 53885f5b92ffSmrg fi 53895f5b92ffSmrg continue 53905f5b92ffSmrg fi # $pass = dlopen 53915f5b92ffSmrg 53925f5b92ffSmrg # We need an absolute path. 53935f5b92ffSmrg case $ladir in 53945f5b92ffSmrg [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; 53955f5b92ffSmrg *) 53965f5b92ffSmrg abs_ladir=`cd "$ladir" && pwd` 53975f5b92ffSmrg if test -z "$abs_ladir"; then 53985f5b92ffSmrg func_warning "cannot determine absolute directory name of \`$ladir'" 53995f5b92ffSmrg func_warning "passing it literally to the linker, although it might fail" 54005f5b92ffSmrg abs_ladir="$ladir" 54015f5b92ffSmrg fi 54025f5b92ffSmrg ;; 54035f5b92ffSmrg esac 54045f5b92ffSmrg func_basename "$lib" 54055f5b92ffSmrg laname="$func_basename_result" 54065f5b92ffSmrg 54075f5b92ffSmrg # Find the relevant object directory and library name. 54085f5b92ffSmrg if test "X$installed" = Xyes; then 54095f5b92ffSmrg if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then 54105f5b92ffSmrg func_warning "library \`$lib' was moved." 54115f5b92ffSmrg dir="$ladir" 54125f5b92ffSmrg absdir="$abs_ladir" 54135f5b92ffSmrg libdir="$abs_ladir" 54145f5b92ffSmrg else 54155f5b92ffSmrg dir="$libdir" 54165f5b92ffSmrg absdir="$libdir" 54175f5b92ffSmrg fi 54185f5b92ffSmrg test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes 54195f5b92ffSmrg else 54205f5b92ffSmrg if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then 54215f5b92ffSmrg dir="$ladir" 54225f5b92ffSmrg absdir="$abs_ladir" 54235f5b92ffSmrg # Remove this search path later 54245f5b92ffSmrg notinst_path="$notinst_path $abs_ladir" 54255f5b92ffSmrg else 54265f5b92ffSmrg dir="$ladir/$objdir" 54275f5b92ffSmrg absdir="$abs_ladir/$objdir" 54285f5b92ffSmrg # Remove this search path later 54295f5b92ffSmrg notinst_path="$notinst_path $abs_ladir" 54305f5b92ffSmrg fi 54315f5b92ffSmrg fi # $installed = yes 54325f5b92ffSmrg func_stripname 'lib' '.la' "$laname" 54335f5b92ffSmrg name=$func_stripname_result 54345f5b92ffSmrg 54355f5b92ffSmrg # This library was specified with -dlpreopen. 54365f5b92ffSmrg if test "$pass" = dlpreopen; then 54375f5b92ffSmrg if test -z "$libdir" && test "$linkmode" = prog; then 54385f5b92ffSmrg func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" 54395f5b92ffSmrg fi 54405f5b92ffSmrg # Prefer using a static library (so that no silly _DYNAMIC symbols 54415f5b92ffSmrg # are required to link). 54425f5b92ffSmrg if test -n "$old_library"; then 54435f5b92ffSmrg newdlprefiles="$newdlprefiles $dir/$old_library" 54445f5b92ffSmrg # Keep a list of preopened convenience libraries to check 54455f5b92ffSmrg # that they are being used correctly in the link pass. 54465f5b92ffSmrg test -z "$libdir" && \ 54475f5b92ffSmrg dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library" 54485f5b92ffSmrg # Otherwise, use the dlname, so that lt_dlopen finds it. 54495f5b92ffSmrg elif test -n "$dlname"; then 54505f5b92ffSmrg newdlprefiles="$newdlprefiles $dir/$dlname" 54515f5b92ffSmrg else 54525f5b92ffSmrg newdlprefiles="$newdlprefiles $dir/$linklib" 54535f5b92ffSmrg fi 54545f5b92ffSmrg fi # $pass = dlpreopen 54555f5b92ffSmrg 54565f5b92ffSmrg if test -z "$libdir"; then 54575f5b92ffSmrg # Link the convenience library 54585f5b92ffSmrg if test "$linkmode" = lib; then 54595f5b92ffSmrg deplibs="$dir/$old_library $deplibs" 54605f5b92ffSmrg elif test "$linkmode,$pass" = "prog,link"; then 54615f5b92ffSmrg compile_deplibs="$dir/$old_library $compile_deplibs" 54625f5b92ffSmrg finalize_deplibs="$dir/$old_library $finalize_deplibs" 54635f5b92ffSmrg else 54645f5b92ffSmrg deplibs="$lib $deplibs" # used for prog,scan pass 54655f5b92ffSmrg fi 54665f5b92ffSmrg continue 54675f5b92ffSmrg fi 54685f5b92ffSmrg 54695f5b92ffSmrg 54705f5b92ffSmrg if test "$linkmode" = prog && test "$pass" != link; then 54715f5b92ffSmrg newlib_search_path="$newlib_search_path $ladir" 54725f5b92ffSmrg deplibs="$lib $deplibs" 54735f5b92ffSmrg 54745f5b92ffSmrg linkalldeplibs=no 54755f5b92ffSmrg if test "$link_all_deplibs" != no || test -z "$library_names" || 54765f5b92ffSmrg test "$build_libtool_libs" = no; then 54775f5b92ffSmrg linkalldeplibs=yes 54785f5b92ffSmrg fi 54795f5b92ffSmrg 54805f5b92ffSmrg tmp_libs= 54815f5b92ffSmrg for deplib in $dependency_libs; do 54825f5b92ffSmrg case $deplib in 54835f5b92ffSmrg -L*) func_stripname '-L' '' "$deplib" 54845f5b92ffSmrg newlib_search_path="$newlib_search_path $func_stripname_result" 54855f5b92ffSmrg ;; 54865f5b92ffSmrg esac 54875f5b92ffSmrg # Need to link against all dependency_libs? 54885f5b92ffSmrg if test "$linkalldeplibs" = yes; then 54895f5b92ffSmrg deplibs="$deplib $deplibs" 54905f5b92ffSmrg else 54915f5b92ffSmrg # Need to hardcode shared library paths 54925f5b92ffSmrg # or/and link against static libraries 54935f5b92ffSmrg newdependency_libs="$deplib $newdependency_libs" 54945f5b92ffSmrg fi 54955f5b92ffSmrg if $opt_duplicate_deps ; then 54965f5b92ffSmrg case "$tmp_libs " in 54975f5b92ffSmrg *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 54985f5b92ffSmrg esac 54995f5b92ffSmrg fi 55005f5b92ffSmrg tmp_libs="$tmp_libs $deplib" 55015f5b92ffSmrg done # for deplib 55025f5b92ffSmrg continue 55035f5b92ffSmrg fi # $linkmode = prog... 55045f5b92ffSmrg 55055f5b92ffSmrg if test "$linkmode,$pass" = "prog,link"; then 55065f5b92ffSmrg if test -n "$library_names" && 55075f5b92ffSmrg { { test "$prefer_static_libs" = no || 55085f5b92ffSmrg test "$prefer_static_libs,$installed" = "built,yes"; } || 55095f5b92ffSmrg test -z "$old_library"; }; then 55105f5b92ffSmrg # We need to hardcode the library path 55115f5b92ffSmrg if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then 55125f5b92ffSmrg # Make sure the rpath contains only unique directories. 55135f5b92ffSmrg case "$temp_rpath:" in 55145f5b92ffSmrg *"$absdir:"*) ;; 55155f5b92ffSmrg *) temp_rpath="$temp_rpath$absdir:" ;; 55165f5b92ffSmrg esac 55175f5b92ffSmrg fi 55185f5b92ffSmrg 55195f5b92ffSmrg # Hardcode the library path. 55205f5b92ffSmrg # Skip directories that are in the system default run-time 55215f5b92ffSmrg # search path. 55225f5b92ffSmrg case " $sys_lib_dlsearch_path " in 55235f5b92ffSmrg *" $absdir "*) ;; 55245f5b92ffSmrg *) 55255f5b92ffSmrg case "$compile_rpath " in 55265f5b92ffSmrg *" $absdir "*) ;; 55275f5b92ffSmrg *) compile_rpath="$compile_rpath $absdir" 55285f5b92ffSmrg esac 55295f5b92ffSmrg ;; 55305f5b92ffSmrg esac 55315f5b92ffSmrg case " $sys_lib_dlsearch_path " in 55325f5b92ffSmrg *" $libdir "*) ;; 55335f5b92ffSmrg *) 55345f5b92ffSmrg case "$finalize_rpath " in 55355f5b92ffSmrg *" $libdir "*) ;; 55365f5b92ffSmrg *) finalize_rpath="$finalize_rpath $libdir" 55375f5b92ffSmrg esac 55385f5b92ffSmrg ;; 55395f5b92ffSmrg esac 55405f5b92ffSmrg fi # $linkmode,$pass = prog,link... 55415f5b92ffSmrg 55425f5b92ffSmrg if test "$alldeplibs" = yes && 55435f5b92ffSmrg { test "$deplibs_check_method" = pass_all || 55445f5b92ffSmrg { test "$build_libtool_libs" = yes && 55455f5b92ffSmrg test -n "$library_names"; }; }; then 55465f5b92ffSmrg # We only need to search for static libraries 55475f5b92ffSmrg continue 55485f5b92ffSmrg fi 55495f5b92ffSmrg fi 55505f5b92ffSmrg 55515f5b92ffSmrg link_static=no # Whether the deplib will be linked statically 55525f5b92ffSmrg use_static_libs=$prefer_static_libs 55535f5b92ffSmrg if test "$use_static_libs" = built && test "$installed" = yes; then 55545f5b92ffSmrg use_static_libs=no 55555f5b92ffSmrg fi 55565f5b92ffSmrg if test -n "$library_names" && 55575f5b92ffSmrg { test "$use_static_libs" = no || test -z "$old_library"; }; then 55585f5b92ffSmrg case $host in 55595f5b92ffSmrg *cygwin* | *mingw* | *cegcc*) 55605f5b92ffSmrg # No point in relinking DLLs because paths are not encoded 55615f5b92ffSmrg notinst_deplibs="$notinst_deplibs $lib" 55625f5b92ffSmrg need_relink=no 55635f5b92ffSmrg ;; 55645f5b92ffSmrg *) 55655f5b92ffSmrg if test "$installed" = no; then 55665f5b92ffSmrg notinst_deplibs="$notinst_deplibs $lib" 55675f5b92ffSmrg need_relink=yes 55685f5b92ffSmrg fi 55695f5b92ffSmrg ;; 55705f5b92ffSmrg esac 55715f5b92ffSmrg # This is a shared library 55725f5b92ffSmrg 55735f5b92ffSmrg # Warn about portability, can't link against -module's on some 55745f5b92ffSmrg # systems (darwin). Don't bleat about dlopened modules though! 55755f5b92ffSmrg dlopenmodule="" 55765f5b92ffSmrg for dlpremoduletest in $dlprefiles; do 55775f5b92ffSmrg if test "X$dlpremoduletest" = "X$lib"; then 55785f5b92ffSmrg dlopenmodule="$dlpremoduletest" 55795f5b92ffSmrg break 55805f5b92ffSmrg fi 55815f5b92ffSmrg done 55825f5b92ffSmrg if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then 55835f5b92ffSmrg $ECHO 55845f5b92ffSmrg if test "$linkmode" = prog; then 55855f5b92ffSmrg $ECHO "*** Warning: Linking the executable $output against the loadable module" 55865f5b92ffSmrg else 55875f5b92ffSmrg $ECHO "*** Warning: Linking the shared library $output against the loadable module" 55885f5b92ffSmrg fi 55895f5b92ffSmrg $ECHO "*** $linklib is not portable!" 55905f5b92ffSmrg fi 55915f5b92ffSmrg if test "$linkmode" = lib && 55925f5b92ffSmrg test "$hardcode_into_libs" = yes; then 55935f5b92ffSmrg # Hardcode the library path. 55945f5b92ffSmrg # Skip directories that are in the system default run-time 55955f5b92ffSmrg # search path. 55965f5b92ffSmrg case " $sys_lib_dlsearch_path " in 55975f5b92ffSmrg *" $absdir "*) ;; 55985f5b92ffSmrg *) 55995f5b92ffSmrg case "$compile_rpath " in 56005f5b92ffSmrg *" $absdir "*) ;; 56015f5b92ffSmrg *) compile_rpath="$compile_rpath $absdir" 56025f5b92ffSmrg esac 56035f5b92ffSmrg ;; 56045f5b92ffSmrg esac 56055f5b92ffSmrg case " $sys_lib_dlsearch_path " in 56065f5b92ffSmrg *" $libdir "*) ;; 56075f5b92ffSmrg *) 56085f5b92ffSmrg case "$finalize_rpath " in 56095f5b92ffSmrg *" $libdir "*) ;; 56105f5b92ffSmrg *) finalize_rpath="$finalize_rpath $libdir" 56115f5b92ffSmrg esac 56125f5b92ffSmrg ;; 56135f5b92ffSmrg esac 56145f5b92ffSmrg fi 56155f5b92ffSmrg 56165f5b92ffSmrg if test -n "$old_archive_from_expsyms_cmds"; then 56175f5b92ffSmrg # figure out the soname 56185f5b92ffSmrg set dummy $library_names 56195f5b92ffSmrg shift 56205f5b92ffSmrg realname="$1" 56215f5b92ffSmrg shift 56225f5b92ffSmrg libname=`eval "\\$ECHO \"$libname_spec\""` 56235f5b92ffSmrg # use dlname if we got it. it's perfectly good, no? 56245f5b92ffSmrg if test -n "$dlname"; then 56255f5b92ffSmrg soname="$dlname" 56265f5b92ffSmrg elif test -n "$soname_spec"; then 56275f5b92ffSmrg # bleh windows 56285f5b92ffSmrg case $host in 56295f5b92ffSmrg *cygwin* | mingw* | *cegcc*) 56305f5b92ffSmrg func_arith $current - $age 56315f5b92ffSmrg major=$func_arith_result 56325f5b92ffSmrg versuffix="-$major" 56335f5b92ffSmrg ;; 56345f5b92ffSmrg esac 56355f5b92ffSmrg eval soname=\"$soname_spec\" 56365f5b92ffSmrg else 56375f5b92ffSmrg soname="$realname" 56385f5b92ffSmrg fi 56395f5b92ffSmrg 56405f5b92ffSmrg # Make a new name for the extract_expsyms_cmds to use 56415f5b92ffSmrg soroot="$soname" 56425f5b92ffSmrg func_basename "$soroot" 56435f5b92ffSmrg soname="$func_basename_result" 56445f5b92ffSmrg func_stripname 'lib' '.dll' "$soname" 56455f5b92ffSmrg newlib=libimp-$func_stripname_result.a 56465f5b92ffSmrg 56475f5b92ffSmrg # If the library has no export list, then create one now 56485f5b92ffSmrg if test -f "$output_objdir/$soname-def"; then : 56495f5b92ffSmrg else 56505f5b92ffSmrg func_verbose "extracting exported symbol list from \`$soname'" 56515f5b92ffSmrg func_execute_cmds "$extract_expsyms_cmds" 'exit $?' 56525f5b92ffSmrg fi 56535f5b92ffSmrg 56545f5b92ffSmrg # Create $newlib 56555f5b92ffSmrg if test -f "$output_objdir/$newlib"; then :; else 56565f5b92ffSmrg func_verbose "generating import library for \`$soname'" 56575f5b92ffSmrg func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' 56585f5b92ffSmrg fi 56595f5b92ffSmrg # make sure the library variables are pointing to the new library 56605f5b92ffSmrg dir=$output_objdir 56615f5b92ffSmrg linklib=$newlib 56625f5b92ffSmrg fi # test -n "$old_archive_from_expsyms_cmds" 56635f5b92ffSmrg 56645f5b92ffSmrg if test "$linkmode" = prog || test "$mode" != relink; then 56655f5b92ffSmrg add_shlibpath= 56665f5b92ffSmrg add_dir= 56675f5b92ffSmrg add= 56685f5b92ffSmrg lib_linked=yes 56695f5b92ffSmrg case $hardcode_action in 56705f5b92ffSmrg immediate | unsupported) 56715f5b92ffSmrg if test "$hardcode_direct" = no; then 56725f5b92ffSmrg add="$dir/$linklib" 56735f5b92ffSmrg case $host in 56745f5b92ffSmrg *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; 56755f5b92ffSmrg *-*-sysv4*uw2*) add_dir="-L$dir" ;; 56765f5b92ffSmrg *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ 56775f5b92ffSmrg *-*-unixware7*) add_dir="-L$dir" ;; 56785f5b92ffSmrg *-*-darwin* ) 56795f5b92ffSmrg # if the lib is a (non-dlopened) module then we can not 56805f5b92ffSmrg # link against it, someone is ignoring the earlier warnings 56815f5b92ffSmrg if /usr/bin/file -L $add 2> /dev/null | 56825f5b92ffSmrg $GREP ": [^:]* bundle" >/dev/null ; then 56835f5b92ffSmrg if test "X$dlopenmodule" != "X$lib"; then 56845f5b92ffSmrg $ECHO "*** Warning: lib $linklib is a module, not a shared library" 56855f5b92ffSmrg if test -z "$old_library" ; then 56865f5b92ffSmrg $ECHO 56875f5b92ffSmrg $ECHO "*** And there doesn't seem to be a static archive available" 56885f5b92ffSmrg $ECHO "*** The link will probably fail, sorry" 56895f5b92ffSmrg else 56905f5b92ffSmrg add="$dir/$old_library" 56915f5b92ffSmrg fi 56925f5b92ffSmrg elif test -n "$old_library"; then 56935f5b92ffSmrg add="$dir/$old_library" 56945f5b92ffSmrg fi 56955f5b92ffSmrg fi 56965f5b92ffSmrg esac 56975f5b92ffSmrg elif test "$hardcode_minus_L" = no; then 56985f5b92ffSmrg case $host in 56995f5b92ffSmrg *-*-sunos*) add_shlibpath="$dir" ;; 57005f5b92ffSmrg esac 57015f5b92ffSmrg add_dir="-L$dir" 57025f5b92ffSmrg add="-l$name" 57035f5b92ffSmrg elif test "$hardcode_shlibpath_var" = no; then 57045f5b92ffSmrg add_shlibpath="$dir" 57055f5b92ffSmrg add="-l$name" 57065f5b92ffSmrg else 57075f5b92ffSmrg lib_linked=no 57085f5b92ffSmrg fi 57095f5b92ffSmrg ;; 57105f5b92ffSmrg relink) 57115f5b92ffSmrg if test "$hardcode_direct" = yes && 57125f5b92ffSmrg test "$hardcode_direct_absolute" = no; then 57135f5b92ffSmrg add="$dir/$linklib" 57145f5b92ffSmrg elif test "$hardcode_minus_L" = yes; then 57155f5b92ffSmrg add_dir="-L$dir" 57165f5b92ffSmrg # Try looking first in the location we're being installed to. 57175f5b92ffSmrg if test -n "$inst_prefix_dir"; then 57185f5b92ffSmrg case $libdir in 57195f5b92ffSmrg [\\/]*) 57205f5b92ffSmrg add_dir="$add_dir -L$inst_prefix_dir$libdir" 57215f5b92ffSmrg ;; 57225f5b92ffSmrg esac 57235f5b92ffSmrg fi 57245f5b92ffSmrg add="-l$name" 57255f5b92ffSmrg elif test "$hardcode_shlibpath_var" = yes; then 57265f5b92ffSmrg add_shlibpath="$dir" 57275f5b92ffSmrg add="-l$name" 57285f5b92ffSmrg else 57295f5b92ffSmrg lib_linked=no 57305f5b92ffSmrg fi 57315f5b92ffSmrg ;; 57325f5b92ffSmrg *) lib_linked=no ;; 57335f5b92ffSmrg esac 57345f5b92ffSmrg 57355f5b92ffSmrg if test "$lib_linked" != yes; then 57365f5b92ffSmrg func_fatal_configuration "unsupported hardcode properties" 57375f5b92ffSmrg fi 57385f5b92ffSmrg 57395f5b92ffSmrg if test -n "$add_shlibpath"; then 57405f5b92ffSmrg case :$compile_shlibpath: in 57415f5b92ffSmrg *":$add_shlibpath:"*) ;; 57425f5b92ffSmrg *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; 57435f5b92ffSmrg esac 57445f5b92ffSmrg fi 57455f5b92ffSmrg if test "$linkmode" = prog; then 57465f5b92ffSmrg test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" 57475f5b92ffSmrg test -n "$add" && compile_deplibs="$add $compile_deplibs" 57485f5b92ffSmrg else 57495f5b92ffSmrg test -n "$add_dir" && deplibs="$add_dir $deplibs" 57505f5b92ffSmrg test -n "$add" && deplibs="$add $deplibs" 57515f5b92ffSmrg if test "$hardcode_direct" != yes && 57525f5b92ffSmrg test "$hardcode_minus_L" != yes && 57535f5b92ffSmrg test "$hardcode_shlibpath_var" = yes; then 57545f5b92ffSmrg case :$finalize_shlibpath: in 57555f5b92ffSmrg *":$libdir:"*) ;; 57565f5b92ffSmrg *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; 57575f5b92ffSmrg esac 57585f5b92ffSmrg fi 57595f5b92ffSmrg fi 57605f5b92ffSmrg fi 57615f5b92ffSmrg 57625f5b92ffSmrg if test "$linkmode" = prog || test "$mode" = relink; then 57635f5b92ffSmrg add_shlibpath= 57645f5b92ffSmrg add_dir= 57655f5b92ffSmrg add= 57665f5b92ffSmrg # Finalize command for both is simple: just hardcode it. 57675f5b92ffSmrg if test "$hardcode_direct" = yes && 57685f5b92ffSmrg test "$hardcode_direct_absolute" = no; then 57695f5b92ffSmrg add="$libdir/$linklib" 57705f5b92ffSmrg elif test "$hardcode_minus_L" = yes; then 57715f5b92ffSmrg add_dir="-L$libdir" 57725f5b92ffSmrg add="-l$name" 57735f5b92ffSmrg elif test "$hardcode_shlibpath_var" = yes; then 57745f5b92ffSmrg case :$finalize_shlibpath: in 57755f5b92ffSmrg *":$libdir:"*) ;; 57765f5b92ffSmrg *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; 57775f5b92ffSmrg esac 57785f5b92ffSmrg add="-l$name" 57795f5b92ffSmrg elif test "$hardcode_automatic" = yes; then 57805f5b92ffSmrg if test -n "$inst_prefix_dir" && 57815f5b92ffSmrg test -f "$inst_prefix_dir$libdir/$linklib" ; then 57825f5b92ffSmrg add="$inst_prefix_dir$libdir/$linklib" 57835f5b92ffSmrg else 57845f5b92ffSmrg add="$libdir/$linklib" 57855f5b92ffSmrg fi 57865f5b92ffSmrg else 57875f5b92ffSmrg # We cannot seem to hardcode it, guess we'll fake it. 57885f5b92ffSmrg add_dir="-L$libdir" 57895f5b92ffSmrg # Try looking first in the location we're being installed to. 57905f5b92ffSmrg if test -n "$inst_prefix_dir"; then 57915f5b92ffSmrg case $libdir in 57925f5b92ffSmrg [\\/]*) 57935f5b92ffSmrg add_dir="$add_dir -L$inst_prefix_dir$libdir" 57945f5b92ffSmrg ;; 57955f5b92ffSmrg esac 57965f5b92ffSmrg fi 57975f5b92ffSmrg add="-l$name" 57985f5b92ffSmrg fi 57995f5b92ffSmrg 58005f5b92ffSmrg if test "$linkmode" = prog; then 58015f5b92ffSmrg test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" 58025f5b92ffSmrg test -n "$add" && finalize_deplibs="$add $finalize_deplibs" 58035f5b92ffSmrg else 58045f5b92ffSmrg test -n "$add_dir" && deplibs="$add_dir $deplibs" 58055f5b92ffSmrg test -n "$add" && deplibs="$add $deplibs" 58065f5b92ffSmrg fi 58075f5b92ffSmrg fi 58085f5b92ffSmrg elif test "$linkmode" = prog; then 58095f5b92ffSmrg # Here we assume that one of hardcode_direct or hardcode_minus_L 58105f5b92ffSmrg # is not unsupported. This is valid on all known static and 58115f5b92ffSmrg # shared platforms. 58125f5b92ffSmrg if test "$hardcode_direct" != unsupported; then 58135f5b92ffSmrg test -n "$old_library" && linklib="$old_library" 58145f5b92ffSmrg compile_deplibs="$dir/$linklib $compile_deplibs" 58155f5b92ffSmrg finalize_deplibs="$dir/$linklib $finalize_deplibs" 58165f5b92ffSmrg else 58175f5b92ffSmrg compile_deplibs="-l$name -L$dir $compile_deplibs" 58185f5b92ffSmrg finalize_deplibs="-l$name -L$dir $finalize_deplibs" 58195f5b92ffSmrg fi 58205f5b92ffSmrg elif test "$build_libtool_libs" = yes; then 58215f5b92ffSmrg # Not a shared library 58225f5b92ffSmrg if test "$deplibs_check_method" != pass_all; then 58235f5b92ffSmrg # We're trying link a shared library against a static one 58245f5b92ffSmrg # but the system doesn't support it. 58255f5b92ffSmrg 58265f5b92ffSmrg # Just print a warning and add the library to dependency_libs so 58275f5b92ffSmrg # that the program can be linked against the static library. 58285f5b92ffSmrg $ECHO 58295f5b92ffSmrg $ECHO "*** Warning: This system can not link to static lib archive $lib." 58305f5b92ffSmrg $ECHO "*** I have the capability to make that library automatically link in when" 58315f5b92ffSmrg $ECHO "*** you link to this library. But I can only do this if you have a" 58325f5b92ffSmrg $ECHO "*** shared version of the library, which you do not appear to have." 58335f5b92ffSmrg if test "$module" = yes; then 58345f5b92ffSmrg $ECHO "*** But as you try to build a module library, libtool will still create " 58355f5b92ffSmrg $ECHO "*** a static module, that should work as long as the dlopening application" 58365f5b92ffSmrg $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime." 58375f5b92ffSmrg if test -z "$global_symbol_pipe"; then 58385f5b92ffSmrg $ECHO 58395f5b92ffSmrg $ECHO "*** However, this would only work if libtool was able to extract symbol" 58405f5b92ffSmrg $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could" 58415f5b92ffSmrg $ECHO "*** not find such a program. So, this module is probably useless." 58425f5b92ffSmrg $ECHO "*** \`nm' from GNU binutils and a full rebuild may help." 58435f5b92ffSmrg fi 58445f5b92ffSmrg if test "$build_old_libs" = no; then 58455f5b92ffSmrg build_libtool_libs=module 58465f5b92ffSmrg build_old_libs=yes 58475f5b92ffSmrg else 58485f5b92ffSmrg build_libtool_libs=no 58495f5b92ffSmrg fi 58505f5b92ffSmrg fi 58515f5b92ffSmrg else 58525f5b92ffSmrg deplibs="$dir/$old_library $deplibs" 58535f5b92ffSmrg link_static=yes 58545f5b92ffSmrg fi 58555f5b92ffSmrg fi # link shared/static library? 58565f5b92ffSmrg 58575f5b92ffSmrg if test "$linkmode" = lib; then 58585f5b92ffSmrg if test -n "$dependency_libs" && 58595f5b92ffSmrg { test "$hardcode_into_libs" != yes || 58605f5b92ffSmrg test "$build_old_libs" = yes || 58615f5b92ffSmrg test "$link_static" = yes; }; then 58625f5b92ffSmrg # Extract -R from dependency_libs 58635f5b92ffSmrg temp_deplibs= 58645f5b92ffSmrg for libdir in $dependency_libs; do 58655f5b92ffSmrg case $libdir in 58665f5b92ffSmrg -R*) func_stripname '-R' '' "$libdir" 58675f5b92ffSmrg temp_xrpath=$func_stripname_result 58685f5b92ffSmrg case " $xrpath " in 58695f5b92ffSmrg *" $temp_xrpath "*) ;; 58705f5b92ffSmrg *) xrpath="$xrpath $temp_xrpath";; 58715f5b92ffSmrg esac;; 58725f5b92ffSmrg *) temp_deplibs="$temp_deplibs $libdir";; 58735f5b92ffSmrg esac 58745f5b92ffSmrg done 58755f5b92ffSmrg dependency_libs="$temp_deplibs" 58765f5b92ffSmrg fi 58775f5b92ffSmrg 58785f5b92ffSmrg newlib_search_path="$newlib_search_path $absdir" 58795f5b92ffSmrg # Link against this library 58805f5b92ffSmrg test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" 58815f5b92ffSmrg # ... and its dependency_libs 58825f5b92ffSmrg tmp_libs= 58835f5b92ffSmrg for deplib in $dependency_libs; do 58845f5b92ffSmrg newdependency_libs="$deplib $newdependency_libs" 58855f5b92ffSmrg if $opt_duplicate_deps ; then 58865f5b92ffSmrg case "$tmp_libs " in 58875f5b92ffSmrg *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 58885f5b92ffSmrg esac 58895f5b92ffSmrg fi 58905f5b92ffSmrg tmp_libs="$tmp_libs $deplib" 58915f5b92ffSmrg done 58925f5b92ffSmrg 58935f5b92ffSmrg if test "$link_all_deplibs" != no; then 58945f5b92ffSmrg # Add the search paths of all dependency libraries 58955f5b92ffSmrg for deplib in $dependency_libs; do 58965f5b92ffSmrg case $deplib in 58975f5b92ffSmrg -L*) path="$deplib" ;; 58985f5b92ffSmrg *.la) 58995f5b92ffSmrg func_dirname "$deplib" "" "." 59005f5b92ffSmrg dir="$func_dirname_result" 59015f5b92ffSmrg # We need an absolute path. 59025f5b92ffSmrg case $dir in 59035f5b92ffSmrg [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; 59045f5b92ffSmrg *) 59055f5b92ffSmrg absdir=`cd "$dir" && pwd` 59065f5b92ffSmrg if test -z "$absdir"; then 59075f5b92ffSmrg func_warning "cannot determine absolute directory name of \`$dir'" 59085f5b92ffSmrg absdir="$dir" 59095f5b92ffSmrg fi 59105f5b92ffSmrg ;; 59115f5b92ffSmrg esac 59125f5b92ffSmrg if $GREP "^installed=no" $deplib > /dev/null; then 59135f5b92ffSmrg case $host in 59145f5b92ffSmrg *-*-darwin*) 59155f5b92ffSmrg depdepl= 59165f5b92ffSmrg eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` 59175f5b92ffSmrg if test -n "$deplibrary_names" ; then 59185f5b92ffSmrg for tmp in $deplibrary_names ; do 59195f5b92ffSmrg depdepl=$tmp 59205f5b92ffSmrg done 59215f5b92ffSmrg if test -f "$absdir/$objdir/$depdepl" ; then 59225f5b92ffSmrg depdepl="$absdir/$objdir/$depdepl" 59235f5b92ffSmrg darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` 59245f5b92ffSmrg if test -z "$darwin_install_name"; then 59255f5b92ffSmrg darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` 59265f5b92ffSmrg fi 59275f5b92ffSmrg compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" 59285f5b92ffSmrg linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}" 59295f5b92ffSmrg path= 59305f5b92ffSmrg fi 59315f5b92ffSmrg fi 59325f5b92ffSmrg ;; 59335f5b92ffSmrg *) 59345f5b92ffSmrg path="-L$absdir/$objdir" 59355f5b92ffSmrg ;; 59365f5b92ffSmrg esac 59375f5b92ffSmrg else 59385f5b92ffSmrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 59395f5b92ffSmrg test -z "$libdir" && \ 59405f5b92ffSmrg func_fatal_error "\`$deplib' is not a valid libtool archive" 59415f5b92ffSmrg test "$absdir" != "$libdir" && \ 59425f5b92ffSmrg func_warning "\`$deplib' seems to be moved" 59435f5b92ffSmrg 59445f5b92ffSmrg path="-L$absdir" 59455f5b92ffSmrg fi 59465f5b92ffSmrg ;; 59475f5b92ffSmrg esac 59485f5b92ffSmrg case " $deplibs " in 59495f5b92ffSmrg *" $path "*) ;; 59505f5b92ffSmrg *) deplibs="$path $deplibs" ;; 59515f5b92ffSmrg esac 59525f5b92ffSmrg done 59535f5b92ffSmrg fi # link_all_deplibs != no 59545f5b92ffSmrg fi # linkmode = lib 59555f5b92ffSmrg done # for deplib in $libs 59565f5b92ffSmrg if test "$pass" = link; then 59575f5b92ffSmrg if test "$linkmode" = "prog"; then 59585f5b92ffSmrg compile_deplibs="$new_inherited_linker_flags $compile_deplibs" 59595f5b92ffSmrg finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" 59605f5b92ffSmrg else 59615f5b92ffSmrg compiler_flags="$compiler_flags "`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` 59625f5b92ffSmrg fi 59635f5b92ffSmrg fi 59645f5b92ffSmrg dependency_libs="$newdependency_libs" 59655f5b92ffSmrg if test "$pass" = dlpreopen; then 59665f5b92ffSmrg # Link the dlpreopened libraries before other libraries 59675f5b92ffSmrg for deplib in $save_deplibs; do 59685f5b92ffSmrg deplibs="$deplib $deplibs" 59695f5b92ffSmrg done 59705f5b92ffSmrg fi 59715f5b92ffSmrg if test "$pass" != dlopen; then 59725f5b92ffSmrg if test "$pass" != conv; then 59735f5b92ffSmrg # Make sure lib_search_path contains only unique directories. 59745f5b92ffSmrg lib_search_path= 59755f5b92ffSmrg for dir in $newlib_search_path; do 59765f5b92ffSmrg case "$lib_search_path " in 59775f5b92ffSmrg *" $dir "*) ;; 59785f5b92ffSmrg *) lib_search_path="$lib_search_path $dir" ;; 59795f5b92ffSmrg esac 59805f5b92ffSmrg done 59815f5b92ffSmrg newlib_search_path= 59825f5b92ffSmrg fi 59835f5b92ffSmrg 59845f5b92ffSmrg if test "$linkmode,$pass" != "prog,link"; then 59855f5b92ffSmrg vars="deplibs" 59865f5b92ffSmrg else 59875f5b92ffSmrg vars="compile_deplibs finalize_deplibs" 59885f5b92ffSmrg fi 59895f5b92ffSmrg for var in $vars dependency_libs; do 59905f5b92ffSmrg # Add libraries to $var in reverse order 59915f5b92ffSmrg eval tmp_libs=\"\$$var\" 59925f5b92ffSmrg new_libs= 59935f5b92ffSmrg for deplib in $tmp_libs; do 59945f5b92ffSmrg # FIXME: Pedantically, this is the right thing to do, so 59955f5b92ffSmrg # that some nasty dependency loop isn't accidentally 59965f5b92ffSmrg # broken: 59975f5b92ffSmrg #new_libs="$deplib $new_libs" 59985f5b92ffSmrg # Pragmatically, this seems to cause very few problems in 59995f5b92ffSmrg # practice: 60005f5b92ffSmrg case $deplib in 60015f5b92ffSmrg -L*) new_libs="$deplib $new_libs" ;; 60025f5b92ffSmrg -R*) ;; 60035f5b92ffSmrg *) 60045f5b92ffSmrg # And here is the reason: when a library appears more 60055f5b92ffSmrg # than once as an explicit dependence of a library, or 60065f5b92ffSmrg # is implicitly linked in more than once by the 60075f5b92ffSmrg # compiler, it is considered special, and multiple 60085f5b92ffSmrg # occurrences thereof are not removed. Compare this 60095f5b92ffSmrg # with having the same library being listed as a 60105f5b92ffSmrg # dependency of multiple other libraries: in this case, 60115f5b92ffSmrg # we know (pedantically, we assume) the library does not 60125f5b92ffSmrg # need to be listed more than once, so we keep only the 60135f5b92ffSmrg # last copy. This is not always right, but it is rare 60145f5b92ffSmrg # enough that we require users that really mean to play 60155f5b92ffSmrg # such unportable linking tricks to link the library 60165f5b92ffSmrg # using -Wl,-lname, so that libtool does not consider it 60175f5b92ffSmrg # for duplicate removal. 60185f5b92ffSmrg case " $specialdeplibs " in 60195f5b92ffSmrg *" $deplib "*) new_libs="$deplib $new_libs" ;; 60205f5b92ffSmrg *) 60215f5b92ffSmrg case " $new_libs " in 60225f5b92ffSmrg *" $deplib "*) ;; 60235f5b92ffSmrg *) new_libs="$deplib $new_libs" ;; 60245f5b92ffSmrg esac 60255f5b92ffSmrg ;; 60265f5b92ffSmrg esac 60275f5b92ffSmrg ;; 60285f5b92ffSmrg esac 60295f5b92ffSmrg done 60305f5b92ffSmrg tmp_libs= 60315f5b92ffSmrg for deplib in $new_libs; do 60325f5b92ffSmrg case $deplib in 60335f5b92ffSmrg -L*) 60345f5b92ffSmrg case " $tmp_libs " in 60355f5b92ffSmrg *" $deplib "*) ;; 60365f5b92ffSmrg *) tmp_libs="$tmp_libs $deplib" ;; 60375f5b92ffSmrg esac 60385f5b92ffSmrg ;; 60395f5b92ffSmrg *) tmp_libs="$tmp_libs $deplib" ;; 60405f5b92ffSmrg esac 60415f5b92ffSmrg done 60425f5b92ffSmrg eval $var=\"$tmp_libs\" 60435f5b92ffSmrg done # for var 60445f5b92ffSmrg fi 60455f5b92ffSmrg # Last step: remove runtime libs from dependency_libs 60465f5b92ffSmrg # (they stay in deplibs) 60475f5b92ffSmrg tmp_libs= 60485f5b92ffSmrg for i in $dependency_libs ; do 60495f5b92ffSmrg case " $predeps $postdeps $compiler_lib_search_path " in 60505f5b92ffSmrg *" $i "*) 60515f5b92ffSmrg i="" 60525f5b92ffSmrg ;; 60535f5b92ffSmrg esac 60545f5b92ffSmrg if test -n "$i" ; then 60555f5b92ffSmrg tmp_libs="$tmp_libs $i" 60565f5b92ffSmrg fi 60575f5b92ffSmrg done 60585f5b92ffSmrg dependency_libs=$tmp_libs 60595f5b92ffSmrg done # for pass 60605f5b92ffSmrg if test "$linkmode" = prog; then 60615f5b92ffSmrg dlfiles="$newdlfiles" 60625f5b92ffSmrg fi 60635f5b92ffSmrg if test "$linkmode" = prog || test "$linkmode" = lib; then 60645f5b92ffSmrg dlprefiles="$newdlprefiles" 60655f5b92ffSmrg fi 60665f5b92ffSmrg 60675f5b92ffSmrg case $linkmode in 60685f5b92ffSmrg oldlib) 60695f5b92ffSmrg if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 60705f5b92ffSmrg func_warning "\`-dlopen' is ignored for archives" 60715f5b92ffSmrg fi 60725f5b92ffSmrg 60735f5b92ffSmrg case " $deplibs" in 60745f5b92ffSmrg *\ -l* | *\ -L*) 60755f5b92ffSmrg func_warning "\`-l' and \`-L' are ignored for archives" ;; 60765f5b92ffSmrg esac 60775f5b92ffSmrg 60785f5b92ffSmrg test -n "$rpath" && \ 60795f5b92ffSmrg func_warning "\`-rpath' is ignored for archives" 60805f5b92ffSmrg 60815f5b92ffSmrg test -n "$xrpath" && \ 60825f5b92ffSmrg func_warning "\`-R' is ignored for archives" 60835f5b92ffSmrg 60845f5b92ffSmrg test -n "$vinfo" && \ 60855f5b92ffSmrg func_warning "\`-version-info/-version-number' is ignored for archives" 60865f5b92ffSmrg 60875f5b92ffSmrg test -n "$release" && \ 60885f5b92ffSmrg func_warning "\`-release' is ignored for archives" 60895f5b92ffSmrg 60905f5b92ffSmrg test -n "$export_symbols$export_symbols_regex" && \ 60915f5b92ffSmrg func_warning "\`-export-symbols' is ignored for archives" 60925f5b92ffSmrg 60935f5b92ffSmrg # Now set the variables for building old libraries. 60945f5b92ffSmrg build_libtool_libs=no 60955f5b92ffSmrg oldlibs="$output" 60965f5b92ffSmrg objs="$objs$old_deplibs" 60975f5b92ffSmrg ;; 60985f5b92ffSmrg 60995f5b92ffSmrg lib) 61005f5b92ffSmrg # Make sure we only generate libraries of the form `libNAME.la'. 61015f5b92ffSmrg case $outputname in 61025f5b92ffSmrg lib*) 61035f5b92ffSmrg func_stripname 'lib' '.la' "$outputname" 61045f5b92ffSmrg name=$func_stripname_result 61055f5b92ffSmrg eval shared_ext=\"$shrext_cmds\" 61065f5b92ffSmrg eval libname=\"$libname_spec\" 61075f5b92ffSmrg ;; 61085f5b92ffSmrg *) 61095f5b92ffSmrg test "$module" = no && \ 61105f5b92ffSmrg func_fatal_help "libtool library \`$output' must begin with \`lib'" 61115f5b92ffSmrg 61125f5b92ffSmrg if test "$need_lib_prefix" != no; then 61135f5b92ffSmrg # Add the "lib" prefix for modules if required 61145f5b92ffSmrg func_stripname '' '.la' "$outputname" 61155f5b92ffSmrg name=$func_stripname_result 61165f5b92ffSmrg eval shared_ext=\"$shrext_cmds\" 61175f5b92ffSmrg eval libname=\"$libname_spec\" 61185f5b92ffSmrg else 61195f5b92ffSmrg func_stripname '' '.la' "$outputname" 61205f5b92ffSmrg libname=$func_stripname_result 61215f5b92ffSmrg fi 61225f5b92ffSmrg ;; 61235f5b92ffSmrg esac 61245f5b92ffSmrg 61255f5b92ffSmrg if test -n "$objs"; then 61265f5b92ffSmrg if test "$deplibs_check_method" != pass_all; then 61275f5b92ffSmrg func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 61285f5b92ffSmrg else 61295f5b92ffSmrg $ECHO 61305f5b92ffSmrg $ECHO "*** Warning: Linking the shared library $output against the non-libtool" 61315f5b92ffSmrg $ECHO "*** objects $objs is not portable!" 61325f5b92ffSmrg libobjs="$libobjs $objs" 61335f5b92ffSmrg fi 61345f5b92ffSmrg fi 61355f5b92ffSmrg 61365f5b92ffSmrg test "$dlself" != no && \ 61375f5b92ffSmrg func_warning "\`-dlopen self' is ignored for libtool libraries" 61385f5b92ffSmrg 61395f5b92ffSmrg set dummy $rpath 61405f5b92ffSmrg shift 61415f5b92ffSmrg test "$#" -gt 1 && \ 61425f5b92ffSmrg func_warning "ignoring multiple \`-rpath's for a libtool library" 61435f5b92ffSmrg 61445f5b92ffSmrg install_libdir="$1" 61455f5b92ffSmrg 61465f5b92ffSmrg oldlibs= 61475f5b92ffSmrg if test -z "$rpath"; then 61485f5b92ffSmrg if test "$build_libtool_libs" = yes; then 61495f5b92ffSmrg # Building a libtool convenience library. 61505f5b92ffSmrg # Some compilers have problems with a `.al' extension so 61515f5b92ffSmrg # convenience libraries should have the same extension an 61525f5b92ffSmrg # archive normally would. 61535f5b92ffSmrg oldlibs="$output_objdir/$libname.$libext $oldlibs" 61545f5b92ffSmrg build_libtool_libs=convenience 61555f5b92ffSmrg build_old_libs=yes 61565f5b92ffSmrg fi 61575f5b92ffSmrg 61585f5b92ffSmrg test -n "$vinfo" && \ 61595f5b92ffSmrg func_warning "\`-version-info/-version-number' is ignored for convenience libraries" 61605f5b92ffSmrg 61615f5b92ffSmrg test -n "$release" && \ 61625f5b92ffSmrg func_warning "\`-release' is ignored for convenience libraries" 61635f5b92ffSmrg else 61645f5b92ffSmrg 61655f5b92ffSmrg # Parse the version information argument. 61665f5b92ffSmrg save_ifs="$IFS"; IFS=':' 61675f5b92ffSmrg set dummy $vinfo 0 0 0 61685f5b92ffSmrg shift 61695f5b92ffSmrg IFS="$save_ifs" 61705f5b92ffSmrg 61715f5b92ffSmrg test -n "$7" && \ 61725f5b92ffSmrg func_fatal_help "too many parameters to \`-version-info'" 61735f5b92ffSmrg 61745f5b92ffSmrg # convert absolute version numbers to libtool ages 61755f5b92ffSmrg # this retains compatibility with .la files and attempts 61765f5b92ffSmrg # to make the code below a bit more comprehensible 61775f5b92ffSmrg 61785f5b92ffSmrg case $vinfo_number in 61795f5b92ffSmrg yes) 61805f5b92ffSmrg number_major="$1" 61815f5b92ffSmrg number_minor="$2" 61825f5b92ffSmrg number_revision="$3" 61835f5b92ffSmrg # 61845f5b92ffSmrg # There are really only two kinds -- those that 61855f5b92ffSmrg # use the current revision as the major version 61865f5b92ffSmrg # and those that subtract age and use age as 61875f5b92ffSmrg # a minor version. But, then there is irix 61885f5b92ffSmrg # which has an extra 1 added just for fun 61895f5b92ffSmrg # 61905f5b92ffSmrg case $version_type in 61915f5b92ffSmrg darwin|linux|osf|windows|none) 61925f5b92ffSmrg func_arith $number_major + $number_minor 61935f5b92ffSmrg current=$func_arith_result 61945f5b92ffSmrg age="$number_minor" 61955f5b92ffSmrg revision="$number_revision" 61965f5b92ffSmrg ;; 61975f5b92ffSmrg freebsd-aout|freebsd-elf|sunos) 61985f5b92ffSmrg current="$number_major" 61995f5b92ffSmrg revision="$number_minor" 62005f5b92ffSmrg age="0" 62015f5b92ffSmrg ;; 62025f5b92ffSmrg irix|nonstopux) 62035f5b92ffSmrg func_arith $number_major + $number_minor 62045f5b92ffSmrg current=$func_arith_result 62055f5b92ffSmrg age="$number_minor" 62065f5b92ffSmrg revision="$number_minor" 62075f5b92ffSmrg lt_irix_increment=no 62085f5b92ffSmrg ;; 62095f5b92ffSmrg esac 62105f5b92ffSmrg ;; 62115f5b92ffSmrg no) 62125f5b92ffSmrg current="$1" 62135f5b92ffSmrg revision="$2" 62145f5b92ffSmrg age="$3" 62155f5b92ffSmrg ;; 62165f5b92ffSmrg esac 62175f5b92ffSmrg 62185f5b92ffSmrg # Check that each of the things are valid numbers. 62195f5b92ffSmrg case $current in 62205f5b92ffSmrg 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]) ;; 62215f5b92ffSmrg *) 62225f5b92ffSmrg func_error "CURRENT \`$current' must be a nonnegative integer" 62235f5b92ffSmrg func_fatal_error "\`$vinfo' is not valid version information" 62245f5b92ffSmrg ;; 62255f5b92ffSmrg esac 62265f5b92ffSmrg 62275f5b92ffSmrg case $revision in 62285f5b92ffSmrg 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]) ;; 62295f5b92ffSmrg *) 62305f5b92ffSmrg func_error "REVISION \`$revision' must be a nonnegative integer" 62315f5b92ffSmrg func_fatal_error "\`$vinfo' is not valid version information" 62325f5b92ffSmrg ;; 62335f5b92ffSmrg esac 62345f5b92ffSmrg 62355f5b92ffSmrg case $age in 62365f5b92ffSmrg 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]) ;; 62375f5b92ffSmrg *) 62385f5b92ffSmrg func_error "AGE \`$age' must be a nonnegative integer" 62395f5b92ffSmrg func_fatal_error "\`$vinfo' is not valid version information" 62405f5b92ffSmrg ;; 62415f5b92ffSmrg esac 62425f5b92ffSmrg 62435f5b92ffSmrg if test "$age" -gt "$current"; then 62445f5b92ffSmrg func_error "AGE \`$age' is greater than the current interface number \`$current'" 62455f5b92ffSmrg func_fatal_error "\`$vinfo' is not valid version information" 62465f5b92ffSmrg fi 62475f5b92ffSmrg 62485f5b92ffSmrg # Calculate the version variables. 62495f5b92ffSmrg major= 62505f5b92ffSmrg versuffix= 62515f5b92ffSmrg verstring= 62525f5b92ffSmrg case $version_type in 62535f5b92ffSmrg none) ;; 62545f5b92ffSmrg 62555f5b92ffSmrg darwin) 62565f5b92ffSmrg # Like Linux, but with the current version available in 62575f5b92ffSmrg # verstring for coding it into the library header 62585f5b92ffSmrg func_arith $current - $age 62595f5b92ffSmrg major=.$func_arith_result 62605f5b92ffSmrg versuffix="$major.$age.$revision" 62615f5b92ffSmrg # Darwin ld doesn't like 0 for these options... 62625f5b92ffSmrg func_arith $current + 1 62635f5b92ffSmrg minor_current=$func_arith_result 62645f5b92ffSmrg xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" 62655f5b92ffSmrg verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" 62665f5b92ffSmrg ;; 62675f5b92ffSmrg 62685f5b92ffSmrg freebsd-aout) 62695f5b92ffSmrg major=".$current" 62705f5b92ffSmrg versuffix=".$current.$revision"; 62715f5b92ffSmrg ;; 62725f5b92ffSmrg 62735f5b92ffSmrg freebsd-elf) 62745f5b92ffSmrg major=".$current" 62755f5b92ffSmrg versuffix=".$current" 62765f5b92ffSmrg ;; 62775f5b92ffSmrg 62785f5b92ffSmrg irix | nonstopux) 62795f5b92ffSmrg if test "X$lt_irix_increment" = "Xno"; then 62805f5b92ffSmrg func_arith $current - $age 62815f5b92ffSmrg else 62825f5b92ffSmrg func_arith $current - $age + 1 62835f5b92ffSmrg fi 62845f5b92ffSmrg major=$func_arith_result 62855f5b92ffSmrg 62865f5b92ffSmrg case $version_type in 62875f5b92ffSmrg nonstopux) verstring_prefix=nonstopux ;; 62885f5b92ffSmrg *) verstring_prefix=sgi ;; 62895f5b92ffSmrg esac 62905f5b92ffSmrg verstring="$verstring_prefix$major.$revision" 62915f5b92ffSmrg 62925f5b92ffSmrg # Add in all the interfaces that we are compatible with. 62935f5b92ffSmrg loop=$revision 62945f5b92ffSmrg while test "$loop" -ne 0; do 62955f5b92ffSmrg func_arith $revision - $loop 62965f5b92ffSmrg iface=$func_arith_result 62975f5b92ffSmrg func_arith $loop - 1 62985f5b92ffSmrg loop=$func_arith_result 62995f5b92ffSmrg verstring="$verstring_prefix$major.$iface:$verstring" 63005f5b92ffSmrg done 63015f5b92ffSmrg 63025f5b92ffSmrg # Before this point, $major must not contain `.'. 63035f5b92ffSmrg major=.$major 63045f5b92ffSmrg versuffix="$major.$revision" 63055f5b92ffSmrg ;; 63065f5b92ffSmrg 63075f5b92ffSmrg linux) 63085f5b92ffSmrg func_arith $current - $age 63095f5b92ffSmrg major=.$func_arith_result 63105f5b92ffSmrg versuffix="$major.$age.$revision" 63115f5b92ffSmrg ;; 63125f5b92ffSmrg 63135f5b92ffSmrg osf) 63145f5b92ffSmrg func_arith $current - $age 63155f5b92ffSmrg major=.$func_arith_result 63165f5b92ffSmrg versuffix=".$current.$age.$revision" 63175f5b92ffSmrg verstring="$current.$age.$revision" 63185f5b92ffSmrg 63195f5b92ffSmrg # Add in all the interfaces that we are compatible with. 63205f5b92ffSmrg loop=$age 63215f5b92ffSmrg while test "$loop" -ne 0; do 63225f5b92ffSmrg func_arith $current - $loop 63235f5b92ffSmrg iface=$func_arith_result 63245f5b92ffSmrg func_arith $loop - 1 63255f5b92ffSmrg loop=$func_arith_result 63265f5b92ffSmrg verstring="$verstring:${iface}.0" 63275f5b92ffSmrg done 63285f5b92ffSmrg 63295f5b92ffSmrg # Make executables depend on our current version. 63305f5b92ffSmrg verstring="$verstring:${current}.0" 63315f5b92ffSmrg ;; 63325f5b92ffSmrg 63335f5b92ffSmrg qnx) 63345f5b92ffSmrg major=".$current" 63355f5b92ffSmrg versuffix=".$current" 63365f5b92ffSmrg ;; 63375f5b92ffSmrg 63385f5b92ffSmrg sunos) 63395f5b92ffSmrg major=".$current" 63405f5b92ffSmrg versuffix=".$current.$revision" 63415f5b92ffSmrg ;; 63425f5b92ffSmrg 63435f5b92ffSmrg windows) 63445f5b92ffSmrg # Use '-' rather than '.', since we only want one 63455f5b92ffSmrg # extension on DOS 8.3 filesystems. 63465f5b92ffSmrg func_arith $current - $age 63475f5b92ffSmrg major=$func_arith_result 63485f5b92ffSmrg versuffix="-$major" 63495f5b92ffSmrg ;; 63505f5b92ffSmrg 63515f5b92ffSmrg *) 63525f5b92ffSmrg func_fatal_configuration "unknown library version type \`$version_type'" 63535f5b92ffSmrg ;; 63545f5b92ffSmrg esac 63555f5b92ffSmrg 63565f5b92ffSmrg # Clear the version info if we defaulted, and they specified a release. 63575f5b92ffSmrg if test -z "$vinfo" && test -n "$release"; then 63585f5b92ffSmrg major= 63595f5b92ffSmrg case $version_type in 63605f5b92ffSmrg darwin) 63615f5b92ffSmrg # we can't check for "0.0" in archive_cmds due to quoting 63625f5b92ffSmrg # problems, so we reset it completely 63635f5b92ffSmrg verstring= 63645f5b92ffSmrg ;; 63655f5b92ffSmrg *) 63665f5b92ffSmrg verstring="0.0" 63675f5b92ffSmrg ;; 63685f5b92ffSmrg esac 63695f5b92ffSmrg if test "$need_version" = no; then 63705f5b92ffSmrg versuffix= 63715f5b92ffSmrg else 63725f5b92ffSmrg versuffix=".0.0" 63735f5b92ffSmrg fi 63745f5b92ffSmrg fi 63755f5b92ffSmrg 63765f5b92ffSmrg # Remove version info from name if versioning should be avoided 63775f5b92ffSmrg if test "$avoid_version" = yes && test "$need_version" = no; then 63785f5b92ffSmrg major= 63795f5b92ffSmrg versuffix= 63805f5b92ffSmrg verstring="" 63815f5b92ffSmrg fi 63825f5b92ffSmrg 63835f5b92ffSmrg # Check to see if the archive will have undefined symbols. 63845f5b92ffSmrg if test "$allow_undefined" = yes; then 63855f5b92ffSmrg if test "$allow_undefined_flag" = unsupported; then 63865f5b92ffSmrg func_warning "undefined symbols not allowed in $host shared libraries" 63875f5b92ffSmrg build_libtool_libs=no 63885f5b92ffSmrg build_old_libs=yes 63895f5b92ffSmrg fi 63905f5b92ffSmrg else 63915f5b92ffSmrg # Don't allow undefined symbols. 63925f5b92ffSmrg allow_undefined_flag="$no_undefined_flag" 63935f5b92ffSmrg fi 63945f5b92ffSmrg 63955f5b92ffSmrg fi 63965f5b92ffSmrg 63975f5b92ffSmrg func_generate_dlsyms "$libname" "$libname" "yes" 63985f5b92ffSmrg libobjs="$libobjs $symfileobj" 63995f5b92ffSmrg test "X$libobjs" = "X " && libobjs= 64005f5b92ffSmrg 64015f5b92ffSmrg if test "$mode" != relink; then 64025f5b92ffSmrg # Remove our outputs, but don't remove object files since they 64035f5b92ffSmrg # may have been created when compiling PIC objects. 64045f5b92ffSmrg removelist= 64055f5b92ffSmrg tempremovelist=`$ECHO "$output_objdir/*"` 64065f5b92ffSmrg for p in $tempremovelist; do 64075f5b92ffSmrg case $p in 64085f5b92ffSmrg *.$objext | *.gcno) 64095f5b92ffSmrg ;; 64105f5b92ffSmrg $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) 64115f5b92ffSmrg if test "X$precious_files_regex" != "X"; then 64125f5b92ffSmrg if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 64135f5b92ffSmrg then 64145f5b92ffSmrg continue 64155f5b92ffSmrg fi 64165f5b92ffSmrg fi 64175f5b92ffSmrg removelist="$removelist $p" 64185f5b92ffSmrg ;; 64195f5b92ffSmrg *) ;; 64205f5b92ffSmrg esac 64215f5b92ffSmrg done 64225f5b92ffSmrg test -n "$removelist" && \ 64235f5b92ffSmrg func_show_eval "${RM}r \$removelist" 64245f5b92ffSmrg fi 64255f5b92ffSmrg 64265f5b92ffSmrg # Now set the variables for building old libraries. 64275f5b92ffSmrg if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then 64285f5b92ffSmrg oldlibs="$oldlibs $output_objdir/$libname.$libext" 64295f5b92ffSmrg 64305f5b92ffSmrg # Transform .lo files to .o files. 64315f5b92ffSmrg oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` 64325f5b92ffSmrg fi 64335f5b92ffSmrg 64345f5b92ffSmrg # Eliminate all temporary directories. 64355f5b92ffSmrg #for path in $notinst_path; do 64365f5b92ffSmrg # lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"` 64375f5b92ffSmrg # deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"` 64385f5b92ffSmrg # dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "s% -L$path % %g"` 64395f5b92ffSmrg #done 64405f5b92ffSmrg 64415f5b92ffSmrg if test -n "$xrpath"; then 64425f5b92ffSmrg # If the user specified any rpath flags, then add them. 64435f5b92ffSmrg temp_xrpath= 64445f5b92ffSmrg for libdir in $xrpath; do 64455f5b92ffSmrg temp_xrpath="$temp_xrpath -R$libdir" 64465f5b92ffSmrg case "$finalize_rpath " in 64475f5b92ffSmrg *" $libdir "*) ;; 64485f5b92ffSmrg *) finalize_rpath="$finalize_rpath $libdir" ;; 64495f5b92ffSmrg esac 64505f5b92ffSmrg done 64515f5b92ffSmrg if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then 64525f5b92ffSmrg dependency_libs="$temp_xrpath $dependency_libs" 64535f5b92ffSmrg fi 64545f5b92ffSmrg fi 64555f5b92ffSmrg 64565f5b92ffSmrg # Make sure dlfiles contains only unique files that won't be dlpreopened 64575f5b92ffSmrg old_dlfiles="$dlfiles" 64585f5b92ffSmrg dlfiles= 64595f5b92ffSmrg for lib in $old_dlfiles; do 64605f5b92ffSmrg case " $dlprefiles $dlfiles " in 64615f5b92ffSmrg *" $lib "*) ;; 64625f5b92ffSmrg *) dlfiles="$dlfiles $lib" ;; 64635f5b92ffSmrg esac 64645f5b92ffSmrg done 64655f5b92ffSmrg 64665f5b92ffSmrg # Make sure dlprefiles contains only unique files 64675f5b92ffSmrg old_dlprefiles="$dlprefiles" 64685f5b92ffSmrg dlprefiles= 64695f5b92ffSmrg for lib in $old_dlprefiles; do 64705f5b92ffSmrg case "$dlprefiles " in 64715f5b92ffSmrg *" $lib "*) ;; 64725f5b92ffSmrg *) dlprefiles="$dlprefiles $lib" ;; 64735f5b92ffSmrg esac 64745f5b92ffSmrg done 64755f5b92ffSmrg 64765f5b92ffSmrg if test "$build_libtool_libs" = yes; then 64775f5b92ffSmrg if test -n "$rpath"; then 64785f5b92ffSmrg case $host in 64795f5b92ffSmrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc*) 64805f5b92ffSmrg # these systems don't actually have a c library (as such)! 64815f5b92ffSmrg ;; 64825f5b92ffSmrg *-*-rhapsody* | *-*-darwin1.[012]) 64835f5b92ffSmrg # Rhapsody C library is in the System framework 64845f5b92ffSmrg deplibs="$deplibs System.ltframework" 64855f5b92ffSmrg ;; 64865f5b92ffSmrg *-*-netbsd*) 64875f5b92ffSmrg # Don't link with libc until the a.out ld.so is fixed. 64885f5b92ffSmrg ;; 64895f5b92ffSmrg *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 64905f5b92ffSmrg # Do not include libc due to us having libc/libc_r. 64915f5b92ffSmrg ;; 64925f5b92ffSmrg *-*-sco3.2v5* | *-*-sco5v6*) 64935f5b92ffSmrg # Causes problems with __ctype 64945f5b92ffSmrg ;; 64955f5b92ffSmrg *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 64965f5b92ffSmrg # Compiler inserts libc in the correct place for threads to work 64975f5b92ffSmrg ;; 64985f5b92ffSmrg *) 64995f5b92ffSmrg # Add libc to deplibs on all other systems if necessary. 65005f5b92ffSmrg if test "$build_libtool_need_lc" = "yes"; then 65015f5b92ffSmrg deplibs="$deplibs -lc" 65025f5b92ffSmrg fi 65035f5b92ffSmrg ;; 65045f5b92ffSmrg esac 65055f5b92ffSmrg fi 65065f5b92ffSmrg 65075f5b92ffSmrg # Transform deplibs into only deplibs that can be linked in shared. 65085f5b92ffSmrg name_save=$name 65095f5b92ffSmrg libname_save=$libname 65105f5b92ffSmrg release_save=$release 65115f5b92ffSmrg versuffix_save=$versuffix 65125f5b92ffSmrg major_save=$major 65135f5b92ffSmrg # I'm not sure if I'm treating the release correctly. I think 65145f5b92ffSmrg # release should show up in the -l (ie -lgmp5) so we don't want to 65155f5b92ffSmrg # add it in twice. Is that correct? 65165f5b92ffSmrg release="" 65175f5b92ffSmrg versuffix="" 65185f5b92ffSmrg major="" 65195f5b92ffSmrg newdeplibs= 65205f5b92ffSmrg droppeddeps=no 65215f5b92ffSmrg case $deplibs_check_method in 65225f5b92ffSmrg pass_all) 65235f5b92ffSmrg # Don't check for shared/static. Everything works. 65245f5b92ffSmrg # This might be a little naive. We might want to check 65255f5b92ffSmrg # whether the library exists or not. But this is on 65265f5b92ffSmrg # osf3 & osf4 and I'm not really sure... Just 65275f5b92ffSmrg # implementing what was already the behavior. 65285f5b92ffSmrg newdeplibs=$deplibs 65295f5b92ffSmrg ;; 65305f5b92ffSmrg test_compile) 65315f5b92ffSmrg # This code stresses the "libraries are programs" paradigm to its 65325f5b92ffSmrg # limits. Maybe even breaks it. We compile a program, linking it 65335f5b92ffSmrg # against the deplibs as a proxy for the library. Then we can check 65345f5b92ffSmrg # whether they linked in statically or dynamically with ldd. 65355f5b92ffSmrg $opt_dry_run || $RM conftest.c 65365f5b92ffSmrg cat > conftest.c <<EOF 65375f5b92ffSmrg int main() { return 0; } 65385f5b92ffSmrgEOF 65395f5b92ffSmrg $opt_dry_run || $RM conftest 65405f5b92ffSmrg if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then 65415f5b92ffSmrg ldd_output=`ldd conftest` 65425f5b92ffSmrg for i in $deplibs; do 65435f5b92ffSmrg case $i in 65445f5b92ffSmrg -l*) 65455f5b92ffSmrg func_stripname -l '' "$i" 65465f5b92ffSmrg name=$func_stripname_result 65475f5b92ffSmrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 65485f5b92ffSmrg case " $predeps $postdeps " in 65495f5b92ffSmrg *" $i "*) 65505f5b92ffSmrg newdeplibs="$newdeplibs $i" 65515f5b92ffSmrg i="" 65525f5b92ffSmrg ;; 65535f5b92ffSmrg esac 65545f5b92ffSmrg fi 65555f5b92ffSmrg if test -n "$i" ; then 65565f5b92ffSmrg libname=`eval "\\$ECHO \"$libname_spec\""` 65575f5b92ffSmrg deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` 65585f5b92ffSmrg set dummy $deplib_matches; shift 65595f5b92ffSmrg deplib_match=$1 65605f5b92ffSmrg if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 65615f5b92ffSmrg newdeplibs="$newdeplibs $i" 65625f5b92ffSmrg else 65635f5b92ffSmrg droppeddeps=yes 65645f5b92ffSmrg $ECHO 65655f5b92ffSmrg $ECHO "*** Warning: dynamic linker does not accept needed library $i." 65665f5b92ffSmrg $ECHO "*** I have the capability to make that library automatically link in when" 65675f5b92ffSmrg $ECHO "*** you link to this library. But I can only do this if you have a" 65685f5b92ffSmrg $ECHO "*** shared version of the library, which I believe you do not have" 65695f5b92ffSmrg $ECHO "*** because a test_compile did reveal that the linker did not use it for" 65705f5b92ffSmrg $ECHO "*** its dynamic dependency list that programs get resolved with at runtime." 65715f5b92ffSmrg fi 65725f5b92ffSmrg fi 65735f5b92ffSmrg ;; 65745f5b92ffSmrg *) 65755f5b92ffSmrg newdeplibs="$newdeplibs $i" 65765f5b92ffSmrg ;; 65775f5b92ffSmrg esac 65785f5b92ffSmrg done 65795f5b92ffSmrg else 65805f5b92ffSmrg # Error occurred in the first compile. Let's try to salvage 65815f5b92ffSmrg # the situation: Compile a separate program for each library. 65825f5b92ffSmrg for i in $deplibs; do 65835f5b92ffSmrg case $i in 65845f5b92ffSmrg -l*) 65855f5b92ffSmrg func_stripname -l '' "$i" 65865f5b92ffSmrg name=$func_stripname_result 65875f5b92ffSmrg $opt_dry_run || $RM conftest 65885f5b92ffSmrg if $LTCC $LTCFLAGS -o conftest conftest.c $i; then 65895f5b92ffSmrg ldd_output=`ldd conftest` 65905f5b92ffSmrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 65915f5b92ffSmrg case " $predeps $postdeps " in 65925f5b92ffSmrg *" $i "*) 65935f5b92ffSmrg newdeplibs="$newdeplibs $i" 65945f5b92ffSmrg i="" 65955f5b92ffSmrg ;; 65965f5b92ffSmrg esac 65975f5b92ffSmrg fi 65985f5b92ffSmrg if test -n "$i" ; then 65995f5b92ffSmrg libname=`eval "\\$ECHO \"$libname_spec\""` 66005f5b92ffSmrg deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` 66015f5b92ffSmrg set dummy $deplib_matches; shift 66025f5b92ffSmrg deplib_match=$1 66035f5b92ffSmrg if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 66045f5b92ffSmrg newdeplibs="$newdeplibs $i" 66055f5b92ffSmrg else 66065f5b92ffSmrg droppeddeps=yes 66075f5b92ffSmrg $ECHO 66085f5b92ffSmrg $ECHO "*** Warning: dynamic linker does not accept needed library $i." 66095f5b92ffSmrg $ECHO "*** I have the capability to make that library automatically link in when" 66105f5b92ffSmrg $ECHO "*** you link to this library. But I can only do this if you have a" 66115f5b92ffSmrg $ECHO "*** shared version of the library, which you do not appear to have" 66125f5b92ffSmrg $ECHO "*** because a test_compile did reveal that the linker did not use this one" 66135f5b92ffSmrg $ECHO "*** as a dynamic dependency that programs can get resolved with at runtime." 66145f5b92ffSmrg fi 66155f5b92ffSmrg fi 66165f5b92ffSmrg else 66175f5b92ffSmrg droppeddeps=yes 66185f5b92ffSmrg $ECHO 66195f5b92ffSmrg $ECHO "*** Warning! Library $i is needed by this library but I was not able to" 66205f5b92ffSmrg $ECHO "*** make it link in! You will probably need to install it or some" 66215f5b92ffSmrg $ECHO "*** library that it depends on before this library will be fully" 66225f5b92ffSmrg $ECHO "*** functional. Installing it before continuing would be even better." 66235f5b92ffSmrg fi 66245f5b92ffSmrg ;; 66255f5b92ffSmrg *) 66265f5b92ffSmrg newdeplibs="$newdeplibs $i" 66275f5b92ffSmrg ;; 66285f5b92ffSmrg esac 66295f5b92ffSmrg done 66305f5b92ffSmrg fi 66315f5b92ffSmrg ;; 66325f5b92ffSmrg file_magic*) 66335f5b92ffSmrg set dummy $deplibs_check_method; shift 66345f5b92ffSmrg file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 66355f5b92ffSmrg for a_deplib in $deplibs; do 66365f5b92ffSmrg case $a_deplib in 66375f5b92ffSmrg -l*) 66385f5b92ffSmrg func_stripname -l '' "$a_deplib" 66395f5b92ffSmrg name=$func_stripname_result 66405f5b92ffSmrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 66415f5b92ffSmrg case " $predeps $postdeps " in 66425f5b92ffSmrg *" $a_deplib "*) 66435f5b92ffSmrg newdeplibs="$newdeplibs $a_deplib" 66445f5b92ffSmrg a_deplib="" 66455f5b92ffSmrg ;; 66465f5b92ffSmrg esac 66475f5b92ffSmrg fi 66485f5b92ffSmrg if test -n "$a_deplib" ; then 66495f5b92ffSmrg libname=`eval "\\$ECHO \"$libname_spec\""` 66505f5b92ffSmrg for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 66515f5b92ffSmrg potential_libs=`ls $i/$libname[.-]* 2>/dev/null` 66525f5b92ffSmrg for potent_lib in $potential_libs; do 66535f5b92ffSmrg # Follow soft links. 66545f5b92ffSmrg if ls -lLd "$potent_lib" 2>/dev/null | 66555f5b92ffSmrg $GREP " -> " >/dev/null; then 66565f5b92ffSmrg continue 66575f5b92ffSmrg fi 66585f5b92ffSmrg # The statement above tries to avoid entering an 66595f5b92ffSmrg # endless loop below, in case of cyclic links. 66605f5b92ffSmrg # We might still enter an endless loop, since a link 66615f5b92ffSmrg # loop can be closed while we follow links, 66625f5b92ffSmrg # but so what? 66635f5b92ffSmrg potlib="$potent_lib" 66645f5b92ffSmrg while test -h "$potlib" 2>/dev/null; do 66655f5b92ffSmrg potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` 66665f5b92ffSmrg case $potliblink in 66675f5b92ffSmrg [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; 66685f5b92ffSmrg *) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; 66695f5b92ffSmrg esac 66705f5b92ffSmrg done 66715f5b92ffSmrg if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | 66725f5b92ffSmrg $SED -e 10q | 66735f5b92ffSmrg $EGREP "$file_magic_regex" > /dev/null; then 66745f5b92ffSmrg newdeplibs="$newdeplibs $a_deplib" 66755f5b92ffSmrg a_deplib="" 66765f5b92ffSmrg break 2 66775f5b92ffSmrg fi 66785f5b92ffSmrg done 66795f5b92ffSmrg done 66805f5b92ffSmrg fi 66815f5b92ffSmrg if test -n "$a_deplib" ; then 66825f5b92ffSmrg droppeddeps=yes 66835f5b92ffSmrg $ECHO 66845f5b92ffSmrg $ECHO "*** Warning: linker path does not have real file for library $a_deplib." 66855f5b92ffSmrg $ECHO "*** I have the capability to make that library automatically link in when" 66865f5b92ffSmrg $ECHO "*** you link to this library. But I can only do this if you have a" 66875f5b92ffSmrg $ECHO "*** shared version of the library, which you do not appear to have" 66885f5b92ffSmrg $ECHO "*** because I did check the linker path looking for a file starting" 66895f5b92ffSmrg if test -z "$potlib" ; then 66905f5b92ffSmrg $ECHO "*** with $libname but no candidates were found. (...for file magic test)" 66915f5b92ffSmrg else 66925f5b92ffSmrg $ECHO "*** with $libname and none of the candidates passed a file format test" 66935f5b92ffSmrg $ECHO "*** using a file magic. Last file checked: $potlib" 66945f5b92ffSmrg fi 66955f5b92ffSmrg fi 66965f5b92ffSmrg ;; 66975f5b92ffSmrg *) 66985f5b92ffSmrg # Add a -L argument. 66995f5b92ffSmrg newdeplibs="$newdeplibs $a_deplib" 67005f5b92ffSmrg ;; 67015f5b92ffSmrg esac 67025f5b92ffSmrg done # Gone through all deplibs. 67035f5b92ffSmrg ;; 67045f5b92ffSmrg match_pattern*) 67055f5b92ffSmrg set dummy $deplibs_check_method; shift 67065f5b92ffSmrg match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 67075f5b92ffSmrg for a_deplib in $deplibs; do 67085f5b92ffSmrg case $a_deplib in 67095f5b92ffSmrg -l*) 67105f5b92ffSmrg func_stripname -l '' "$a_deplib" 67115f5b92ffSmrg name=$func_stripname_result 67125f5b92ffSmrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 67135f5b92ffSmrg case " $predeps $postdeps " in 67145f5b92ffSmrg *" $a_deplib "*) 67155f5b92ffSmrg newdeplibs="$newdeplibs $a_deplib" 67165f5b92ffSmrg a_deplib="" 67175f5b92ffSmrg ;; 67185f5b92ffSmrg esac 67195f5b92ffSmrg fi 67205f5b92ffSmrg if test -n "$a_deplib" ; then 67215f5b92ffSmrg libname=`eval "\\$ECHO \"$libname_spec\""` 67225f5b92ffSmrg for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 67235f5b92ffSmrg potential_libs=`ls $i/$libname[.-]* 2>/dev/null` 67245f5b92ffSmrg for potent_lib in $potential_libs; do 67255f5b92ffSmrg potlib="$potent_lib" # see symlink-check above in file_magic test 67265f5b92ffSmrg if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \ 67275f5b92ffSmrg $EGREP "$match_pattern_regex" > /dev/null; then 67285f5b92ffSmrg newdeplibs="$newdeplibs $a_deplib" 67295f5b92ffSmrg a_deplib="" 67305f5b92ffSmrg break 2 67315f5b92ffSmrg fi 67325f5b92ffSmrg done 67335f5b92ffSmrg done 67345f5b92ffSmrg fi 67355f5b92ffSmrg if test -n "$a_deplib" ; then 67365f5b92ffSmrg droppeddeps=yes 67375f5b92ffSmrg $ECHO 67385f5b92ffSmrg $ECHO "*** Warning: linker path does not have real file for library $a_deplib." 67395f5b92ffSmrg $ECHO "*** I have the capability to make that library automatically link in when" 67405f5b92ffSmrg $ECHO "*** you link to this library. But I can only do this if you have a" 67415f5b92ffSmrg $ECHO "*** shared version of the library, which you do not appear to have" 67425f5b92ffSmrg $ECHO "*** because I did check the linker path looking for a file starting" 67435f5b92ffSmrg if test -z "$potlib" ; then 67445f5b92ffSmrg $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" 67455f5b92ffSmrg else 67465f5b92ffSmrg $ECHO "*** with $libname and none of the candidates passed a file format test" 67475f5b92ffSmrg $ECHO "*** using a regex pattern. Last file checked: $potlib" 67485f5b92ffSmrg fi 67495f5b92ffSmrg fi 67505f5b92ffSmrg ;; 67515f5b92ffSmrg *) 67525f5b92ffSmrg # Add a -L argument. 67535f5b92ffSmrg newdeplibs="$newdeplibs $a_deplib" 67545f5b92ffSmrg ;; 67555f5b92ffSmrg esac 67565f5b92ffSmrg done # Gone through all deplibs. 67575f5b92ffSmrg ;; 67585f5b92ffSmrg none | unknown | *) 67595f5b92ffSmrg newdeplibs="" 67605f5b92ffSmrg tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \ 67615f5b92ffSmrg -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'` 67625f5b92ffSmrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 67635f5b92ffSmrg for i in $predeps $postdeps ; do 67645f5b92ffSmrg # can't use Xsed below, because $i might contain '/' 67655f5b92ffSmrg tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"` 67665f5b92ffSmrg done 67675f5b92ffSmrg fi 67685f5b92ffSmrg if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' | 67695f5b92ffSmrg $GREP . >/dev/null; then 67705f5b92ffSmrg $ECHO 67715f5b92ffSmrg if test "X$deplibs_check_method" = "Xnone"; then 67725f5b92ffSmrg $ECHO "*** Warning: inter-library dependencies are not supported in this platform." 67735f5b92ffSmrg else 67745f5b92ffSmrg $ECHO "*** Warning: inter-library dependencies are not known to be supported." 67755f5b92ffSmrg fi 67765f5b92ffSmrg $ECHO "*** All declared inter-library dependencies are being dropped." 67775f5b92ffSmrg droppeddeps=yes 67785f5b92ffSmrg fi 67795f5b92ffSmrg ;; 67805f5b92ffSmrg esac 67815f5b92ffSmrg versuffix=$versuffix_save 67825f5b92ffSmrg major=$major_save 67835f5b92ffSmrg release=$release_save 67845f5b92ffSmrg libname=$libname_save 67855f5b92ffSmrg name=$name_save 67865f5b92ffSmrg 67875f5b92ffSmrg case $host in 67885f5b92ffSmrg *-*-rhapsody* | *-*-darwin1.[012]) 67895f5b92ffSmrg # On Rhapsody replace the C library with the System framework 67905f5b92ffSmrg newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'` 67915f5b92ffSmrg ;; 67925f5b92ffSmrg esac 67935f5b92ffSmrg 67945f5b92ffSmrg if test "$droppeddeps" = yes; then 67955f5b92ffSmrg if test "$module" = yes; then 67965f5b92ffSmrg $ECHO 67975f5b92ffSmrg $ECHO "*** Warning: libtool could not satisfy all declared inter-library" 67985f5b92ffSmrg $ECHO "*** dependencies of module $libname. Therefore, libtool will create" 67995f5b92ffSmrg $ECHO "*** a static module, that should work as long as the dlopening" 68005f5b92ffSmrg $ECHO "*** application is linked with the -dlopen flag." 68015f5b92ffSmrg if test -z "$global_symbol_pipe"; then 68025f5b92ffSmrg $ECHO 68035f5b92ffSmrg $ECHO "*** However, this would only work if libtool was able to extract symbol" 68045f5b92ffSmrg $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could" 68055f5b92ffSmrg $ECHO "*** not find such a program. So, this module is probably useless." 68065f5b92ffSmrg $ECHO "*** \`nm' from GNU binutils and a full rebuild may help." 68075f5b92ffSmrg fi 68085f5b92ffSmrg if test "$build_old_libs" = no; then 68095f5b92ffSmrg oldlibs="$output_objdir/$libname.$libext" 68105f5b92ffSmrg build_libtool_libs=module 68115f5b92ffSmrg build_old_libs=yes 68125f5b92ffSmrg else 68135f5b92ffSmrg build_libtool_libs=no 68145f5b92ffSmrg fi 68155f5b92ffSmrg else 68165f5b92ffSmrg $ECHO "*** The inter-library dependencies that have been dropped here will be" 68175f5b92ffSmrg $ECHO "*** automatically added whenever a program is linked with this library" 68185f5b92ffSmrg $ECHO "*** or is declared to -dlopen it." 68195f5b92ffSmrg 68205f5b92ffSmrg if test "$allow_undefined" = no; then 68215f5b92ffSmrg $ECHO 68225f5b92ffSmrg $ECHO "*** Since this library must not contain undefined symbols," 68235f5b92ffSmrg $ECHO "*** because either the platform does not support them or" 68245f5b92ffSmrg $ECHO "*** it was explicitly requested with -no-undefined," 68255f5b92ffSmrg $ECHO "*** libtool will only create a static version of it." 68265f5b92ffSmrg if test "$build_old_libs" = no; then 68275f5b92ffSmrg oldlibs="$output_objdir/$libname.$libext" 68285f5b92ffSmrg build_libtool_libs=module 68295f5b92ffSmrg build_old_libs=yes 68305f5b92ffSmrg else 68315f5b92ffSmrg build_libtool_libs=no 68325f5b92ffSmrg fi 68335f5b92ffSmrg fi 68345f5b92ffSmrg fi 68355f5b92ffSmrg fi 68365f5b92ffSmrg # Done checking deplibs! 68375f5b92ffSmrg deplibs=$newdeplibs 68385f5b92ffSmrg fi 68395f5b92ffSmrg # Time to change all our "foo.ltframework" stuff back to "-framework foo" 68405f5b92ffSmrg case $host in 68415f5b92ffSmrg *-*-darwin*) 68425f5b92ffSmrg newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` 68435f5b92ffSmrg new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` 68445f5b92ffSmrg deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` 68455f5b92ffSmrg ;; 68465f5b92ffSmrg esac 68475f5b92ffSmrg 68485f5b92ffSmrg # move library search paths that coincide with paths to not yet 68495f5b92ffSmrg # installed libraries to the beginning of the library search list 68505f5b92ffSmrg new_libs= 68515f5b92ffSmrg for path in $notinst_path; do 68525f5b92ffSmrg case " $new_libs " in 68535f5b92ffSmrg *" -L$path/$objdir "*) ;; 68545f5b92ffSmrg *) 68555f5b92ffSmrg case " $deplibs " in 68565f5b92ffSmrg *" -L$path/$objdir "*) 68575f5b92ffSmrg new_libs="$new_libs -L$path/$objdir" ;; 68585f5b92ffSmrg esac 68595f5b92ffSmrg ;; 68605f5b92ffSmrg esac 68615f5b92ffSmrg done 68625f5b92ffSmrg for deplib in $deplibs; do 68635f5b92ffSmrg case $deplib in 68645f5b92ffSmrg -L*) 68655f5b92ffSmrg case " $new_libs " in 68665f5b92ffSmrg *" $deplib "*) ;; 68675f5b92ffSmrg *) new_libs="$new_libs $deplib" ;; 68685f5b92ffSmrg esac 68695f5b92ffSmrg ;; 68705f5b92ffSmrg *) new_libs="$new_libs $deplib" ;; 68715f5b92ffSmrg esac 68725f5b92ffSmrg done 68735f5b92ffSmrg deplibs="$new_libs" 68745f5b92ffSmrg 68755f5b92ffSmrg # All the library-specific variables (install_libdir is set above). 68765f5b92ffSmrg library_names= 68775f5b92ffSmrg old_library= 68785f5b92ffSmrg dlname= 68795f5b92ffSmrg 68805f5b92ffSmrg # Test again, we may have decided not to build it any more 68815f5b92ffSmrg if test "$build_libtool_libs" = yes; then 68825f5b92ffSmrg if test "$hardcode_into_libs" = yes; then 68835f5b92ffSmrg # Hardcode the library paths 68845f5b92ffSmrg hardcode_libdirs= 68855f5b92ffSmrg dep_rpath= 68865f5b92ffSmrg rpath="$finalize_rpath" 68875f5b92ffSmrg test "$mode" != relink && rpath="$compile_rpath$rpath" 68885f5b92ffSmrg for libdir in $rpath; do 68895f5b92ffSmrg if test -n "$hardcode_libdir_flag_spec"; then 68905f5b92ffSmrg if test -n "$hardcode_libdir_separator"; then 68915f5b92ffSmrg if test -z "$hardcode_libdirs"; then 68925f5b92ffSmrg hardcode_libdirs="$libdir" 68935f5b92ffSmrg else 68945f5b92ffSmrg # Just accumulate the unique libdirs. 68955f5b92ffSmrg case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 68965f5b92ffSmrg *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 68975f5b92ffSmrg ;; 68985f5b92ffSmrg *) 68995f5b92ffSmrg hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 69005f5b92ffSmrg ;; 69015f5b92ffSmrg esac 69025f5b92ffSmrg fi 69035f5b92ffSmrg else 69045f5b92ffSmrg eval flag=\"$hardcode_libdir_flag_spec\" 69055f5b92ffSmrg dep_rpath="$dep_rpath $flag" 69065f5b92ffSmrg fi 69075f5b92ffSmrg elif test -n "$runpath_var"; then 69085f5b92ffSmrg case "$perm_rpath " in 69095f5b92ffSmrg *" $libdir "*) ;; 69105f5b92ffSmrg *) perm_rpath="$perm_rpath $libdir" ;; 69115f5b92ffSmrg esac 69125f5b92ffSmrg fi 69135f5b92ffSmrg done 69145f5b92ffSmrg # Substitute the hardcoded libdirs into the rpath. 69155f5b92ffSmrg if test -n "$hardcode_libdir_separator" && 69165f5b92ffSmrg test -n "$hardcode_libdirs"; then 69175f5b92ffSmrg libdir="$hardcode_libdirs" 69185f5b92ffSmrg if test -n "$hardcode_libdir_flag_spec_ld"; then 69195f5b92ffSmrg eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" 69205f5b92ffSmrg else 69215f5b92ffSmrg eval dep_rpath=\"$hardcode_libdir_flag_spec\" 69225f5b92ffSmrg fi 69235f5b92ffSmrg fi 69245f5b92ffSmrg if test -n "$runpath_var" && test -n "$perm_rpath"; then 69255f5b92ffSmrg # We should set the runpath_var. 69265f5b92ffSmrg rpath= 69275f5b92ffSmrg for dir in $perm_rpath; do 69285f5b92ffSmrg rpath="$rpath$dir:" 69295f5b92ffSmrg done 69305f5b92ffSmrg eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" 69315f5b92ffSmrg fi 69325f5b92ffSmrg test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" 69335f5b92ffSmrg fi 693417a48c7cSmrg 69355f5b92ffSmrg shlibpath="$finalize_shlibpath" 69365f5b92ffSmrg test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" 69375f5b92ffSmrg if test -n "$shlibpath"; then 69385f5b92ffSmrg eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" 69395f5b92ffSmrg fi 694017a48c7cSmrg 69415f5b92ffSmrg # Get the real and link names of the library. 69425f5b92ffSmrg eval shared_ext=\"$shrext_cmds\" 69435f5b92ffSmrg eval library_names=\"$library_names_spec\" 69445f5b92ffSmrg set dummy $library_names 69455f5b92ffSmrg shift 69465f5b92ffSmrg realname="$1" 69475f5b92ffSmrg shift 694817a48c7cSmrg 69495f5b92ffSmrg if test -n "$soname_spec"; then 69505f5b92ffSmrg eval soname=\"$soname_spec\" 69515f5b92ffSmrg else 69525f5b92ffSmrg soname="$realname" 69535f5b92ffSmrg fi 69545f5b92ffSmrg if test -z "$dlname"; then 69555f5b92ffSmrg dlname=$soname 69565f5b92ffSmrg fi 695717a48c7cSmrg 69585f5b92ffSmrg lib="$output_objdir/$realname" 69595f5b92ffSmrg linknames= 69605f5b92ffSmrg for link 69615f5b92ffSmrg do 69625f5b92ffSmrg linknames="$linknames $link" 69635f5b92ffSmrg done 696417a48c7cSmrg 69655f5b92ffSmrg # Use standard objects if they are pic 69665f5b92ffSmrg test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 69675f5b92ffSmrg test "X$libobjs" = "X " && libobjs= 696817a48c7cSmrg 69695f5b92ffSmrg delfiles= 69705f5b92ffSmrg if test -n "$export_symbols" && test -n "$include_expsyms"; then 69715f5b92ffSmrg $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" 69725f5b92ffSmrg export_symbols="$output_objdir/$libname.uexp" 69735f5b92ffSmrg delfiles="$delfiles $export_symbols" 69745f5b92ffSmrg fi 697517a48c7cSmrg 69765f5b92ffSmrg orig_export_symbols= 69775f5b92ffSmrg case $host_os in 69785f5b92ffSmrg cygwin* | mingw* | cegcc*) 69795f5b92ffSmrg if test -n "$export_symbols" && test -z "$export_symbols_regex"; then 69805f5b92ffSmrg # exporting using user supplied symfile 69815f5b92ffSmrg if test "x`$SED 1q $export_symbols`" != xEXPORTS; then 69825f5b92ffSmrg # and it's NOT already a .def file. Must figure out 69835f5b92ffSmrg # which of the given symbols are data symbols and tag 69845f5b92ffSmrg # them as such. So, trigger use of export_symbols_cmds. 69855f5b92ffSmrg # export_symbols gets reassigned inside the "prepare 69865f5b92ffSmrg # the list of exported symbols" if statement, so the 69875f5b92ffSmrg # include_expsyms logic still works. 69885f5b92ffSmrg orig_export_symbols="$export_symbols" 69895f5b92ffSmrg export_symbols= 69905f5b92ffSmrg always_export_symbols=yes 69915f5b92ffSmrg fi 69925f5b92ffSmrg fi 69935f5b92ffSmrg ;; 69945f5b92ffSmrg esac 699517a48c7cSmrg 69965f5b92ffSmrg # Prepare the list of exported symbols 69975f5b92ffSmrg if test -z "$export_symbols"; then 69985f5b92ffSmrg if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then 69995f5b92ffSmrg func_verbose "generating symbol list for \`$libname.la'" 70005f5b92ffSmrg export_symbols="$output_objdir/$libname.exp" 70015f5b92ffSmrg $opt_dry_run || $RM $export_symbols 70025f5b92ffSmrg cmds=$export_symbols_cmds 70035f5b92ffSmrg save_ifs="$IFS"; IFS='~' 70045f5b92ffSmrg for cmd in $cmds; do 70055f5b92ffSmrg IFS="$save_ifs" 70065f5b92ffSmrg eval cmd=\"$cmd\" 70075f5b92ffSmrg func_len " $cmd" 70085f5b92ffSmrg len=$func_len_result 70095f5b92ffSmrg if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then 70105f5b92ffSmrg func_show_eval "$cmd" 'exit $?' 70115f5b92ffSmrg skipped_export=false 70125f5b92ffSmrg else 70135f5b92ffSmrg # The command line is too long to execute in one step. 70145f5b92ffSmrg func_verbose "using reloadable object file for export list..." 70155f5b92ffSmrg skipped_export=: 70165f5b92ffSmrg # Break out early, otherwise skipped_export may be 70175f5b92ffSmrg # set to false by a later but shorter cmd. 70185f5b92ffSmrg break 70195f5b92ffSmrg fi 70205f5b92ffSmrg done 70215f5b92ffSmrg IFS="$save_ifs" 70225f5b92ffSmrg if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then 70235f5b92ffSmrg func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' 70245f5b92ffSmrg func_show_eval '$MV "${export_symbols}T" "$export_symbols"' 70255f5b92ffSmrg fi 70265f5b92ffSmrg fi 702717a48c7cSmrg fi 702817a48c7cSmrg 70295f5b92ffSmrg if test -n "$export_symbols" && test -n "$include_expsyms"; then 70305f5b92ffSmrg tmp_export_symbols="$export_symbols" 70315f5b92ffSmrg test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" 70325f5b92ffSmrg $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"' 70335f5b92ffSmrg fi 703417a48c7cSmrg 70355f5b92ffSmrg if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then 70365f5b92ffSmrg # The given exports_symbols file has to be filtered, so filter it. 70375f5b92ffSmrg func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" 70385f5b92ffSmrg # FIXME: $output_objdir/$libname.filter potentially contains lots of 70395f5b92ffSmrg # 's' commands which not all seds can handle. GNU sed should be fine 70405f5b92ffSmrg # though. Also, the filter scales superlinearly with the number of 70415f5b92ffSmrg # global variables. join(1) would be nice here, but unfortunately 70425f5b92ffSmrg # isn't a blessed tool. 70435f5b92ffSmrg $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter 70445f5b92ffSmrg delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" 70455f5b92ffSmrg export_symbols=$output_objdir/$libname.def 70465f5b92ffSmrg $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols 70475f5b92ffSmrg fi 704817a48c7cSmrg 70495f5b92ffSmrg tmp_deplibs= 70505f5b92ffSmrg for test_deplib in $deplibs; do 70515f5b92ffSmrg case " $convenience " in 70525f5b92ffSmrg *" $test_deplib "*) ;; 70535f5b92ffSmrg *) 70545f5b92ffSmrg tmp_deplibs="$tmp_deplibs $test_deplib" 70555f5b92ffSmrg ;; 70565f5b92ffSmrg esac 70575f5b92ffSmrg done 70585f5b92ffSmrg deplibs="$tmp_deplibs" 705917a48c7cSmrg 70605f5b92ffSmrg if test -n "$convenience"; then 70615f5b92ffSmrg if test -n "$whole_archive_flag_spec" && 70625f5b92ffSmrg test "$compiler_needs_object" = yes && 70635f5b92ffSmrg test -z "$libobjs"; then 70645f5b92ffSmrg # extract the archives, so we have objects to list. 70655f5b92ffSmrg # TODO: could optimize this to just extract one archive. 70665f5b92ffSmrg whole_archive_flag_spec= 70675f5b92ffSmrg fi 70685f5b92ffSmrg if test -n "$whole_archive_flag_spec"; then 70695f5b92ffSmrg save_libobjs=$libobjs 70705f5b92ffSmrg eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 70715f5b92ffSmrg test "X$libobjs" = "X " && libobjs= 70725f5b92ffSmrg else 70735f5b92ffSmrg gentop="$output_objdir/${outputname}x" 70745f5b92ffSmrg generated="$generated $gentop" 707517a48c7cSmrg 70765f5b92ffSmrg func_extract_archives $gentop $convenience 70775f5b92ffSmrg libobjs="$libobjs $func_extract_archives_result" 70785f5b92ffSmrg test "X$libobjs" = "X " && libobjs= 70795f5b92ffSmrg fi 708017a48c7cSmrg fi 708117a48c7cSmrg 70825f5b92ffSmrg if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then 70835f5b92ffSmrg eval flag=\"$thread_safe_flag_spec\" 70845f5b92ffSmrg linker_flags="$linker_flags $flag" 708517a48c7cSmrg fi 708617a48c7cSmrg 70875f5b92ffSmrg # Make a backup of the uninstalled library when relinking 70885f5b92ffSmrg if test "$mode" = relink; then 70895f5b92ffSmrg $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? 70905f5b92ffSmrg fi 709117a48c7cSmrg 70925f5b92ffSmrg # Do each of the archive commands. 70935f5b92ffSmrg if test "$module" = yes && test -n "$module_cmds" ; then 70945f5b92ffSmrg if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 70955f5b92ffSmrg eval test_cmds=\"$module_expsym_cmds\" 70965f5b92ffSmrg cmds=$module_expsym_cmds 70975f5b92ffSmrg else 70985f5b92ffSmrg eval test_cmds=\"$module_cmds\" 70995f5b92ffSmrg cmds=$module_cmds 71005f5b92ffSmrg fi 710117a48c7cSmrg else 71025f5b92ffSmrg if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 71035f5b92ffSmrg eval test_cmds=\"$archive_expsym_cmds\" 71045f5b92ffSmrg cmds=$archive_expsym_cmds 71055f5b92ffSmrg else 71065f5b92ffSmrg eval test_cmds=\"$archive_cmds\" 71075f5b92ffSmrg cmds=$archive_cmds 71085f5b92ffSmrg fi 710917a48c7cSmrg fi 711017a48c7cSmrg 71115f5b92ffSmrg if test "X$skipped_export" != "X:" && 71125f5b92ffSmrg func_len " $test_cmds" && 71135f5b92ffSmrg len=$func_len_result && 71145f5b92ffSmrg test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then 71155f5b92ffSmrg : 71165f5b92ffSmrg else 71175f5b92ffSmrg # The command line is too long to link in one step, link piecewise 71185f5b92ffSmrg # or, if using GNU ld and skipped_export is not :, use a linker 71195f5b92ffSmrg # script. 712017a48c7cSmrg 71215f5b92ffSmrg # Save the value of $output and $libobjs because we want to 71225f5b92ffSmrg # use them later. If we have whole_archive_flag_spec, we 71235f5b92ffSmrg # want to use save_libobjs as it was before 71245f5b92ffSmrg # whole_archive_flag_spec was expanded, because we can't 71255f5b92ffSmrg # assume the linker understands whole_archive_flag_spec. 71265f5b92ffSmrg # This may have to be revisited, in case too many 71275f5b92ffSmrg # convenience libraries get linked in and end up exceeding 71285f5b92ffSmrg # the spec. 71295f5b92ffSmrg if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then 71305f5b92ffSmrg save_libobjs=$libobjs 71315f5b92ffSmrg fi 71325f5b92ffSmrg save_output=$output 71335f5b92ffSmrg output_la=`$ECHO "X$output" | $Xsed -e "$basename"` 713417a48c7cSmrg 71355f5b92ffSmrg # Clear the reloadable object creation command queue and 71365f5b92ffSmrg # initialize k to one. 71375f5b92ffSmrg test_cmds= 71385f5b92ffSmrg concat_cmds= 71395f5b92ffSmrg objlist= 71405f5b92ffSmrg last_robj= 71415f5b92ffSmrg k=1 71425f5b92ffSmrg 71435f5b92ffSmrg if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then 71445f5b92ffSmrg output=${output_objdir}/${output_la}.lnkscript 71455f5b92ffSmrg func_verbose "creating GNU ld script: $output" 71465f5b92ffSmrg $ECHO 'INPUT (' > $output 71475f5b92ffSmrg for obj in $save_libobjs 714817a48c7cSmrg do 71495f5b92ffSmrg $ECHO "$obj" >> $output 71505f5b92ffSmrg done 71515f5b92ffSmrg $ECHO ')' >> $output 71525f5b92ffSmrg delfiles="$delfiles $output" 71535f5b92ffSmrg elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then 71545f5b92ffSmrg output=${output_objdir}/${output_la}.lnk 71555f5b92ffSmrg func_verbose "creating linker input file list: $output" 71565f5b92ffSmrg : > $output 71575f5b92ffSmrg set x $save_libobjs 71585f5b92ffSmrg shift 71595f5b92ffSmrg firstobj= 71605f5b92ffSmrg if test "$compiler_needs_object" = yes; then 71615f5b92ffSmrg firstobj="$1 " 71625f5b92ffSmrg shift 71635f5b92ffSmrg fi 71645f5b92ffSmrg for obj 71655f5b92ffSmrg do 71665f5b92ffSmrg $ECHO "$obj" >> $output 71675f5b92ffSmrg done 71685f5b92ffSmrg delfiles="$delfiles $output" 71695f5b92ffSmrg output=$firstobj\"$file_list_spec$output\" 71705f5b92ffSmrg else 71715f5b92ffSmrg if test -n "$save_libobjs"; then 71725f5b92ffSmrg func_verbose "creating reloadable object files..." 71735f5b92ffSmrg output=$output_objdir/$output_la-${k}.$objext 71745f5b92ffSmrg eval test_cmds=\"$reload_cmds\" 71755f5b92ffSmrg func_len " $test_cmds" 71765f5b92ffSmrg len0=$func_len_result 71775f5b92ffSmrg len=$len0 71785f5b92ffSmrg 71795f5b92ffSmrg # Loop over the list of objects to be linked. 71805f5b92ffSmrg for obj in $save_libobjs 71815f5b92ffSmrg do 71825f5b92ffSmrg func_len " $obj" 71835f5b92ffSmrg func_arith $len + $func_len_result 71845f5b92ffSmrg len=$func_arith_result 71855f5b92ffSmrg if test "X$objlist" = X || 71865f5b92ffSmrg test "$len" -lt "$max_cmd_len"; then 71875f5b92ffSmrg func_append objlist " $obj" 71885f5b92ffSmrg else 71895f5b92ffSmrg # The command $test_cmds is almost too long, add a 71905f5b92ffSmrg # command to the queue. 71915f5b92ffSmrg if test "$k" -eq 1 ; then 71925f5b92ffSmrg # The first file doesn't have a previous command to add. 71935f5b92ffSmrg eval concat_cmds=\"$reload_cmds $objlist $last_robj\" 71945f5b92ffSmrg else 71955f5b92ffSmrg # All subsequent reloadable object files will link in 71965f5b92ffSmrg # the last one created. 71975f5b92ffSmrg eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj~\$RM $last_robj\" 71985f5b92ffSmrg fi 71995f5b92ffSmrg last_robj=$output_objdir/$output_la-${k}.$objext 72005f5b92ffSmrg func_arith $k + 1 72015f5b92ffSmrg k=$func_arith_result 72025f5b92ffSmrg output=$output_objdir/$output_la-${k}.$objext 72035f5b92ffSmrg objlist=$obj 72045f5b92ffSmrg func_len " $last_robj" 72055f5b92ffSmrg func_arith $len0 + $func_len_result 72065f5b92ffSmrg len=$func_arith_result 72075f5b92ffSmrg fi 72085f5b92ffSmrg done 72095f5b92ffSmrg # Handle the remaining objects by creating one last 72105f5b92ffSmrg # reloadable object file. All subsequent reloadable object 72115f5b92ffSmrg # files will link in the last one created. 72125f5b92ffSmrg test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 72135f5b92ffSmrg eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" 72145f5b92ffSmrg if test -n "$last_robj"; then 72155f5b92ffSmrg eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" 72165f5b92ffSmrg fi 72175f5b92ffSmrg delfiles="$delfiles $output" 721817a48c7cSmrg 72195f5b92ffSmrg else 72205f5b92ffSmrg output= 72215f5b92ffSmrg fi 722217a48c7cSmrg 72235f5b92ffSmrg if ${skipped_export-false}; then 72245f5b92ffSmrg func_verbose "generating symbol list for \`$libname.la'" 72255f5b92ffSmrg export_symbols="$output_objdir/$libname.exp" 72265f5b92ffSmrg $opt_dry_run || $RM $export_symbols 72275f5b92ffSmrg libobjs=$output 72285f5b92ffSmrg # Append the command to create the export file. 72295f5b92ffSmrg test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 72305f5b92ffSmrg eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" 72315f5b92ffSmrg if test -n "$last_robj"; then 72325f5b92ffSmrg eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" 72335f5b92ffSmrg fi 723417a48c7cSmrg fi 723517a48c7cSmrg 72365f5b92ffSmrg test -n "$save_libobjs" && 72375f5b92ffSmrg func_verbose "creating a temporary reloadable object file: $output" 723817a48c7cSmrg 72395f5b92ffSmrg # Loop through the commands generated above and execute them. 72405f5b92ffSmrg save_ifs="$IFS"; IFS='~' 72415f5b92ffSmrg for cmd in $concat_cmds; do 72425f5b92ffSmrg IFS="$save_ifs" 72435f5b92ffSmrg $opt_silent || { 72445f5b92ffSmrg func_quote_for_expand "$cmd" 72455f5b92ffSmrg eval "func_echo $func_quote_for_expand_result" 72465f5b92ffSmrg } 72475f5b92ffSmrg $opt_dry_run || eval "$cmd" || { 72485f5b92ffSmrg lt_exit=$? 72495f5b92ffSmrg 72505f5b92ffSmrg # Restore the uninstalled library and exit 72515f5b92ffSmrg if test "$mode" = relink; then 72525f5b92ffSmrg ( cd "$output_objdir" && \ 72535f5b92ffSmrg $RM "${realname}T" && \ 72545f5b92ffSmrg $MV "${realname}U" "$realname" ) 72555f5b92ffSmrg fi 725617a48c7cSmrg 72575f5b92ffSmrg exit $lt_exit 72585f5b92ffSmrg } 72595f5b92ffSmrg done 72605f5b92ffSmrg IFS="$save_ifs" 726117a48c7cSmrg 72625f5b92ffSmrg if test -n "$export_symbols_regex" && ${skipped_export-false}; then 72635f5b92ffSmrg func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' 72645f5b92ffSmrg func_show_eval '$MV "${export_symbols}T" "$export_symbols"' 726517a48c7cSmrg fi 726617a48c7cSmrg fi 726717a48c7cSmrg 72685f5b92ffSmrg if ${skipped_export-false}; then 72695f5b92ffSmrg if test -n "$export_symbols" && test -n "$include_expsyms"; then 72705f5b92ffSmrg tmp_export_symbols="$export_symbols" 72715f5b92ffSmrg test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" 72725f5b92ffSmrg $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"' 72735f5b92ffSmrg fi 727417a48c7cSmrg 72755f5b92ffSmrg if test -n "$orig_export_symbols"; then 72765f5b92ffSmrg # The given exports_symbols file has to be filtered, so filter it. 72775f5b92ffSmrg func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" 72785f5b92ffSmrg # FIXME: $output_objdir/$libname.filter potentially contains lots of 72795f5b92ffSmrg # 's' commands which not all seds can handle. GNU sed should be fine 72805f5b92ffSmrg # though. Also, the filter scales superlinearly with the number of 72815f5b92ffSmrg # global variables. join(1) would be nice here, but unfortunately 72825f5b92ffSmrg # isn't a blessed tool. 72835f5b92ffSmrg $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter 72845f5b92ffSmrg delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" 72855f5b92ffSmrg export_symbols=$output_objdir/$libname.def 72865f5b92ffSmrg $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols 72875f5b92ffSmrg fi 72885f5b92ffSmrg fi 728917a48c7cSmrg 72905f5b92ffSmrg libobjs=$output 72915f5b92ffSmrg # Restore the value of output. 72925f5b92ffSmrg output=$save_output 729317a48c7cSmrg 72945f5b92ffSmrg if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then 72955f5b92ffSmrg eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 72965f5b92ffSmrg test "X$libobjs" = "X " && libobjs= 72975f5b92ffSmrg fi 72985f5b92ffSmrg # Expand the library linking commands again to reset the 72995f5b92ffSmrg # value of $libobjs for piecewise linking. 730017a48c7cSmrg 73015f5b92ffSmrg # Do each of the archive commands. 73025f5b92ffSmrg if test "$module" = yes && test -n "$module_cmds" ; then 73035f5b92ffSmrg if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 73045f5b92ffSmrg cmds=$module_expsym_cmds 73055f5b92ffSmrg else 73065f5b92ffSmrg cmds=$module_cmds 730717a48c7cSmrg fi 730817a48c7cSmrg else 73095f5b92ffSmrg if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 73105f5b92ffSmrg cmds=$archive_expsym_cmds 73115f5b92ffSmrg else 73125f5b92ffSmrg cmds=$archive_cmds 73135f5b92ffSmrg fi 731417a48c7cSmrg fi 73155f5b92ffSmrg fi 731617a48c7cSmrg 73175f5b92ffSmrg if test -n "$delfiles"; then 73185f5b92ffSmrg # Append the command to remove temporary files to $cmds. 73195f5b92ffSmrg eval cmds=\"\$cmds~\$RM $delfiles\" 73205f5b92ffSmrg fi 732117a48c7cSmrg 73225f5b92ffSmrg # Add any objects from preloaded convenience libraries 73235f5b92ffSmrg if test -n "$dlprefiles"; then 73245f5b92ffSmrg gentop="$output_objdir/${outputname}x" 73255f5b92ffSmrg generated="$generated $gentop" 732617a48c7cSmrg 73275f5b92ffSmrg func_extract_archives $gentop $dlprefiles 73285f5b92ffSmrg libobjs="$libobjs $func_extract_archives_result" 73295f5b92ffSmrg test "X$libobjs" = "X " && libobjs= 73305f5b92ffSmrg fi 733117a48c7cSmrg 73325f5b92ffSmrg save_ifs="$IFS"; IFS='~' 73335f5b92ffSmrg for cmd in $cmds; do 73345f5b92ffSmrg IFS="$save_ifs" 73355f5b92ffSmrg eval cmd=\"$cmd\" 73365f5b92ffSmrg $opt_silent || { 73375f5b92ffSmrg func_quote_for_expand "$cmd" 73385f5b92ffSmrg eval "func_echo $func_quote_for_expand_result" 73395f5b92ffSmrg } 73405f5b92ffSmrg $opt_dry_run || eval "$cmd" || { 73415f5b92ffSmrg lt_exit=$? 734217a48c7cSmrg 73435f5b92ffSmrg # Restore the uninstalled library and exit 73445f5b92ffSmrg if test "$mode" = relink; then 73455f5b92ffSmrg ( cd "$output_objdir" && \ 73465f5b92ffSmrg $RM "${realname}T" && \ 73475f5b92ffSmrg $MV "${realname}U" "$realname" ) 73485f5b92ffSmrg fi 734917a48c7cSmrg 73505f5b92ffSmrg exit $lt_exit 73515f5b92ffSmrg } 73525f5b92ffSmrg done 73535f5b92ffSmrg IFS="$save_ifs" 735417a48c7cSmrg 73555f5b92ffSmrg # Restore the uninstalled library and exit 73565f5b92ffSmrg if test "$mode" = relink; then 73575f5b92ffSmrg $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? 735817a48c7cSmrg 73595f5b92ffSmrg if test -n "$convenience"; then 73605f5b92ffSmrg if test -z "$whole_archive_flag_spec"; then 73615f5b92ffSmrg func_show_eval '${RM}r "$gentop"' 73625f5b92ffSmrg fi 73635f5b92ffSmrg fi 736417a48c7cSmrg 73655f5b92ffSmrg exit $EXIT_SUCCESS 73665f5b92ffSmrg fi 73675f5b92ffSmrg 73685f5b92ffSmrg # Create links to the real library. 73695f5b92ffSmrg for linkname in $linknames; do 73705f5b92ffSmrg if test "$realname" != "$linkname"; then 73715f5b92ffSmrg func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' 737217a48c7cSmrg fi 737317a48c7cSmrg done 737417a48c7cSmrg 73755f5b92ffSmrg # If -module or -export-dynamic was specified, set the dlname. 73765f5b92ffSmrg if test "$module" = yes || test "$export_dynamic" = yes; then 73775f5b92ffSmrg # On all known operating systems, these are identical. 73785f5b92ffSmrg dlname="$soname" 73795f5b92ffSmrg fi 73805f5b92ffSmrg fi 738117a48c7cSmrg ;; 738217a48c7cSmrg 73835f5b92ffSmrg obj) 73845f5b92ffSmrg if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 73855f5b92ffSmrg func_warning "\`-dlopen' is ignored for objects" 73865f5b92ffSmrg fi 738717a48c7cSmrg 73885f5b92ffSmrg case " $deplibs" in 73895f5b92ffSmrg *\ -l* | *\ -L*) 73905f5b92ffSmrg func_warning "\`-l' and \`-L' are ignored for objects" ;; 739117a48c7cSmrg esac 739217a48c7cSmrg 73935f5b92ffSmrg test -n "$rpath" && \ 73945f5b92ffSmrg func_warning "\`-rpath' is ignored for objects" 73955f5b92ffSmrg 73965f5b92ffSmrg test -n "$xrpath" && \ 73975f5b92ffSmrg func_warning "\`-R' is ignored for objects" 739817a48c7cSmrg 73995f5b92ffSmrg test -n "$vinfo" && \ 74005f5b92ffSmrg func_warning "\`-version-info' is ignored for objects" 740117a48c7cSmrg 74025f5b92ffSmrg test -n "$release" && \ 74035f5b92ffSmrg func_warning "\`-release' is ignored for objects" 74045f5b92ffSmrg 74055f5b92ffSmrg case $output in 74065f5b92ffSmrg *.lo) 74075f5b92ffSmrg test -n "$objs$old_deplibs" && \ 74085f5b92ffSmrg func_fatal_error "cannot build library object \`$output' from non-libtool objects" 74095f5b92ffSmrg 74105f5b92ffSmrg libobj=$output 74115f5b92ffSmrg func_lo2o "$libobj" 74125f5b92ffSmrg obj=$func_lo2o_result 741317a48c7cSmrg ;; 741417a48c7cSmrg *) 74155f5b92ffSmrg libobj= 74165f5b92ffSmrg obj="$output" 741717a48c7cSmrg ;; 741817a48c7cSmrg esac 741917a48c7cSmrg 74205f5b92ffSmrg # Delete the old objects. 74215f5b92ffSmrg $opt_dry_run || $RM $obj $libobj 742217a48c7cSmrg 74235f5b92ffSmrg # Objects from convenience libraries. This assumes 74245f5b92ffSmrg # single-version convenience libraries. Whenever we create 74255f5b92ffSmrg # different ones for PIC/non-PIC, this we'll have to duplicate 74265f5b92ffSmrg # the extraction. 74275f5b92ffSmrg reload_conv_objs= 74285f5b92ffSmrg gentop= 74295f5b92ffSmrg # reload_cmds runs $LD directly, so let us get rid of 74305f5b92ffSmrg # -Wl from whole_archive_flag_spec and hope we can get by with 74315f5b92ffSmrg # turning comma into space.. 74325f5b92ffSmrg wl= 743317a48c7cSmrg 74345f5b92ffSmrg if test -n "$convenience"; then 74355f5b92ffSmrg if test -n "$whole_archive_flag_spec"; then 74365f5b92ffSmrg eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" 74375f5b92ffSmrg reload_conv_objs=$reload_objs\ `$ECHO "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'` 74385f5b92ffSmrg else 74395f5b92ffSmrg gentop="$output_objdir/${obj}x" 74405f5b92ffSmrg generated="$generated $gentop" 744117a48c7cSmrg 74425f5b92ffSmrg func_extract_archives $gentop $convenience 74435f5b92ffSmrg reload_conv_objs="$reload_objs $func_extract_archives_result" 74445f5b92ffSmrg fi 744517a48c7cSmrg fi 744617a48c7cSmrg 74475f5b92ffSmrg # Create the old-style object. 74485f5b92ffSmrg 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 744917a48c7cSmrg 74505f5b92ffSmrg output="$obj" 74515f5b92ffSmrg func_execute_cmds "$reload_cmds" 'exit $?' 745217a48c7cSmrg 74535f5b92ffSmrg # Exit if we aren't doing a library object file. 74545f5b92ffSmrg if test -z "$libobj"; then 74555f5b92ffSmrg if test -n "$gentop"; then 74565f5b92ffSmrg func_show_eval '${RM}r "$gentop"' 74575f5b92ffSmrg fi 74585f5b92ffSmrg 74595f5b92ffSmrg exit $EXIT_SUCCESS 746017a48c7cSmrg fi 74615f5b92ffSmrg 74625f5b92ffSmrg if test "$build_libtool_libs" != yes; then 74635f5b92ffSmrg if test -n "$gentop"; then 74645f5b92ffSmrg func_show_eval '${RM}r "$gentop"' 74655f5b92ffSmrg fi 74665f5b92ffSmrg 74675f5b92ffSmrg # Create an invalid libtool object if no PIC, so that we don't 74685f5b92ffSmrg # accidentally link it into a program. 74695f5b92ffSmrg # $show "echo timestamp > $libobj" 74705f5b92ffSmrg # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? 74715f5b92ffSmrg exit $EXIT_SUCCESS 74725f5b92ffSmrg fi 74735f5b92ffSmrg 74745f5b92ffSmrg if test -n "$pic_flag" || test "$pic_mode" != default; then 74755f5b92ffSmrg # Only do commands if we really have different PIC objects. 74765f5b92ffSmrg reload_objs="$libobjs $reload_conv_objs" 74775f5b92ffSmrg output="$libobj" 74785f5b92ffSmrg func_execute_cmds "$reload_cmds" 'exit $?' 74795f5b92ffSmrg fi 74805f5b92ffSmrg 74815f5b92ffSmrg if test -n "$gentop"; then 74825f5b92ffSmrg func_show_eval '${RM}r "$gentop"' 74835f5b92ffSmrg fi 74845f5b92ffSmrg 74855f5b92ffSmrg exit $EXIT_SUCCESS 748617a48c7cSmrg ;; 748717a48c7cSmrg 74885f5b92ffSmrg prog) 74895f5b92ffSmrg case $host in 74905f5b92ffSmrg *cygwin*) func_stripname '' '.exe' "$output" 74915f5b92ffSmrg output=$func_stripname_result.exe;; 74925f5b92ffSmrg esac 74935f5b92ffSmrg test -n "$vinfo" && \ 74945f5b92ffSmrg func_warning "\`-version-info' is ignored for programs" 749517a48c7cSmrg 74965f5b92ffSmrg test -n "$release" && \ 74975f5b92ffSmrg func_warning "\`-release' is ignored for programs" 749817a48c7cSmrg 74995f5b92ffSmrg test "$preload" = yes \ 75005f5b92ffSmrg && test "$dlopen_support" = unknown \ 75015f5b92ffSmrg && test "$dlopen_self" = unknown \ 75025f5b92ffSmrg && test "$dlopen_self_static" = unknown && \ 75035f5b92ffSmrg func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." 75045f5b92ffSmrg 75055f5b92ffSmrg case $host in 75065f5b92ffSmrg *-*-rhapsody* | *-*-darwin1.[012]) 75075f5b92ffSmrg # On Rhapsody replace the C library is the System framework 75085f5b92ffSmrg compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'` 75095f5b92ffSmrg finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'` 751017a48c7cSmrg ;; 75115f5b92ffSmrg esac 751217a48c7cSmrg 75135f5b92ffSmrg case $host in 75145f5b92ffSmrg *-*-darwin*) 75155f5b92ffSmrg # Don't allow lazy linking, it breaks C++ global constructors 75165f5b92ffSmrg # But is supposedly fixed on 10.4 or later (yay!). 75175f5b92ffSmrg if test "$tagname" = CXX ; then 75185f5b92ffSmrg case ${MACOSX_DEPLOYMENT_TARGET-10.0} in 75195f5b92ffSmrg 10.[0123]) 75205f5b92ffSmrg compile_command="$compile_command ${wl}-bind_at_load" 75215f5b92ffSmrg finalize_command="$finalize_command ${wl}-bind_at_load" 75225f5b92ffSmrg ;; 75235f5b92ffSmrg esac 752417a48c7cSmrg fi 75255f5b92ffSmrg # Time to change all our "foo.ltframework" stuff back to "-framework foo" 75265f5b92ffSmrg compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` 75275f5b92ffSmrg finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` 75285f5b92ffSmrg ;; 75295f5b92ffSmrg esac 753017a48c7cSmrg 753117a48c7cSmrg 75325f5b92ffSmrg # move library search paths that coincide with paths to not yet 75335f5b92ffSmrg # installed libraries to the beginning of the library search list 75345f5b92ffSmrg new_libs= 75355f5b92ffSmrg for path in $notinst_path; do 75365f5b92ffSmrg case " $new_libs " in 75375f5b92ffSmrg *" -L$path/$objdir "*) ;; 75385f5b92ffSmrg *) 75395f5b92ffSmrg case " $compile_deplibs " in 75405f5b92ffSmrg *" -L$path/$objdir "*) 75415f5b92ffSmrg new_libs="$new_libs -L$path/$objdir" ;; 754217a48c7cSmrg esac 75435f5b92ffSmrg ;; 75445f5b92ffSmrg esac 75455f5b92ffSmrg done 75465f5b92ffSmrg for deplib in $compile_deplibs; do 75475f5b92ffSmrg case $deplib in 75485f5b92ffSmrg -L*) 75495f5b92ffSmrg case " $new_libs " in 75505f5b92ffSmrg *" $deplib "*) ;; 75515f5b92ffSmrg *) new_libs="$new_libs $deplib" ;; 755217a48c7cSmrg esac 75535f5b92ffSmrg ;; 75545f5b92ffSmrg *) new_libs="$new_libs $deplib" ;; 75555f5b92ffSmrg esac 75565f5b92ffSmrg done 75575f5b92ffSmrg compile_deplibs="$new_libs" 755817a48c7cSmrg 755917a48c7cSmrg 75605f5b92ffSmrg compile_command="$compile_command $compile_deplibs" 75615f5b92ffSmrg finalize_command="$finalize_command $finalize_deplibs" 756217a48c7cSmrg 75635f5b92ffSmrg if test -n "$rpath$xrpath"; then 75645f5b92ffSmrg # If the user specified any rpath flags, then add them. 75655f5b92ffSmrg for libdir in $rpath $xrpath; do 75665f5b92ffSmrg # This is the magic to use -rpath. 75675f5b92ffSmrg case "$finalize_rpath " in 75685f5b92ffSmrg *" $libdir "*) ;; 75695f5b92ffSmrg *) finalize_rpath="$finalize_rpath $libdir" ;; 75705f5b92ffSmrg esac 75715f5b92ffSmrg done 75725f5b92ffSmrg fi 757317a48c7cSmrg 75745f5b92ffSmrg # Now hardcode the library paths 75755f5b92ffSmrg rpath= 75765f5b92ffSmrg hardcode_libdirs= 75775f5b92ffSmrg for libdir in $compile_rpath $finalize_rpath; do 75785f5b92ffSmrg if test -n "$hardcode_libdir_flag_spec"; then 75795f5b92ffSmrg if test -n "$hardcode_libdir_separator"; then 75805f5b92ffSmrg if test -z "$hardcode_libdirs"; then 75815f5b92ffSmrg hardcode_libdirs="$libdir" 75825f5b92ffSmrg else 75835f5b92ffSmrg # Just accumulate the unique libdirs. 75845f5b92ffSmrg case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 75855f5b92ffSmrg *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 75865f5b92ffSmrg ;; 75875f5b92ffSmrg *) 75885f5b92ffSmrg hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 75895f5b92ffSmrg ;; 75905f5b92ffSmrg esac 75915f5b92ffSmrg fi 759217a48c7cSmrg else 75935f5b92ffSmrg eval flag=\"$hardcode_libdir_flag_spec\" 75945f5b92ffSmrg rpath="$rpath $flag" 759517a48c7cSmrg fi 75965f5b92ffSmrg elif test -n "$runpath_var"; then 75975f5b92ffSmrg case "$perm_rpath " in 75985f5b92ffSmrg *" $libdir "*) ;; 75995f5b92ffSmrg *) perm_rpath="$perm_rpath $libdir" ;; 76005f5b92ffSmrg esac 76015f5b92ffSmrg fi 76025f5b92ffSmrg case $host in 76035f5b92ffSmrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 76045f5b92ffSmrg testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` 76055f5b92ffSmrg case :$dllsearchpath: in 76065f5b92ffSmrg *":$libdir:"*) ;; 76075f5b92ffSmrg ::) dllsearchpath=$libdir;; 76085f5b92ffSmrg *) dllsearchpath="$dllsearchpath:$libdir";; 76095f5b92ffSmrg esac 76105f5b92ffSmrg case :$dllsearchpath: in 76115f5b92ffSmrg *":$testbindir:"*) ;; 76125f5b92ffSmrg ::) dllsearchpath=$testbindir;; 76135f5b92ffSmrg *) dllsearchpath="$dllsearchpath:$testbindir";; 76145f5b92ffSmrg esac 76155f5b92ffSmrg ;; 76165f5b92ffSmrg esac 76175f5b92ffSmrg done 76185f5b92ffSmrg # Substitute the hardcoded libdirs into the rpath. 76195f5b92ffSmrg if test -n "$hardcode_libdir_separator" && 76205f5b92ffSmrg test -n "$hardcode_libdirs"; then 76215f5b92ffSmrg libdir="$hardcode_libdirs" 76225f5b92ffSmrg eval rpath=\" $hardcode_libdir_flag_spec\" 76235f5b92ffSmrg fi 76245f5b92ffSmrg compile_rpath="$rpath" 762517a48c7cSmrg 76265f5b92ffSmrg rpath= 76275f5b92ffSmrg hardcode_libdirs= 76285f5b92ffSmrg for libdir in $finalize_rpath; do 76295f5b92ffSmrg if test -n "$hardcode_libdir_flag_spec"; then 76305f5b92ffSmrg if test -n "$hardcode_libdir_separator"; then 76315f5b92ffSmrg if test -z "$hardcode_libdirs"; then 76325f5b92ffSmrg hardcode_libdirs="$libdir" 76335f5b92ffSmrg else 76345f5b92ffSmrg # Just accumulate the unique libdirs. 76355f5b92ffSmrg case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 76365f5b92ffSmrg *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 76375f5b92ffSmrg ;; 76385f5b92ffSmrg *) 76395f5b92ffSmrg hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 76405f5b92ffSmrg ;; 76415f5b92ffSmrg esac 76425f5b92ffSmrg fi 764317a48c7cSmrg else 76445f5b92ffSmrg eval flag=\"$hardcode_libdir_flag_spec\" 76455f5b92ffSmrg rpath="$rpath $flag" 764617a48c7cSmrg fi 76475f5b92ffSmrg elif test -n "$runpath_var"; then 76485f5b92ffSmrg case "$finalize_perm_rpath " in 76495f5b92ffSmrg *" $libdir "*) ;; 76505f5b92ffSmrg *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; 76515f5b92ffSmrg esac 765217a48c7cSmrg fi 76535f5b92ffSmrg done 76545f5b92ffSmrg # Substitute the hardcoded libdirs into the rpath. 76555f5b92ffSmrg if test -n "$hardcode_libdir_separator" && 76565f5b92ffSmrg test -n "$hardcode_libdirs"; then 76575f5b92ffSmrg libdir="$hardcode_libdirs" 76585f5b92ffSmrg eval rpath=\" $hardcode_libdir_flag_spec\" 76595f5b92ffSmrg fi 76605f5b92ffSmrg finalize_rpath="$rpath" 766117a48c7cSmrg 76625f5b92ffSmrg if test -n "$libobjs" && test "$build_old_libs" = yes; then 76635f5b92ffSmrg # Transform all the library objects into standard objects. 76645f5b92ffSmrg compile_command=`$ECHO "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 76655f5b92ffSmrg finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 76665f5b92ffSmrg fi 766717a48c7cSmrg 76685f5b92ffSmrg func_generate_dlsyms "$outputname" "@PROGRAM@" "no" 766917a48c7cSmrg 76705f5b92ffSmrg # template prelinking step 76715f5b92ffSmrg if test -n "$prelink_cmds"; then 76725f5b92ffSmrg func_execute_cmds "$prelink_cmds" 'exit $?' 76735f5b92ffSmrg fi 767417a48c7cSmrg 76755f5b92ffSmrg wrappers_required=yes 76765f5b92ffSmrg case $host in 76775f5b92ffSmrg *cygwin* | *mingw* ) 76785f5b92ffSmrg if test "$build_libtool_libs" != yes; then 76795f5b92ffSmrg wrappers_required=no 76805f5b92ffSmrg fi 76815f5b92ffSmrg ;; 76825f5b92ffSmrg *cegcc) 76835f5b92ffSmrg # Disable wrappers for cegcc, we are cross compiling anyway. 76845f5b92ffSmrg wrappers_required=no 76855f5b92ffSmrg ;; 76865f5b92ffSmrg *) 76875f5b92ffSmrg if test "$need_relink" = no || test "$build_libtool_libs" != yes; then 76885f5b92ffSmrg wrappers_required=no 76895f5b92ffSmrg fi 76905f5b92ffSmrg ;; 76915f5b92ffSmrg esac 76925f5b92ffSmrg if test "$wrappers_required" = no; then 76935f5b92ffSmrg # Replace the output file specification. 76945f5b92ffSmrg compile_command=`$ECHO "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` 76955f5b92ffSmrg link_command="$compile_command$compile_rpath" 769617a48c7cSmrg 76975f5b92ffSmrg # We have no uninstalled library dependencies, so finalize right now. 76985f5b92ffSmrg exit_status=0 76995f5b92ffSmrg func_show_eval "$link_command" 'exit_status=$?' 770017a48c7cSmrg 77015f5b92ffSmrg # Delete the generated files. 77025f5b92ffSmrg if test -f "$output_objdir/${outputname}S.${objext}"; then 77035f5b92ffSmrg func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' 770417a48c7cSmrg fi 770517a48c7cSmrg 77065f5b92ffSmrg exit $exit_status 77075f5b92ffSmrg fi 770817a48c7cSmrg 77095f5b92ffSmrg if test -n "$compile_shlibpath$finalize_shlibpath"; then 77105f5b92ffSmrg compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" 77115f5b92ffSmrg fi 77125f5b92ffSmrg if test -n "$finalize_shlibpath"; then 77135f5b92ffSmrg finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" 77145f5b92ffSmrg fi 771517a48c7cSmrg 77165f5b92ffSmrg compile_var= 77175f5b92ffSmrg finalize_var= 77185f5b92ffSmrg if test -n "$runpath_var"; then 77195f5b92ffSmrg if test -n "$perm_rpath"; then 77205f5b92ffSmrg # We should set the runpath_var. 77215f5b92ffSmrg rpath= 77225f5b92ffSmrg for dir in $perm_rpath; do 77235f5b92ffSmrg rpath="$rpath$dir:" 77245f5b92ffSmrg done 77255f5b92ffSmrg compile_var="$runpath_var=\"$rpath\$$runpath_var\" " 772617a48c7cSmrg fi 77275f5b92ffSmrg if test -n "$finalize_perm_rpath"; then 77285f5b92ffSmrg # We should set the runpath_var. 77295f5b92ffSmrg rpath= 77305f5b92ffSmrg for dir in $finalize_perm_rpath; do 77315f5b92ffSmrg rpath="$rpath$dir:" 77325f5b92ffSmrg done 77335f5b92ffSmrg finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " 773417a48c7cSmrg fi 77355f5b92ffSmrg fi 773617a48c7cSmrg 77375f5b92ffSmrg if test "$no_install" = yes; then 77385f5b92ffSmrg # We don't need to create a wrapper script. 77395f5b92ffSmrg link_command="$compile_var$compile_command$compile_rpath" 77405f5b92ffSmrg # Replace the output file specification. 77415f5b92ffSmrg link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` 77425f5b92ffSmrg # Delete the old output file. 77435f5b92ffSmrg $opt_dry_run || $RM $output 77445f5b92ffSmrg # Link the executable and exit 77455f5b92ffSmrg func_show_eval "$link_command" 'exit $?' 774617a48c7cSmrg exit $EXIT_SUCCESS 77475f5b92ffSmrg fi 774817a48c7cSmrg 77495f5b92ffSmrg if test "$hardcode_action" = relink; then 77505f5b92ffSmrg # Fast installation is not supported 77515f5b92ffSmrg link_command="$compile_var$compile_command$compile_rpath" 77525f5b92ffSmrg relink_command="$finalize_var$finalize_command$finalize_rpath" 77535f5b92ffSmrg 77545f5b92ffSmrg func_warning "this platform does not like uninstalled shared libraries" 77555f5b92ffSmrg func_warning "\`$output' will be relinked during installation" 77565f5b92ffSmrg else 77575f5b92ffSmrg if test "$fast_install" != no; then 77585f5b92ffSmrg link_command="$finalize_var$compile_command$finalize_rpath" 77595f5b92ffSmrg if test "$fast_install" = yes; then 77605f5b92ffSmrg relink_command=`$ECHO "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` 77615f5b92ffSmrg else 77625f5b92ffSmrg # fast_install is set to needless 77635f5b92ffSmrg relink_command= 77645f5b92ffSmrg fi 776517a48c7cSmrg else 77665f5b92ffSmrg link_command="$compile_var$compile_command$compile_rpath" 77675f5b92ffSmrg relink_command="$finalize_var$finalize_command$finalize_rpath" 776817a48c7cSmrg fi 77695f5b92ffSmrg fi 777017a48c7cSmrg 77715f5b92ffSmrg # Replace the output file specification. 77725f5b92ffSmrg link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` 777317a48c7cSmrg 77745f5b92ffSmrg # Delete the old output files. 77755f5b92ffSmrg $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname 777617a48c7cSmrg 77775f5b92ffSmrg func_show_eval "$link_command" 'exit $?' 777817a48c7cSmrg 77795f5b92ffSmrg # Now create the wrapper script. 77805f5b92ffSmrg func_verbose "creating $output" 778117a48c7cSmrg 77825f5b92ffSmrg # Quote the relink command for shipping. 77835f5b92ffSmrg if test -n "$relink_command"; then 77845f5b92ffSmrg # Preserve any variables that may affect compiler behavior 77855f5b92ffSmrg for var in $variables_saved_for_relink; do 77865f5b92ffSmrg if eval test -z \"\${$var+set}\"; then 77875f5b92ffSmrg relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" 77885f5b92ffSmrg elif eval var_value=\$$var; test -z "$var_value"; then 77895f5b92ffSmrg relink_command="$var=; export $var; $relink_command" 779017a48c7cSmrg else 77915f5b92ffSmrg func_quote_for_eval "$var_value" 77925f5b92ffSmrg relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" 779317a48c7cSmrg fi 77945f5b92ffSmrg done 77955f5b92ffSmrg relink_command="(cd `pwd`; $relink_command)" 77965f5b92ffSmrg relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"` 77975f5b92ffSmrg fi 779817a48c7cSmrg 77995f5b92ffSmrg # Quote $ECHO for shipping. 78005f5b92ffSmrg if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then 78015f5b92ffSmrg case $progpath in 78025f5b92ffSmrg [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; 78035f5b92ffSmrg *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; 78045f5b92ffSmrg esac 78055f5b92ffSmrg qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"` 78065f5b92ffSmrg else 78075f5b92ffSmrg qecho=`$ECHO "X$ECHO" | $Xsed -e "$sed_quote_subst"` 78085f5b92ffSmrg fi 78095f5b92ffSmrg 78105f5b92ffSmrg # Only actually do things if not in dry run mode. 78115f5b92ffSmrg $opt_dry_run || { 78125f5b92ffSmrg # win32 will think the script is a binary if it has 78135f5b92ffSmrg # a .exe suffix, so we strip it off here. 78145f5b92ffSmrg case $output in 78155f5b92ffSmrg *.exe) func_stripname '' '.exe' "$output" 78165f5b92ffSmrg output=$func_stripname_result ;; 78175f5b92ffSmrg esac 78185f5b92ffSmrg # test for cygwin because mv fails w/o .exe extensions 78195f5b92ffSmrg case $host in 78205f5b92ffSmrg *cygwin*) 78215f5b92ffSmrg exeext=.exe 78225f5b92ffSmrg func_stripname '' '.exe' "$outputname" 78235f5b92ffSmrg outputname=$func_stripname_result ;; 78245f5b92ffSmrg *) exeext= ;; 782517a48c7cSmrg esac 78265f5b92ffSmrg case $host in 78275f5b92ffSmrg *cygwin* | *mingw* ) 78285f5b92ffSmrg func_dirname_and_basename "$output" "" "." 78295f5b92ffSmrg output_name=$func_basename_result 78305f5b92ffSmrg output_path=$func_dirname_result 78315f5b92ffSmrg cwrappersource="$output_path/$objdir/lt-$output_name.c" 78325f5b92ffSmrg cwrapper="$output_path/$output_name.exe" 78335f5b92ffSmrg $RM $cwrappersource $cwrapper 78345f5b92ffSmrg trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 78355f5b92ffSmrg 78365f5b92ffSmrg func_emit_cwrapperexe_src > $cwrappersource 78375f5b92ffSmrg 78385f5b92ffSmrg # The wrapper executable is built using the $host compiler, 78395f5b92ffSmrg # because it contains $host paths and files. If cross- 78405f5b92ffSmrg # compiling, it, like the target executable, must be 78415f5b92ffSmrg # executed on the $host or under an emulation environment. 78425f5b92ffSmrg $opt_dry_run || { 78435f5b92ffSmrg $LTCC $LTCFLAGS -o $cwrapper $cwrappersource 78445f5b92ffSmrg $STRIP $cwrapper 78455f5b92ffSmrg } 784617a48c7cSmrg 78475f5b92ffSmrg # Now, create the wrapper script for func_source use: 78485f5b92ffSmrg func_ltwrapper_scriptname $cwrapper 78495f5b92ffSmrg $RM $func_ltwrapper_scriptname_result 78505f5b92ffSmrg trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 78515f5b92ffSmrg $opt_dry_run || { 78525f5b92ffSmrg # note: this script will not be executed, so do not chmod. 78535f5b92ffSmrg if test "x$build" = "x$host" ; then 78545f5b92ffSmrg $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result 78555f5b92ffSmrg else 78565f5b92ffSmrg func_emit_wrapper no > $func_ltwrapper_scriptname_result 78575f5b92ffSmrg fi 78585f5b92ffSmrg } 78595f5b92ffSmrg ;; 78605f5b92ffSmrg * ) 78615f5b92ffSmrg $RM $output 78625f5b92ffSmrg trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 786317a48c7cSmrg 78645f5b92ffSmrg func_emit_wrapper no > $output 78655f5b92ffSmrg chmod +x $output 78665f5b92ffSmrg ;; 78675f5b92ffSmrg esac 78685f5b92ffSmrg } 78695f5b92ffSmrg exit $EXIT_SUCCESS 78705f5b92ffSmrg ;; 78715f5b92ffSmrg esac 787217a48c7cSmrg 78735f5b92ffSmrg # See if we need to build an old-fashioned archive. 78745f5b92ffSmrg for oldlib in $oldlibs; do 787517a48c7cSmrg 78765f5b92ffSmrg if test "$build_libtool_libs" = convenience; then 78775f5b92ffSmrg oldobjs="$libobjs_save $symfileobj" 78785f5b92ffSmrg addlibs="$convenience" 78795f5b92ffSmrg build_libtool_libs=no 78805f5b92ffSmrg else 78815f5b92ffSmrg if test "$build_libtool_libs" = module; then 78825f5b92ffSmrg oldobjs="$libobjs_save" 78835f5b92ffSmrg build_libtool_libs=no 78845f5b92ffSmrg else 78855f5b92ffSmrg oldobjs="$old_deplibs $non_pic_objects" 78865f5b92ffSmrg if test "$preload" = yes && test -f "$symfileobj"; then 78875f5b92ffSmrg oldobjs="$oldobjs $symfileobj" 78885f5b92ffSmrg fi 78895f5b92ffSmrg fi 78905f5b92ffSmrg addlibs="$old_convenience" 789117a48c7cSmrg fi 789217a48c7cSmrg 78935f5b92ffSmrg if test -n "$addlibs"; then 78945f5b92ffSmrg gentop="$output_objdir/${outputname}x" 78955f5b92ffSmrg generated="$generated $gentop" 789617a48c7cSmrg 78975f5b92ffSmrg func_extract_archives $gentop $addlibs 78985f5b92ffSmrg oldobjs="$oldobjs $func_extract_archives_result" 78995f5b92ffSmrg fi 790017a48c7cSmrg 79015f5b92ffSmrg # Do each command in the archive commands. 79025f5b92ffSmrg if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then 79035f5b92ffSmrg cmds=$old_archive_from_new_cmds 79045f5b92ffSmrg else 790517a48c7cSmrg 79065f5b92ffSmrg # Add any objects from preloaded convenience libraries 79075f5b92ffSmrg if test -n "$dlprefiles"; then 79085f5b92ffSmrg gentop="$output_objdir/${outputname}x" 79095f5b92ffSmrg generated="$generated $gentop" 791017a48c7cSmrg 79115f5b92ffSmrg func_extract_archives $gentop $dlprefiles 79125f5b92ffSmrg oldobjs="$oldobjs $func_extract_archives_result" 79135f5b92ffSmrg fi 791417a48c7cSmrg 79155f5b92ffSmrg # POSIX demands no paths to be encoded in archives. We have 79165f5b92ffSmrg # to avoid creating archives with duplicate basenames if we 79175f5b92ffSmrg # might have to extract them afterwards, e.g., when creating a 79185f5b92ffSmrg # static archive out of a convenience library, or when linking 79195f5b92ffSmrg # the entirety of a libtool archive into another (currently 79205f5b92ffSmrg # not supported by libtool). 79215f5b92ffSmrg if (for obj in $oldobjs 79225f5b92ffSmrg do 79235f5b92ffSmrg func_basename "$obj" 79245f5b92ffSmrg $ECHO "$func_basename_result" 79255f5b92ffSmrg done | sort | sort -uc >/dev/null 2>&1); then 79265f5b92ffSmrg : 79275f5b92ffSmrg else 79285f5b92ffSmrg $ECHO "copying selected object files to avoid basename conflicts..." 79295f5b92ffSmrg gentop="$output_objdir/${outputname}x" 79305f5b92ffSmrg generated="$generated $gentop" 79315f5b92ffSmrg func_mkdir_p "$gentop" 79325f5b92ffSmrg save_oldobjs=$oldobjs 79335f5b92ffSmrg oldobjs= 79345f5b92ffSmrg counter=1 79355f5b92ffSmrg for obj in $save_oldobjs 79365f5b92ffSmrg do 79375f5b92ffSmrg func_basename "$obj" 79385f5b92ffSmrg objbase="$func_basename_result" 79395f5b92ffSmrg case " $oldobjs " in 79405f5b92ffSmrg " ") oldobjs=$obj ;; 79415f5b92ffSmrg *[\ /]"$objbase "*) 79425f5b92ffSmrg while :; do 79435f5b92ffSmrg # Make sure we don't pick an alternate name that also 79445f5b92ffSmrg # overlaps. 79455f5b92ffSmrg newobj=lt$counter-$objbase 79465f5b92ffSmrg func_arith $counter + 1 79475f5b92ffSmrg counter=$func_arith_result 79485f5b92ffSmrg case " $oldobjs " in 79495f5b92ffSmrg *[\ /]"$newobj "*) ;; 79505f5b92ffSmrg *) if test ! -f "$gentop/$newobj"; then break; fi ;; 79515f5b92ffSmrg esac 79525f5b92ffSmrg done 79535f5b92ffSmrg func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" 79545f5b92ffSmrg oldobjs="$oldobjs $gentop/$newobj" 79555f5b92ffSmrg ;; 79565f5b92ffSmrg *) oldobjs="$oldobjs $obj" ;; 79575f5b92ffSmrg esac 795817a48c7cSmrg done 795917a48c7cSmrg fi 79605f5b92ffSmrg eval cmds=\"$old_archive_cmds\" 796117a48c7cSmrg 79625f5b92ffSmrg func_len " $cmds" 79635f5b92ffSmrg len=$func_len_result 79645f5b92ffSmrg if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then 79655f5b92ffSmrg cmds=$old_archive_cmds 79665f5b92ffSmrg else 79675f5b92ffSmrg # the command line is too long to link in one step, link in parts 79685f5b92ffSmrg func_verbose "using piecewise archive linking..." 79695f5b92ffSmrg save_RANLIB=$RANLIB 79705f5b92ffSmrg RANLIB=: 79715f5b92ffSmrg objlist= 79725f5b92ffSmrg concat_cmds= 79735f5b92ffSmrg save_oldobjs=$oldobjs 79745f5b92ffSmrg oldobjs= 79755f5b92ffSmrg # Is there a better way of finding the last object in the list? 79765f5b92ffSmrg for obj in $save_oldobjs 79775f5b92ffSmrg do 79785f5b92ffSmrg last_oldobj=$obj 79795f5b92ffSmrg done 79805f5b92ffSmrg eval test_cmds=\"$old_archive_cmds\" 79815f5b92ffSmrg func_len " $test_cmds" 79825f5b92ffSmrg len0=$func_len_result 79835f5b92ffSmrg len=$len0 79845f5b92ffSmrg for obj in $save_oldobjs 79855f5b92ffSmrg do 79865f5b92ffSmrg func_len " $obj" 79875f5b92ffSmrg func_arith $len + $func_len_result 79885f5b92ffSmrg len=$func_arith_result 79895f5b92ffSmrg func_append objlist " $obj" 79905f5b92ffSmrg if test "$len" -lt "$max_cmd_len"; then 79915f5b92ffSmrg : 79925f5b92ffSmrg else 79935f5b92ffSmrg # the above command should be used before it gets too long 79945f5b92ffSmrg oldobjs=$objlist 79955f5b92ffSmrg if test "$obj" = "$last_oldobj" ; then 79965f5b92ffSmrg RANLIB=$save_RANLIB 79975f5b92ffSmrg fi 79985f5b92ffSmrg test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 79995f5b92ffSmrg eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" 80005f5b92ffSmrg objlist= 80015f5b92ffSmrg len=$len0 80025f5b92ffSmrg fi 80035f5b92ffSmrg done 80045f5b92ffSmrg RANLIB=$save_RANLIB 80055f5b92ffSmrg oldobjs=$objlist 80065f5b92ffSmrg if test "X$oldobjs" = "X" ; then 80075f5b92ffSmrg eval cmds=\"\$concat_cmds\" 80085f5b92ffSmrg else 80095f5b92ffSmrg eval cmds=\"\$concat_cmds~\$old_archive_cmds\" 80105f5b92ffSmrg fi 80115f5b92ffSmrg fi 80125f5b92ffSmrg fi 80135f5b92ffSmrg func_execute_cmds "$cmds" 'exit $?' 801417a48c7cSmrg done 801517a48c7cSmrg 80165f5b92ffSmrg test -n "$generated" && \ 80175f5b92ffSmrg func_show_eval "${RM}r$generated" 801817a48c7cSmrg 80195f5b92ffSmrg # Now create the libtool archive. 80205f5b92ffSmrg case $output in 80215f5b92ffSmrg *.la) 80225f5b92ffSmrg old_library= 80235f5b92ffSmrg test "$build_old_libs" = yes && old_library="$libname.$libext" 80245f5b92ffSmrg func_verbose "creating $output" 802517a48c7cSmrg 80265f5b92ffSmrg # Preserve any variables that may affect compiler behavior 80275f5b92ffSmrg for var in $variables_saved_for_relink; do 80285f5b92ffSmrg if eval test -z \"\${$var+set}\"; then 80295f5b92ffSmrg relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" 80305f5b92ffSmrg elif eval var_value=\$$var; test -z "$var_value"; then 80315f5b92ffSmrg relink_command="$var=; export $var; $relink_command" 803217a48c7cSmrg else 80335f5b92ffSmrg func_quote_for_eval "$var_value" 80345f5b92ffSmrg relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" 803517a48c7cSmrg fi 80365f5b92ffSmrg done 80375f5b92ffSmrg # Quote the link command for shipping. 80385f5b92ffSmrg relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" 80395f5b92ffSmrg relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"` 80405f5b92ffSmrg if test "$hardcode_automatic" = yes ; then 80415f5b92ffSmrg relink_command= 80425f5b92ffSmrg fi 804317a48c7cSmrg 80445f5b92ffSmrg # Only create the output if not a dry run. 80455f5b92ffSmrg $opt_dry_run || { 80465f5b92ffSmrg for installed in no yes; do 80475f5b92ffSmrg if test "$installed" = yes; then 80485f5b92ffSmrg if test -z "$install_libdir"; then 80495f5b92ffSmrg break 80505f5b92ffSmrg fi 80515f5b92ffSmrg output="$output_objdir/$outputname"i 80525f5b92ffSmrg # Replace all uninstalled libtool libraries with the installed ones 80535f5b92ffSmrg newdependency_libs= 80545f5b92ffSmrg for deplib in $dependency_libs; do 80555f5b92ffSmrg case $deplib in 80565f5b92ffSmrg *.la) 80575f5b92ffSmrg func_basename "$deplib" 80585f5b92ffSmrg name="$func_basename_result" 80595f5b92ffSmrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 80605f5b92ffSmrg test -z "$libdir" && \ 80615f5b92ffSmrg func_fatal_error "\`$deplib' is not a valid libtool archive" 80625f5b92ffSmrg newdependency_libs="$newdependency_libs $libdir/$name" 80635f5b92ffSmrg ;; 80645f5b92ffSmrg *) newdependency_libs="$newdependency_libs $deplib" ;; 80655f5b92ffSmrg esac 80665f5b92ffSmrg done 80675f5b92ffSmrg dependency_libs="$newdependency_libs" 80685f5b92ffSmrg newdlfiles= 80695f5b92ffSmrg 80705f5b92ffSmrg for lib in $dlfiles; do 80715f5b92ffSmrg case $lib in 80725f5b92ffSmrg *.la) 80735f5b92ffSmrg func_basename "$lib" 80745f5b92ffSmrg name="$func_basename_result" 80755f5b92ffSmrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 80765f5b92ffSmrg test -z "$libdir" && \ 80775f5b92ffSmrg func_fatal_error "\`$lib' is not a valid libtool archive" 80785f5b92ffSmrg newdlfiles="$newdlfiles $libdir/$name" 80795f5b92ffSmrg ;; 80805f5b92ffSmrg *) newdlfiles="$newdlfiles $lib" ;; 80815f5b92ffSmrg esac 80825f5b92ffSmrg done 80835f5b92ffSmrg dlfiles="$newdlfiles" 80845f5b92ffSmrg newdlprefiles= 80855f5b92ffSmrg for lib in $dlprefiles; do 80865f5b92ffSmrg case $lib in 80875f5b92ffSmrg *.la) 80885f5b92ffSmrg # Only pass preopened files to the pseudo-archive (for 80895f5b92ffSmrg # eventual linking with the app. that links it) if we 80905f5b92ffSmrg # didn't already link the preopened objects directly into 80915f5b92ffSmrg # the library: 80925f5b92ffSmrg func_basename "$lib" 80935f5b92ffSmrg name="$func_basename_result" 80945f5b92ffSmrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 80955f5b92ffSmrg test -z "$libdir" && \ 80965f5b92ffSmrg func_fatal_error "\`$lib' is not a valid libtool archive" 80975f5b92ffSmrg newdlprefiles="$newdlprefiles $libdir/$name" 80985f5b92ffSmrg ;; 80995f5b92ffSmrg esac 81005f5b92ffSmrg done 81015f5b92ffSmrg dlprefiles="$newdlprefiles" 81025f5b92ffSmrg else 81035f5b92ffSmrg newdlfiles= 81045f5b92ffSmrg for lib in $dlfiles; do 81055f5b92ffSmrg case $lib in 81065f5b92ffSmrg [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 81075f5b92ffSmrg *) abs=`pwd`"/$lib" ;; 81085f5b92ffSmrg esac 81095f5b92ffSmrg newdlfiles="$newdlfiles $abs" 81105f5b92ffSmrg done 81115f5b92ffSmrg dlfiles="$newdlfiles" 81125f5b92ffSmrg newdlprefiles= 81135f5b92ffSmrg for lib in $dlprefiles; do 81145f5b92ffSmrg case $lib in 81155f5b92ffSmrg [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 81165f5b92ffSmrg *) abs=`pwd`"/$lib" ;; 81175f5b92ffSmrg esac 81185f5b92ffSmrg newdlprefiles="$newdlprefiles $abs" 81195f5b92ffSmrg done 81205f5b92ffSmrg dlprefiles="$newdlprefiles" 81215f5b92ffSmrg fi 81225f5b92ffSmrg $RM $output 81235f5b92ffSmrg # place dlname in correct position for cygwin 81245f5b92ffSmrg tdlname=$dlname 81255f5b92ffSmrg case $host,$output,$installed,$module,$dlname in 81265f5b92ffSmrg *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; 81275f5b92ffSmrg esac 81285f5b92ffSmrg $ECHO > $output "\ 81295f5b92ffSmrg# $outputname - a libtool library file 81305f5b92ffSmrg# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 81315f5b92ffSmrg# 81325f5b92ffSmrg# Please DO NOT delete this file! 81335f5b92ffSmrg# It is necessary for linking the library. 813417a48c7cSmrg 81355f5b92ffSmrg# The name that we can dlopen(3). 81365f5b92ffSmrgdlname='$tdlname' 813717a48c7cSmrg 81385f5b92ffSmrg# Names of this library. 81395f5b92ffSmrglibrary_names='$library_names' 814017a48c7cSmrg 81415f5b92ffSmrg# The name of the static archive. 81425f5b92ffSmrgold_library='$old_library' 814317a48c7cSmrg 81445f5b92ffSmrg# Linker flags that can not go in dependency_libs. 81455f5b92ffSmrginherited_linker_flags='$new_inherited_linker_flags' 814617a48c7cSmrg 81475f5b92ffSmrg# Libraries that this one depends upon. 81485f5b92ffSmrgdependency_libs='$dependency_libs' 814917a48c7cSmrg 81505f5b92ffSmrg# Names of additional weak libraries provided by this library 81515f5b92ffSmrgweak_library_names='$weak_libs' 815217a48c7cSmrg 81535f5b92ffSmrg# Version information for $libname. 81545f5b92ffSmrgcurrent=$current 81555f5b92ffSmrgage=$age 81565f5b92ffSmrgrevision=$revision 815717a48c7cSmrg 81585f5b92ffSmrg# Is this an already installed library? 81595f5b92ffSmrginstalled=$installed 816017a48c7cSmrg 81615f5b92ffSmrg# Should we warn about portability when linking against -modules? 81625f5b92ffSmrgshouldnotlink=$module 816317a48c7cSmrg 81645f5b92ffSmrg# Files to dlopen/dlpreopen 81655f5b92ffSmrgdlopen='$dlfiles' 81665f5b92ffSmrgdlpreopen='$dlprefiles' 816717a48c7cSmrg 81685f5b92ffSmrg# Directory that this library needs to be installed in: 81695f5b92ffSmrglibdir='$install_libdir'" 81705f5b92ffSmrg if test "$installed" = no && test "$need_relink" = yes; then 81715f5b92ffSmrg $ECHO >> $output "\ 81725f5b92ffSmrgrelink_command=\"$relink_command\"" 81735f5b92ffSmrg fi 81745f5b92ffSmrg done 81755f5b92ffSmrg } 817617a48c7cSmrg 81775f5b92ffSmrg # Do a symbolic link so that the libtool archive can be found in 81785f5b92ffSmrg # LD_LIBRARY_PATH before the program is installed. 81795f5b92ffSmrg func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' 81805f5b92ffSmrg ;; 81815f5b92ffSmrg esac 81825f5b92ffSmrg exit $EXIT_SUCCESS 81835f5b92ffSmrg} 818417a48c7cSmrg 81855f5b92ffSmrg{ test "$mode" = link || test "$mode" = relink; } && 81865f5b92ffSmrg func_mode_link ${1+"$@"} 81878e0ed500Smrg 818817a48c7cSmrg 81895f5b92ffSmrg# func_mode_uninstall arg... 81905f5b92ffSmrgfunc_mode_uninstall () 81915f5b92ffSmrg{ 81925f5b92ffSmrg $opt_debug 81935f5b92ffSmrg RM="$nonopt" 819417a48c7cSmrg files= 819517a48c7cSmrg rmforce= 819617a48c7cSmrg exit_status=0 819717a48c7cSmrg 819817a48c7cSmrg # This variable tells wrapper scripts just to set variables rather 819917a48c7cSmrg # than running their programs. 820017a48c7cSmrg libtool_install_magic="$magic" 820117a48c7cSmrg 820217a48c7cSmrg for arg 820317a48c7cSmrg do 820417a48c7cSmrg case $arg in 82055f5b92ffSmrg -f) RM="$RM $arg"; rmforce=yes ;; 82065f5b92ffSmrg -*) RM="$RM $arg" ;; 820717a48c7cSmrg *) files="$files $arg" ;; 820817a48c7cSmrg esac 820917a48c7cSmrg done 821017a48c7cSmrg 82115f5b92ffSmrg test -z "$RM" && \ 82125f5b92ffSmrg func_fatal_help "you must specify an RM program" 821317a48c7cSmrg 821417a48c7cSmrg rmdirs= 821517a48c7cSmrg 821617a48c7cSmrg origobjdir="$objdir" 821717a48c7cSmrg for file in $files; do 82185f5b92ffSmrg func_dirname "$file" "" "." 82195f5b92ffSmrg dir="$func_dirname_result" 82205f5b92ffSmrg if test "X$dir" = X.; then 822117a48c7cSmrg objdir="$origobjdir" 822217a48c7cSmrg else 822317a48c7cSmrg objdir="$dir/$origobjdir" 822417a48c7cSmrg fi 82255f5b92ffSmrg func_basename "$file" 82265f5b92ffSmrg name="$func_basename_result" 822717a48c7cSmrg test "$mode" = uninstall && objdir="$dir" 822817a48c7cSmrg 822917a48c7cSmrg # Remember objdir for removal later, being careful to avoid duplicates 823017a48c7cSmrg if test "$mode" = clean; then 823117a48c7cSmrg case " $rmdirs " in 823217a48c7cSmrg *" $objdir "*) ;; 823317a48c7cSmrg *) rmdirs="$rmdirs $objdir" ;; 823417a48c7cSmrg esac 823517a48c7cSmrg fi 823617a48c7cSmrg 823717a48c7cSmrg # Don't error if the file doesn't exist and rm -f was used. 82385f5b92ffSmrg if { test -L "$file"; } >/dev/null 2>&1 || 82395f5b92ffSmrg { test -h "$file"; } >/dev/null 2>&1 || 82405f5b92ffSmrg test -f "$file"; then 824117a48c7cSmrg : 824217a48c7cSmrg elif test -d "$file"; then 824317a48c7cSmrg exit_status=1 824417a48c7cSmrg continue 824517a48c7cSmrg elif test "$rmforce" = yes; then 824617a48c7cSmrg continue 824717a48c7cSmrg fi 824817a48c7cSmrg 824917a48c7cSmrg rmfiles="$file" 825017a48c7cSmrg 825117a48c7cSmrg case $name in 825217a48c7cSmrg *.la) 825317a48c7cSmrg # Possibly a libtool archive, so verify it. 82545f5b92ffSmrg if func_lalib_p "$file"; then 82555f5b92ffSmrg func_source $dir/$name 825617a48c7cSmrg 825717a48c7cSmrg # Delete the libtool libraries and symlinks. 825817a48c7cSmrg for n in $library_names; do 825917a48c7cSmrg rmfiles="$rmfiles $objdir/$n" 826017a48c7cSmrg done 826117a48c7cSmrg test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" 826217a48c7cSmrg 826317a48c7cSmrg case "$mode" in 826417a48c7cSmrg clean) 826517a48c7cSmrg case " $library_names " in 826617a48c7cSmrg # " " in the beginning catches empty $dlname 826717a48c7cSmrg *" $dlname "*) ;; 826817a48c7cSmrg *) rmfiles="$rmfiles $objdir/$dlname" ;; 826917a48c7cSmrg esac 82705f5b92ffSmrg test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" 827117a48c7cSmrg ;; 827217a48c7cSmrg uninstall) 827317a48c7cSmrg if test -n "$library_names"; then 827417a48c7cSmrg # Do each command in the postuninstall commands. 82755f5b92ffSmrg func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' 827617a48c7cSmrg fi 827717a48c7cSmrg 827817a48c7cSmrg if test -n "$old_library"; then 827917a48c7cSmrg # Do each command in the old_postuninstall commands. 82805f5b92ffSmrg func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' 828117a48c7cSmrg fi 828217a48c7cSmrg # FIXME: should reinstall the best remaining shared library. 828317a48c7cSmrg ;; 828417a48c7cSmrg esac 828517a48c7cSmrg fi 828617a48c7cSmrg ;; 828717a48c7cSmrg 828817a48c7cSmrg *.lo) 828917a48c7cSmrg # Possibly a libtool object, so verify it. 82905f5b92ffSmrg if func_lalib_p "$file"; then 829117a48c7cSmrg 829217a48c7cSmrg # Read the .lo file 82935f5b92ffSmrg func_source $dir/$name 829417a48c7cSmrg 829517a48c7cSmrg # Add PIC object to the list of files to remove. 82965f5b92ffSmrg if test -n "$pic_object" && 82975f5b92ffSmrg test "$pic_object" != none; then 829817a48c7cSmrg rmfiles="$rmfiles $dir/$pic_object" 829917a48c7cSmrg fi 830017a48c7cSmrg 830117a48c7cSmrg # Add non-PIC object to the list of files to remove. 83025f5b92ffSmrg if test -n "$non_pic_object" && 83035f5b92ffSmrg test "$non_pic_object" != none; then 830417a48c7cSmrg rmfiles="$rmfiles $dir/$non_pic_object" 830517a48c7cSmrg fi 830617a48c7cSmrg fi 830717a48c7cSmrg ;; 830817a48c7cSmrg 830917a48c7cSmrg *) 831017a48c7cSmrg if test "$mode" = clean ; then 831117a48c7cSmrg noexename=$name 831217a48c7cSmrg case $file in 831317a48c7cSmrg *.exe) 83145f5b92ffSmrg func_stripname '' '.exe' "$file" 83155f5b92ffSmrg file=$func_stripname_result 83165f5b92ffSmrg func_stripname '' '.exe' "$name" 83175f5b92ffSmrg noexename=$func_stripname_result 831817a48c7cSmrg # $file with .exe has already been added to rmfiles, 831917a48c7cSmrg # add $file without .exe 832017a48c7cSmrg rmfiles="$rmfiles $file" 832117a48c7cSmrg ;; 832217a48c7cSmrg esac 832317a48c7cSmrg # Do a test to see if this is a libtool program. 83245f5b92ffSmrg if func_ltwrapper_p "$file"; then 83255f5b92ffSmrg if func_ltwrapper_executable_p "$file"; then 83265f5b92ffSmrg func_ltwrapper_scriptname "$file" 83275f5b92ffSmrg relink_command= 83285f5b92ffSmrg func_source $func_ltwrapper_scriptname_result 83295f5b92ffSmrg rmfiles="$rmfiles $func_ltwrapper_scriptname_result" 83305f5b92ffSmrg else 83315f5b92ffSmrg relink_command= 83325f5b92ffSmrg func_source $dir/$noexename 83335f5b92ffSmrg fi 833417a48c7cSmrg 833517a48c7cSmrg # note $name still contains .exe if it was in $file originally 833617a48c7cSmrg # as does the version of $file that was added into $rmfiles 833717a48c7cSmrg rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" 833817a48c7cSmrg if test "$fast_install" = yes && test -n "$relink_command"; then 833917a48c7cSmrg rmfiles="$rmfiles $objdir/lt-$name" 834017a48c7cSmrg fi 834117a48c7cSmrg if test "X$noexename" != "X$name" ; then 834217a48c7cSmrg rmfiles="$rmfiles $objdir/lt-${noexename}.c" 834317a48c7cSmrg fi 834417a48c7cSmrg fi 834517a48c7cSmrg fi 834617a48c7cSmrg ;; 834717a48c7cSmrg esac 83485f5b92ffSmrg func_show_eval "$RM $rmfiles" 'exit_status=1' 834917a48c7cSmrg done 835017a48c7cSmrg objdir="$origobjdir" 835117a48c7cSmrg 835217a48c7cSmrg # Try to remove the ${objdir}s in the directories where we deleted files 835317a48c7cSmrg for dir in $rmdirs; do 835417a48c7cSmrg if test -d "$dir"; then 83555f5b92ffSmrg func_show_eval "rmdir $dir >/dev/null 2>&1" 835617a48c7cSmrg fi 835717a48c7cSmrg done 835817a48c7cSmrg 835917a48c7cSmrg exit $exit_status 83605f5b92ffSmrg} 836117a48c7cSmrg 83625f5b92ffSmrg{ test "$mode" = uninstall || test "$mode" = clean; } && 83635f5b92ffSmrg func_mode_uninstall ${1+"$@"} 836417a48c7cSmrg 83655f5b92ffSmrgtest -z "$mode" && { 83665f5b92ffSmrg help="$generic_help" 83675f5b92ffSmrg func_fatal_help "you must specify a MODE" 83685f5b92ffSmrg} 83695f5b92ffSmrg 83705f5b92ffSmrgtest -z "$exec_cmd" && \ 83715f5b92ffSmrg func_fatal_help "invalid operation mode \`$mode'" 837217a48c7cSmrg 837317a48c7cSmrgif test -n "$exec_cmd"; then 83745f5b92ffSmrg eval exec "$exec_cmd" 837517a48c7cSmrg exit $EXIT_FAILURE 837617a48c7cSmrgfi 837717a48c7cSmrg 83785f5b92ffSmrgexit $exit_status 837917a48c7cSmrg 838017a48c7cSmrg 838117a48c7cSmrg# The TAGs below are defined such that we never get into a situation 838217a48c7cSmrg# in which we disable both kinds of libraries. Given conflicting 838317a48c7cSmrg# choices, we go for a static library, that is the most portable, 838417a48c7cSmrg# since we can't tell whether shared libraries were disabled because 838517a48c7cSmrg# the user asked for that or because the platform doesn't support 838617a48c7cSmrg# them. This is particularly important on AIX, because we don't 838717a48c7cSmrg# support having both static and shared libraries enabled at the same 838817a48c7cSmrg# time on that platform, so we default to a shared-only configuration. 838917a48c7cSmrg# If a disable-shared tag is given, we'll fallback to a static-only 839017a48c7cSmrg# configuration. But we'll never go from static-only to shared-only. 839117a48c7cSmrg 839217a48c7cSmrg# ### BEGIN LIBTOOL TAG CONFIG: disable-shared 83935f5b92ffSmrgbuild_libtool_libs=no 83945f5b92ffSmrgbuild_old_libs=yes 839517a48c7cSmrg# ### END LIBTOOL TAG CONFIG: disable-shared 839617a48c7cSmrg 839717a48c7cSmrg# ### BEGIN LIBTOOL TAG CONFIG: disable-static 83985f5b92ffSmrgbuild_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` 839917a48c7cSmrg# ### END LIBTOOL TAG CONFIG: disable-static 840017a48c7cSmrg 840117a48c7cSmrg# Local Variables: 840217a48c7cSmrg# mode:shell-script 840317a48c7cSmrg# sh-indentation:2 840417a48c7cSmrg# End: 84055f5b92ffSmrg# vi:sw=2 84065f5b92ffSmrg 8407