ltmain.sh revision de2362d3
1de2362d3Smrg 2de2362d3Smrg# libtool (GNU libtool) 2.4.2 3de2362d3Smrg# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 4de2362d3Smrg 5de2362d3Smrg# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 6de2362d3Smrg# 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. 7de2362d3Smrg# This is free software; see the source for copying conditions. There is NO 8de2362d3Smrg# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 9de2362d3Smrg 10de2362d3Smrg# GNU Libtool is free software; you can redistribute it and/or modify 11de2362d3Smrg# it under the terms of the GNU General Public License as published by 12de2362d3Smrg# the Free Software Foundation; either version 2 of the License, or 13de2362d3Smrg# (at your option) any later version. 14de2362d3Smrg# 15de2362d3Smrg# As a special exception to the GNU General Public License, 16de2362d3Smrg# if you distribute this file as part of a program or library that 17de2362d3Smrg# is built using GNU Libtool, you may include this file under the 18de2362d3Smrg# same distribution terms that you use for the rest of that program. 19de2362d3Smrg# 20de2362d3Smrg# GNU Libtool is distributed in the hope that it will be useful, but 21de2362d3Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of 22de2362d3Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 23de2362d3Smrg# General Public License for more details. 24de2362d3Smrg# 25de2362d3Smrg# You should have received a copy of the GNU General Public License 26de2362d3Smrg# along with GNU Libtool; see the file COPYING. If not, a copy 27de2362d3Smrg# can be downloaded from http://www.gnu.org/licenses/gpl.html, 28de2362d3Smrg# or obtained by writing to the Free Software Foundation, Inc., 29de2362d3Smrg# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 30de2362d3Smrg 31de2362d3Smrg# Usage: $progname [OPTION]... [MODE-ARG]... 32de2362d3Smrg# 33de2362d3Smrg# Provide generalized library-building support services. 34de2362d3Smrg# 35de2362d3Smrg# --config show all configuration variables 36de2362d3Smrg# --debug enable verbose shell tracing 37de2362d3Smrg# -n, --dry-run display commands without modifying any files 38de2362d3Smrg# --features display basic configuration information and exit 39de2362d3Smrg# --mode=MODE use operation mode MODE 40de2362d3Smrg# --preserve-dup-deps don't remove duplicate dependency libraries 41de2362d3Smrg# --quiet, --silent don't print informational messages 42de2362d3Smrg# --no-quiet, --no-silent 43de2362d3Smrg# print informational messages (default) 44de2362d3Smrg# --no-warn don't display warning messages 45de2362d3Smrg# --tag=TAG use configuration variables from tag TAG 46de2362d3Smrg# -v, --verbose print more informational messages than default 47de2362d3Smrg# --no-verbose don't print the extra informational messages 48de2362d3Smrg# --version print version information 49de2362d3Smrg# -h, --help, --help-all print short, long, or detailed help message 50de2362d3Smrg# 51de2362d3Smrg# MODE must be one of the following: 52de2362d3Smrg# 53de2362d3Smrg# clean remove files from the build directory 54de2362d3Smrg# compile compile a source file into a libtool object 55de2362d3Smrg# execute automatically set library path, then run a program 56de2362d3Smrg# finish complete the installation of libtool libraries 57de2362d3Smrg# install install libraries or executables 58de2362d3Smrg# link create a library or an executable 59de2362d3Smrg# uninstall remove libraries from an installed directory 60de2362d3Smrg# 61de2362d3Smrg# MODE-ARGS vary depending on the MODE. When passed as first option, 62de2362d3Smrg# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that. 63de2362d3Smrg# Try `$progname --help --mode=MODE' for a more detailed description of MODE. 64de2362d3Smrg# 65de2362d3Smrg# When reporting a bug, please describe a test case to reproduce it and 66de2362d3Smrg# include the following information: 67de2362d3Smrg# 68de2362d3Smrg# host-triplet: $host 69de2362d3Smrg# shell: $SHELL 70de2362d3Smrg# compiler: $LTCC 71de2362d3Smrg# compiler flags: $LTCFLAGS 72de2362d3Smrg# linker: $LD (gnu? $with_gnu_ld) 73de2362d3Smrg# $progname: (GNU libtool) 2.4.2 74de2362d3Smrg# automake: $automake_version 75de2362d3Smrg# autoconf: $autoconf_version 76de2362d3Smrg# 77de2362d3Smrg# Report bugs to <bug-libtool@gnu.org>. 78de2362d3Smrg# GNU libtool home page: <http://www.gnu.org/software/libtool/>. 79de2362d3Smrg# General help using GNU software: <http://www.gnu.org/gethelp/>. 80de2362d3Smrg 81de2362d3SmrgPROGRAM=libtool 82de2362d3SmrgPACKAGE=libtool 83de2362d3SmrgVERSION=2.4.2 84de2362d3SmrgTIMESTAMP="" 85de2362d3Smrgpackage_revision=1.3337 86de2362d3Smrg 87de2362d3Smrg# Be Bourne compatible 88de2362d3Smrgif test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then 89de2362d3Smrg emulate sh 90de2362d3Smrg NULLCMD=: 91de2362d3Smrg # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which 92de2362d3Smrg # is contrary to our usage. Disable this feature. 93de2362d3Smrg alias -g '${1+"$@"}'='"$@"' 94de2362d3Smrg setopt NO_GLOB_SUBST 95de2362d3Smrgelse 96de2362d3Smrg case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac 97de2362d3Smrgfi 98de2362d3SmrgBIN_SH=xpg4; export BIN_SH # for Tru64 99de2362d3SmrgDUALCASE=1; export DUALCASE # for MKS sh 100de2362d3Smrg 101de2362d3Smrg# A function that is used when there is no print builtin or printf. 102de2362d3Smrgfunc_fallback_echo () 103de2362d3Smrg{ 104de2362d3Smrg eval 'cat <<_LTECHO_EOF 105de2362d3Smrg$1 106de2362d3Smrg_LTECHO_EOF' 107de2362d3Smrg} 108de2362d3Smrg 109de2362d3Smrg# NLS nuisances: We save the old values to restore during execute mode. 110de2362d3Smrglt_user_locale= 111de2362d3Smrglt_safe_locale= 112de2362d3Smrgfor lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 113de2362d3Smrgdo 114de2362d3Smrg eval "if test \"\${$lt_var+set}\" = set; then 115de2362d3Smrg save_$lt_var=\$$lt_var 116de2362d3Smrg $lt_var=C 117de2362d3Smrg export $lt_var 118de2362d3Smrg lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" 119de2362d3Smrg lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" 120de2362d3Smrg fi" 121de2362d3Smrgdone 122de2362d3SmrgLC_ALL=C 123de2362d3SmrgLANGUAGE=C 124de2362d3Smrgexport LANGUAGE LC_ALL 125de2362d3Smrg 126de2362d3Smrg$lt_unset CDPATH 127de2362d3Smrg 128de2362d3Smrg 129de2362d3Smrg# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh 130de2362d3Smrg# is ksh but when the shell is invoked as "sh" and the current value of 131de2362d3Smrg# the _XPG environment variable is not equal to 1 (one), the special 132de2362d3Smrg# positional parameter $0, within a function call, is the name of the 133de2362d3Smrg# function. 134de2362d3Smrgprogpath="$0" 135de2362d3Smrg 136de2362d3Smrg 137de2362d3Smrg 138de2362d3Smrg: ${CP="cp -f"} 139de2362d3Smrgtest "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'} 140de2362d3Smrg: ${MAKE="make"} 141de2362d3Smrg: ${MKDIR="mkdir"} 142de2362d3Smrg: ${MV="mv -f"} 143de2362d3Smrg: ${RM="rm -f"} 144de2362d3Smrg: ${SHELL="${CONFIG_SHELL-/bin/sh}"} 145de2362d3Smrg: ${Xsed="$SED -e 1s/^X//"} 146de2362d3Smrg 147de2362d3Smrg# Global variables: 148de2362d3SmrgEXIT_SUCCESS=0 149de2362d3SmrgEXIT_FAILURE=1 150de2362d3SmrgEXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. 151de2362d3SmrgEXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. 152de2362d3Smrg 153de2362d3Smrgexit_status=$EXIT_SUCCESS 154de2362d3Smrg 155de2362d3Smrg# Make sure IFS has a sensible default 156de2362d3Smrglt_nl=' 157de2362d3Smrg' 158de2362d3SmrgIFS=" $lt_nl" 159de2362d3Smrg 160de2362d3Smrgdirname="s,/[^/]*$,," 161de2362d3Smrgbasename="s,^.*/,," 162de2362d3Smrg 163de2362d3Smrg# func_dirname file append nondir_replacement 164de2362d3Smrg# Compute the dirname of FILE. If nonempty, add APPEND to the result, 165de2362d3Smrg# otherwise set result to NONDIR_REPLACEMENT. 166de2362d3Smrgfunc_dirname () 167de2362d3Smrg{ 168de2362d3Smrg func_dirname_result=`$ECHO "${1}" | $SED "$dirname"` 169de2362d3Smrg if test "X$func_dirname_result" = "X${1}"; then 170de2362d3Smrg func_dirname_result="${3}" 171de2362d3Smrg else 172de2362d3Smrg func_dirname_result="$func_dirname_result${2}" 173de2362d3Smrg fi 174de2362d3Smrg} # func_dirname may be replaced by extended shell implementation 175de2362d3Smrg 176de2362d3Smrg 177de2362d3Smrg# func_basename file 178de2362d3Smrgfunc_basename () 179de2362d3Smrg{ 180de2362d3Smrg func_basename_result=`$ECHO "${1}" | $SED "$basename"` 181de2362d3Smrg} # func_basename may be replaced by extended shell implementation 182de2362d3Smrg 183de2362d3Smrg 184de2362d3Smrg# func_dirname_and_basename file append nondir_replacement 185de2362d3Smrg# perform func_basename and func_dirname in a single function 186de2362d3Smrg# call: 187de2362d3Smrg# dirname: Compute the dirname of FILE. If nonempty, 188de2362d3Smrg# add APPEND to the result, otherwise set result 189de2362d3Smrg# to NONDIR_REPLACEMENT. 190de2362d3Smrg# value returned in "$func_dirname_result" 191de2362d3Smrg# basename: Compute filename of FILE. 192de2362d3Smrg# value retuned in "$func_basename_result" 193de2362d3Smrg# Implementation must be kept synchronized with func_dirname 194de2362d3Smrg# and func_basename. For efficiency, we do not delegate to 195de2362d3Smrg# those functions but instead duplicate the functionality here. 196de2362d3Smrgfunc_dirname_and_basename () 197de2362d3Smrg{ 198de2362d3Smrg # Extract subdirectory from the argument. 199de2362d3Smrg func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"` 200de2362d3Smrg if test "X$func_dirname_result" = "X${1}"; then 201de2362d3Smrg func_dirname_result="${3}" 202de2362d3Smrg else 203de2362d3Smrg func_dirname_result="$func_dirname_result${2}" 204de2362d3Smrg fi 205de2362d3Smrg func_basename_result=`$ECHO "${1}" | $SED -e "$basename"` 206de2362d3Smrg} # func_dirname_and_basename may be replaced by extended shell implementation 207de2362d3Smrg 208de2362d3Smrg 209de2362d3Smrg# func_stripname prefix suffix name 210de2362d3Smrg# strip PREFIX and SUFFIX off of NAME. 211de2362d3Smrg# PREFIX and SUFFIX must not contain globbing or regex special 212de2362d3Smrg# characters, hashes, percent signs, but SUFFIX may contain a leading 213de2362d3Smrg# dot (in which case that matches only a dot). 214de2362d3Smrg# func_strip_suffix prefix name 215de2362d3Smrgfunc_stripname () 216de2362d3Smrg{ 217de2362d3Smrg case ${2} in 218de2362d3Smrg .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; 219de2362d3Smrg *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; 220de2362d3Smrg esac 221de2362d3Smrg} # func_stripname may be replaced by extended shell implementation 222de2362d3Smrg 223de2362d3Smrg 224de2362d3Smrg# These SED scripts presuppose an absolute path with a trailing slash. 225de2362d3Smrgpathcar='s,^/\([^/]*\).*$,\1,' 226de2362d3Smrgpathcdr='s,^/[^/]*,,' 227de2362d3Smrgremovedotparts=':dotsl 228de2362d3Smrg s@/\./@/@g 229de2362d3Smrg t dotsl 230de2362d3Smrg s,/\.$,/,' 231de2362d3Smrgcollapseslashes='s@/\{1,\}@/@g' 232de2362d3Smrgfinalslash='s,/*$,/,' 233de2362d3Smrg 234de2362d3Smrg# func_normal_abspath PATH 235de2362d3Smrg# Remove doubled-up and trailing slashes, "." path components, 236de2362d3Smrg# and cancel out any ".." path components in PATH after making 237de2362d3Smrg# it an absolute path. 238de2362d3Smrg# value returned in "$func_normal_abspath_result" 239de2362d3Smrgfunc_normal_abspath () 240de2362d3Smrg{ 241de2362d3Smrg # Start from root dir and reassemble the path. 242de2362d3Smrg func_normal_abspath_result= 243de2362d3Smrg func_normal_abspath_tpath=$1 244de2362d3Smrg func_normal_abspath_altnamespace= 245de2362d3Smrg case $func_normal_abspath_tpath in 246de2362d3Smrg "") 247de2362d3Smrg # Empty path, that just means $cwd. 248de2362d3Smrg func_stripname '' '/' "`pwd`" 249de2362d3Smrg func_normal_abspath_result=$func_stripname_result 250de2362d3Smrg return 251de2362d3Smrg ;; 252de2362d3Smrg # The next three entries are used to spot a run of precisely 253de2362d3Smrg # two leading slashes without using negated character classes; 254de2362d3Smrg # we take advantage of case's first-match behaviour. 255de2362d3Smrg ///*) 256de2362d3Smrg # Unusual form of absolute path, do nothing. 257de2362d3Smrg ;; 258de2362d3Smrg //*) 259de2362d3Smrg # Not necessarily an ordinary path; POSIX reserves leading '//' 260de2362d3Smrg # and for example Cygwin uses it to access remote file shares 261de2362d3Smrg # over CIFS/SMB, so we conserve a leading double slash if found. 262de2362d3Smrg func_normal_abspath_altnamespace=/ 263de2362d3Smrg ;; 264de2362d3Smrg /*) 265de2362d3Smrg # Absolute path, do nothing. 266de2362d3Smrg ;; 267de2362d3Smrg *) 268de2362d3Smrg # Relative path, prepend $cwd. 269de2362d3Smrg func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath 270de2362d3Smrg ;; 271de2362d3Smrg esac 272de2362d3Smrg # Cancel out all the simple stuff to save iterations. We also want 273de2362d3Smrg # the path to end with a slash for ease of parsing, so make sure 274de2362d3Smrg # there is one (and only one) here. 275de2362d3Smrg func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ 276de2362d3Smrg -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"` 277de2362d3Smrg while :; do 278de2362d3Smrg # Processed it all yet? 279de2362d3Smrg if test "$func_normal_abspath_tpath" = / ; then 280de2362d3Smrg # If we ascended to the root using ".." the result may be empty now. 281de2362d3Smrg if test -z "$func_normal_abspath_result" ; then 282de2362d3Smrg func_normal_abspath_result=/ 283de2362d3Smrg fi 284de2362d3Smrg break 285de2362d3Smrg fi 286de2362d3Smrg func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ 287de2362d3Smrg -e "$pathcar"` 288de2362d3Smrg func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ 289de2362d3Smrg -e "$pathcdr"` 290de2362d3Smrg # Figure out what to do with it 291de2362d3Smrg case $func_normal_abspath_tcomponent in 292de2362d3Smrg "") 293de2362d3Smrg # Trailing empty path component, ignore it. 294de2362d3Smrg ;; 295de2362d3Smrg ..) 296de2362d3Smrg # Parent dir; strip last assembled component from result. 297de2362d3Smrg func_dirname "$func_normal_abspath_result" 298de2362d3Smrg func_normal_abspath_result=$func_dirname_result 299de2362d3Smrg ;; 300de2362d3Smrg *) 301de2362d3Smrg # Actual path component, append it. 302de2362d3Smrg func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent 303de2362d3Smrg ;; 304de2362d3Smrg esac 305de2362d3Smrg done 306de2362d3Smrg # Restore leading double-slash if one was found on entry. 307de2362d3Smrg func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result 308de2362d3Smrg} 309de2362d3Smrg 310de2362d3Smrg# func_relative_path SRCDIR DSTDIR 311de2362d3Smrg# generates a relative path from SRCDIR to DSTDIR, with a trailing 312de2362d3Smrg# slash if non-empty, suitable for immediately appending a filename 313de2362d3Smrg# without needing to append a separator. 314de2362d3Smrg# value returned in "$func_relative_path_result" 315de2362d3Smrgfunc_relative_path () 316de2362d3Smrg{ 317de2362d3Smrg func_relative_path_result= 318de2362d3Smrg func_normal_abspath "$1" 319de2362d3Smrg func_relative_path_tlibdir=$func_normal_abspath_result 320de2362d3Smrg func_normal_abspath "$2" 321de2362d3Smrg func_relative_path_tbindir=$func_normal_abspath_result 322de2362d3Smrg 323de2362d3Smrg # Ascend the tree starting from libdir 324de2362d3Smrg while :; do 325de2362d3Smrg # check if we have found a prefix of bindir 326de2362d3Smrg case $func_relative_path_tbindir in 327de2362d3Smrg $func_relative_path_tlibdir) 328de2362d3Smrg # found an exact match 329de2362d3Smrg func_relative_path_tcancelled= 330de2362d3Smrg break 331de2362d3Smrg ;; 332de2362d3Smrg $func_relative_path_tlibdir*) 333de2362d3Smrg # found a matching prefix 334de2362d3Smrg func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" 335de2362d3Smrg func_relative_path_tcancelled=$func_stripname_result 336de2362d3Smrg if test -z "$func_relative_path_result"; then 337de2362d3Smrg func_relative_path_result=. 338de2362d3Smrg fi 339de2362d3Smrg break 340de2362d3Smrg ;; 341de2362d3Smrg *) 342de2362d3Smrg func_dirname $func_relative_path_tlibdir 343de2362d3Smrg func_relative_path_tlibdir=${func_dirname_result} 344de2362d3Smrg if test "x$func_relative_path_tlibdir" = x ; then 345de2362d3Smrg # Have to descend all the way to the root! 346de2362d3Smrg func_relative_path_result=../$func_relative_path_result 347de2362d3Smrg func_relative_path_tcancelled=$func_relative_path_tbindir 348de2362d3Smrg break 349de2362d3Smrg fi 350de2362d3Smrg func_relative_path_result=../$func_relative_path_result 351de2362d3Smrg ;; 352de2362d3Smrg esac 353de2362d3Smrg done 354de2362d3Smrg 355de2362d3Smrg # Now calculate path; take care to avoid doubling-up slashes. 356de2362d3Smrg func_stripname '' '/' "$func_relative_path_result" 357de2362d3Smrg func_relative_path_result=$func_stripname_result 358de2362d3Smrg func_stripname '/' '/' "$func_relative_path_tcancelled" 359de2362d3Smrg if test "x$func_stripname_result" != x ; then 360de2362d3Smrg func_relative_path_result=${func_relative_path_result}/${func_stripname_result} 361de2362d3Smrg fi 362de2362d3Smrg 363de2362d3Smrg # Normalisation. If bindir is libdir, return empty string, 364de2362d3Smrg # else relative path ending with a slash; either way, target 365de2362d3Smrg # file name can be directly appended. 366de2362d3Smrg if test ! -z "$func_relative_path_result"; then 367de2362d3Smrg func_stripname './' '' "$func_relative_path_result/" 368de2362d3Smrg func_relative_path_result=$func_stripname_result 369de2362d3Smrg fi 370de2362d3Smrg} 371de2362d3Smrg 372de2362d3Smrg# The name of this program: 373de2362d3Smrgfunc_dirname_and_basename "$progpath" 374de2362d3Smrgprogname=$func_basename_result 375de2362d3Smrg 376de2362d3Smrg# Make sure we have an absolute path for reexecution: 377de2362d3Smrgcase $progpath in 378de2362d3Smrg [\\/]*|[A-Za-z]:\\*) ;; 379de2362d3Smrg *[\\/]*) 380de2362d3Smrg progdir=$func_dirname_result 381de2362d3Smrg progdir=`cd "$progdir" && pwd` 382de2362d3Smrg progpath="$progdir/$progname" 383de2362d3Smrg ;; 384de2362d3Smrg *) 385de2362d3Smrg save_IFS="$IFS" 386de2362d3Smrg IFS=${PATH_SEPARATOR-:} 387de2362d3Smrg for progdir in $PATH; do 388de2362d3Smrg IFS="$save_IFS" 389de2362d3Smrg test -x "$progdir/$progname" && break 390de2362d3Smrg done 391de2362d3Smrg IFS="$save_IFS" 392de2362d3Smrg test -n "$progdir" || progdir=`pwd` 393de2362d3Smrg progpath="$progdir/$progname" 394de2362d3Smrg ;; 395de2362d3Smrgesac 396de2362d3Smrg 397de2362d3Smrg# Sed substitution that helps us do robust quoting. It backslashifies 398de2362d3Smrg# metacharacters that are still active within double-quoted strings. 399de2362d3SmrgXsed="${SED}"' -e 1s/^X//' 400de2362d3Smrgsed_quote_subst='s/\([`"$\\]\)/\\\1/g' 401de2362d3Smrg 402de2362d3Smrg# Same as above, but do not quote variable references. 403de2362d3Smrgdouble_quote_subst='s/\(["`\\]\)/\\\1/g' 404de2362d3Smrg 405de2362d3Smrg# Sed substitution that turns a string into a regex matching for the 406de2362d3Smrg# string literally. 407de2362d3Smrgsed_make_literal_regex='s,[].[^$\\*\/],\\&,g' 408de2362d3Smrg 409de2362d3Smrg# Sed substitution that converts a w32 file name or path 410de2362d3Smrg# which contains forward slashes, into one that contains 411de2362d3Smrg# (escaped) backslashes. A very naive implementation. 412de2362d3Smrglt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' 413de2362d3Smrg 414de2362d3Smrg# Re-`\' parameter expansions in output of double_quote_subst that were 415de2362d3Smrg# `\'-ed in input to the same. If an odd number of `\' preceded a '$' 416de2362d3Smrg# in input to double_quote_subst, that '$' was protected from expansion. 417de2362d3Smrg# Since each input `\' is now two `\'s, look for any number of runs of 418de2362d3Smrg# four `\'s followed by two `\'s and then a '$'. `\' that '$'. 419de2362d3Smrgbs='\\' 420de2362d3Smrgbs2='\\\\' 421de2362d3Smrgbs4='\\\\\\\\' 422de2362d3Smrgdollar='\$' 423de2362d3Smrgsed_double_backslash="\ 424de2362d3Smrg s/$bs4/&\\ 425de2362d3Smrg/g 426de2362d3Smrg s/^$bs2$dollar/$bs&/ 427de2362d3Smrg s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g 428de2362d3Smrg s/\n//g" 429de2362d3Smrg 430de2362d3Smrg# Standard options: 431de2362d3Smrgopt_dry_run=false 432de2362d3Smrgopt_help=false 433de2362d3Smrgopt_quiet=false 434de2362d3Smrgopt_verbose=false 435de2362d3Smrgopt_warning=: 436de2362d3Smrg 437de2362d3Smrg# func_echo arg... 438de2362d3Smrg# Echo program name prefixed message, along with the current mode 439de2362d3Smrg# name if it has been set yet. 440de2362d3Smrgfunc_echo () 441de2362d3Smrg{ 442de2362d3Smrg $ECHO "$progname: ${opt_mode+$opt_mode: }$*" 443de2362d3Smrg} 444de2362d3Smrg 445de2362d3Smrg# func_verbose arg... 446de2362d3Smrg# Echo program name prefixed message in verbose mode only. 447de2362d3Smrgfunc_verbose () 448de2362d3Smrg{ 449de2362d3Smrg $opt_verbose && func_echo ${1+"$@"} 450de2362d3Smrg 451de2362d3Smrg # A bug in bash halts the script if the last line of a function 452de2362d3Smrg # fails when set -e is in force, so we need another command to 453de2362d3Smrg # work around that: 454de2362d3Smrg : 455de2362d3Smrg} 456de2362d3Smrg 457de2362d3Smrg# func_echo_all arg... 458de2362d3Smrg# Invoke $ECHO with all args, space-separated. 459de2362d3Smrgfunc_echo_all () 460de2362d3Smrg{ 461de2362d3Smrg $ECHO "$*" 462de2362d3Smrg} 463de2362d3Smrg 464de2362d3Smrg# func_error arg... 465de2362d3Smrg# Echo program name prefixed message to standard error. 466de2362d3Smrgfunc_error () 467de2362d3Smrg{ 468de2362d3Smrg $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2 469de2362d3Smrg} 470de2362d3Smrg 471de2362d3Smrg# func_warning arg... 472de2362d3Smrg# Echo program name prefixed warning message to standard error. 473de2362d3Smrgfunc_warning () 474de2362d3Smrg{ 475de2362d3Smrg $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2 476de2362d3Smrg 477de2362d3Smrg # bash bug again: 478de2362d3Smrg : 479de2362d3Smrg} 480de2362d3Smrg 481de2362d3Smrg# func_fatal_error arg... 482de2362d3Smrg# Echo program name prefixed message to standard error, and exit. 483de2362d3Smrgfunc_fatal_error () 484de2362d3Smrg{ 485de2362d3Smrg func_error ${1+"$@"} 486de2362d3Smrg exit $EXIT_FAILURE 487de2362d3Smrg} 488de2362d3Smrg 489de2362d3Smrg# func_fatal_help arg... 490de2362d3Smrg# Echo program name prefixed message to standard error, followed by 491de2362d3Smrg# a help hint, and exit. 492de2362d3Smrgfunc_fatal_help () 493de2362d3Smrg{ 494de2362d3Smrg func_error ${1+"$@"} 495de2362d3Smrg func_fatal_error "$help" 496de2362d3Smrg} 497de2362d3Smrghelp="Try \`$progname --help' for more information." ## default 498de2362d3Smrg 499de2362d3Smrg 500de2362d3Smrg# func_grep expression filename 501de2362d3Smrg# Check whether EXPRESSION matches any line of FILENAME, without output. 502de2362d3Smrgfunc_grep () 503de2362d3Smrg{ 504de2362d3Smrg $GREP "$1" "$2" >/dev/null 2>&1 505de2362d3Smrg} 506de2362d3Smrg 507de2362d3Smrg 508de2362d3Smrg# func_mkdir_p directory-path 509de2362d3Smrg# Make sure the entire path to DIRECTORY-PATH is available. 510de2362d3Smrgfunc_mkdir_p () 511de2362d3Smrg{ 512de2362d3Smrg my_directory_path="$1" 513de2362d3Smrg my_dir_list= 514de2362d3Smrg 515de2362d3Smrg if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then 516de2362d3Smrg 517de2362d3Smrg # Protect directory names starting with `-' 518de2362d3Smrg case $my_directory_path in 519de2362d3Smrg -*) my_directory_path="./$my_directory_path" ;; 520de2362d3Smrg esac 521de2362d3Smrg 522de2362d3Smrg # While some portion of DIR does not yet exist... 523de2362d3Smrg while test ! -d "$my_directory_path"; do 524de2362d3Smrg # ...make a list in topmost first order. Use a colon delimited 525de2362d3Smrg # list incase some portion of path contains whitespace. 526de2362d3Smrg my_dir_list="$my_directory_path:$my_dir_list" 527de2362d3Smrg 528de2362d3Smrg # If the last portion added has no slash in it, the list is done 529de2362d3Smrg case $my_directory_path in */*) ;; *) break ;; esac 530de2362d3Smrg 531de2362d3Smrg # ...otherwise throw away the child directory and loop 532de2362d3Smrg my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"` 533de2362d3Smrg done 534de2362d3Smrg my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'` 535de2362d3Smrg 536de2362d3Smrg save_mkdir_p_IFS="$IFS"; IFS=':' 537de2362d3Smrg for my_dir in $my_dir_list; do 538de2362d3Smrg IFS="$save_mkdir_p_IFS" 539de2362d3Smrg # mkdir can fail with a `File exist' error if two processes 540de2362d3Smrg # try to create one of the directories concurrently. Don't 541de2362d3Smrg # stop in that case! 542de2362d3Smrg $MKDIR "$my_dir" 2>/dev/null || : 543de2362d3Smrg done 544de2362d3Smrg IFS="$save_mkdir_p_IFS" 545de2362d3Smrg 546de2362d3Smrg # Bail out if we (or some other process) failed to create a directory. 547de2362d3Smrg test -d "$my_directory_path" || \ 548de2362d3Smrg func_fatal_error "Failed to create \`$1'" 549de2362d3Smrg fi 550de2362d3Smrg} 551de2362d3Smrg 552de2362d3Smrg 553de2362d3Smrg# func_mktempdir [string] 554de2362d3Smrg# Make a temporary directory that won't clash with other running 555de2362d3Smrg# libtool processes, and avoids race conditions if possible. If 556de2362d3Smrg# given, STRING is the basename for that directory. 557de2362d3Smrgfunc_mktempdir () 558de2362d3Smrg{ 559de2362d3Smrg my_template="${TMPDIR-/tmp}/${1-$progname}" 560de2362d3Smrg 561de2362d3Smrg if test "$opt_dry_run" = ":"; then 562de2362d3Smrg # Return a directory name, but don't create it in dry-run mode 563de2362d3Smrg my_tmpdir="${my_template}-$$" 564de2362d3Smrg else 565de2362d3Smrg 566de2362d3Smrg # If mktemp works, use that first and foremost 567de2362d3Smrg my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` 568de2362d3Smrg 569de2362d3Smrg if test ! -d "$my_tmpdir"; then 570de2362d3Smrg # Failing that, at least try and use $RANDOM to avoid a race 571de2362d3Smrg my_tmpdir="${my_template}-${RANDOM-0}$$" 572de2362d3Smrg 573de2362d3Smrg save_mktempdir_umask=`umask` 574de2362d3Smrg umask 0077 575de2362d3Smrg $MKDIR "$my_tmpdir" 576de2362d3Smrg umask $save_mktempdir_umask 577de2362d3Smrg fi 578de2362d3Smrg 579de2362d3Smrg # If we're not in dry-run mode, bomb out on failure 580de2362d3Smrg test -d "$my_tmpdir" || \ 581de2362d3Smrg func_fatal_error "cannot create temporary directory \`$my_tmpdir'" 582de2362d3Smrg fi 583de2362d3Smrg 584de2362d3Smrg $ECHO "$my_tmpdir" 585de2362d3Smrg} 586de2362d3Smrg 587de2362d3Smrg 588de2362d3Smrg# func_quote_for_eval arg 589de2362d3Smrg# Aesthetically quote ARG to be evaled later. 590de2362d3Smrg# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT 591de2362d3Smrg# is double-quoted, suitable for a subsequent eval, whereas 592de2362d3Smrg# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters 593de2362d3Smrg# which are still active within double quotes backslashified. 594de2362d3Smrgfunc_quote_for_eval () 595de2362d3Smrg{ 596de2362d3Smrg case $1 in 597de2362d3Smrg *[\\\`\"\$]*) 598de2362d3Smrg func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;; 599de2362d3Smrg *) 600de2362d3Smrg func_quote_for_eval_unquoted_result="$1" ;; 601de2362d3Smrg esac 602de2362d3Smrg 603de2362d3Smrg case $func_quote_for_eval_unquoted_result in 604de2362d3Smrg # Double-quote args containing shell metacharacters to delay 605de2362d3Smrg # word splitting, command substitution and and variable 606de2362d3Smrg # expansion for a subsequent eval. 607de2362d3Smrg # Many Bourne shells cannot handle close brackets correctly 608de2362d3Smrg # in scan sets, so we specify it separately. 609de2362d3Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 610de2362d3Smrg func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" 611de2362d3Smrg ;; 612de2362d3Smrg *) 613de2362d3Smrg func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" 614de2362d3Smrg esac 615de2362d3Smrg} 616de2362d3Smrg 617de2362d3Smrg 618de2362d3Smrg# func_quote_for_expand arg 619de2362d3Smrg# Aesthetically quote ARG to be evaled later; same as above, 620de2362d3Smrg# but do not quote variable references. 621de2362d3Smrgfunc_quote_for_expand () 622de2362d3Smrg{ 623de2362d3Smrg case $1 in 624de2362d3Smrg *[\\\`\"]*) 625de2362d3Smrg my_arg=`$ECHO "$1" | $SED \ 626de2362d3Smrg -e "$double_quote_subst" -e "$sed_double_backslash"` ;; 627de2362d3Smrg *) 628de2362d3Smrg my_arg="$1" ;; 629de2362d3Smrg esac 630de2362d3Smrg 631de2362d3Smrg case $my_arg in 632de2362d3Smrg # Double-quote args containing shell metacharacters to delay 633de2362d3Smrg # word splitting and command substitution for a subsequent eval. 634de2362d3Smrg # Many Bourne shells cannot handle close brackets correctly 635de2362d3Smrg # in scan sets, so we specify it separately. 636de2362d3Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 637de2362d3Smrg my_arg="\"$my_arg\"" 638de2362d3Smrg ;; 639de2362d3Smrg esac 640de2362d3Smrg 641de2362d3Smrg func_quote_for_expand_result="$my_arg" 642de2362d3Smrg} 643de2362d3Smrg 644de2362d3Smrg 645de2362d3Smrg# func_show_eval cmd [fail_exp] 646de2362d3Smrg# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is 647de2362d3Smrg# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP 648de2362d3Smrg# is given, then evaluate it. 649de2362d3Smrgfunc_show_eval () 650de2362d3Smrg{ 651de2362d3Smrg my_cmd="$1" 652de2362d3Smrg my_fail_exp="${2-:}" 653de2362d3Smrg 654de2362d3Smrg ${opt_silent-false} || { 655de2362d3Smrg func_quote_for_expand "$my_cmd" 656de2362d3Smrg eval "func_echo $func_quote_for_expand_result" 657de2362d3Smrg } 658de2362d3Smrg 659de2362d3Smrg if ${opt_dry_run-false}; then :; else 660de2362d3Smrg eval "$my_cmd" 661de2362d3Smrg my_status=$? 662de2362d3Smrg if test "$my_status" -eq 0; then :; else 663de2362d3Smrg eval "(exit $my_status); $my_fail_exp" 664de2362d3Smrg fi 665de2362d3Smrg fi 666de2362d3Smrg} 667de2362d3Smrg 668de2362d3Smrg 669de2362d3Smrg# func_show_eval_locale cmd [fail_exp] 670de2362d3Smrg# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is 671de2362d3Smrg# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP 672de2362d3Smrg# is given, then evaluate it. Use the saved locale for evaluation. 673de2362d3Smrgfunc_show_eval_locale () 674de2362d3Smrg{ 675de2362d3Smrg my_cmd="$1" 676de2362d3Smrg my_fail_exp="${2-:}" 677de2362d3Smrg 678de2362d3Smrg ${opt_silent-false} || { 679de2362d3Smrg func_quote_for_expand "$my_cmd" 680de2362d3Smrg eval "func_echo $func_quote_for_expand_result" 681de2362d3Smrg } 682de2362d3Smrg 683de2362d3Smrg if ${opt_dry_run-false}; then :; else 684de2362d3Smrg eval "$lt_user_locale 685de2362d3Smrg $my_cmd" 686de2362d3Smrg my_status=$? 687de2362d3Smrg eval "$lt_safe_locale" 688de2362d3Smrg if test "$my_status" -eq 0; then :; else 689de2362d3Smrg eval "(exit $my_status); $my_fail_exp" 690de2362d3Smrg fi 691de2362d3Smrg fi 692de2362d3Smrg} 693de2362d3Smrg 694de2362d3Smrg# func_tr_sh 695de2362d3Smrg# Turn $1 into a string suitable for a shell variable name. 696de2362d3Smrg# Result is stored in $func_tr_sh_result. All characters 697de2362d3Smrg# not in the set a-zA-Z0-9_ are replaced with '_'. Further, 698de2362d3Smrg# if $1 begins with a digit, a '_' is prepended as well. 699de2362d3Smrgfunc_tr_sh () 700de2362d3Smrg{ 701de2362d3Smrg case $1 in 702de2362d3Smrg [0-9]* | *[!a-zA-Z0-9_]*) 703de2362d3Smrg func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'` 704de2362d3Smrg ;; 705de2362d3Smrg * ) 706de2362d3Smrg func_tr_sh_result=$1 707de2362d3Smrg ;; 708de2362d3Smrg esac 709de2362d3Smrg} 710de2362d3Smrg 711de2362d3Smrg 712de2362d3Smrg# func_version 713de2362d3Smrg# Echo version message to standard output and exit. 714de2362d3Smrgfunc_version () 715de2362d3Smrg{ 716de2362d3Smrg $opt_debug 717de2362d3Smrg 718de2362d3Smrg $SED -n '/(C)/!b go 719de2362d3Smrg :more 720de2362d3Smrg /\./!{ 721de2362d3Smrg N 722de2362d3Smrg s/\n# / / 723de2362d3Smrg b more 724de2362d3Smrg } 725de2362d3Smrg :go 726de2362d3Smrg /^# '$PROGRAM' (GNU /,/# warranty; / { 727de2362d3Smrg s/^# // 728de2362d3Smrg s/^# *$// 729de2362d3Smrg s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ 730de2362d3Smrg p 731de2362d3Smrg }' < "$progpath" 732de2362d3Smrg exit $? 733de2362d3Smrg} 734de2362d3Smrg 735de2362d3Smrg# func_usage 736de2362d3Smrg# Echo short help message to standard output and exit. 737de2362d3Smrgfunc_usage () 738de2362d3Smrg{ 739de2362d3Smrg $opt_debug 740de2362d3Smrg 741de2362d3Smrg $SED -n '/^# Usage:/,/^# *.*--help/ { 742de2362d3Smrg s/^# // 743de2362d3Smrg s/^# *$// 744de2362d3Smrg s/\$progname/'$progname'/ 745de2362d3Smrg p 746de2362d3Smrg }' < "$progpath" 747de2362d3Smrg echo 748de2362d3Smrg $ECHO "run \`$progname --help | more' for full usage" 749de2362d3Smrg exit $? 750de2362d3Smrg} 751de2362d3Smrg 752de2362d3Smrg# func_help [NOEXIT] 753de2362d3Smrg# Echo long help message to standard output and exit, 754de2362d3Smrg# unless 'noexit' is passed as argument. 755de2362d3Smrgfunc_help () 756de2362d3Smrg{ 757de2362d3Smrg $opt_debug 758de2362d3Smrg 759de2362d3Smrg $SED -n '/^# Usage:/,/# Report bugs to/ { 760de2362d3Smrg :print 761de2362d3Smrg s/^# // 762de2362d3Smrg s/^# *$// 763de2362d3Smrg s*\$progname*'$progname'* 764de2362d3Smrg s*\$host*'"$host"'* 765de2362d3Smrg s*\$SHELL*'"$SHELL"'* 766de2362d3Smrg s*\$LTCC*'"$LTCC"'* 767de2362d3Smrg s*\$LTCFLAGS*'"$LTCFLAGS"'* 768de2362d3Smrg s*\$LD*'"$LD"'* 769de2362d3Smrg s/\$with_gnu_ld/'"$with_gnu_ld"'/ 770de2362d3Smrg s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/ 771de2362d3Smrg s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/ 772de2362d3Smrg p 773de2362d3Smrg d 774de2362d3Smrg } 775de2362d3Smrg /^# .* home page:/b print 776de2362d3Smrg /^# General help using/b print 777de2362d3Smrg ' < "$progpath" 778de2362d3Smrg ret=$? 779de2362d3Smrg if test -z "$1"; then 780de2362d3Smrg exit $ret 781de2362d3Smrg fi 782de2362d3Smrg} 783de2362d3Smrg 784de2362d3Smrg# func_missing_arg argname 785de2362d3Smrg# Echo program name prefixed message to standard error and set global 786de2362d3Smrg# exit_cmd. 787de2362d3Smrgfunc_missing_arg () 788de2362d3Smrg{ 789de2362d3Smrg $opt_debug 790de2362d3Smrg 791de2362d3Smrg func_error "missing argument for $1." 792de2362d3Smrg exit_cmd=exit 793de2362d3Smrg} 794de2362d3Smrg 795de2362d3Smrg 796de2362d3Smrg# func_split_short_opt shortopt 797de2362d3Smrg# Set func_split_short_opt_name and func_split_short_opt_arg shell 798de2362d3Smrg# variables after splitting SHORTOPT after the 2nd character. 799de2362d3Smrgfunc_split_short_opt () 800de2362d3Smrg{ 801de2362d3Smrg my_sed_short_opt='1s/^\(..\).*$/\1/;q' 802de2362d3Smrg my_sed_short_rest='1s/^..\(.*\)$/\1/;q' 803de2362d3Smrg 804de2362d3Smrg func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"` 805de2362d3Smrg func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"` 806de2362d3Smrg} # func_split_short_opt may be replaced by extended shell implementation 807de2362d3Smrg 808de2362d3Smrg 809de2362d3Smrg# func_split_long_opt longopt 810de2362d3Smrg# Set func_split_long_opt_name and func_split_long_opt_arg shell 811de2362d3Smrg# variables after splitting LONGOPT at the `=' sign. 812de2362d3Smrgfunc_split_long_opt () 813de2362d3Smrg{ 814de2362d3Smrg my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q' 815de2362d3Smrg my_sed_long_arg='1s/^--[^=]*=//' 816de2362d3Smrg 817de2362d3Smrg func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"` 818de2362d3Smrg func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"` 819de2362d3Smrg} # func_split_long_opt may be replaced by extended shell implementation 820de2362d3Smrg 821de2362d3Smrgexit_cmd=: 822de2362d3Smrg 823de2362d3Smrg 824de2362d3Smrg 825de2362d3Smrg 826de2362d3Smrg 827de2362d3Smrgmagic="%%%MAGIC variable%%%" 828de2362d3Smrgmagic_exe="%%%MAGIC EXE variable%%%" 829de2362d3Smrg 830de2362d3Smrg# Global variables. 831de2362d3Smrgnonopt= 832de2362d3Smrgpreserve_args= 833de2362d3Smrglo2o="s/\\.lo\$/.${objext}/" 834de2362d3Smrgo2lo="s/\\.${objext}\$/.lo/" 835de2362d3Smrgextracted_archives= 836de2362d3Smrgextracted_serial=0 837de2362d3Smrg 838de2362d3Smrg# If this variable is set in any of the actions, the command in it 839de2362d3Smrg# will be execed at the end. This prevents here-documents from being 840de2362d3Smrg# left over by shells. 841de2362d3Smrgexec_cmd= 842de2362d3Smrg 843de2362d3Smrg# func_append var value 844de2362d3Smrg# Append VALUE to the end of shell variable VAR. 845de2362d3Smrgfunc_append () 846de2362d3Smrg{ 847de2362d3Smrg eval "${1}=\$${1}\${2}" 848de2362d3Smrg} # func_append may be replaced by extended shell implementation 849de2362d3Smrg 850de2362d3Smrg# func_append_quoted var value 851de2362d3Smrg# Quote VALUE and append to the end of shell variable VAR, separated 852de2362d3Smrg# by a space. 853de2362d3Smrgfunc_append_quoted () 854de2362d3Smrg{ 855de2362d3Smrg func_quote_for_eval "${2}" 856de2362d3Smrg eval "${1}=\$${1}\\ \$func_quote_for_eval_result" 857de2362d3Smrg} # func_append_quoted may be replaced by extended shell implementation 858de2362d3Smrg 859de2362d3Smrg 860de2362d3Smrg# func_arith arithmetic-term... 861de2362d3Smrgfunc_arith () 862de2362d3Smrg{ 863de2362d3Smrg func_arith_result=`expr "${@}"` 864de2362d3Smrg} # func_arith may be replaced by extended shell implementation 865de2362d3Smrg 866de2362d3Smrg 867de2362d3Smrg# func_len string 868de2362d3Smrg# STRING may not start with a hyphen. 869de2362d3Smrgfunc_len () 870de2362d3Smrg{ 871de2362d3Smrg func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len` 872de2362d3Smrg} # func_len may be replaced by extended shell implementation 873de2362d3Smrg 874de2362d3Smrg 875de2362d3Smrg# func_lo2o object 876de2362d3Smrgfunc_lo2o () 877de2362d3Smrg{ 878de2362d3Smrg func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"` 879de2362d3Smrg} # func_lo2o may be replaced by extended shell implementation 880de2362d3Smrg 881de2362d3Smrg 882de2362d3Smrg# func_xform libobj-or-source 883de2362d3Smrgfunc_xform () 884de2362d3Smrg{ 885de2362d3Smrg func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'` 886de2362d3Smrg} # func_xform may be replaced by extended shell implementation 887de2362d3Smrg 888de2362d3Smrg 889de2362d3Smrg# func_fatal_configuration arg... 890de2362d3Smrg# Echo program name prefixed message to standard error, followed by 891de2362d3Smrg# a configuration failure hint, and exit. 892de2362d3Smrgfunc_fatal_configuration () 893de2362d3Smrg{ 894de2362d3Smrg func_error ${1+"$@"} 895de2362d3Smrg func_error "See the $PACKAGE documentation for more information." 896de2362d3Smrg func_fatal_error "Fatal configuration error." 897de2362d3Smrg} 898de2362d3Smrg 899de2362d3Smrg 900de2362d3Smrg# func_config 901de2362d3Smrg# Display the configuration for all the tags in this script. 902de2362d3Smrgfunc_config () 903de2362d3Smrg{ 904de2362d3Smrg re_begincf='^# ### BEGIN LIBTOOL' 905de2362d3Smrg re_endcf='^# ### END LIBTOOL' 906de2362d3Smrg 907de2362d3Smrg # Default configuration. 908de2362d3Smrg $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" 909de2362d3Smrg 910de2362d3Smrg # Now print the configurations for the tags. 911de2362d3Smrg for tagname in $taglist; do 912de2362d3Smrg $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" 913de2362d3Smrg done 914de2362d3Smrg 915de2362d3Smrg exit $? 916de2362d3Smrg} 917de2362d3Smrg 918de2362d3Smrg# func_features 919de2362d3Smrg# Display the features supported by this script. 920de2362d3Smrgfunc_features () 921de2362d3Smrg{ 922de2362d3Smrg echo "host: $host" 923de2362d3Smrg if test "$build_libtool_libs" = yes; then 924de2362d3Smrg echo "enable shared libraries" 925de2362d3Smrg else 926de2362d3Smrg echo "disable shared libraries" 927de2362d3Smrg fi 928de2362d3Smrg if test "$build_old_libs" = yes; then 929de2362d3Smrg echo "enable static libraries" 930de2362d3Smrg else 931de2362d3Smrg echo "disable static libraries" 932de2362d3Smrg fi 933de2362d3Smrg 934de2362d3Smrg exit $? 935de2362d3Smrg} 936de2362d3Smrg 937de2362d3Smrg# func_enable_tag tagname 938de2362d3Smrg# Verify that TAGNAME is valid, and either flag an error and exit, or 939de2362d3Smrg# enable the TAGNAME tag. We also add TAGNAME to the global $taglist 940de2362d3Smrg# variable here. 941de2362d3Smrgfunc_enable_tag () 942de2362d3Smrg{ 943de2362d3Smrg # Global variable: 944de2362d3Smrg tagname="$1" 945de2362d3Smrg 946de2362d3Smrg re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" 947de2362d3Smrg re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" 948de2362d3Smrg sed_extractcf="/$re_begincf/,/$re_endcf/p" 949de2362d3Smrg 950de2362d3Smrg # Validate tagname. 951de2362d3Smrg case $tagname in 952de2362d3Smrg *[!-_A-Za-z0-9,/]*) 953de2362d3Smrg func_fatal_error "invalid tag name: $tagname" 954de2362d3Smrg ;; 955de2362d3Smrg esac 956de2362d3Smrg 957de2362d3Smrg # Don't test for the "default" C tag, as we know it's 958de2362d3Smrg # there but not specially marked. 959de2362d3Smrg case $tagname in 960de2362d3Smrg CC) ;; 961de2362d3Smrg *) 962de2362d3Smrg if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then 963de2362d3Smrg taglist="$taglist $tagname" 964de2362d3Smrg 965de2362d3Smrg # Evaluate the configuration. Be careful to quote the path 966de2362d3Smrg # and the sed script, to avoid splitting on whitespace, but 967de2362d3Smrg # also don't use non-portable quotes within backquotes within 968de2362d3Smrg # quotes we have to do it in 2 steps: 969de2362d3Smrg extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` 970de2362d3Smrg eval "$extractedcf" 971de2362d3Smrg else 972de2362d3Smrg func_error "ignoring unknown tag $tagname" 973de2362d3Smrg fi 974de2362d3Smrg ;; 975de2362d3Smrg esac 976de2362d3Smrg} 977de2362d3Smrg 978de2362d3Smrg# func_check_version_match 979de2362d3Smrg# Ensure that we are using m4 macros, and libtool script from the same 980de2362d3Smrg# release of libtool. 981de2362d3Smrgfunc_check_version_match () 982de2362d3Smrg{ 983de2362d3Smrg if test "$package_revision" != "$macro_revision"; then 984de2362d3Smrg if test "$VERSION" != "$macro_version"; then 985de2362d3Smrg if test -z "$macro_version"; then 986de2362d3Smrg cat >&2 <<_LT_EOF 987de2362d3Smrg$progname: Version mismatch error. This is $PACKAGE $VERSION, but the 988de2362d3Smrg$progname: definition of this LT_INIT comes from an older release. 989de2362d3Smrg$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION 990de2362d3Smrg$progname: and run autoconf again. 991de2362d3Smrg_LT_EOF 992de2362d3Smrg else 993de2362d3Smrg cat >&2 <<_LT_EOF 994de2362d3Smrg$progname: Version mismatch error. This is $PACKAGE $VERSION, but the 995de2362d3Smrg$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. 996de2362d3Smrg$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION 997de2362d3Smrg$progname: and run autoconf again. 998de2362d3Smrg_LT_EOF 999de2362d3Smrg fi 1000de2362d3Smrg else 1001de2362d3Smrg cat >&2 <<_LT_EOF 1002de2362d3Smrg$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, 1003de2362d3Smrg$progname: but the definition of this LT_INIT comes from revision $macro_revision. 1004de2362d3Smrg$progname: You should recreate aclocal.m4 with macros from revision $package_revision 1005de2362d3Smrg$progname: of $PACKAGE $VERSION and run autoconf again. 1006de2362d3Smrg_LT_EOF 1007de2362d3Smrg fi 1008de2362d3Smrg 1009de2362d3Smrg exit $EXIT_MISMATCH 1010de2362d3Smrg fi 1011de2362d3Smrg} 1012de2362d3Smrg 1013de2362d3Smrg 1014de2362d3Smrg# Shorthand for --mode=foo, only valid as the first argument 1015de2362d3Smrgcase $1 in 1016de2362d3Smrgclean|clea|cle|cl) 1017de2362d3Smrg shift; set dummy --mode clean ${1+"$@"}; shift 1018de2362d3Smrg ;; 1019de2362d3Smrgcompile|compil|compi|comp|com|co|c) 1020de2362d3Smrg shift; set dummy --mode compile ${1+"$@"}; shift 1021de2362d3Smrg ;; 1022de2362d3Smrgexecute|execut|execu|exec|exe|ex|e) 1023de2362d3Smrg shift; set dummy --mode execute ${1+"$@"}; shift 1024de2362d3Smrg ;; 1025de2362d3Smrgfinish|finis|fini|fin|fi|f) 1026de2362d3Smrg shift; set dummy --mode finish ${1+"$@"}; shift 1027de2362d3Smrg ;; 1028de2362d3Smrginstall|instal|insta|inst|ins|in|i) 1029de2362d3Smrg shift; set dummy --mode install ${1+"$@"}; shift 1030de2362d3Smrg ;; 1031de2362d3Smrglink|lin|li|l) 1032de2362d3Smrg shift; set dummy --mode link ${1+"$@"}; shift 1033de2362d3Smrg ;; 1034de2362d3Smrguninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) 1035de2362d3Smrg shift; set dummy --mode uninstall ${1+"$@"}; shift 1036de2362d3Smrg ;; 1037de2362d3Smrgesac 1038de2362d3Smrg 1039de2362d3Smrg 1040de2362d3Smrg 1041de2362d3Smrg# Option defaults: 1042de2362d3Smrgopt_debug=: 1043de2362d3Smrgopt_dry_run=false 1044de2362d3Smrgopt_config=false 1045de2362d3Smrgopt_preserve_dup_deps=false 1046de2362d3Smrgopt_features=false 1047de2362d3Smrgopt_finish=false 1048de2362d3Smrgopt_help=false 1049de2362d3Smrgopt_help_all=false 1050de2362d3Smrgopt_silent=: 1051de2362d3Smrgopt_warning=: 1052de2362d3Smrgopt_verbose=: 1053de2362d3Smrgopt_silent=false 1054de2362d3Smrgopt_verbose=false 1055de2362d3Smrg 1056de2362d3Smrg 1057de2362d3Smrg# Parse options once, thoroughly. This comes as soon as possible in the 1058de2362d3Smrg# script to make things like `--version' happen as quickly as we can. 1059de2362d3Smrg{ 1060de2362d3Smrg # this just eases exit handling 1061de2362d3Smrg while test $# -gt 0; do 1062de2362d3Smrg opt="$1" 1063de2362d3Smrg shift 1064de2362d3Smrg case $opt in 1065de2362d3Smrg --debug|-x) opt_debug='set -x' 1066de2362d3Smrg func_echo "enabling shell trace mode" 1067de2362d3Smrg $opt_debug 1068de2362d3Smrg ;; 1069de2362d3Smrg --dry-run|--dryrun|-n) 1070de2362d3Smrg opt_dry_run=: 1071de2362d3Smrg ;; 1072de2362d3Smrg --config) 1073de2362d3Smrg opt_config=: 1074de2362d3Smrgfunc_config 1075de2362d3Smrg ;; 1076de2362d3Smrg --dlopen|-dlopen) 1077de2362d3Smrg optarg="$1" 1078de2362d3Smrg opt_dlopen="${opt_dlopen+$opt_dlopen 1079de2362d3Smrg}$optarg" 1080de2362d3Smrg shift 1081de2362d3Smrg ;; 1082de2362d3Smrg --preserve-dup-deps) 1083de2362d3Smrg opt_preserve_dup_deps=: 1084de2362d3Smrg ;; 1085de2362d3Smrg --features) 1086de2362d3Smrg opt_features=: 1087de2362d3Smrgfunc_features 1088de2362d3Smrg ;; 1089de2362d3Smrg --finish) 1090de2362d3Smrg opt_finish=: 1091de2362d3Smrgset dummy --mode finish ${1+"$@"}; shift 1092de2362d3Smrg ;; 1093de2362d3Smrg --help) 1094de2362d3Smrg opt_help=: 1095de2362d3Smrg ;; 1096de2362d3Smrg --help-all) 1097de2362d3Smrg opt_help_all=: 1098de2362d3Smrgopt_help=': help-all' 1099de2362d3Smrg ;; 1100de2362d3Smrg --mode) 1101de2362d3Smrg test $# = 0 && func_missing_arg $opt && break 1102de2362d3Smrg optarg="$1" 1103de2362d3Smrg opt_mode="$optarg" 1104de2362d3Smrgcase $optarg in 1105de2362d3Smrg # Valid mode arguments: 1106de2362d3Smrg clean|compile|execute|finish|install|link|relink|uninstall) ;; 1107de2362d3Smrg 1108de2362d3Smrg # Catch anything else as an error 1109de2362d3Smrg *) func_error "invalid argument for $opt" 1110de2362d3Smrg exit_cmd=exit 1111de2362d3Smrg break 1112de2362d3Smrg ;; 1113de2362d3Smrgesac 1114de2362d3Smrg shift 1115de2362d3Smrg ;; 1116de2362d3Smrg --no-silent|--no-quiet) 1117de2362d3Smrg opt_silent=false 1118de2362d3Smrgfunc_append preserve_args " $opt" 1119de2362d3Smrg ;; 1120de2362d3Smrg --no-warning|--no-warn) 1121de2362d3Smrg opt_warning=false 1122de2362d3Smrgfunc_append preserve_args " $opt" 1123de2362d3Smrg ;; 1124de2362d3Smrg --no-verbose) 1125de2362d3Smrg opt_verbose=false 1126de2362d3Smrgfunc_append preserve_args " $opt" 1127de2362d3Smrg ;; 1128de2362d3Smrg --silent|--quiet) 1129de2362d3Smrg opt_silent=: 1130de2362d3Smrgfunc_append preserve_args " $opt" 1131de2362d3Smrg opt_verbose=false 1132de2362d3Smrg ;; 1133de2362d3Smrg --verbose|-v) 1134de2362d3Smrg opt_verbose=: 1135de2362d3Smrgfunc_append preserve_args " $opt" 1136de2362d3Smrgopt_silent=false 1137de2362d3Smrg ;; 1138de2362d3Smrg --tag) 1139de2362d3Smrg test $# = 0 && func_missing_arg $opt && break 1140de2362d3Smrg optarg="$1" 1141de2362d3Smrg opt_tag="$optarg" 1142de2362d3Smrgfunc_append preserve_args " $opt $optarg" 1143de2362d3Smrgfunc_enable_tag "$optarg" 1144de2362d3Smrg shift 1145de2362d3Smrg ;; 1146de2362d3Smrg 1147de2362d3Smrg -\?|-h) func_usage ;; 1148de2362d3Smrg --help) func_help ;; 1149de2362d3Smrg --version) func_version ;; 1150de2362d3Smrg 1151de2362d3Smrg # Separate optargs to long options: 1152de2362d3Smrg --*=*) 1153de2362d3Smrg func_split_long_opt "$opt" 1154de2362d3Smrg set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"} 1155de2362d3Smrg shift 1156de2362d3Smrg ;; 1157de2362d3Smrg 1158de2362d3Smrg # Separate non-argument short options: 1159de2362d3Smrg -\?*|-h*|-n*|-v*) 1160de2362d3Smrg func_split_short_opt "$opt" 1161de2362d3Smrg set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"} 1162de2362d3Smrg shift 1163de2362d3Smrg ;; 1164de2362d3Smrg 1165de2362d3Smrg --) break ;; 1166de2362d3Smrg -*) func_fatal_help "unrecognized option \`$opt'" ;; 1167de2362d3Smrg *) set dummy "$opt" ${1+"$@"}; shift; break ;; 1168de2362d3Smrg esac 1169de2362d3Smrg done 1170de2362d3Smrg 1171de2362d3Smrg # Validate options: 1172de2362d3Smrg 1173de2362d3Smrg # save first non-option argument 1174de2362d3Smrg if test "$#" -gt 0; then 1175de2362d3Smrg nonopt="$opt" 1176de2362d3Smrg shift 1177de2362d3Smrg fi 1178de2362d3Smrg 1179de2362d3Smrg # preserve --debug 1180de2362d3Smrg test "$opt_debug" = : || func_append preserve_args " --debug" 1181de2362d3Smrg 1182de2362d3Smrg case $host in 1183de2362d3Smrg *cygwin* | *mingw* | *pw32* | *cegcc*) 1184de2362d3Smrg # don't eliminate duplications in $postdeps and $predeps 1185de2362d3Smrg opt_duplicate_compiler_generated_deps=: 1186de2362d3Smrg ;; 1187de2362d3Smrg *) 1188de2362d3Smrg opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps 1189de2362d3Smrg ;; 1190de2362d3Smrg esac 1191de2362d3Smrg 1192de2362d3Smrg $opt_help || { 1193de2362d3Smrg # Sanity checks first: 1194de2362d3Smrg func_check_version_match 1195de2362d3Smrg 1196de2362d3Smrg if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then 1197de2362d3Smrg func_fatal_configuration "not configured to build any kind of library" 1198de2362d3Smrg fi 1199de2362d3Smrg 1200de2362d3Smrg # Darwin sucks 1201de2362d3Smrg eval std_shrext=\"$shrext_cmds\" 1202de2362d3Smrg 1203de2362d3Smrg # Only execute mode is allowed to have -dlopen flags. 1204de2362d3Smrg if test -n "$opt_dlopen" && test "$opt_mode" != execute; then 1205de2362d3Smrg func_error "unrecognized option \`-dlopen'" 1206de2362d3Smrg $ECHO "$help" 1>&2 1207de2362d3Smrg exit $EXIT_FAILURE 1208de2362d3Smrg fi 1209de2362d3Smrg 1210de2362d3Smrg # Change the help message to a mode-specific one. 1211de2362d3Smrg generic_help="$help" 1212de2362d3Smrg help="Try \`$progname --help --mode=$opt_mode' for more information." 1213de2362d3Smrg } 1214de2362d3Smrg 1215de2362d3Smrg 1216de2362d3Smrg # Bail if the options were screwed 1217de2362d3Smrg $exit_cmd $EXIT_FAILURE 1218de2362d3Smrg} 1219de2362d3Smrg 1220de2362d3Smrg 1221de2362d3Smrg 1222de2362d3Smrg 1223de2362d3Smrg## ----------- ## 1224de2362d3Smrg## Main. ## 1225de2362d3Smrg## ----------- ## 1226de2362d3Smrg 1227de2362d3Smrg# func_lalib_p file 1228de2362d3Smrg# True iff FILE is a libtool `.la' library or `.lo' object file. 1229de2362d3Smrg# This function is only a basic sanity check; it will hardly flush out 1230de2362d3Smrg# determined imposters. 1231de2362d3Smrgfunc_lalib_p () 1232de2362d3Smrg{ 1233de2362d3Smrg test -f "$1" && 1234de2362d3Smrg $SED -e 4q "$1" 2>/dev/null \ 1235de2362d3Smrg | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 1236de2362d3Smrg} 1237de2362d3Smrg 1238de2362d3Smrg# func_lalib_unsafe_p file 1239de2362d3Smrg# True iff FILE is a libtool `.la' library or `.lo' object file. 1240de2362d3Smrg# This function implements the same check as func_lalib_p without 1241de2362d3Smrg# resorting to external programs. To this end, it redirects stdin and 1242de2362d3Smrg# closes it afterwards, without saving the original file descriptor. 1243de2362d3Smrg# As a safety measure, use it only where a negative result would be 1244de2362d3Smrg# fatal anyway. Works if `file' does not exist. 1245de2362d3Smrgfunc_lalib_unsafe_p () 1246de2362d3Smrg{ 1247de2362d3Smrg lalib_p=no 1248de2362d3Smrg if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then 1249de2362d3Smrg for lalib_p_l in 1 2 3 4 1250de2362d3Smrg do 1251de2362d3Smrg read lalib_p_line 1252de2362d3Smrg case "$lalib_p_line" in 1253de2362d3Smrg \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; 1254de2362d3Smrg esac 1255de2362d3Smrg done 1256de2362d3Smrg exec 0<&5 5<&- 1257de2362d3Smrg fi 1258de2362d3Smrg test "$lalib_p" = yes 1259de2362d3Smrg} 1260de2362d3Smrg 1261de2362d3Smrg# func_ltwrapper_script_p file 1262de2362d3Smrg# True iff FILE is a libtool wrapper script 1263de2362d3Smrg# This function is only a basic sanity check; it will hardly flush out 1264de2362d3Smrg# determined imposters. 1265de2362d3Smrgfunc_ltwrapper_script_p () 1266de2362d3Smrg{ 1267de2362d3Smrg func_lalib_p "$1" 1268de2362d3Smrg} 1269de2362d3Smrg 1270de2362d3Smrg# func_ltwrapper_executable_p file 1271de2362d3Smrg# True iff FILE is a libtool wrapper executable 1272de2362d3Smrg# This function is only a basic sanity check; it will hardly flush out 1273de2362d3Smrg# determined imposters. 1274de2362d3Smrgfunc_ltwrapper_executable_p () 1275de2362d3Smrg{ 1276de2362d3Smrg func_ltwrapper_exec_suffix= 1277de2362d3Smrg case $1 in 1278de2362d3Smrg *.exe) ;; 1279de2362d3Smrg *) func_ltwrapper_exec_suffix=.exe ;; 1280de2362d3Smrg esac 1281de2362d3Smrg $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 1282de2362d3Smrg} 1283de2362d3Smrg 1284de2362d3Smrg# func_ltwrapper_scriptname file 1285de2362d3Smrg# Assumes file is an ltwrapper_executable 1286de2362d3Smrg# uses $file to determine the appropriate filename for a 1287de2362d3Smrg# temporary ltwrapper_script. 1288de2362d3Smrgfunc_ltwrapper_scriptname () 1289de2362d3Smrg{ 1290de2362d3Smrg func_dirname_and_basename "$1" "" "." 1291de2362d3Smrg func_stripname '' '.exe' "$func_basename_result" 1292de2362d3Smrg func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" 1293de2362d3Smrg} 1294de2362d3Smrg 1295de2362d3Smrg# func_ltwrapper_p file 1296de2362d3Smrg# True iff FILE is a libtool wrapper script or wrapper executable 1297de2362d3Smrg# This function is only a basic sanity check; it will hardly flush out 1298de2362d3Smrg# determined imposters. 1299de2362d3Smrgfunc_ltwrapper_p () 1300de2362d3Smrg{ 1301de2362d3Smrg func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" 1302de2362d3Smrg} 1303de2362d3Smrg 1304de2362d3Smrg 1305de2362d3Smrg# func_execute_cmds commands fail_cmd 1306de2362d3Smrg# Execute tilde-delimited COMMANDS. 1307de2362d3Smrg# If FAIL_CMD is given, eval that upon failure. 1308de2362d3Smrg# FAIL_CMD may read-access the current command in variable CMD! 1309de2362d3Smrgfunc_execute_cmds () 1310de2362d3Smrg{ 1311de2362d3Smrg $opt_debug 1312de2362d3Smrg save_ifs=$IFS; IFS='~' 1313de2362d3Smrg for cmd in $1; do 1314de2362d3Smrg IFS=$save_ifs 1315de2362d3Smrg eval cmd=\"$cmd\" 1316de2362d3Smrg func_show_eval "$cmd" "${2-:}" 1317de2362d3Smrg done 1318de2362d3Smrg IFS=$save_ifs 1319de2362d3Smrg} 1320de2362d3Smrg 1321de2362d3Smrg 1322de2362d3Smrg# func_source file 1323de2362d3Smrg# Source FILE, adding directory component if necessary. 1324de2362d3Smrg# Note that it is not necessary on cygwin/mingw to append a dot to 1325de2362d3Smrg# FILE even if both FILE and FILE.exe exist: automatic-append-.exe 1326de2362d3Smrg# behavior happens only for exec(3), not for open(2)! Also, sourcing 1327de2362d3Smrg# `FILE.' does not work on cygwin managed mounts. 1328de2362d3Smrgfunc_source () 1329de2362d3Smrg{ 1330de2362d3Smrg $opt_debug 1331de2362d3Smrg case $1 in 1332de2362d3Smrg */* | *\\*) . "$1" ;; 1333de2362d3Smrg *) . "./$1" ;; 1334de2362d3Smrg esac 1335de2362d3Smrg} 1336de2362d3Smrg 1337de2362d3Smrg 1338de2362d3Smrg# func_resolve_sysroot PATH 1339de2362d3Smrg# Replace a leading = in PATH with a sysroot. Store the result into 1340de2362d3Smrg# func_resolve_sysroot_result 1341de2362d3Smrgfunc_resolve_sysroot () 1342de2362d3Smrg{ 1343de2362d3Smrg func_resolve_sysroot_result=$1 1344de2362d3Smrg case $func_resolve_sysroot_result in 1345de2362d3Smrg =*) 1346de2362d3Smrg func_stripname '=' '' "$func_resolve_sysroot_result" 1347de2362d3Smrg func_resolve_sysroot_result=$lt_sysroot$func_stripname_result 1348de2362d3Smrg ;; 1349de2362d3Smrg esac 1350de2362d3Smrg} 1351de2362d3Smrg 1352de2362d3Smrg# func_replace_sysroot PATH 1353de2362d3Smrg# If PATH begins with the sysroot, replace it with = and 1354de2362d3Smrg# store the result into func_replace_sysroot_result. 1355de2362d3Smrgfunc_replace_sysroot () 1356de2362d3Smrg{ 1357de2362d3Smrg case "$lt_sysroot:$1" in 1358de2362d3Smrg ?*:"$lt_sysroot"*) 1359de2362d3Smrg func_stripname "$lt_sysroot" '' "$1" 1360de2362d3Smrg func_replace_sysroot_result="=$func_stripname_result" 1361de2362d3Smrg ;; 1362de2362d3Smrg *) 1363de2362d3Smrg # Including no sysroot. 1364de2362d3Smrg func_replace_sysroot_result=$1 1365de2362d3Smrg ;; 1366de2362d3Smrg esac 1367de2362d3Smrg} 1368de2362d3Smrg 1369de2362d3Smrg# func_infer_tag arg 1370de2362d3Smrg# Infer tagged configuration to use if any are available and 1371de2362d3Smrg# if one wasn't chosen via the "--tag" command line option. 1372de2362d3Smrg# Only attempt this if the compiler in the base compile 1373de2362d3Smrg# command doesn't match the default compiler. 1374de2362d3Smrg# arg is usually of the form 'gcc ...' 1375de2362d3Smrgfunc_infer_tag () 1376de2362d3Smrg{ 1377de2362d3Smrg $opt_debug 1378de2362d3Smrg if test -n "$available_tags" && test -z "$tagname"; then 1379de2362d3Smrg CC_quoted= 1380de2362d3Smrg for arg in $CC; do 1381de2362d3Smrg func_append_quoted CC_quoted "$arg" 1382de2362d3Smrg done 1383de2362d3Smrg CC_expanded=`func_echo_all $CC` 1384de2362d3Smrg CC_quoted_expanded=`func_echo_all $CC_quoted` 1385de2362d3Smrg case $@ in 1386de2362d3Smrg # Blanks in the command may have been stripped by the calling shell, 1387de2362d3Smrg # but not from the CC environment variable when configure was run. 1388de2362d3Smrg " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ 1389de2362d3Smrg " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; 1390de2362d3Smrg # Blanks at the start of $base_compile will cause this to fail 1391de2362d3Smrg # if we don't check for them as well. 1392de2362d3Smrg *) 1393de2362d3Smrg for z in $available_tags; do 1394de2362d3Smrg if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then 1395de2362d3Smrg # Evaluate the configuration. 1396de2362d3Smrg eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" 1397de2362d3Smrg CC_quoted= 1398de2362d3Smrg for arg in $CC; do 1399de2362d3Smrg # Double-quote args containing other shell metacharacters. 1400de2362d3Smrg func_append_quoted CC_quoted "$arg" 1401de2362d3Smrg done 1402de2362d3Smrg CC_expanded=`func_echo_all $CC` 1403de2362d3Smrg CC_quoted_expanded=`func_echo_all $CC_quoted` 1404de2362d3Smrg case "$@ " in 1405de2362d3Smrg " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ 1406de2362d3Smrg " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) 1407de2362d3Smrg # The compiler in the base compile command matches 1408de2362d3Smrg # the one in the tagged configuration. 1409de2362d3Smrg # Assume this is the tagged configuration we want. 1410de2362d3Smrg tagname=$z 1411de2362d3Smrg break 1412de2362d3Smrg ;; 1413de2362d3Smrg esac 1414de2362d3Smrg fi 1415de2362d3Smrg done 1416de2362d3Smrg # If $tagname still isn't set, then no tagged configuration 1417de2362d3Smrg # was found and let the user know that the "--tag" command 1418de2362d3Smrg # line option must be used. 1419de2362d3Smrg if test -z "$tagname"; then 1420de2362d3Smrg func_echo "unable to infer tagged configuration" 1421de2362d3Smrg func_fatal_error "specify a tag with \`--tag'" 1422de2362d3Smrg# else 1423de2362d3Smrg# func_verbose "using $tagname tagged configuration" 1424de2362d3Smrg fi 1425de2362d3Smrg ;; 1426de2362d3Smrg esac 1427de2362d3Smrg fi 1428de2362d3Smrg} 1429de2362d3Smrg 1430de2362d3Smrg 1431de2362d3Smrg 1432de2362d3Smrg# func_write_libtool_object output_name pic_name nonpic_name 1433de2362d3Smrg# Create a libtool object file (analogous to a ".la" file), 1434de2362d3Smrg# but don't create it if we're doing a dry run. 1435de2362d3Smrgfunc_write_libtool_object () 1436de2362d3Smrg{ 1437de2362d3Smrg write_libobj=${1} 1438de2362d3Smrg if test "$build_libtool_libs" = yes; then 1439de2362d3Smrg write_lobj=\'${2}\' 1440de2362d3Smrg else 1441de2362d3Smrg write_lobj=none 1442de2362d3Smrg fi 1443de2362d3Smrg 1444de2362d3Smrg if test "$build_old_libs" = yes; then 1445de2362d3Smrg write_oldobj=\'${3}\' 1446de2362d3Smrg else 1447de2362d3Smrg write_oldobj=none 1448de2362d3Smrg fi 1449de2362d3Smrg 1450de2362d3Smrg $opt_dry_run || { 1451de2362d3Smrg cat >${write_libobj}T <<EOF 1452de2362d3Smrg# $write_libobj - a libtool object file 1453de2362d3Smrg# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 1454de2362d3Smrg# 1455de2362d3Smrg# Please DO NOT delete this file! 1456de2362d3Smrg# It is necessary for linking the library. 1457de2362d3Smrg 1458de2362d3Smrg# Name of the PIC object. 1459de2362d3Smrgpic_object=$write_lobj 1460de2362d3Smrg 1461de2362d3Smrg# Name of the non-PIC object 1462de2362d3Smrgnon_pic_object=$write_oldobj 1463de2362d3Smrg 1464de2362d3SmrgEOF 1465de2362d3Smrg $MV "${write_libobj}T" "${write_libobj}" 1466de2362d3Smrg } 1467de2362d3Smrg} 1468de2362d3Smrg 1469de2362d3Smrg 1470de2362d3Smrg################################################## 1471de2362d3Smrg# FILE NAME AND PATH CONVERSION HELPER FUNCTIONS # 1472de2362d3Smrg################################################## 1473de2362d3Smrg 1474de2362d3Smrg# func_convert_core_file_wine_to_w32 ARG 1475de2362d3Smrg# Helper function used by file name conversion functions when $build is *nix, 1476de2362d3Smrg# and $host is mingw, cygwin, or some other w32 environment. Relies on a 1477de2362d3Smrg# correctly configured wine environment available, with the winepath program 1478de2362d3Smrg# in $build's $PATH. 1479de2362d3Smrg# 1480de2362d3Smrg# ARG is the $build file name to be converted to w32 format. 1481de2362d3Smrg# Result is available in $func_convert_core_file_wine_to_w32_result, and will 1482de2362d3Smrg# be empty on error (or when ARG is empty) 1483de2362d3Smrgfunc_convert_core_file_wine_to_w32 () 1484de2362d3Smrg{ 1485de2362d3Smrg $opt_debug 1486de2362d3Smrg func_convert_core_file_wine_to_w32_result="$1" 1487de2362d3Smrg if test -n "$1"; then 1488de2362d3Smrg # Unfortunately, winepath does not exit with a non-zero error code, so we 1489de2362d3Smrg # are forced to check the contents of stdout. On the other hand, if the 1490de2362d3Smrg # command is not found, the shell will set an exit code of 127 and print 1491de2362d3Smrg # *an error message* to stdout. So we must check for both error code of 1492de2362d3Smrg # zero AND non-empty stdout, which explains the odd construction: 1493de2362d3Smrg func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null` 1494de2362d3Smrg if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then 1495de2362d3Smrg func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | 1496de2362d3Smrg $SED -e "$lt_sed_naive_backslashify"` 1497de2362d3Smrg else 1498de2362d3Smrg func_convert_core_file_wine_to_w32_result= 1499de2362d3Smrg fi 1500de2362d3Smrg fi 1501de2362d3Smrg} 1502de2362d3Smrg# end: func_convert_core_file_wine_to_w32 1503de2362d3Smrg 1504de2362d3Smrg 1505de2362d3Smrg# func_convert_core_path_wine_to_w32 ARG 1506de2362d3Smrg# Helper function used by path conversion functions when $build is *nix, and 1507de2362d3Smrg# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly 1508de2362d3Smrg# configured wine environment available, with the winepath program in $build's 1509de2362d3Smrg# $PATH. Assumes ARG has no leading or trailing path separator characters. 1510de2362d3Smrg# 1511de2362d3Smrg# ARG is path to be converted from $build format to win32. 1512de2362d3Smrg# Result is available in $func_convert_core_path_wine_to_w32_result. 1513de2362d3Smrg# Unconvertible file (directory) names in ARG are skipped; if no directory names 1514de2362d3Smrg# are convertible, then the result may be empty. 1515de2362d3Smrgfunc_convert_core_path_wine_to_w32 () 1516de2362d3Smrg{ 1517de2362d3Smrg $opt_debug 1518de2362d3Smrg # unfortunately, winepath doesn't convert paths, only file names 1519de2362d3Smrg func_convert_core_path_wine_to_w32_result="" 1520de2362d3Smrg if test -n "$1"; then 1521de2362d3Smrg oldIFS=$IFS 1522de2362d3Smrg IFS=: 1523de2362d3Smrg for func_convert_core_path_wine_to_w32_f in $1; do 1524de2362d3Smrg IFS=$oldIFS 1525de2362d3Smrg func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" 1526de2362d3Smrg if test -n "$func_convert_core_file_wine_to_w32_result" ; then 1527de2362d3Smrg if test -z "$func_convert_core_path_wine_to_w32_result"; then 1528de2362d3Smrg func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result" 1529de2362d3Smrg else 1530de2362d3Smrg func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" 1531de2362d3Smrg fi 1532de2362d3Smrg fi 1533de2362d3Smrg done 1534de2362d3Smrg IFS=$oldIFS 1535de2362d3Smrg fi 1536de2362d3Smrg} 1537de2362d3Smrg# end: func_convert_core_path_wine_to_w32 1538de2362d3Smrg 1539de2362d3Smrg 1540de2362d3Smrg# func_cygpath ARGS... 1541de2362d3Smrg# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when 1542de2362d3Smrg# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) 1543de2362d3Smrg# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or 1544de2362d3Smrg# (2), returns the Cygwin file name or path in func_cygpath_result (input 1545de2362d3Smrg# file name or path is assumed to be in w32 format, as previously converted 1546de2362d3Smrg# from $build's *nix or MSYS format). In case (3), returns the w32 file name 1547de2362d3Smrg# or path in func_cygpath_result (input file name or path is assumed to be in 1548de2362d3Smrg# Cygwin format). Returns an empty string on error. 1549de2362d3Smrg# 1550de2362d3Smrg# ARGS are passed to cygpath, with the last one being the file name or path to 1551de2362d3Smrg# be converted. 1552de2362d3Smrg# 1553de2362d3Smrg# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH 1554de2362d3Smrg# environment variable; do not put it in $PATH. 1555de2362d3Smrgfunc_cygpath () 1556de2362d3Smrg{ 1557de2362d3Smrg $opt_debug 1558de2362d3Smrg if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then 1559de2362d3Smrg func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` 1560de2362d3Smrg if test "$?" -ne 0; then 1561de2362d3Smrg # on failure, ensure result is empty 1562de2362d3Smrg func_cygpath_result= 1563de2362d3Smrg fi 1564de2362d3Smrg else 1565de2362d3Smrg func_cygpath_result= 1566de2362d3Smrg func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'" 1567de2362d3Smrg fi 1568de2362d3Smrg} 1569de2362d3Smrg#end: func_cygpath 1570de2362d3Smrg 1571de2362d3Smrg 1572de2362d3Smrg# func_convert_core_msys_to_w32 ARG 1573de2362d3Smrg# Convert file name or path ARG from MSYS format to w32 format. Return 1574de2362d3Smrg# result in func_convert_core_msys_to_w32_result. 1575de2362d3Smrgfunc_convert_core_msys_to_w32 () 1576de2362d3Smrg{ 1577de2362d3Smrg $opt_debug 1578de2362d3Smrg # awkward: cmd appends spaces to result 1579de2362d3Smrg func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | 1580de2362d3Smrg $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` 1581de2362d3Smrg} 1582de2362d3Smrg#end: func_convert_core_msys_to_w32 1583de2362d3Smrg 1584de2362d3Smrg 1585de2362d3Smrg# func_convert_file_check ARG1 ARG2 1586de2362d3Smrg# Verify that ARG1 (a file name in $build format) was converted to $host 1587de2362d3Smrg# format in ARG2. Otherwise, emit an error message, but continue (resetting 1588de2362d3Smrg# func_to_host_file_result to ARG1). 1589de2362d3Smrgfunc_convert_file_check () 1590de2362d3Smrg{ 1591de2362d3Smrg $opt_debug 1592de2362d3Smrg if test -z "$2" && test -n "$1" ; then 1593de2362d3Smrg func_error "Could not determine host file name corresponding to" 1594de2362d3Smrg func_error " \`$1'" 1595de2362d3Smrg func_error "Continuing, but uninstalled executables may not work." 1596de2362d3Smrg # Fallback: 1597de2362d3Smrg func_to_host_file_result="$1" 1598de2362d3Smrg fi 1599de2362d3Smrg} 1600de2362d3Smrg# end func_convert_file_check 1601de2362d3Smrg 1602de2362d3Smrg 1603de2362d3Smrg# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH 1604de2362d3Smrg# Verify that FROM_PATH (a path in $build format) was converted to $host 1605de2362d3Smrg# format in TO_PATH. Otherwise, emit an error message, but continue, resetting 1606de2362d3Smrg# func_to_host_file_result to a simplistic fallback value (see below). 1607de2362d3Smrgfunc_convert_path_check () 1608de2362d3Smrg{ 1609de2362d3Smrg $opt_debug 1610de2362d3Smrg if test -z "$4" && test -n "$3"; then 1611de2362d3Smrg func_error "Could not determine the host path corresponding to" 1612de2362d3Smrg func_error " \`$3'" 1613de2362d3Smrg func_error "Continuing, but uninstalled executables may not work." 1614de2362d3Smrg # Fallback. This is a deliberately simplistic "conversion" and 1615de2362d3Smrg # should not be "improved". See libtool.info. 1616de2362d3Smrg if test "x$1" != "x$2"; then 1617de2362d3Smrg lt_replace_pathsep_chars="s|$1|$2|g" 1618de2362d3Smrg func_to_host_path_result=`echo "$3" | 1619de2362d3Smrg $SED -e "$lt_replace_pathsep_chars"` 1620de2362d3Smrg else 1621de2362d3Smrg func_to_host_path_result="$3" 1622de2362d3Smrg fi 1623de2362d3Smrg fi 1624de2362d3Smrg} 1625de2362d3Smrg# end func_convert_path_check 1626de2362d3Smrg 1627de2362d3Smrg 1628de2362d3Smrg# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG 1629de2362d3Smrg# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT 1630de2362d3Smrg# and appending REPL if ORIG matches BACKPAT. 1631de2362d3Smrgfunc_convert_path_front_back_pathsep () 1632de2362d3Smrg{ 1633de2362d3Smrg $opt_debug 1634de2362d3Smrg case $4 in 1635de2362d3Smrg $1 ) func_to_host_path_result="$3$func_to_host_path_result" 1636de2362d3Smrg ;; 1637de2362d3Smrg esac 1638de2362d3Smrg case $4 in 1639de2362d3Smrg $2 ) func_append func_to_host_path_result "$3" 1640de2362d3Smrg ;; 1641de2362d3Smrg esac 1642de2362d3Smrg} 1643de2362d3Smrg# end func_convert_path_front_back_pathsep 1644de2362d3Smrg 1645de2362d3Smrg 1646de2362d3Smrg################################################## 1647de2362d3Smrg# $build to $host FILE NAME CONVERSION FUNCTIONS # 1648de2362d3Smrg################################################## 1649de2362d3Smrg# invoked via `$to_host_file_cmd ARG' 1650de2362d3Smrg# 1651de2362d3Smrg# In each case, ARG is the path to be converted from $build to $host format. 1652de2362d3Smrg# Result will be available in $func_to_host_file_result. 1653de2362d3Smrg 1654de2362d3Smrg 1655de2362d3Smrg# func_to_host_file ARG 1656de2362d3Smrg# Converts the file name ARG from $build format to $host format. Return result 1657de2362d3Smrg# in func_to_host_file_result. 1658de2362d3Smrgfunc_to_host_file () 1659de2362d3Smrg{ 1660de2362d3Smrg $opt_debug 1661de2362d3Smrg $to_host_file_cmd "$1" 1662de2362d3Smrg} 1663de2362d3Smrg# end func_to_host_file 1664de2362d3Smrg 1665de2362d3Smrg 1666de2362d3Smrg# func_to_tool_file ARG LAZY 1667de2362d3Smrg# converts the file name ARG from $build format to toolchain format. Return 1668de2362d3Smrg# result in func_to_tool_file_result. If the conversion in use is listed 1669de2362d3Smrg# in (the comma separated) LAZY, no conversion takes place. 1670de2362d3Smrgfunc_to_tool_file () 1671de2362d3Smrg{ 1672de2362d3Smrg $opt_debug 1673de2362d3Smrg case ,$2, in 1674de2362d3Smrg *,"$to_tool_file_cmd",*) 1675de2362d3Smrg func_to_tool_file_result=$1 1676de2362d3Smrg ;; 1677de2362d3Smrg *) 1678de2362d3Smrg $to_tool_file_cmd "$1" 1679de2362d3Smrg func_to_tool_file_result=$func_to_host_file_result 1680de2362d3Smrg ;; 1681de2362d3Smrg esac 1682de2362d3Smrg} 1683de2362d3Smrg# end func_to_tool_file 1684de2362d3Smrg 1685de2362d3Smrg 1686de2362d3Smrg# func_convert_file_noop ARG 1687de2362d3Smrg# Copy ARG to func_to_host_file_result. 1688de2362d3Smrgfunc_convert_file_noop () 1689de2362d3Smrg{ 1690de2362d3Smrg func_to_host_file_result="$1" 1691de2362d3Smrg} 1692de2362d3Smrg# end func_convert_file_noop 1693de2362d3Smrg 1694de2362d3Smrg 1695de2362d3Smrg# func_convert_file_msys_to_w32 ARG 1696de2362d3Smrg# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic 1697de2362d3Smrg# conversion to w32 is not available inside the cwrapper. Returns result in 1698de2362d3Smrg# func_to_host_file_result. 1699de2362d3Smrgfunc_convert_file_msys_to_w32 () 1700de2362d3Smrg{ 1701de2362d3Smrg $opt_debug 1702de2362d3Smrg func_to_host_file_result="$1" 1703de2362d3Smrg if test -n "$1"; then 1704de2362d3Smrg func_convert_core_msys_to_w32 "$1" 1705de2362d3Smrg func_to_host_file_result="$func_convert_core_msys_to_w32_result" 1706de2362d3Smrg fi 1707de2362d3Smrg func_convert_file_check "$1" "$func_to_host_file_result" 1708de2362d3Smrg} 1709de2362d3Smrg# end func_convert_file_msys_to_w32 1710de2362d3Smrg 1711de2362d3Smrg 1712de2362d3Smrg# func_convert_file_cygwin_to_w32 ARG 1713de2362d3Smrg# Convert file name ARG from Cygwin to w32 format. Returns result in 1714de2362d3Smrg# func_to_host_file_result. 1715de2362d3Smrgfunc_convert_file_cygwin_to_w32 () 1716de2362d3Smrg{ 1717de2362d3Smrg $opt_debug 1718de2362d3Smrg func_to_host_file_result="$1" 1719de2362d3Smrg if test -n "$1"; then 1720de2362d3Smrg # because $build is cygwin, we call "the" cygpath in $PATH; no need to use 1721de2362d3Smrg # LT_CYGPATH in this case. 1722de2362d3Smrg func_to_host_file_result=`cygpath -m "$1"` 1723de2362d3Smrg fi 1724de2362d3Smrg func_convert_file_check "$1" "$func_to_host_file_result" 1725de2362d3Smrg} 1726de2362d3Smrg# end func_convert_file_cygwin_to_w32 1727de2362d3Smrg 1728de2362d3Smrg 1729de2362d3Smrg# func_convert_file_nix_to_w32 ARG 1730de2362d3Smrg# Convert file name ARG from *nix to w32 format. Requires a wine environment 1731de2362d3Smrg# and a working winepath. Returns result in func_to_host_file_result. 1732de2362d3Smrgfunc_convert_file_nix_to_w32 () 1733de2362d3Smrg{ 1734de2362d3Smrg $opt_debug 1735de2362d3Smrg func_to_host_file_result="$1" 1736de2362d3Smrg if test -n "$1"; then 1737de2362d3Smrg func_convert_core_file_wine_to_w32 "$1" 1738de2362d3Smrg func_to_host_file_result="$func_convert_core_file_wine_to_w32_result" 1739de2362d3Smrg fi 1740de2362d3Smrg func_convert_file_check "$1" "$func_to_host_file_result" 1741de2362d3Smrg} 1742de2362d3Smrg# end func_convert_file_nix_to_w32 1743de2362d3Smrg 1744de2362d3Smrg 1745de2362d3Smrg# func_convert_file_msys_to_cygwin ARG 1746de2362d3Smrg# Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. 1747de2362d3Smrg# Returns result in func_to_host_file_result. 1748de2362d3Smrgfunc_convert_file_msys_to_cygwin () 1749de2362d3Smrg{ 1750de2362d3Smrg $opt_debug 1751de2362d3Smrg func_to_host_file_result="$1" 1752de2362d3Smrg if test -n "$1"; then 1753de2362d3Smrg func_convert_core_msys_to_w32 "$1" 1754de2362d3Smrg func_cygpath -u "$func_convert_core_msys_to_w32_result" 1755de2362d3Smrg func_to_host_file_result="$func_cygpath_result" 1756de2362d3Smrg fi 1757de2362d3Smrg func_convert_file_check "$1" "$func_to_host_file_result" 1758de2362d3Smrg} 1759de2362d3Smrg# end func_convert_file_msys_to_cygwin 1760de2362d3Smrg 1761de2362d3Smrg 1762de2362d3Smrg# func_convert_file_nix_to_cygwin ARG 1763de2362d3Smrg# Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed 1764de2362d3Smrg# in a wine environment, working winepath, and LT_CYGPATH set. Returns result 1765de2362d3Smrg# in func_to_host_file_result. 1766de2362d3Smrgfunc_convert_file_nix_to_cygwin () 1767de2362d3Smrg{ 1768de2362d3Smrg $opt_debug 1769de2362d3Smrg func_to_host_file_result="$1" 1770de2362d3Smrg if test -n "$1"; then 1771de2362d3Smrg # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. 1772de2362d3Smrg func_convert_core_file_wine_to_w32 "$1" 1773de2362d3Smrg func_cygpath -u "$func_convert_core_file_wine_to_w32_result" 1774de2362d3Smrg func_to_host_file_result="$func_cygpath_result" 1775de2362d3Smrg fi 1776de2362d3Smrg func_convert_file_check "$1" "$func_to_host_file_result" 1777de2362d3Smrg} 1778de2362d3Smrg# end func_convert_file_nix_to_cygwin 1779de2362d3Smrg 1780de2362d3Smrg 1781de2362d3Smrg############################################# 1782de2362d3Smrg# $build to $host PATH CONVERSION FUNCTIONS # 1783de2362d3Smrg############################################# 1784de2362d3Smrg# invoked via `$to_host_path_cmd ARG' 1785de2362d3Smrg# 1786de2362d3Smrg# In each case, ARG is the path to be converted from $build to $host format. 1787de2362d3Smrg# The result will be available in $func_to_host_path_result. 1788de2362d3Smrg# 1789de2362d3Smrg# Path separators are also converted from $build format to $host format. If 1790de2362d3Smrg# ARG begins or ends with a path separator character, it is preserved (but 1791de2362d3Smrg# converted to $host format) on output. 1792de2362d3Smrg# 1793de2362d3Smrg# All path conversion functions are named using the following convention: 1794de2362d3Smrg# file name conversion function : func_convert_file_X_to_Y () 1795de2362d3Smrg# path conversion function : func_convert_path_X_to_Y () 1796de2362d3Smrg# where, for any given $build/$host combination the 'X_to_Y' value is the 1797de2362d3Smrg# same. If conversion functions are added for new $build/$host combinations, 1798de2362d3Smrg# the two new functions must follow this pattern, or func_init_to_host_path_cmd 1799de2362d3Smrg# will break. 1800de2362d3Smrg 1801de2362d3Smrg 1802de2362d3Smrg# func_init_to_host_path_cmd 1803de2362d3Smrg# Ensures that function "pointer" variable $to_host_path_cmd is set to the 1804de2362d3Smrg# appropriate value, based on the value of $to_host_file_cmd. 1805de2362d3Smrgto_host_path_cmd= 1806de2362d3Smrgfunc_init_to_host_path_cmd () 1807de2362d3Smrg{ 1808de2362d3Smrg $opt_debug 1809de2362d3Smrg if test -z "$to_host_path_cmd"; then 1810de2362d3Smrg func_stripname 'func_convert_file_' '' "$to_host_file_cmd" 1811de2362d3Smrg to_host_path_cmd="func_convert_path_${func_stripname_result}" 1812de2362d3Smrg fi 1813de2362d3Smrg} 1814de2362d3Smrg 1815de2362d3Smrg 1816de2362d3Smrg# func_to_host_path ARG 1817de2362d3Smrg# Converts the path ARG from $build format to $host format. Return result 1818de2362d3Smrg# in func_to_host_path_result. 1819de2362d3Smrgfunc_to_host_path () 1820de2362d3Smrg{ 1821de2362d3Smrg $opt_debug 1822de2362d3Smrg func_init_to_host_path_cmd 1823de2362d3Smrg $to_host_path_cmd "$1" 1824de2362d3Smrg} 1825de2362d3Smrg# end func_to_host_path 1826de2362d3Smrg 1827de2362d3Smrg 1828de2362d3Smrg# func_convert_path_noop ARG 1829de2362d3Smrg# Copy ARG to func_to_host_path_result. 1830de2362d3Smrgfunc_convert_path_noop () 1831de2362d3Smrg{ 1832de2362d3Smrg func_to_host_path_result="$1" 1833de2362d3Smrg} 1834de2362d3Smrg# end func_convert_path_noop 1835de2362d3Smrg 1836de2362d3Smrg 1837de2362d3Smrg# func_convert_path_msys_to_w32 ARG 1838de2362d3Smrg# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic 1839de2362d3Smrg# conversion to w32 is not available inside the cwrapper. Returns result in 1840de2362d3Smrg# func_to_host_path_result. 1841de2362d3Smrgfunc_convert_path_msys_to_w32 () 1842de2362d3Smrg{ 1843de2362d3Smrg $opt_debug 1844de2362d3Smrg func_to_host_path_result="$1" 1845de2362d3Smrg if test -n "$1"; then 1846de2362d3Smrg # Remove leading and trailing path separator characters from ARG. MSYS 1847de2362d3Smrg # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; 1848de2362d3Smrg # and winepath ignores them completely. 1849de2362d3Smrg func_stripname : : "$1" 1850de2362d3Smrg func_to_host_path_tmp1=$func_stripname_result 1851de2362d3Smrg func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" 1852de2362d3Smrg func_to_host_path_result="$func_convert_core_msys_to_w32_result" 1853de2362d3Smrg func_convert_path_check : ";" \ 1854de2362d3Smrg "$func_to_host_path_tmp1" "$func_to_host_path_result" 1855de2362d3Smrg func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" 1856de2362d3Smrg fi 1857de2362d3Smrg} 1858de2362d3Smrg# end func_convert_path_msys_to_w32 1859de2362d3Smrg 1860de2362d3Smrg 1861de2362d3Smrg# func_convert_path_cygwin_to_w32 ARG 1862de2362d3Smrg# Convert path ARG from Cygwin to w32 format. Returns result in 1863de2362d3Smrg# func_to_host_file_result. 1864de2362d3Smrgfunc_convert_path_cygwin_to_w32 () 1865de2362d3Smrg{ 1866de2362d3Smrg $opt_debug 1867de2362d3Smrg func_to_host_path_result="$1" 1868de2362d3Smrg if test -n "$1"; then 1869de2362d3Smrg # See func_convert_path_msys_to_w32: 1870de2362d3Smrg func_stripname : : "$1" 1871de2362d3Smrg func_to_host_path_tmp1=$func_stripname_result 1872de2362d3Smrg func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` 1873de2362d3Smrg func_convert_path_check : ";" \ 1874de2362d3Smrg "$func_to_host_path_tmp1" "$func_to_host_path_result" 1875de2362d3Smrg func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" 1876de2362d3Smrg fi 1877de2362d3Smrg} 1878de2362d3Smrg# end func_convert_path_cygwin_to_w32 1879de2362d3Smrg 1880de2362d3Smrg 1881de2362d3Smrg# func_convert_path_nix_to_w32 ARG 1882de2362d3Smrg# Convert path ARG from *nix to w32 format. Requires a wine environment and 1883de2362d3Smrg# a working winepath. Returns result in func_to_host_file_result. 1884de2362d3Smrgfunc_convert_path_nix_to_w32 () 1885de2362d3Smrg{ 1886de2362d3Smrg $opt_debug 1887de2362d3Smrg func_to_host_path_result="$1" 1888de2362d3Smrg if test -n "$1"; then 1889de2362d3Smrg # See func_convert_path_msys_to_w32: 1890de2362d3Smrg func_stripname : : "$1" 1891de2362d3Smrg func_to_host_path_tmp1=$func_stripname_result 1892de2362d3Smrg func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" 1893de2362d3Smrg func_to_host_path_result="$func_convert_core_path_wine_to_w32_result" 1894de2362d3Smrg func_convert_path_check : ";" \ 1895de2362d3Smrg "$func_to_host_path_tmp1" "$func_to_host_path_result" 1896de2362d3Smrg func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" 1897de2362d3Smrg fi 1898de2362d3Smrg} 1899de2362d3Smrg# end func_convert_path_nix_to_w32 1900de2362d3Smrg 1901de2362d3Smrg 1902de2362d3Smrg# func_convert_path_msys_to_cygwin ARG 1903de2362d3Smrg# Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. 1904de2362d3Smrg# Returns result in func_to_host_file_result. 1905de2362d3Smrgfunc_convert_path_msys_to_cygwin () 1906de2362d3Smrg{ 1907de2362d3Smrg $opt_debug 1908de2362d3Smrg func_to_host_path_result="$1" 1909de2362d3Smrg if test -n "$1"; then 1910de2362d3Smrg # See func_convert_path_msys_to_w32: 1911de2362d3Smrg func_stripname : : "$1" 1912de2362d3Smrg func_to_host_path_tmp1=$func_stripname_result 1913de2362d3Smrg func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" 1914de2362d3Smrg func_cygpath -u -p "$func_convert_core_msys_to_w32_result" 1915de2362d3Smrg func_to_host_path_result="$func_cygpath_result" 1916de2362d3Smrg func_convert_path_check : : \ 1917de2362d3Smrg "$func_to_host_path_tmp1" "$func_to_host_path_result" 1918de2362d3Smrg func_convert_path_front_back_pathsep ":*" "*:" : "$1" 1919de2362d3Smrg fi 1920de2362d3Smrg} 1921de2362d3Smrg# end func_convert_path_msys_to_cygwin 1922de2362d3Smrg 1923de2362d3Smrg 1924de2362d3Smrg# func_convert_path_nix_to_cygwin ARG 1925de2362d3Smrg# Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a 1926de2362d3Smrg# a wine environment, working winepath, and LT_CYGPATH set. Returns result in 1927de2362d3Smrg# func_to_host_file_result. 1928de2362d3Smrgfunc_convert_path_nix_to_cygwin () 1929de2362d3Smrg{ 1930de2362d3Smrg $opt_debug 1931de2362d3Smrg func_to_host_path_result="$1" 1932de2362d3Smrg if test -n "$1"; then 1933de2362d3Smrg # Remove leading and trailing path separator characters from 1934de2362d3Smrg # ARG. msys behavior is inconsistent here, cygpath turns them 1935de2362d3Smrg # into '.;' and ';.', and winepath ignores them completely. 1936de2362d3Smrg func_stripname : : "$1" 1937de2362d3Smrg func_to_host_path_tmp1=$func_stripname_result 1938de2362d3Smrg func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" 1939de2362d3Smrg func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" 1940de2362d3Smrg func_to_host_path_result="$func_cygpath_result" 1941de2362d3Smrg func_convert_path_check : : \ 1942de2362d3Smrg "$func_to_host_path_tmp1" "$func_to_host_path_result" 1943de2362d3Smrg func_convert_path_front_back_pathsep ":*" "*:" : "$1" 1944de2362d3Smrg fi 1945de2362d3Smrg} 1946de2362d3Smrg# end func_convert_path_nix_to_cygwin 1947de2362d3Smrg 1948de2362d3Smrg 1949de2362d3Smrg# func_mode_compile arg... 1950de2362d3Smrgfunc_mode_compile () 1951de2362d3Smrg{ 1952de2362d3Smrg $opt_debug 1953de2362d3Smrg # Get the compilation command and the source file. 1954de2362d3Smrg base_compile= 1955de2362d3Smrg srcfile="$nonopt" # always keep a non-empty value in "srcfile" 1956de2362d3Smrg suppress_opt=yes 1957de2362d3Smrg suppress_output= 1958de2362d3Smrg arg_mode=normal 1959de2362d3Smrg libobj= 1960de2362d3Smrg later= 1961de2362d3Smrg pie_flag= 1962de2362d3Smrg 1963de2362d3Smrg for arg 1964de2362d3Smrg do 1965de2362d3Smrg case $arg_mode in 1966de2362d3Smrg arg ) 1967de2362d3Smrg # do not "continue". Instead, add this to base_compile 1968de2362d3Smrg lastarg="$arg" 1969de2362d3Smrg arg_mode=normal 1970de2362d3Smrg ;; 1971de2362d3Smrg 1972de2362d3Smrg target ) 1973de2362d3Smrg libobj="$arg" 1974de2362d3Smrg arg_mode=normal 1975de2362d3Smrg continue 1976de2362d3Smrg ;; 1977de2362d3Smrg 1978de2362d3Smrg normal ) 1979de2362d3Smrg # Accept any command-line options. 1980de2362d3Smrg case $arg in 1981de2362d3Smrg -o) 1982de2362d3Smrg test -n "$libobj" && \ 1983de2362d3Smrg func_fatal_error "you cannot specify \`-o' more than once" 1984de2362d3Smrg arg_mode=target 1985de2362d3Smrg continue 1986de2362d3Smrg ;; 1987de2362d3Smrg 1988de2362d3Smrg -pie | -fpie | -fPIE) 1989de2362d3Smrg func_append pie_flag " $arg" 1990de2362d3Smrg continue 1991de2362d3Smrg ;; 1992de2362d3Smrg 1993de2362d3Smrg -shared | -static | -prefer-pic | -prefer-non-pic) 1994de2362d3Smrg func_append later " $arg" 1995de2362d3Smrg continue 1996de2362d3Smrg ;; 1997de2362d3Smrg 1998de2362d3Smrg -no-suppress) 1999de2362d3Smrg suppress_opt=no 2000de2362d3Smrg continue 2001de2362d3Smrg ;; 2002de2362d3Smrg 2003de2362d3Smrg -Xcompiler) 2004de2362d3Smrg arg_mode=arg # the next one goes into the "base_compile" arg list 2005de2362d3Smrg continue # The current "srcfile" will either be retained or 2006de2362d3Smrg ;; # replaced later. I would guess that would be a bug. 2007de2362d3Smrg 2008de2362d3Smrg -Wc,*) 2009de2362d3Smrg func_stripname '-Wc,' '' "$arg" 2010de2362d3Smrg args=$func_stripname_result 2011de2362d3Smrg lastarg= 2012de2362d3Smrg save_ifs="$IFS"; IFS=',' 2013de2362d3Smrg for arg in $args; do 2014de2362d3Smrg IFS="$save_ifs" 2015de2362d3Smrg func_append_quoted lastarg "$arg" 2016de2362d3Smrg done 2017de2362d3Smrg IFS="$save_ifs" 2018de2362d3Smrg func_stripname ' ' '' "$lastarg" 2019de2362d3Smrg lastarg=$func_stripname_result 2020de2362d3Smrg 2021de2362d3Smrg # Add the arguments to base_compile. 2022de2362d3Smrg func_append base_compile " $lastarg" 2023de2362d3Smrg continue 2024de2362d3Smrg ;; 2025de2362d3Smrg 2026de2362d3Smrg *) 2027de2362d3Smrg # Accept the current argument as the source file. 2028de2362d3Smrg # The previous "srcfile" becomes the current argument. 2029de2362d3Smrg # 2030de2362d3Smrg lastarg="$srcfile" 2031de2362d3Smrg srcfile="$arg" 2032de2362d3Smrg ;; 2033de2362d3Smrg esac # case $arg 2034de2362d3Smrg ;; 2035de2362d3Smrg esac # case $arg_mode 2036de2362d3Smrg 2037de2362d3Smrg # Aesthetically quote the previous argument. 2038de2362d3Smrg func_append_quoted base_compile "$lastarg" 2039de2362d3Smrg done # for arg 2040de2362d3Smrg 2041de2362d3Smrg case $arg_mode in 2042de2362d3Smrg arg) 2043de2362d3Smrg func_fatal_error "you must specify an argument for -Xcompile" 2044de2362d3Smrg ;; 2045de2362d3Smrg target) 2046de2362d3Smrg func_fatal_error "you must specify a target with \`-o'" 2047de2362d3Smrg ;; 2048de2362d3Smrg *) 2049de2362d3Smrg # Get the name of the library object. 2050de2362d3Smrg test -z "$libobj" && { 2051de2362d3Smrg func_basename "$srcfile" 2052de2362d3Smrg libobj="$func_basename_result" 2053de2362d3Smrg } 2054de2362d3Smrg ;; 2055de2362d3Smrg esac 2056de2362d3Smrg 2057de2362d3Smrg # Recognize several different file suffixes. 2058de2362d3Smrg # If the user specifies -o file.o, it is replaced with file.lo 2059de2362d3Smrg case $libobj in 2060de2362d3Smrg *.[cCFSifmso] | \ 2061de2362d3Smrg *.ada | *.adb | *.ads | *.asm | \ 2062de2362d3Smrg *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ 2063de2362d3Smrg *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) 2064de2362d3Smrg func_xform "$libobj" 2065de2362d3Smrg libobj=$func_xform_result 2066de2362d3Smrg ;; 2067de2362d3Smrg esac 2068de2362d3Smrg 2069de2362d3Smrg case $libobj in 2070de2362d3Smrg *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; 2071de2362d3Smrg *) 2072de2362d3Smrg func_fatal_error "cannot determine name of library object from \`$libobj'" 2073de2362d3Smrg ;; 2074de2362d3Smrg esac 2075de2362d3Smrg 2076de2362d3Smrg func_infer_tag $base_compile 2077de2362d3Smrg 2078de2362d3Smrg for arg in $later; do 2079de2362d3Smrg case $arg in 2080de2362d3Smrg -shared) 2081de2362d3Smrg test "$build_libtool_libs" != yes && \ 2082de2362d3Smrg func_fatal_configuration "can not build a shared library" 2083de2362d3Smrg build_old_libs=no 2084de2362d3Smrg continue 2085de2362d3Smrg ;; 2086de2362d3Smrg 2087de2362d3Smrg -static) 2088de2362d3Smrg build_libtool_libs=no 2089de2362d3Smrg build_old_libs=yes 2090de2362d3Smrg continue 2091de2362d3Smrg ;; 2092de2362d3Smrg 2093de2362d3Smrg -prefer-pic) 2094de2362d3Smrg pic_mode=yes 2095de2362d3Smrg continue 2096de2362d3Smrg ;; 2097de2362d3Smrg 2098de2362d3Smrg -prefer-non-pic) 2099de2362d3Smrg pic_mode=no 2100de2362d3Smrg continue 2101de2362d3Smrg ;; 2102de2362d3Smrg esac 2103de2362d3Smrg done 2104de2362d3Smrg 2105de2362d3Smrg func_quote_for_eval "$libobj" 2106de2362d3Smrg test "X$libobj" != "X$func_quote_for_eval_result" \ 2107de2362d3Smrg && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ 2108de2362d3Smrg && func_warning "libobj name \`$libobj' may not contain shell special characters." 2109de2362d3Smrg func_dirname_and_basename "$obj" "/" "" 2110de2362d3Smrg objname="$func_basename_result" 2111de2362d3Smrg xdir="$func_dirname_result" 2112de2362d3Smrg lobj=${xdir}$objdir/$objname 2113de2362d3Smrg 2114de2362d3Smrg test -z "$base_compile" && \ 2115de2362d3Smrg func_fatal_help "you must specify a compilation command" 2116de2362d3Smrg 2117de2362d3Smrg # Delete any leftover library objects. 2118de2362d3Smrg if test "$build_old_libs" = yes; then 2119de2362d3Smrg removelist="$obj $lobj $libobj ${libobj}T" 2120de2362d3Smrg else 2121de2362d3Smrg removelist="$lobj $libobj ${libobj}T" 2122de2362d3Smrg fi 2123de2362d3Smrg 2124de2362d3Smrg # On Cygwin there's no "real" PIC flag so we must build both object types 2125de2362d3Smrg case $host_os in 2126de2362d3Smrg cygwin* | mingw* | pw32* | os2* | cegcc*) 2127de2362d3Smrg pic_mode=default 2128de2362d3Smrg ;; 2129de2362d3Smrg esac 2130de2362d3Smrg if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then 2131de2362d3Smrg # non-PIC code in shared libraries is not supported 2132de2362d3Smrg pic_mode=default 2133de2362d3Smrg fi 2134de2362d3Smrg 2135de2362d3Smrg # Calculate the filename of the output object if compiler does 2136de2362d3Smrg # not support -o with -c 2137de2362d3Smrg if test "$compiler_c_o" = no; then 2138de2362d3Smrg output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext} 2139de2362d3Smrg lockfile="$output_obj.lock" 2140de2362d3Smrg else 2141de2362d3Smrg output_obj= 2142de2362d3Smrg need_locks=no 2143de2362d3Smrg lockfile= 2144de2362d3Smrg fi 2145de2362d3Smrg 2146de2362d3Smrg # Lock this critical section if it is needed 2147de2362d3Smrg # We use this script file to make the link, it avoids creating a new file 2148de2362d3Smrg if test "$need_locks" = yes; then 2149de2362d3Smrg until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do 2150de2362d3Smrg func_echo "Waiting for $lockfile to be removed" 2151de2362d3Smrg sleep 2 2152de2362d3Smrg done 2153de2362d3Smrg elif test "$need_locks" = warn; then 2154de2362d3Smrg if test -f "$lockfile"; then 2155de2362d3Smrg $ECHO "\ 2156de2362d3Smrg*** ERROR, $lockfile exists and contains: 2157de2362d3Smrg`cat $lockfile 2>/dev/null` 2158de2362d3Smrg 2159de2362d3SmrgThis indicates that another process is trying to use the same 2160de2362d3Smrgtemporary object file, and libtool could not work around it because 2161de2362d3Smrgyour compiler does not support \`-c' and \`-o' together. If you 2162de2362d3Smrgrepeat this compilation, it may succeed, by chance, but you had better 2163de2362d3Smrgavoid parallel builds (make -j) in this platform, or get a better 2164de2362d3Smrgcompiler." 2165de2362d3Smrg 2166de2362d3Smrg $opt_dry_run || $RM $removelist 2167de2362d3Smrg exit $EXIT_FAILURE 2168de2362d3Smrg fi 2169de2362d3Smrg func_append removelist " $output_obj" 2170de2362d3Smrg $ECHO "$srcfile" > "$lockfile" 2171de2362d3Smrg fi 2172de2362d3Smrg 2173de2362d3Smrg $opt_dry_run || $RM $removelist 2174de2362d3Smrg func_append removelist " $lockfile" 2175de2362d3Smrg trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 2176de2362d3Smrg 2177de2362d3Smrg func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 2178de2362d3Smrg srcfile=$func_to_tool_file_result 2179de2362d3Smrg func_quote_for_eval "$srcfile" 2180de2362d3Smrg qsrcfile=$func_quote_for_eval_result 2181de2362d3Smrg 2182de2362d3Smrg # Only build a PIC object if we are building libtool libraries. 2183de2362d3Smrg if test "$build_libtool_libs" = yes; then 2184de2362d3Smrg # Without this assignment, base_compile gets emptied. 2185de2362d3Smrg fbsd_hideous_sh_bug=$base_compile 2186de2362d3Smrg 2187de2362d3Smrg if test "$pic_mode" != no; then 2188de2362d3Smrg command="$base_compile $qsrcfile $pic_flag" 2189de2362d3Smrg else 2190de2362d3Smrg # Don't build PIC code 2191de2362d3Smrg command="$base_compile $qsrcfile" 2192de2362d3Smrg fi 2193de2362d3Smrg 2194de2362d3Smrg func_mkdir_p "$xdir$objdir" 2195de2362d3Smrg 2196de2362d3Smrg if test -z "$output_obj"; then 2197de2362d3Smrg # Place PIC objects in $objdir 2198de2362d3Smrg func_append command " -o $lobj" 2199de2362d3Smrg fi 2200de2362d3Smrg 2201de2362d3Smrg func_show_eval_locale "$command" \ 2202de2362d3Smrg 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' 2203de2362d3Smrg 2204de2362d3Smrg if test "$need_locks" = warn && 2205de2362d3Smrg test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 2206de2362d3Smrg $ECHO "\ 2207de2362d3Smrg*** ERROR, $lockfile contains: 2208de2362d3Smrg`cat $lockfile 2>/dev/null` 2209de2362d3Smrg 2210de2362d3Smrgbut it should contain: 2211de2362d3Smrg$srcfile 2212de2362d3Smrg 2213de2362d3SmrgThis indicates that another process is trying to use the same 2214de2362d3Smrgtemporary object file, and libtool could not work around it because 2215de2362d3Smrgyour compiler does not support \`-c' and \`-o' together. If you 2216de2362d3Smrgrepeat this compilation, it may succeed, by chance, but you had better 2217de2362d3Smrgavoid parallel builds (make -j) in this platform, or get a better 2218de2362d3Smrgcompiler." 2219de2362d3Smrg 2220de2362d3Smrg $opt_dry_run || $RM $removelist 2221de2362d3Smrg exit $EXIT_FAILURE 2222de2362d3Smrg fi 2223de2362d3Smrg 2224de2362d3Smrg # Just move the object if needed, then go on to compile the next one 2225de2362d3Smrg if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then 2226de2362d3Smrg func_show_eval '$MV "$output_obj" "$lobj"' \ 2227de2362d3Smrg 'error=$?; $opt_dry_run || $RM $removelist; exit $error' 2228de2362d3Smrg fi 2229de2362d3Smrg 2230de2362d3Smrg # Allow error messages only from the first compilation. 2231de2362d3Smrg if test "$suppress_opt" = yes; then 2232de2362d3Smrg suppress_output=' >/dev/null 2>&1' 2233de2362d3Smrg fi 2234de2362d3Smrg fi 2235de2362d3Smrg 2236de2362d3Smrg # Only build a position-dependent object if we build old libraries. 2237de2362d3Smrg if test "$build_old_libs" = yes; then 2238de2362d3Smrg if test "$pic_mode" != yes; then 2239de2362d3Smrg # Don't build PIC code 2240de2362d3Smrg command="$base_compile $qsrcfile$pie_flag" 2241de2362d3Smrg else 2242de2362d3Smrg command="$base_compile $qsrcfile $pic_flag" 2243de2362d3Smrg fi 2244de2362d3Smrg if test "$compiler_c_o" = yes; then 2245de2362d3Smrg func_append command " -o $obj" 2246de2362d3Smrg fi 2247de2362d3Smrg 2248de2362d3Smrg # Suppress compiler output if we already did a PIC compilation. 2249de2362d3Smrg func_append command "$suppress_output" 2250de2362d3Smrg func_show_eval_locale "$command" \ 2251de2362d3Smrg '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 2252de2362d3Smrg 2253de2362d3Smrg if test "$need_locks" = warn && 2254de2362d3Smrg test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 2255de2362d3Smrg $ECHO "\ 2256de2362d3Smrg*** ERROR, $lockfile contains: 2257de2362d3Smrg`cat $lockfile 2>/dev/null` 2258de2362d3Smrg 2259de2362d3Smrgbut it should contain: 2260de2362d3Smrg$srcfile 2261de2362d3Smrg 2262de2362d3SmrgThis indicates that another process is trying to use the same 2263de2362d3Smrgtemporary object file, and libtool could not work around it because 2264de2362d3Smrgyour compiler does not support \`-c' and \`-o' together. If you 2265de2362d3Smrgrepeat this compilation, it may succeed, by chance, but you had better 2266de2362d3Smrgavoid parallel builds (make -j) in this platform, or get a better 2267de2362d3Smrgcompiler." 2268de2362d3Smrg 2269de2362d3Smrg $opt_dry_run || $RM $removelist 2270de2362d3Smrg exit $EXIT_FAILURE 2271de2362d3Smrg fi 2272de2362d3Smrg 2273de2362d3Smrg # Just move the object if needed 2274de2362d3Smrg if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then 2275de2362d3Smrg func_show_eval '$MV "$output_obj" "$obj"' \ 2276de2362d3Smrg 'error=$?; $opt_dry_run || $RM $removelist; exit $error' 2277de2362d3Smrg fi 2278de2362d3Smrg fi 2279de2362d3Smrg 2280de2362d3Smrg $opt_dry_run || { 2281de2362d3Smrg func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" 2282de2362d3Smrg 2283de2362d3Smrg # Unlock the critical section if it was locked 2284de2362d3Smrg if test "$need_locks" != no; then 2285de2362d3Smrg removelist=$lockfile 2286de2362d3Smrg $RM "$lockfile" 2287de2362d3Smrg fi 2288de2362d3Smrg } 2289de2362d3Smrg 2290de2362d3Smrg exit $EXIT_SUCCESS 2291de2362d3Smrg} 2292de2362d3Smrg 2293de2362d3Smrg$opt_help || { 2294de2362d3Smrg test "$opt_mode" = compile && func_mode_compile ${1+"$@"} 2295de2362d3Smrg} 2296de2362d3Smrg 2297de2362d3Smrgfunc_mode_help () 2298de2362d3Smrg{ 2299de2362d3Smrg # We need to display help for each of the modes. 2300de2362d3Smrg case $opt_mode in 2301de2362d3Smrg "") 2302de2362d3Smrg # Generic help is extracted from the usage comments 2303de2362d3Smrg # at the start of this file. 2304de2362d3Smrg func_help 2305de2362d3Smrg ;; 2306de2362d3Smrg 2307de2362d3Smrg clean) 2308de2362d3Smrg $ECHO \ 2309de2362d3Smrg"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... 2310de2362d3Smrg 2311de2362d3SmrgRemove files from the build directory. 2312de2362d3Smrg 2313de2362d3SmrgRM is the name of the program to use to delete files associated with each FILE 2314de2362d3Smrg(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 2315de2362d3Smrgto RM. 2316de2362d3Smrg 2317de2362d3SmrgIf FILE is a libtool library, object or program, all the files associated 2318de2362d3Smrgwith it are deleted. Otherwise, only FILE itself is deleted using RM." 2319de2362d3Smrg ;; 2320de2362d3Smrg 2321de2362d3Smrg compile) 2322de2362d3Smrg $ECHO \ 2323de2362d3Smrg"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE 2324de2362d3Smrg 2325de2362d3SmrgCompile a source file into a libtool library object. 2326de2362d3Smrg 2327de2362d3SmrgThis mode accepts the following additional options: 2328de2362d3Smrg 2329de2362d3Smrg -o OUTPUT-FILE set the output file name to OUTPUT-FILE 2330de2362d3Smrg -no-suppress do not suppress compiler output for multiple passes 2331de2362d3Smrg -prefer-pic try to build PIC objects only 2332de2362d3Smrg -prefer-non-pic try to build non-PIC objects only 2333de2362d3Smrg -shared do not build a \`.o' file suitable for static linking 2334de2362d3Smrg -static only build a \`.o' file suitable for static linking 2335de2362d3Smrg -Wc,FLAG pass FLAG directly to the compiler 2336de2362d3Smrg 2337de2362d3SmrgCOMPILE-COMMAND is a command to be used in creating a \`standard' object file 2338de2362d3Smrgfrom the given SOURCEFILE. 2339de2362d3Smrg 2340de2362d3SmrgThe output file name is determined by removing the directory component from 2341de2362d3SmrgSOURCEFILE, then substituting the C source code suffix \`.c' with the 2342de2362d3Smrglibrary object suffix, \`.lo'." 2343de2362d3Smrg ;; 2344de2362d3Smrg 2345de2362d3Smrg execute) 2346de2362d3Smrg $ECHO \ 2347de2362d3Smrg"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... 2348de2362d3Smrg 2349de2362d3SmrgAutomatically set library path, then run a program. 2350de2362d3Smrg 2351de2362d3SmrgThis mode accepts the following additional options: 2352de2362d3Smrg 2353de2362d3Smrg -dlopen FILE add the directory containing FILE to the library path 2354de2362d3Smrg 2355de2362d3SmrgThis mode sets the library path environment variable according to \`-dlopen' 2356de2362d3Smrgflags. 2357de2362d3Smrg 2358de2362d3SmrgIf any of the ARGS are libtool executable wrappers, then they are translated 2359de2362d3Smrginto their corresponding uninstalled binary, and any of their required library 2360de2362d3Smrgdirectories are added to the library path. 2361de2362d3Smrg 2362de2362d3SmrgThen, COMMAND is executed, with ARGS as arguments." 2363de2362d3Smrg ;; 2364de2362d3Smrg 2365de2362d3Smrg finish) 2366de2362d3Smrg $ECHO \ 2367de2362d3Smrg"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... 2368de2362d3Smrg 2369de2362d3SmrgComplete the installation of libtool libraries. 2370de2362d3Smrg 2371de2362d3SmrgEach LIBDIR is a directory that contains libtool libraries. 2372de2362d3Smrg 2373de2362d3SmrgThe commands that this mode executes may require superuser privileges. Use 2374de2362d3Smrgthe \`--dry-run' option if you just want to see what would be executed." 2375de2362d3Smrg ;; 2376de2362d3Smrg 2377de2362d3Smrg install) 2378de2362d3Smrg $ECHO \ 2379de2362d3Smrg"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... 2380de2362d3Smrg 2381de2362d3SmrgInstall executables or libraries. 2382de2362d3Smrg 2383de2362d3SmrgINSTALL-COMMAND is the installation command. The first component should be 2384de2362d3Smrgeither the \`install' or \`cp' program. 2385de2362d3Smrg 2386de2362d3SmrgThe following components of INSTALL-COMMAND are treated specially: 2387de2362d3Smrg 2388de2362d3Smrg -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation 2389de2362d3Smrg 2390de2362d3SmrgThe rest of the components are interpreted as arguments to that command (only 2391de2362d3SmrgBSD-compatible install options are recognized)." 2392de2362d3Smrg ;; 2393de2362d3Smrg 2394de2362d3Smrg link) 2395de2362d3Smrg $ECHO \ 2396de2362d3Smrg"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... 2397de2362d3Smrg 2398de2362d3SmrgLink object files or libraries together to form another library, or to 2399de2362d3Smrgcreate an executable program. 2400de2362d3Smrg 2401de2362d3SmrgLINK-COMMAND is a command using the C compiler that you would use to create 2402de2362d3Smrga program from several object files. 2403de2362d3Smrg 2404de2362d3SmrgThe following components of LINK-COMMAND are treated specially: 2405de2362d3Smrg 2406de2362d3Smrg -all-static do not do any dynamic linking at all 2407de2362d3Smrg -avoid-version do not add a version suffix if possible 2408de2362d3Smrg -bindir BINDIR specify path to binaries directory (for systems where 2409de2362d3Smrg libraries must be found in the PATH setting at runtime) 2410de2362d3Smrg -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime 2411de2362d3Smrg -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols 2412de2362d3Smrg -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) 2413de2362d3Smrg -export-symbols SYMFILE 2414de2362d3Smrg try to export only the symbols listed in SYMFILE 2415de2362d3Smrg -export-symbols-regex REGEX 2416de2362d3Smrg try to export only the symbols matching REGEX 2417de2362d3Smrg -LLIBDIR search LIBDIR for required installed libraries 2418de2362d3Smrg -lNAME OUTPUT-FILE requires the installed library libNAME 2419de2362d3Smrg -module build a library that can dlopened 2420de2362d3Smrg -no-fast-install disable the fast-install mode 2421de2362d3Smrg -no-install link a not-installable executable 2422de2362d3Smrg -no-undefined declare that a library does not refer to external symbols 2423de2362d3Smrg -o OUTPUT-FILE create OUTPUT-FILE from the specified objects 2424de2362d3Smrg -objectlist FILE Use a list of object files found in FILE to specify objects 2425de2362d3Smrg -precious-files-regex REGEX 2426de2362d3Smrg don't remove output files matching REGEX 2427de2362d3Smrg -release RELEASE specify package release information 2428de2362d3Smrg -rpath LIBDIR the created library will eventually be installed in LIBDIR 2429de2362d3Smrg -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries 2430de2362d3Smrg -shared only do dynamic linking of libtool libraries 2431de2362d3Smrg -shrext SUFFIX override the standard shared library file extension 2432de2362d3Smrg -static do not do any dynamic linking of uninstalled libtool libraries 2433de2362d3Smrg -static-libtool-libs 2434de2362d3Smrg do not do any dynamic linking of libtool libraries 2435de2362d3Smrg -version-info CURRENT[:REVISION[:AGE]] 2436de2362d3Smrg specify library version info [each variable defaults to 0] 2437de2362d3Smrg -weak LIBNAME declare that the target provides the LIBNAME interface 2438de2362d3Smrg -Wc,FLAG 2439de2362d3Smrg -Xcompiler FLAG pass linker-specific FLAG directly to the compiler 2440de2362d3Smrg -Wl,FLAG 2441de2362d3Smrg -Xlinker FLAG pass linker-specific FLAG directly to the linker 2442de2362d3Smrg -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) 2443de2362d3Smrg 2444de2362d3SmrgAll other options (arguments beginning with \`-') are ignored. 2445de2362d3Smrg 2446de2362d3SmrgEvery other argument is treated as a filename. Files ending in \`.la' are 2447de2362d3Smrgtreated as uninstalled libtool libraries, other files are standard or library 2448de2362d3Smrgobject files. 2449de2362d3Smrg 2450de2362d3SmrgIf the OUTPUT-FILE ends in \`.la', then a libtool library is created, 2451de2362d3Smrgonly library objects (\`.lo' files) may be specified, and \`-rpath' is 2452de2362d3Smrgrequired, except when creating a convenience library. 2453de2362d3Smrg 2454de2362d3SmrgIf OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created 2455de2362d3Smrgusing \`ar' and \`ranlib', or on Windows using \`lib'. 2456de2362d3Smrg 2457de2362d3SmrgIf OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file 2458de2362d3Smrgis created, otherwise an executable program is created." 2459de2362d3Smrg ;; 2460de2362d3Smrg 2461de2362d3Smrg uninstall) 2462de2362d3Smrg $ECHO \ 2463de2362d3Smrg"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... 2464de2362d3Smrg 2465de2362d3SmrgRemove libraries from an installation directory. 2466de2362d3Smrg 2467de2362d3SmrgRM is the name of the program to use to delete files associated with each FILE 2468de2362d3Smrg(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 2469de2362d3Smrgto RM. 2470de2362d3Smrg 2471de2362d3SmrgIf FILE is a libtool library, all the files associated with it are deleted. 2472de2362d3SmrgOtherwise, only FILE itself is deleted using RM." 2473de2362d3Smrg ;; 2474de2362d3Smrg 2475de2362d3Smrg *) 2476de2362d3Smrg func_fatal_help "invalid operation mode \`$opt_mode'" 2477de2362d3Smrg ;; 2478de2362d3Smrg esac 2479de2362d3Smrg 2480de2362d3Smrg echo 2481de2362d3Smrg $ECHO "Try \`$progname --help' for more information about other modes." 2482de2362d3Smrg} 2483de2362d3Smrg 2484de2362d3Smrg# Now that we've collected a possible --mode arg, show help if necessary 2485de2362d3Smrgif $opt_help; then 2486de2362d3Smrg if test "$opt_help" = :; then 2487de2362d3Smrg func_mode_help 2488de2362d3Smrg else 2489de2362d3Smrg { 2490de2362d3Smrg func_help noexit 2491de2362d3Smrg for opt_mode in compile link execute install finish uninstall clean; do 2492de2362d3Smrg func_mode_help 2493de2362d3Smrg done 2494de2362d3Smrg } | sed -n '1p; 2,$s/^Usage:/ or: /p' 2495de2362d3Smrg { 2496de2362d3Smrg func_help noexit 2497de2362d3Smrg for opt_mode in compile link execute install finish uninstall clean; do 2498de2362d3Smrg echo 2499de2362d3Smrg func_mode_help 2500de2362d3Smrg done 2501de2362d3Smrg } | 2502de2362d3Smrg sed '1d 2503de2362d3Smrg /^When reporting/,/^Report/{ 2504de2362d3Smrg H 2505de2362d3Smrg d 2506de2362d3Smrg } 2507de2362d3Smrg $x 2508de2362d3Smrg /information about other modes/d 2509de2362d3Smrg /more detailed .*MODE/d 2510de2362d3Smrg s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' 2511de2362d3Smrg fi 2512de2362d3Smrg exit $? 2513de2362d3Smrgfi 2514de2362d3Smrg 2515de2362d3Smrg 2516de2362d3Smrg# func_mode_execute arg... 2517de2362d3Smrgfunc_mode_execute () 2518de2362d3Smrg{ 2519de2362d3Smrg $opt_debug 2520de2362d3Smrg # The first argument is the command name. 2521de2362d3Smrg cmd="$nonopt" 2522de2362d3Smrg test -z "$cmd" && \ 2523de2362d3Smrg func_fatal_help "you must specify a COMMAND" 2524de2362d3Smrg 2525de2362d3Smrg # Handle -dlopen flags immediately. 2526de2362d3Smrg for file in $opt_dlopen; do 2527de2362d3Smrg test -f "$file" \ 2528de2362d3Smrg || func_fatal_help "\`$file' is not a file" 2529de2362d3Smrg 2530de2362d3Smrg dir= 2531de2362d3Smrg case $file in 2532de2362d3Smrg *.la) 2533de2362d3Smrg func_resolve_sysroot "$file" 2534de2362d3Smrg file=$func_resolve_sysroot_result 2535de2362d3Smrg 2536de2362d3Smrg # Check to see that this really is a libtool archive. 2537de2362d3Smrg func_lalib_unsafe_p "$file" \ 2538de2362d3Smrg || func_fatal_help "\`$lib' is not a valid libtool archive" 2539de2362d3Smrg 2540de2362d3Smrg # Read the libtool library. 2541de2362d3Smrg dlname= 2542de2362d3Smrg library_names= 2543de2362d3Smrg func_source "$file" 2544de2362d3Smrg 2545de2362d3Smrg # Skip this library if it cannot be dlopened. 2546de2362d3Smrg if test -z "$dlname"; then 2547de2362d3Smrg # Warn if it was a shared library. 2548de2362d3Smrg test -n "$library_names" && \ 2549de2362d3Smrg func_warning "\`$file' was not linked with \`-export-dynamic'" 2550de2362d3Smrg continue 2551de2362d3Smrg fi 2552de2362d3Smrg 2553de2362d3Smrg func_dirname "$file" "" "." 2554de2362d3Smrg dir="$func_dirname_result" 2555de2362d3Smrg 2556de2362d3Smrg if test -f "$dir/$objdir/$dlname"; then 2557de2362d3Smrg func_append dir "/$objdir" 2558de2362d3Smrg else 2559de2362d3Smrg if test ! -f "$dir/$dlname"; then 2560de2362d3Smrg func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 2561de2362d3Smrg fi 2562de2362d3Smrg fi 2563de2362d3Smrg ;; 2564de2362d3Smrg 2565de2362d3Smrg *.lo) 2566de2362d3Smrg # Just add the directory containing the .lo file. 2567de2362d3Smrg func_dirname "$file" "" "." 2568de2362d3Smrg dir="$func_dirname_result" 2569de2362d3Smrg ;; 2570de2362d3Smrg 2571de2362d3Smrg *) 2572de2362d3Smrg func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" 2573de2362d3Smrg continue 2574de2362d3Smrg ;; 2575de2362d3Smrg esac 2576de2362d3Smrg 2577de2362d3Smrg # Get the absolute pathname. 2578de2362d3Smrg absdir=`cd "$dir" && pwd` 2579de2362d3Smrg test -n "$absdir" && dir="$absdir" 2580de2362d3Smrg 2581de2362d3Smrg # Now add the directory to shlibpath_var. 2582de2362d3Smrg if eval "test -z \"\$$shlibpath_var\""; then 2583de2362d3Smrg eval "$shlibpath_var=\"\$dir\"" 2584de2362d3Smrg else 2585de2362d3Smrg eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" 2586de2362d3Smrg fi 2587de2362d3Smrg done 2588de2362d3Smrg 2589de2362d3Smrg # This variable tells wrapper scripts just to set shlibpath_var 2590de2362d3Smrg # rather than running their programs. 2591de2362d3Smrg libtool_execute_magic="$magic" 2592de2362d3Smrg 2593de2362d3Smrg # Check if any of the arguments is a wrapper script. 2594de2362d3Smrg args= 2595de2362d3Smrg for file 2596de2362d3Smrg do 2597de2362d3Smrg case $file in 2598de2362d3Smrg -* | *.la | *.lo ) ;; 2599de2362d3Smrg *) 2600de2362d3Smrg # Do a test to see if this is really a libtool program. 2601de2362d3Smrg if func_ltwrapper_script_p "$file"; then 2602de2362d3Smrg func_source "$file" 2603de2362d3Smrg # Transform arg to wrapped name. 2604de2362d3Smrg file="$progdir/$program" 2605de2362d3Smrg elif func_ltwrapper_executable_p "$file"; then 2606de2362d3Smrg func_ltwrapper_scriptname "$file" 2607de2362d3Smrg func_source "$func_ltwrapper_scriptname_result" 2608de2362d3Smrg # Transform arg to wrapped name. 2609de2362d3Smrg file="$progdir/$program" 2610de2362d3Smrg fi 2611de2362d3Smrg ;; 2612de2362d3Smrg esac 2613de2362d3Smrg # Quote arguments (to preserve shell metacharacters). 2614de2362d3Smrg func_append_quoted args "$file" 2615de2362d3Smrg done 2616de2362d3Smrg 2617de2362d3Smrg if test "X$opt_dry_run" = Xfalse; then 2618de2362d3Smrg if test -n "$shlibpath_var"; then 2619de2362d3Smrg # Export the shlibpath_var. 2620de2362d3Smrg eval "export $shlibpath_var" 2621de2362d3Smrg fi 2622de2362d3Smrg 2623de2362d3Smrg # Restore saved environment variables 2624de2362d3Smrg for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 2625de2362d3Smrg do 2626de2362d3Smrg eval "if test \"\${save_$lt_var+set}\" = set; then 2627de2362d3Smrg $lt_var=\$save_$lt_var; export $lt_var 2628de2362d3Smrg else 2629de2362d3Smrg $lt_unset $lt_var 2630de2362d3Smrg fi" 2631de2362d3Smrg done 2632de2362d3Smrg 2633de2362d3Smrg # Now prepare to actually exec the command. 2634de2362d3Smrg exec_cmd="\$cmd$args" 2635de2362d3Smrg else 2636de2362d3Smrg # Display what would be done. 2637de2362d3Smrg if test -n "$shlibpath_var"; then 2638de2362d3Smrg eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" 2639de2362d3Smrg echo "export $shlibpath_var" 2640de2362d3Smrg fi 2641de2362d3Smrg $ECHO "$cmd$args" 2642de2362d3Smrg exit $EXIT_SUCCESS 2643de2362d3Smrg fi 2644de2362d3Smrg} 2645de2362d3Smrg 2646de2362d3Smrgtest "$opt_mode" = execute && func_mode_execute ${1+"$@"} 2647de2362d3Smrg 2648de2362d3Smrg 2649de2362d3Smrg# func_mode_finish arg... 2650de2362d3Smrgfunc_mode_finish () 2651de2362d3Smrg{ 2652de2362d3Smrg $opt_debug 2653de2362d3Smrg libs= 2654de2362d3Smrg libdirs= 2655de2362d3Smrg admincmds= 2656de2362d3Smrg 2657de2362d3Smrg for opt in "$nonopt" ${1+"$@"} 2658de2362d3Smrg do 2659de2362d3Smrg if test -d "$opt"; then 2660de2362d3Smrg func_append libdirs " $opt" 2661de2362d3Smrg 2662de2362d3Smrg elif test -f "$opt"; then 2663de2362d3Smrg if func_lalib_unsafe_p "$opt"; then 2664de2362d3Smrg func_append libs " $opt" 2665de2362d3Smrg else 2666de2362d3Smrg func_warning "\`$opt' is not a valid libtool archive" 2667de2362d3Smrg fi 2668de2362d3Smrg 2669de2362d3Smrg else 2670de2362d3Smrg func_fatal_error "invalid argument \`$opt'" 2671de2362d3Smrg fi 2672de2362d3Smrg done 2673de2362d3Smrg 2674de2362d3Smrg if test -n "$libs"; then 2675de2362d3Smrg if test -n "$lt_sysroot"; then 2676de2362d3Smrg sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` 2677de2362d3Smrg sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" 2678de2362d3Smrg else 2679de2362d3Smrg sysroot_cmd= 2680de2362d3Smrg fi 2681de2362d3Smrg 2682de2362d3Smrg # Remove sysroot references 2683de2362d3Smrg if $opt_dry_run; then 2684de2362d3Smrg for lib in $libs; do 2685de2362d3Smrg echo "removing references to $lt_sysroot and \`=' prefixes from $lib" 2686de2362d3Smrg done 2687de2362d3Smrg else 2688de2362d3Smrg tmpdir=`func_mktempdir` 2689de2362d3Smrg for lib in $libs; do 2690de2362d3Smrg sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ 2691de2362d3Smrg > $tmpdir/tmp-la 2692de2362d3Smrg mv -f $tmpdir/tmp-la $lib 2693de2362d3Smrg done 2694de2362d3Smrg ${RM}r "$tmpdir" 2695de2362d3Smrg fi 2696de2362d3Smrg fi 2697de2362d3Smrg 2698de2362d3Smrg if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then 2699de2362d3Smrg for libdir in $libdirs; do 2700de2362d3Smrg if test -n "$finish_cmds"; then 2701de2362d3Smrg # Do each command in the finish commands. 2702de2362d3Smrg func_execute_cmds "$finish_cmds" 'admincmds="$admincmds 2703de2362d3Smrg'"$cmd"'"' 2704de2362d3Smrg fi 2705de2362d3Smrg if test -n "$finish_eval"; then 2706de2362d3Smrg # Do the single finish_eval. 2707de2362d3Smrg eval cmds=\"$finish_eval\" 2708de2362d3Smrg $opt_dry_run || eval "$cmds" || func_append admincmds " 2709de2362d3Smrg $cmds" 2710de2362d3Smrg fi 2711de2362d3Smrg done 2712de2362d3Smrg fi 2713de2362d3Smrg 2714de2362d3Smrg # Exit here if they wanted silent mode. 2715de2362d3Smrg $opt_silent && exit $EXIT_SUCCESS 2716de2362d3Smrg 2717de2362d3Smrg if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then 2718de2362d3Smrg echo "----------------------------------------------------------------------" 2719de2362d3Smrg echo "Libraries have been installed in:" 2720de2362d3Smrg for libdir in $libdirs; do 2721de2362d3Smrg $ECHO " $libdir" 2722de2362d3Smrg done 2723de2362d3Smrg echo 2724de2362d3Smrg echo "If you ever happen to want to link against installed libraries" 2725de2362d3Smrg echo "in a given directory, LIBDIR, you must either use libtool, and" 2726de2362d3Smrg echo "specify the full pathname of the library, or use the \`-LLIBDIR'" 2727de2362d3Smrg echo "flag during linking and do at least one of the following:" 2728de2362d3Smrg if test -n "$shlibpath_var"; then 2729de2362d3Smrg echo " - add LIBDIR to the \`$shlibpath_var' environment variable" 2730de2362d3Smrg echo " during execution" 2731de2362d3Smrg fi 2732de2362d3Smrg if test -n "$runpath_var"; then 2733de2362d3Smrg echo " - add LIBDIR to the \`$runpath_var' environment variable" 2734de2362d3Smrg echo " during linking" 2735de2362d3Smrg fi 2736de2362d3Smrg if test -n "$hardcode_libdir_flag_spec"; then 2737de2362d3Smrg libdir=LIBDIR 2738de2362d3Smrg eval flag=\"$hardcode_libdir_flag_spec\" 2739de2362d3Smrg 2740de2362d3Smrg $ECHO " - use the \`$flag' linker flag" 2741de2362d3Smrg fi 2742de2362d3Smrg if test -n "$admincmds"; then 2743de2362d3Smrg $ECHO " - have your system administrator run these commands:$admincmds" 2744de2362d3Smrg fi 2745de2362d3Smrg if test -f /etc/ld.so.conf; then 2746de2362d3Smrg echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" 2747de2362d3Smrg fi 2748de2362d3Smrg echo 2749de2362d3Smrg 2750de2362d3Smrg echo "See any operating system documentation about shared libraries for" 2751de2362d3Smrg case $host in 2752de2362d3Smrg solaris2.[6789]|solaris2.1[0-9]) 2753de2362d3Smrg echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" 2754de2362d3Smrg echo "pages." 2755de2362d3Smrg ;; 2756de2362d3Smrg *) 2757de2362d3Smrg echo "more information, such as the ld(1) and ld.so(8) manual pages." 2758de2362d3Smrg ;; 2759de2362d3Smrg esac 2760de2362d3Smrg echo "----------------------------------------------------------------------" 2761de2362d3Smrg fi 2762de2362d3Smrg exit $EXIT_SUCCESS 2763de2362d3Smrg} 2764de2362d3Smrg 2765de2362d3Smrgtest "$opt_mode" = finish && func_mode_finish ${1+"$@"} 2766de2362d3Smrg 2767de2362d3Smrg 2768de2362d3Smrg# func_mode_install arg... 2769de2362d3Smrgfunc_mode_install () 2770de2362d3Smrg{ 2771de2362d3Smrg $opt_debug 2772de2362d3Smrg # There may be an optional sh(1) argument at the beginning of 2773de2362d3Smrg # install_prog (especially on Windows NT). 2774de2362d3Smrg if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || 2775de2362d3Smrg # Allow the use of GNU shtool's install command. 2776de2362d3Smrg case $nonopt in *shtool*) :;; *) false;; esac; then 2777de2362d3Smrg # Aesthetically quote it. 2778de2362d3Smrg func_quote_for_eval "$nonopt" 2779de2362d3Smrg install_prog="$func_quote_for_eval_result " 2780de2362d3Smrg arg=$1 2781de2362d3Smrg shift 2782de2362d3Smrg else 2783de2362d3Smrg install_prog= 2784de2362d3Smrg arg=$nonopt 2785de2362d3Smrg fi 2786de2362d3Smrg 2787de2362d3Smrg # The real first argument should be the name of the installation program. 2788de2362d3Smrg # Aesthetically quote it. 2789de2362d3Smrg func_quote_for_eval "$arg" 2790de2362d3Smrg func_append install_prog "$func_quote_for_eval_result" 2791de2362d3Smrg install_shared_prog=$install_prog 2792de2362d3Smrg case " $install_prog " in 2793de2362d3Smrg *[\\\ /]cp\ *) install_cp=: ;; 2794de2362d3Smrg *) install_cp=false ;; 2795de2362d3Smrg esac 2796de2362d3Smrg 2797de2362d3Smrg # We need to accept at least all the BSD install flags. 2798de2362d3Smrg dest= 2799de2362d3Smrg files= 2800de2362d3Smrg opts= 2801de2362d3Smrg prev= 2802de2362d3Smrg install_type= 2803de2362d3Smrg isdir=no 2804de2362d3Smrg stripme= 2805de2362d3Smrg no_mode=: 2806de2362d3Smrg for arg 2807de2362d3Smrg do 2808de2362d3Smrg arg2= 2809de2362d3Smrg if test -n "$dest"; then 2810de2362d3Smrg func_append files " $dest" 2811de2362d3Smrg dest=$arg 2812de2362d3Smrg continue 2813de2362d3Smrg fi 2814de2362d3Smrg 2815de2362d3Smrg case $arg in 2816de2362d3Smrg -d) isdir=yes ;; 2817de2362d3Smrg -f) 2818de2362d3Smrg if $install_cp; then :; else 2819de2362d3Smrg prev=$arg 2820de2362d3Smrg fi 2821de2362d3Smrg ;; 2822de2362d3Smrg -g | -m | -o) 2823de2362d3Smrg prev=$arg 2824de2362d3Smrg ;; 2825de2362d3Smrg -s) 2826de2362d3Smrg stripme=" -s" 2827de2362d3Smrg continue 2828de2362d3Smrg ;; 2829de2362d3Smrg -*) 2830de2362d3Smrg ;; 2831de2362d3Smrg *) 2832de2362d3Smrg # If the previous option needed an argument, then skip it. 2833de2362d3Smrg if test -n "$prev"; then 2834de2362d3Smrg if test "x$prev" = x-m && test -n "$install_override_mode"; then 2835de2362d3Smrg arg2=$install_override_mode 2836de2362d3Smrg no_mode=false 2837de2362d3Smrg fi 2838de2362d3Smrg prev= 2839de2362d3Smrg else 2840de2362d3Smrg dest=$arg 2841de2362d3Smrg continue 2842de2362d3Smrg fi 2843de2362d3Smrg ;; 2844de2362d3Smrg esac 2845de2362d3Smrg 2846de2362d3Smrg # Aesthetically quote the argument. 2847de2362d3Smrg func_quote_for_eval "$arg" 2848de2362d3Smrg func_append install_prog " $func_quote_for_eval_result" 2849de2362d3Smrg if test -n "$arg2"; then 2850de2362d3Smrg func_quote_for_eval "$arg2" 2851de2362d3Smrg fi 2852de2362d3Smrg func_append install_shared_prog " $func_quote_for_eval_result" 2853de2362d3Smrg done 2854de2362d3Smrg 2855de2362d3Smrg test -z "$install_prog" && \ 2856de2362d3Smrg func_fatal_help "you must specify an install program" 2857de2362d3Smrg 2858de2362d3Smrg test -n "$prev" && \ 2859de2362d3Smrg func_fatal_help "the \`$prev' option requires an argument" 2860de2362d3Smrg 2861de2362d3Smrg if test -n "$install_override_mode" && $no_mode; then 2862de2362d3Smrg if $install_cp; then :; else 2863de2362d3Smrg func_quote_for_eval "$install_override_mode" 2864de2362d3Smrg func_append install_shared_prog " -m $func_quote_for_eval_result" 2865de2362d3Smrg fi 2866de2362d3Smrg fi 2867de2362d3Smrg 2868de2362d3Smrg if test -z "$files"; then 2869de2362d3Smrg if test -z "$dest"; then 2870de2362d3Smrg func_fatal_help "no file or destination specified" 2871de2362d3Smrg else 2872de2362d3Smrg func_fatal_help "you must specify a destination" 2873de2362d3Smrg fi 2874de2362d3Smrg fi 2875de2362d3Smrg 2876de2362d3Smrg # Strip any trailing slash from the destination. 2877de2362d3Smrg func_stripname '' '/' "$dest" 2878de2362d3Smrg dest=$func_stripname_result 2879de2362d3Smrg 2880de2362d3Smrg # Check to see that the destination is a directory. 2881de2362d3Smrg test -d "$dest" && isdir=yes 2882de2362d3Smrg if test "$isdir" = yes; then 2883de2362d3Smrg destdir="$dest" 2884de2362d3Smrg destname= 2885de2362d3Smrg else 2886de2362d3Smrg func_dirname_and_basename "$dest" "" "." 2887de2362d3Smrg destdir="$func_dirname_result" 2888de2362d3Smrg destname="$func_basename_result" 2889de2362d3Smrg 2890de2362d3Smrg # Not a directory, so check to see that there is only one file specified. 2891de2362d3Smrg set dummy $files; shift 2892de2362d3Smrg test "$#" -gt 1 && \ 2893de2362d3Smrg func_fatal_help "\`$dest' is not a directory" 2894de2362d3Smrg fi 2895de2362d3Smrg case $destdir in 2896de2362d3Smrg [\\/]* | [A-Za-z]:[\\/]*) ;; 2897de2362d3Smrg *) 2898de2362d3Smrg for file in $files; do 2899de2362d3Smrg case $file in 2900de2362d3Smrg *.lo) ;; 2901de2362d3Smrg *) 2902de2362d3Smrg func_fatal_help "\`$destdir' must be an absolute directory name" 2903de2362d3Smrg ;; 2904de2362d3Smrg esac 2905de2362d3Smrg done 2906de2362d3Smrg ;; 2907de2362d3Smrg esac 2908de2362d3Smrg 2909de2362d3Smrg # This variable tells wrapper scripts just to set variables rather 2910de2362d3Smrg # than running their programs. 2911de2362d3Smrg libtool_install_magic="$magic" 2912de2362d3Smrg 2913de2362d3Smrg staticlibs= 2914de2362d3Smrg future_libdirs= 2915de2362d3Smrg current_libdirs= 2916de2362d3Smrg for file in $files; do 2917de2362d3Smrg 2918de2362d3Smrg # Do each installation. 2919de2362d3Smrg case $file in 2920de2362d3Smrg *.$libext) 2921de2362d3Smrg # Do the static libraries later. 2922de2362d3Smrg func_append staticlibs " $file" 2923de2362d3Smrg ;; 2924de2362d3Smrg 2925de2362d3Smrg *.la) 2926de2362d3Smrg func_resolve_sysroot "$file" 2927de2362d3Smrg file=$func_resolve_sysroot_result 2928de2362d3Smrg 2929de2362d3Smrg # Check to see that this really is a libtool archive. 2930de2362d3Smrg func_lalib_unsafe_p "$file" \ 2931de2362d3Smrg || func_fatal_help "\`$file' is not a valid libtool archive" 2932de2362d3Smrg 2933de2362d3Smrg library_names= 2934de2362d3Smrg old_library= 2935de2362d3Smrg relink_command= 2936de2362d3Smrg func_source "$file" 2937de2362d3Smrg 2938de2362d3Smrg # Add the libdir to current_libdirs if it is the destination. 2939de2362d3Smrg if test "X$destdir" = "X$libdir"; then 2940de2362d3Smrg case "$current_libdirs " in 2941de2362d3Smrg *" $libdir "*) ;; 2942de2362d3Smrg *) func_append current_libdirs " $libdir" ;; 2943de2362d3Smrg esac 2944de2362d3Smrg else 2945de2362d3Smrg # Note the libdir as a future libdir. 2946de2362d3Smrg case "$future_libdirs " in 2947de2362d3Smrg *" $libdir "*) ;; 2948de2362d3Smrg *) func_append future_libdirs " $libdir" ;; 2949de2362d3Smrg esac 2950de2362d3Smrg fi 2951de2362d3Smrg 2952de2362d3Smrg func_dirname "$file" "/" "" 2953de2362d3Smrg dir="$func_dirname_result" 2954de2362d3Smrg func_append dir "$objdir" 2955de2362d3Smrg 2956de2362d3Smrg if test -n "$relink_command"; then 2957de2362d3Smrg # Determine the prefix the user has applied to our future dir. 2958de2362d3Smrg inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` 2959de2362d3Smrg 2960de2362d3Smrg # Don't allow the user to place us outside of our expected 2961de2362d3Smrg # location b/c this prevents finding dependent libraries that 2962de2362d3Smrg # are installed to the same prefix. 2963de2362d3Smrg # At present, this check doesn't affect windows .dll's that 2964de2362d3Smrg # are installed into $libdir/../bin (currently, that works fine) 2965de2362d3Smrg # but it's something to keep an eye on. 2966de2362d3Smrg test "$inst_prefix_dir" = "$destdir" && \ 2967de2362d3Smrg func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" 2968de2362d3Smrg 2969de2362d3Smrg if test -n "$inst_prefix_dir"; then 2970de2362d3Smrg # Stick the inst_prefix_dir data into the link command. 2971de2362d3Smrg relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` 2972de2362d3Smrg else 2973de2362d3Smrg relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` 2974de2362d3Smrg fi 2975de2362d3Smrg 2976de2362d3Smrg func_warning "relinking \`$file'" 2977de2362d3Smrg func_show_eval "$relink_command" \ 2978de2362d3Smrg 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' 2979de2362d3Smrg fi 2980de2362d3Smrg 2981de2362d3Smrg # See the names of the shared library. 2982de2362d3Smrg set dummy $library_names; shift 2983de2362d3Smrg if test -n "$1"; then 2984de2362d3Smrg realname="$1" 2985de2362d3Smrg shift 2986de2362d3Smrg 2987de2362d3Smrg srcname="$realname" 2988de2362d3Smrg test -n "$relink_command" && srcname="$realname"T 2989de2362d3Smrg 2990de2362d3Smrg # Install the shared library and build the symlinks. 2991de2362d3Smrg func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ 2992de2362d3Smrg 'exit $?' 2993de2362d3Smrg tstripme="$stripme" 2994de2362d3Smrg case $host_os in 2995de2362d3Smrg cygwin* | mingw* | pw32* | cegcc*) 2996de2362d3Smrg case $realname in 2997de2362d3Smrg *.dll.a) 2998de2362d3Smrg tstripme="" 2999de2362d3Smrg ;; 3000de2362d3Smrg esac 3001de2362d3Smrg ;; 3002de2362d3Smrg esac 3003de2362d3Smrg if test -n "$tstripme" && test -n "$striplib"; then 3004de2362d3Smrg func_show_eval "$striplib $destdir/$realname" 'exit $?' 3005de2362d3Smrg fi 3006de2362d3Smrg 3007de2362d3Smrg if test "$#" -gt 0; then 3008de2362d3Smrg # Delete the old symlinks, and create new ones. 3009de2362d3Smrg # Try `ln -sf' first, because the `ln' binary might depend on 3010de2362d3Smrg # the symlink we replace! Solaris /bin/ln does not understand -f, 3011de2362d3Smrg # so we also need to try rm && ln -s. 3012de2362d3Smrg for linkname 3013de2362d3Smrg do 3014de2362d3Smrg test "$linkname" != "$realname" \ 3015de2362d3Smrg && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" 3016de2362d3Smrg done 3017de2362d3Smrg fi 3018de2362d3Smrg 3019de2362d3Smrg # Do each command in the postinstall commands. 3020de2362d3Smrg lib="$destdir/$realname" 3021de2362d3Smrg func_execute_cmds "$postinstall_cmds" 'exit $?' 3022de2362d3Smrg fi 3023de2362d3Smrg 3024de2362d3Smrg # Install the pseudo-library for information purposes. 3025de2362d3Smrg func_basename "$file" 3026de2362d3Smrg name="$func_basename_result" 3027de2362d3Smrg instname="$dir/$name"i 3028de2362d3Smrg func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' 3029de2362d3Smrg 3030de2362d3Smrg # Maybe install the static library, too. 3031de2362d3Smrg test -n "$old_library" && func_append staticlibs " $dir/$old_library" 3032de2362d3Smrg ;; 3033de2362d3Smrg 3034de2362d3Smrg *.lo) 3035de2362d3Smrg # Install (i.e. copy) a libtool object. 3036de2362d3Smrg 3037de2362d3Smrg # Figure out destination file name, if it wasn't already specified. 3038de2362d3Smrg if test -n "$destname"; then 3039de2362d3Smrg destfile="$destdir/$destname" 3040de2362d3Smrg else 3041de2362d3Smrg func_basename "$file" 3042de2362d3Smrg destfile="$func_basename_result" 3043de2362d3Smrg destfile="$destdir/$destfile" 3044de2362d3Smrg fi 3045de2362d3Smrg 3046de2362d3Smrg # Deduce the name of the destination old-style object file. 3047de2362d3Smrg case $destfile in 3048de2362d3Smrg *.lo) 3049de2362d3Smrg func_lo2o "$destfile" 3050de2362d3Smrg staticdest=$func_lo2o_result 3051de2362d3Smrg ;; 3052de2362d3Smrg *.$objext) 3053de2362d3Smrg staticdest="$destfile" 3054de2362d3Smrg destfile= 3055de2362d3Smrg ;; 3056de2362d3Smrg *) 3057de2362d3Smrg func_fatal_help "cannot copy a libtool object to \`$destfile'" 3058de2362d3Smrg ;; 3059de2362d3Smrg esac 3060de2362d3Smrg 3061de2362d3Smrg # Install the libtool object if requested. 3062de2362d3Smrg test -n "$destfile" && \ 3063de2362d3Smrg func_show_eval "$install_prog $file $destfile" 'exit $?' 3064de2362d3Smrg 3065de2362d3Smrg # Install the old object if enabled. 3066de2362d3Smrg if test "$build_old_libs" = yes; then 3067de2362d3Smrg # Deduce the name of the old-style object file. 3068de2362d3Smrg func_lo2o "$file" 3069de2362d3Smrg staticobj=$func_lo2o_result 3070de2362d3Smrg func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' 3071de2362d3Smrg fi 3072de2362d3Smrg exit $EXIT_SUCCESS 3073de2362d3Smrg ;; 3074de2362d3Smrg 3075de2362d3Smrg *) 3076de2362d3Smrg # Figure out destination file name, if it wasn't already specified. 3077de2362d3Smrg if test -n "$destname"; then 3078de2362d3Smrg destfile="$destdir/$destname" 3079de2362d3Smrg else 3080de2362d3Smrg func_basename "$file" 3081de2362d3Smrg destfile="$func_basename_result" 3082de2362d3Smrg destfile="$destdir/$destfile" 3083de2362d3Smrg fi 3084de2362d3Smrg 3085de2362d3Smrg # If the file is missing, and there is a .exe on the end, strip it 3086de2362d3Smrg # because it is most likely a libtool script we actually want to 3087de2362d3Smrg # install 3088de2362d3Smrg stripped_ext="" 3089de2362d3Smrg case $file in 3090de2362d3Smrg *.exe) 3091de2362d3Smrg if test ! -f "$file"; then 3092de2362d3Smrg func_stripname '' '.exe' "$file" 3093de2362d3Smrg file=$func_stripname_result 3094de2362d3Smrg stripped_ext=".exe" 3095de2362d3Smrg fi 3096de2362d3Smrg ;; 3097de2362d3Smrg esac 3098de2362d3Smrg 3099de2362d3Smrg # Do a test to see if this is really a libtool program. 3100de2362d3Smrg case $host in 3101de2362d3Smrg *cygwin* | *mingw*) 3102de2362d3Smrg if func_ltwrapper_executable_p "$file"; then 3103de2362d3Smrg func_ltwrapper_scriptname "$file" 3104de2362d3Smrg wrapper=$func_ltwrapper_scriptname_result 3105de2362d3Smrg else 3106de2362d3Smrg func_stripname '' '.exe' "$file" 3107de2362d3Smrg wrapper=$func_stripname_result 3108de2362d3Smrg fi 3109de2362d3Smrg ;; 3110de2362d3Smrg *) 3111de2362d3Smrg wrapper=$file 3112de2362d3Smrg ;; 3113de2362d3Smrg esac 3114de2362d3Smrg if func_ltwrapper_script_p "$wrapper"; then 3115de2362d3Smrg notinst_deplibs= 3116de2362d3Smrg relink_command= 3117de2362d3Smrg 3118de2362d3Smrg func_source "$wrapper" 3119de2362d3Smrg 3120de2362d3Smrg # Check the variables that should have been set. 3121de2362d3Smrg test -z "$generated_by_libtool_version" && \ 3122de2362d3Smrg func_fatal_error "invalid libtool wrapper script \`$wrapper'" 3123de2362d3Smrg 3124de2362d3Smrg finalize=yes 3125de2362d3Smrg for lib in $notinst_deplibs; do 3126de2362d3Smrg # Check to see that each library is installed. 3127de2362d3Smrg libdir= 3128de2362d3Smrg if test -f "$lib"; then 3129de2362d3Smrg func_source "$lib" 3130de2362d3Smrg fi 3131de2362d3Smrg libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test 3132de2362d3Smrg if test -n "$libdir" && test ! -f "$libfile"; then 3133de2362d3Smrg func_warning "\`$lib' has not been installed in \`$libdir'" 3134de2362d3Smrg finalize=no 3135de2362d3Smrg fi 3136de2362d3Smrg done 3137de2362d3Smrg 3138de2362d3Smrg relink_command= 3139de2362d3Smrg func_source "$wrapper" 3140de2362d3Smrg 3141de2362d3Smrg outputname= 3142de2362d3Smrg if test "$fast_install" = no && test -n "$relink_command"; then 3143de2362d3Smrg $opt_dry_run || { 3144de2362d3Smrg if test "$finalize" = yes; then 3145de2362d3Smrg tmpdir=`func_mktempdir` 3146de2362d3Smrg func_basename "$file$stripped_ext" 3147de2362d3Smrg file="$func_basename_result" 3148de2362d3Smrg outputname="$tmpdir/$file" 3149de2362d3Smrg # Replace the output file specification. 3150de2362d3Smrg relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` 3151de2362d3Smrg 3152de2362d3Smrg $opt_silent || { 3153de2362d3Smrg func_quote_for_expand "$relink_command" 3154de2362d3Smrg eval "func_echo $func_quote_for_expand_result" 3155de2362d3Smrg } 3156de2362d3Smrg if eval "$relink_command"; then : 3157de2362d3Smrg else 3158de2362d3Smrg func_error "error: relink \`$file' with the above command before installing it" 3159de2362d3Smrg $opt_dry_run || ${RM}r "$tmpdir" 3160de2362d3Smrg continue 3161de2362d3Smrg fi 3162de2362d3Smrg file="$outputname" 3163de2362d3Smrg else 3164de2362d3Smrg func_warning "cannot relink \`$file'" 3165de2362d3Smrg fi 3166de2362d3Smrg } 3167de2362d3Smrg else 3168de2362d3Smrg # Install the binary that we compiled earlier. 3169de2362d3Smrg file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` 3170de2362d3Smrg fi 3171de2362d3Smrg fi 3172de2362d3Smrg 3173de2362d3Smrg # remove .exe since cygwin /usr/bin/install will append another 3174de2362d3Smrg # one anyway 3175de2362d3Smrg case $install_prog,$host in 3176de2362d3Smrg */usr/bin/install*,*cygwin*) 3177de2362d3Smrg case $file:$destfile in 3178de2362d3Smrg *.exe:*.exe) 3179de2362d3Smrg # this is ok 3180de2362d3Smrg ;; 3181de2362d3Smrg *.exe:*) 3182de2362d3Smrg destfile=$destfile.exe 3183de2362d3Smrg ;; 3184de2362d3Smrg *:*.exe) 3185de2362d3Smrg func_stripname '' '.exe' "$destfile" 3186de2362d3Smrg destfile=$func_stripname_result 3187de2362d3Smrg ;; 3188de2362d3Smrg esac 3189de2362d3Smrg ;; 3190de2362d3Smrg esac 3191de2362d3Smrg func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' 3192de2362d3Smrg $opt_dry_run || if test -n "$outputname"; then 3193de2362d3Smrg ${RM}r "$tmpdir" 3194de2362d3Smrg fi 3195de2362d3Smrg ;; 3196de2362d3Smrg esac 3197de2362d3Smrg done 3198de2362d3Smrg 3199de2362d3Smrg for file in $staticlibs; do 3200de2362d3Smrg func_basename "$file" 3201de2362d3Smrg name="$func_basename_result" 3202de2362d3Smrg 3203de2362d3Smrg # Set up the ranlib parameters. 3204de2362d3Smrg oldlib="$destdir/$name" 3205de2362d3Smrg func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 3206de2362d3Smrg tool_oldlib=$func_to_tool_file_result 3207de2362d3Smrg 3208de2362d3Smrg func_show_eval "$install_prog \$file \$oldlib" 'exit $?' 3209de2362d3Smrg 3210de2362d3Smrg if test -n "$stripme" && test -n "$old_striplib"; then 3211de2362d3Smrg func_show_eval "$old_striplib $tool_oldlib" 'exit $?' 3212de2362d3Smrg fi 3213de2362d3Smrg 3214de2362d3Smrg # Do each command in the postinstall commands. 3215de2362d3Smrg func_execute_cmds "$old_postinstall_cmds" 'exit $?' 3216de2362d3Smrg done 3217de2362d3Smrg 3218de2362d3Smrg test -n "$future_libdirs" && \ 3219de2362d3Smrg func_warning "remember to run \`$progname --finish$future_libdirs'" 3220de2362d3Smrg 3221de2362d3Smrg if test -n "$current_libdirs"; then 3222de2362d3Smrg # Maybe just do a dry run. 3223de2362d3Smrg $opt_dry_run && current_libdirs=" -n$current_libdirs" 3224de2362d3Smrg exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' 3225de2362d3Smrg else 3226de2362d3Smrg exit $EXIT_SUCCESS 3227de2362d3Smrg fi 3228de2362d3Smrg} 3229de2362d3Smrg 3230de2362d3Smrgtest "$opt_mode" = install && func_mode_install ${1+"$@"} 3231de2362d3Smrg 3232de2362d3Smrg 3233de2362d3Smrg# func_generate_dlsyms outputname originator pic_p 3234de2362d3Smrg# Extract symbols from dlprefiles and create ${outputname}S.o with 3235de2362d3Smrg# a dlpreopen symbol table. 3236de2362d3Smrgfunc_generate_dlsyms () 3237de2362d3Smrg{ 3238de2362d3Smrg $opt_debug 3239de2362d3Smrg my_outputname="$1" 3240de2362d3Smrg my_originator="$2" 3241de2362d3Smrg my_pic_p="${3-no}" 3242de2362d3Smrg my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` 3243de2362d3Smrg my_dlsyms= 3244de2362d3Smrg 3245de2362d3Smrg if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 3246de2362d3Smrg if test -n "$NM" && test -n "$global_symbol_pipe"; then 3247de2362d3Smrg my_dlsyms="${my_outputname}S.c" 3248de2362d3Smrg else 3249de2362d3Smrg func_error "not configured to extract global symbols from dlpreopened files" 3250de2362d3Smrg fi 3251de2362d3Smrg fi 3252de2362d3Smrg 3253de2362d3Smrg if test -n "$my_dlsyms"; then 3254de2362d3Smrg case $my_dlsyms in 3255de2362d3Smrg "") ;; 3256de2362d3Smrg *.c) 3257de2362d3Smrg # Discover the nlist of each of the dlfiles. 3258de2362d3Smrg nlist="$output_objdir/${my_outputname}.nm" 3259de2362d3Smrg 3260de2362d3Smrg func_show_eval "$RM $nlist ${nlist}S ${nlist}T" 3261de2362d3Smrg 3262de2362d3Smrg # Parse the name list into a source file. 3263de2362d3Smrg func_verbose "creating $output_objdir/$my_dlsyms" 3264de2362d3Smrg 3265de2362d3Smrg $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ 3266de2362d3Smrg/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ 3267de2362d3Smrg/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ 3268de2362d3Smrg 3269de2362d3Smrg#ifdef __cplusplus 3270de2362d3Smrgextern \"C\" { 3271de2362d3Smrg#endif 3272de2362d3Smrg 3273de2362d3Smrg#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) 3274de2362d3Smrg#pragma GCC diagnostic ignored \"-Wstrict-prototypes\" 3275de2362d3Smrg#endif 3276de2362d3Smrg 3277de2362d3Smrg/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ 3278de2362d3Smrg#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) 3279de2362d3Smrg/* DATA imports from DLLs on WIN32 con't be const, because runtime 3280de2362d3Smrg relocations are performed -- see ld's documentation on pseudo-relocs. */ 3281de2362d3Smrg# define LT_DLSYM_CONST 3282de2362d3Smrg#elif defined(__osf__) 3283de2362d3Smrg/* This system does not cope well with relocations in const data. */ 3284de2362d3Smrg# define LT_DLSYM_CONST 3285de2362d3Smrg#else 3286de2362d3Smrg# define LT_DLSYM_CONST const 3287de2362d3Smrg#endif 3288de2362d3Smrg 3289de2362d3Smrg/* External symbol declarations for the compiler. */\ 3290de2362d3Smrg" 3291de2362d3Smrg 3292de2362d3Smrg if test "$dlself" = yes; then 3293de2362d3Smrg func_verbose "generating symbol list for \`$output'" 3294de2362d3Smrg 3295de2362d3Smrg $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" 3296de2362d3Smrg 3297de2362d3Smrg # Add our own program objects to the symbol list. 3298de2362d3Smrg progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` 3299de2362d3Smrg for progfile in $progfiles; do 3300de2362d3Smrg func_to_tool_file "$progfile" func_convert_file_msys_to_w32 3301de2362d3Smrg func_verbose "extracting global C symbols from \`$func_to_tool_file_result'" 3302de2362d3Smrg $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" 3303de2362d3Smrg done 3304de2362d3Smrg 3305de2362d3Smrg if test -n "$exclude_expsyms"; then 3306de2362d3Smrg $opt_dry_run || { 3307de2362d3Smrg eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' 3308de2362d3Smrg eval '$MV "$nlist"T "$nlist"' 3309de2362d3Smrg } 3310de2362d3Smrg fi 3311de2362d3Smrg 3312de2362d3Smrg if test -n "$export_symbols_regex"; then 3313de2362d3Smrg $opt_dry_run || { 3314de2362d3Smrg eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' 3315de2362d3Smrg eval '$MV "$nlist"T "$nlist"' 3316de2362d3Smrg } 3317de2362d3Smrg fi 3318de2362d3Smrg 3319de2362d3Smrg # Prepare the list of exported symbols 3320de2362d3Smrg if test -z "$export_symbols"; then 3321de2362d3Smrg export_symbols="$output_objdir/$outputname.exp" 3322de2362d3Smrg $opt_dry_run || { 3323de2362d3Smrg $RM $export_symbols 3324de2362d3Smrg eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' 3325de2362d3Smrg case $host in 3326de2362d3Smrg *cygwin* | *mingw* | *cegcc* ) 3327de2362d3Smrg eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 3328de2362d3Smrg eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' 3329de2362d3Smrg ;; 3330de2362d3Smrg esac 3331de2362d3Smrg } 3332de2362d3Smrg else 3333de2362d3Smrg $opt_dry_run || { 3334de2362d3Smrg eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' 3335de2362d3Smrg eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' 3336de2362d3Smrg eval '$MV "$nlist"T "$nlist"' 3337de2362d3Smrg case $host in 3338de2362d3Smrg *cygwin* | *mingw* | *cegcc* ) 3339de2362d3Smrg eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 3340de2362d3Smrg eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' 3341de2362d3Smrg ;; 3342de2362d3Smrg esac 3343de2362d3Smrg } 3344de2362d3Smrg fi 3345de2362d3Smrg fi 3346de2362d3Smrg 3347de2362d3Smrg for dlprefile in $dlprefiles; do 3348de2362d3Smrg func_verbose "extracting global C symbols from \`$dlprefile'" 3349de2362d3Smrg func_basename "$dlprefile" 3350de2362d3Smrg name="$func_basename_result" 3351de2362d3Smrg case $host in 3352de2362d3Smrg *cygwin* | *mingw* | *cegcc* ) 3353de2362d3Smrg # if an import library, we need to obtain dlname 3354de2362d3Smrg if func_win32_import_lib_p "$dlprefile"; then 3355de2362d3Smrg func_tr_sh "$dlprefile" 3356de2362d3Smrg eval "curr_lafile=\$libfile_$func_tr_sh_result" 3357de2362d3Smrg dlprefile_dlbasename="" 3358de2362d3Smrg if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then 3359de2362d3Smrg # Use subshell, to avoid clobbering current variable values 3360de2362d3Smrg dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` 3361de2362d3Smrg if test -n "$dlprefile_dlname" ; then 3362de2362d3Smrg func_basename "$dlprefile_dlname" 3363de2362d3Smrg dlprefile_dlbasename="$func_basename_result" 3364de2362d3Smrg else 3365de2362d3Smrg # no lafile. user explicitly requested -dlpreopen <import library>. 3366de2362d3Smrg $sharedlib_from_linklib_cmd "$dlprefile" 3367de2362d3Smrg dlprefile_dlbasename=$sharedlib_from_linklib_result 3368de2362d3Smrg fi 3369de2362d3Smrg fi 3370de2362d3Smrg $opt_dry_run || { 3371de2362d3Smrg if test -n "$dlprefile_dlbasename" ; then 3372de2362d3Smrg eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' 3373de2362d3Smrg else 3374de2362d3Smrg func_warning "Could not compute DLL name from $name" 3375de2362d3Smrg eval '$ECHO ": $name " >> "$nlist"' 3376de2362d3Smrg fi 3377de2362d3Smrg func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 3378de2362d3Smrg eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | 3379de2362d3Smrg $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" 3380de2362d3Smrg } 3381de2362d3Smrg else # not an import lib 3382de2362d3Smrg $opt_dry_run || { 3383de2362d3Smrg eval '$ECHO ": $name " >> "$nlist"' 3384de2362d3Smrg func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 3385de2362d3Smrg eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" 3386de2362d3Smrg } 3387de2362d3Smrg fi 3388de2362d3Smrg ;; 3389de2362d3Smrg *) 3390de2362d3Smrg $opt_dry_run || { 3391de2362d3Smrg eval '$ECHO ": $name " >> "$nlist"' 3392de2362d3Smrg func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 3393de2362d3Smrg eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" 3394de2362d3Smrg } 3395de2362d3Smrg ;; 3396de2362d3Smrg esac 3397de2362d3Smrg done 3398de2362d3Smrg 3399de2362d3Smrg $opt_dry_run || { 3400de2362d3Smrg # Make sure we have at least an empty file. 3401de2362d3Smrg test -f "$nlist" || : > "$nlist" 3402de2362d3Smrg 3403de2362d3Smrg if test -n "$exclude_expsyms"; then 3404de2362d3Smrg $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T 3405de2362d3Smrg $MV "$nlist"T "$nlist" 3406de2362d3Smrg fi 3407de2362d3Smrg 3408de2362d3Smrg # Try sorting and uniquifying the output. 3409de2362d3Smrg if $GREP -v "^: " < "$nlist" | 3410de2362d3Smrg if sort -k 3 </dev/null >/dev/null 2>&1; then 3411de2362d3Smrg sort -k 3 3412de2362d3Smrg else 3413de2362d3Smrg sort +2 3414de2362d3Smrg fi | 3415de2362d3Smrg uniq > "$nlist"S; then 3416de2362d3Smrg : 3417de2362d3Smrg else 3418de2362d3Smrg $GREP -v "^: " < "$nlist" > "$nlist"S 3419de2362d3Smrg fi 3420de2362d3Smrg 3421de2362d3Smrg if test -f "$nlist"S; then 3422de2362d3Smrg eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' 3423de2362d3Smrg else 3424de2362d3Smrg echo '/* NONE */' >> "$output_objdir/$my_dlsyms" 3425de2362d3Smrg fi 3426de2362d3Smrg 3427de2362d3Smrg echo >> "$output_objdir/$my_dlsyms" "\ 3428de2362d3Smrg 3429de2362d3Smrg/* The mapping between symbol names and symbols. */ 3430de2362d3Smrgtypedef struct { 3431de2362d3Smrg const char *name; 3432de2362d3Smrg void *address; 3433de2362d3Smrg} lt_dlsymlist; 3434de2362d3Smrgextern LT_DLSYM_CONST lt_dlsymlist 3435de2362d3Smrglt_${my_prefix}_LTX_preloaded_symbols[]; 3436de2362d3SmrgLT_DLSYM_CONST lt_dlsymlist 3437de2362d3Smrglt_${my_prefix}_LTX_preloaded_symbols[] = 3438de2362d3Smrg{\ 3439de2362d3Smrg { \"$my_originator\", (void *) 0 }," 3440de2362d3Smrg 3441de2362d3Smrg case $need_lib_prefix in 3442de2362d3Smrg no) 3443de2362d3Smrg eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" 3444de2362d3Smrg ;; 3445de2362d3Smrg *) 3446de2362d3Smrg eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" 3447de2362d3Smrg ;; 3448de2362d3Smrg esac 3449de2362d3Smrg echo >> "$output_objdir/$my_dlsyms" "\ 3450de2362d3Smrg {0, (void *) 0} 3451de2362d3Smrg}; 3452de2362d3Smrg 3453de2362d3Smrg/* This works around a problem in FreeBSD linker */ 3454de2362d3Smrg#ifdef FREEBSD_WORKAROUND 3455de2362d3Smrgstatic const void *lt_preloaded_setup() { 3456de2362d3Smrg return lt_${my_prefix}_LTX_preloaded_symbols; 3457de2362d3Smrg} 3458de2362d3Smrg#endif 3459de2362d3Smrg 3460de2362d3Smrg#ifdef __cplusplus 3461de2362d3Smrg} 3462de2362d3Smrg#endif\ 3463de2362d3Smrg" 3464de2362d3Smrg } # !$opt_dry_run 3465de2362d3Smrg 3466de2362d3Smrg pic_flag_for_symtable= 3467de2362d3Smrg case "$compile_command " in 3468de2362d3Smrg *" -static "*) ;; 3469de2362d3Smrg *) 3470de2362d3Smrg case $host in 3471de2362d3Smrg # compiling the symbol table file with pic_flag works around 3472de2362d3Smrg # a FreeBSD bug that causes programs to crash when -lm is 3473de2362d3Smrg # linked before any other PIC object. But we must not use 3474de2362d3Smrg # pic_flag when linking with -static. The problem exists in 3475de2362d3Smrg # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. 3476de2362d3Smrg *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) 3477de2362d3Smrg pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; 3478de2362d3Smrg *-*-hpux*) 3479de2362d3Smrg pic_flag_for_symtable=" $pic_flag" ;; 3480de2362d3Smrg *) 3481de2362d3Smrg if test "X$my_pic_p" != Xno; then 3482de2362d3Smrg pic_flag_for_symtable=" $pic_flag" 3483de2362d3Smrg fi 3484de2362d3Smrg ;; 3485de2362d3Smrg esac 3486de2362d3Smrg ;; 3487de2362d3Smrg esac 3488de2362d3Smrg symtab_cflags= 3489de2362d3Smrg for arg in $LTCFLAGS; do 3490de2362d3Smrg case $arg in 3491de2362d3Smrg -pie | -fpie | -fPIE) ;; 3492de2362d3Smrg *) func_append symtab_cflags " $arg" ;; 3493de2362d3Smrg esac 3494de2362d3Smrg done 3495de2362d3Smrg 3496de2362d3Smrg # Now compile the dynamic symbol file. 3497de2362d3Smrg func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' 3498de2362d3Smrg 3499de2362d3Smrg # Clean up the generated files. 3500de2362d3Smrg func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' 3501de2362d3Smrg 3502de2362d3Smrg # Transform the symbol file into the correct name. 3503de2362d3Smrg symfileobj="$output_objdir/${my_outputname}S.$objext" 3504de2362d3Smrg case $host in 3505de2362d3Smrg *cygwin* | *mingw* | *cegcc* ) 3506de2362d3Smrg if test -f "$output_objdir/$my_outputname.def"; then 3507de2362d3Smrg compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` 3508de2362d3Smrg finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` 3509de2362d3Smrg else 3510de2362d3Smrg compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` 3511de2362d3Smrg finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` 3512de2362d3Smrg fi 3513de2362d3Smrg ;; 3514de2362d3Smrg *) 3515de2362d3Smrg compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` 3516de2362d3Smrg finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` 3517de2362d3Smrg ;; 3518de2362d3Smrg esac 3519de2362d3Smrg ;; 3520de2362d3Smrg *) 3521de2362d3Smrg func_fatal_error "unknown suffix for \`$my_dlsyms'" 3522de2362d3Smrg ;; 3523de2362d3Smrg esac 3524de2362d3Smrg else 3525de2362d3Smrg # We keep going just in case the user didn't refer to 3526de2362d3Smrg # lt_preloaded_symbols. The linker will fail if global_symbol_pipe 3527de2362d3Smrg # really was required. 3528de2362d3Smrg 3529de2362d3Smrg # Nullify the symbol file. 3530de2362d3Smrg compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` 3531de2362d3Smrg finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` 3532de2362d3Smrg fi 3533de2362d3Smrg} 3534de2362d3Smrg 3535de2362d3Smrg# func_win32_libid arg 3536de2362d3Smrg# return the library type of file 'arg' 3537de2362d3Smrg# 3538de2362d3Smrg# Need a lot of goo to handle *both* DLLs and import libs 3539de2362d3Smrg# Has to be a shell function in order to 'eat' the argument 3540de2362d3Smrg# that is supplied when $file_magic_command is called. 3541de2362d3Smrg# Despite the name, also deal with 64 bit binaries. 3542de2362d3Smrgfunc_win32_libid () 3543de2362d3Smrg{ 3544de2362d3Smrg $opt_debug 3545de2362d3Smrg win32_libid_type="unknown" 3546de2362d3Smrg win32_fileres=`file -L $1 2>/dev/null` 3547de2362d3Smrg case $win32_fileres in 3548de2362d3Smrg *ar\ archive\ import\ library*) # definitely import 3549de2362d3Smrg win32_libid_type="x86 archive import" 3550de2362d3Smrg ;; 3551de2362d3Smrg *ar\ archive*) # could be an import, or static 3552de2362d3Smrg # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. 3553de2362d3Smrg if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | 3554de2362d3Smrg $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then 3555de2362d3Smrg func_to_tool_file "$1" func_convert_file_msys_to_w32 3556de2362d3Smrg win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | 3557de2362d3Smrg $SED -n -e ' 3558de2362d3Smrg 1,100{ 3559de2362d3Smrg / I /{ 3560de2362d3Smrg s,.*,import, 3561de2362d3Smrg p 3562de2362d3Smrg q 3563de2362d3Smrg } 3564de2362d3Smrg }'` 3565de2362d3Smrg case $win32_nmres in 3566de2362d3Smrg import*) win32_libid_type="x86 archive import";; 3567de2362d3Smrg *) win32_libid_type="x86 archive static";; 3568de2362d3Smrg esac 3569de2362d3Smrg fi 3570de2362d3Smrg ;; 3571de2362d3Smrg *DLL*) 3572de2362d3Smrg win32_libid_type="x86 DLL" 3573de2362d3Smrg ;; 3574de2362d3Smrg *executable*) # but shell scripts are "executable" too... 3575de2362d3Smrg case $win32_fileres in 3576de2362d3Smrg *MS\ Windows\ PE\ Intel*) 3577de2362d3Smrg win32_libid_type="x86 DLL" 3578de2362d3Smrg ;; 3579de2362d3Smrg esac 3580de2362d3Smrg ;; 3581de2362d3Smrg esac 3582de2362d3Smrg $ECHO "$win32_libid_type" 3583de2362d3Smrg} 3584de2362d3Smrg 3585de2362d3Smrg# func_cygming_dll_for_implib ARG 3586de2362d3Smrg# 3587de2362d3Smrg# Platform-specific function to extract the 3588de2362d3Smrg# name of the DLL associated with the specified 3589de2362d3Smrg# import library ARG. 3590de2362d3Smrg# Invoked by eval'ing the libtool variable 3591de2362d3Smrg# $sharedlib_from_linklib_cmd 3592de2362d3Smrg# Result is available in the variable 3593de2362d3Smrg# $sharedlib_from_linklib_result 3594de2362d3Smrgfunc_cygming_dll_for_implib () 3595de2362d3Smrg{ 3596de2362d3Smrg $opt_debug 3597de2362d3Smrg sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` 3598de2362d3Smrg} 3599de2362d3Smrg 3600de2362d3Smrg# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs 3601de2362d3Smrg# 3602de2362d3Smrg# The is the core of a fallback implementation of a 3603de2362d3Smrg# platform-specific function to extract the name of the 3604de2362d3Smrg# DLL associated with the specified import library LIBNAME. 3605de2362d3Smrg# 3606de2362d3Smrg# SECTION_NAME is either .idata$6 or .idata$7, depending 3607de2362d3Smrg# on the platform and compiler that created the implib. 3608de2362d3Smrg# 3609de2362d3Smrg# Echos the name of the DLL associated with the 3610de2362d3Smrg# specified import library. 3611de2362d3Smrgfunc_cygming_dll_for_implib_fallback_core () 3612de2362d3Smrg{ 3613de2362d3Smrg $opt_debug 3614de2362d3Smrg match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` 3615de2362d3Smrg $OBJDUMP -s --section "$1" "$2" 2>/dev/null | 3616de2362d3Smrg $SED '/^Contents of section '"$match_literal"':/{ 3617de2362d3Smrg # Place marker at beginning of archive member dllname section 3618de2362d3Smrg s/.*/====MARK====/ 3619de2362d3Smrg p 3620de2362d3Smrg d 3621de2362d3Smrg } 3622de2362d3Smrg # These lines can sometimes be longer than 43 characters, but 3623de2362d3Smrg # are always uninteresting 3624de2362d3Smrg /:[ ]*file format pe[i]\{,1\}-/d 3625de2362d3Smrg /^In archive [^:]*:/d 3626de2362d3Smrg # Ensure marker is printed 3627de2362d3Smrg /^====MARK====/p 3628de2362d3Smrg # Remove all lines with less than 43 characters 3629de2362d3Smrg /^.\{43\}/!d 3630de2362d3Smrg # From remaining lines, remove first 43 characters 3631de2362d3Smrg s/^.\{43\}//' | 3632de2362d3Smrg $SED -n ' 3633de2362d3Smrg # Join marker and all lines until next marker into a single line 3634de2362d3Smrg /^====MARK====/ b para 3635de2362d3Smrg H 3636de2362d3Smrg $ b para 3637de2362d3Smrg b 3638de2362d3Smrg :para 3639de2362d3Smrg x 3640de2362d3Smrg s/\n//g 3641de2362d3Smrg # Remove the marker 3642de2362d3Smrg s/^====MARK====// 3643de2362d3Smrg # Remove trailing dots and whitespace 3644de2362d3Smrg s/[\. \t]*$// 3645de2362d3Smrg # Print 3646de2362d3Smrg /./p' | 3647de2362d3Smrg # we now have a list, one entry per line, of the stringified 3648de2362d3Smrg # contents of the appropriate section of all members of the 3649de2362d3Smrg # archive which possess that section. Heuristic: eliminate 3650de2362d3Smrg # all those which have a first or second character that is 3651de2362d3Smrg # a '.' (that is, objdump's representation of an unprintable 3652de2362d3Smrg # character.) This should work for all archives with less than 3653de2362d3Smrg # 0x302f exports -- but will fail for DLLs whose name actually 3654de2362d3Smrg # begins with a literal '.' or a single character followed by 3655de2362d3Smrg # a '.'. 3656de2362d3Smrg # 3657de2362d3Smrg # Of those that remain, print the first one. 3658de2362d3Smrg $SED -e '/^\./d;/^.\./d;q' 3659de2362d3Smrg} 3660de2362d3Smrg 3661de2362d3Smrg# func_cygming_gnu_implib_p ARG 3662de2362d3Smrg# This predicate returns with zero status (TRUE) if 3663de2362d3Smrg# ARG is a GNU/binutils-style import library. Returns 3664de2362d3Smrg# with nonzero status (FALSE) otherwise. 3665de2362d3Smrgfunc_cygming_gnu_implib_p () 3666de2362d3Smrg{ 3667de2362d3Smrg $opt_debug 3668de2362d3Smrg func_to_tool_file "$1" func_convert_file_msys_to_w32 3669de2362d3Smrg func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` 3670de2362d3Smrg test -n "$func_cygming_gnu_implib_tmp" 3671de2362d3Smrg} 3672de2362d3Smrg 3673de2362d3Smrg# func_cygming_ms_implib_p ARG 3674de2362d3Smrg# This predicate returns with zero status (TRUE) if 3675de2362d3Smrg# ARG is an MS-style import library. Returns 3676de2362d3Smrg# with nonzero status (FALSE) otherwise. 3677de2362d3Smrgfunc_cygming_ms_implib_p () 3678de2362d3Smrg{ 3679de2362d3Smrg $opt_debug 3680de2362d3Smrg func_to_tool_file "$1" func_convert_file_msys_to_w32 3681de2362d3Smrg func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` 3682de2362d3Smrg test -n "$func_cygming_ms_implib_tmp" 3683de2362d3Smrg} 3684de2362d3Smrg 3685de2362d3Smrg# func_cygming_dll_for_implib_fallback ARG 3686de2362d3Smrg# Platform-specific function to extract the 3687de2362d3Smrg# name of the DLL associated with the specified 3688de2362d3Smrg# import library ARG. 3689de2362d3Smrg# 3690de2362d3Smrg# This fallback implementation is for use when $DLLTOOL 3691de2362d3Smrg# does not support the --identify-strict option. 3692de2362d3Smrg# Invoked by eval'ing the libtool variable 3693de2362d3Smrg# $sharedlib_from_linklib_cmd 3694de2362d3Smrg# Result is available in the variable 3695de2362d3Smrg# $sharedlib_from_linklib_result 3696de2362d3Smrgfunc_cygming_dll_for_implib_fallback () 3697de2362d3Smrg{ 3698de2362d3Smrg $opt_debug 3699de2362d3Smrg if func_cygming_gnu_implib_p "$1" ; then 3700de2362d3Smrg # binutils import library 3701de2362d3Smrg sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` 3702de2362d3Smrg elif func_cygming_ms_implib_p "$1" ; then 3703de2362d3Smrg # ms-generated import library 3704de2362d3Smrg sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` 3705de2362d3Smrg else 3706de2362d3Smrg # unknown 3707de2362d3Smrg sharedlib_from_linklib_result="" 3708de2362d3Smrg fi 3709de2362d3Smrg} 3710de2362d3Smrg 3711de2362d3Smrg 3712de2362d3Smrg# func_extract_an_archive dir oldlib 3713de2362d3Smrgfunc_extract_an_archive () 3714de2362d3Smrg{ 3715de2362d3Smrg $opt_debug 3716de2362d3Smrg f_ex_an_ar_dir="$1"; shift 3717de2362d3Smrg f_ex_an_ar_oldlib="$1" 3718de2362d3Smrg if test "$lock_old_archive_extraction" = yes; then 3719de2362d3Smrg lockfile=$f_ex_an_ar_oldlib.lock 3720de2362d3Smrg until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do 3721de2362d3Smrg func_echo "Waiting for $lockfile to be removed" 3722de2362d3Smrg sleep 2 3723de2362d3Smrg done 3724de2362d3Smrg fi 3725de2362d3Smrg func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ 3726de2362d3Smrg 'stat=$?; rm -f "$lockfile"; exit $stat' 3727de2362d3Smrg if test "$lock_old_archive_extraction" = yes; then 3728de2362d3Smrg $opt_dry_run || rm -f "$lockfile" 3729de2362d3Smrg fi 3730de2362d3Smrg if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then 3731de2362d3Smrg : 3732de2362d3Smrg else 3733de2362d3Smrg func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 3734de2362d3Smrg fi 3735de2362d3Smrg} 3736de2362d3Smrg 3737de2362d3Smrg 3738de2362d3Smrg# func_extract_archives gentop oldlib ... 3739de2362d3Smrgfunc_extract_archives () 3740de2362d3Smrg{ 3741de2362d3Smrg $opt_debug 3742de2362d3Smrg my_gentop="$1"; shift 3743de2362d3Smrg my_oldlibs=${1+"$@"} 3744de2362d3Smrg my_oldobjs="" 3745de2362d3Smrg my_xlib="" 3746de2362d3Smrg my_xabs="" 3747de2362d3Smrg my_xdir="" 3748de2362d3Smrg 3749de2362d3Smrg for my_xlib in $my_oldlibs; do 3750de2362d3Smrg # Extract the objects. 3751de2362d3Smrg case $my_xlib in 3752de2362d3Smrg [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; 3753de2362d3Smrg *) my_xabs=`pwd`"/$my_xlib" ;; 3754de2362d3Smrg esac 3755de2362d3Smrg func_basename "$my_xlib" 3756de2362d3Smrg my_xlib="$func_basename_result" 3757de2362d3Smrg my_xlib_u=$my_xlib 3758de2362d3Smrg while :; do 3759de2362d3Smrg case " $extracted_archives " in 3760de2362d3Smrg *" $my_xlib_u "*) 3761de2362d3Smrg func_arith $extracted_serial + 1 3762de2362d3Smrg extracted_serial=$func_arith_result 3763de2362d3Smrg my_xlib_u=lt$extracted_serial-$my_xlib ;; 3764de2362d3Smrg *) break ;; 3765de2362d3Smrg esac 3766de2362d3Smrg done 3767de2362d3Smrg extracted_archives="$extracted_archives $my_xlib_u" 3768de2362d3Smrg my_xdir="$my_gentop/$my_xlib_u" 3769de2362d3Smrg 3770de2362d3Smrg func_mkdir_p "$my_xdir" 3771de2362d3Smrg 3772de2362d3Smrg case $host in 3773de2362d3Smrg *-darwin*) 3774de2362d3Smrg func_verbose "Extracting $my_xabs" 3775de2362d3Smrg # Do not bother doing anything if just a dry run 3776de2362d3Smrg $opt_dry_run || { 3777de2362d3Smrg darwin_orig_dir=`pwd` 3778de2362d3Smrg cd $my_xdir || exit $? 3779de2362d3Smrg darwin_archive=$my_xabs 3780de2362d3Smrg darwin_curdir=`pwd` 3781de2362d3Smrg darwin_base_archive=`basename "$darwin_archive"` 3782de2362d3Smrg darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` 3783de2362d3Smrg if test -n "$darwin_arches"; then 3784de2362d3Smrg darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` 3785de2362d3Smrg darwin_arch= 3786de2362d3Smrg func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" 3787de2362d3Smrg for darwin_arch in $darwin_arches ; do 3788de2362d3Smrg func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" 3789de2362d3Smrg $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" 3790de2362d3Smrg cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" 3791de2362d3Smrg func_extract_an_archive "`pwd`" "${darwin_base_archive}" 3792de2362d3Smrg cd "$darwin_curdir" 3793de2362d3Smrg $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" 3794de2362d3Smrg done # $darwin_arches 3795de2362d3Smrg ## Okay now we've a bunch of thin objects, gotta fatten them up :) 3796de2362d3Smrg darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` 3797de2362d3Smrg darwin_file= 3798de2362d3Smrg darwin_files= 3799de2362d3Smrg for darwin_file in $darwin_filelist; do 3800de2362d3Smrg darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` 3801de2362d3Smrg $LIPO -create -output "$darwin_file" $darwin_files 3802de2362d3Smrg done # $darwin_filelist 3803de2362d3Smrg $RM -rf unfat-$$ 3804de2362d3Smrg cd "$darwin_orig_dir" 3805de2362d3Smrg else 3806de2362d3Smrg cd $darwin_orig_dir 3807de2362d3Smrg func_extract_an_archive "$my_xdir" "$my_xabs" 3808de2362d3Smrg fi # $darwin_arches 3809de2362d3Smrg } # !$opt_dry_run 3810de2362d3Smrg ;; 3811de2362d3Smrg *) 3812de2362d3Smrg func_extract_an_archive "$my_xdir" "$my_xabs" 3813de2362d3Smrg ;; 3814de2362d3Smrg esac 3815de2362d3Smrg my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` 3816de2362d3Smrg done 3817de2362d3Smrg 3818de2362d3Smrg func_extract_archives_result="$my_oldobjs" 3819de2362d3Smrg} 3820de2362d3Smrg 3821de2362d3Smrg 3822de2362d3Smrg# func_emit_wrapper [arg=no] 3823de2362d3Smrg# 3824de2362d3Smrg# Emit a libtool wrapper script on stdout. 3825de2362d3Smrg# Don't directly open a file because we may want to 3826de2362d3Smrg# incorporate the script contents within a cygwin/mingw 3827de2362d3Smrg# wrapper executable. Must ONLY be called from within 3828de2362d3Smrg# func_mode_link because it depends on a number of variables 3829de2362d3Smrg# set therein. 3830de2362d3Smrg# 3831de2362d3Smrg# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR 3832de2362d3Smrg# variable will take. If 'yes', then the emitted script 3833de2362d3Smrg# will assume that the directory in which it is stored is 3834de2362d3Smrg# the $objdir directory. This is a cygwin/mingw-specific 3835de2362d3Smrg# behavior. 3836de2362d3Smrgfunc_emit_wrapper () 3837de2362d3Smrg{ 3838de2362d3Smrg func_emit_wrapper_arg1=${1-no} 3839de2362d3Smrg 3840de2362d3Smrg $ECHO "\ 3841de2362d3Smrg#! $SHELL 3842de2362d3Smrg 3843de2362d3Smrg# $output - temporary wrapper script for $objdir/$outputname 3844de2362d3Smrg# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 3845de2362d3Smrg# 3846de2362d3Smrg# The $output program cannot be directly executed until all the libtool 3847de2362d3Smrg# libraries that it depends on are installed. 3848de2362d3Smrg# 3849de2362d3Smrg# This wrapper script should never be moved out of the build directory. 3850de2362d3Smrg# If it is, it will not operate correctly. 3851de2362d3Smrg 3852de2362d3Smrg# Sed substitution that helps us do robust quoting. It backslashifies 3853de2362d3Smrg# metacharacters that are still active within double-quoted strings. 3854de2362d3Smrgsed_quote_subst='$sed_quote_subst' 3855de2362d3Smrg 3856de2362d3Smrg# Be Bourne compatible 3857de2362d3Smrgif test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then 3858de2362d3Smrg emulate sh 3859de2362d3Smrg NULLCMD=: 3860de2362d3Smrg # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which 3861de2362d3Smrg # is contrary to our usage. Disable this feature. 3862de2362d3Smrg alias -g '\${1+\"\$@\"}'='\"\$@\"' 3863de2362d3Smrg setopt NO_GLOB_SUBST 3864de2362d3Smrgelse 3865de2362d3Smrg case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac 3866de2362d3Smrgfi 3867de2362d3SmrgBIN_SH=xpg4; export BIN_SH # for Tru64 3868de2362d3SmrgDUALCASE=1; export DUALCASE # for MKS sh 3869de2362d3Smrg 3870de2362d3Smrg# The HP-UX ksh and POSIX shell print the target directory to stdout 3871de2362d3Smrg# if CDPATH is set. 3872de2362d3Smrg(unset CDPATH) >/dev/null 2>&1 && unset CDPATH 3873de2362d3Smrg 3874de2362d3Smrgrelink_command=\"$relink_command\" 3875de2362d3Smrg 3876de2362d3Smrg# This environment variable determines our operation mode. 3877de2362d3Smrgif test \"\$libtool_install_magic\" = \"$magic\"; then 3878de2362d3Smrg # install mode needs the following variables: 3879de2362d3Smrg generated_by_libtool_version='$macro_version' 3880de2362d3Smrg notinst_deplibs='$notinst_deplibs' 3881de2362d3Smrgelse 3882de2362d3Smrg # When we are sourced in execute mode, \$file and \$ECHO are already set. 3883de2362d3Smrg if test \"\$libtool_execute_magic\" != \"$magic\"; then 3884de2362d3Smrg file=\"\$0\"" 3885de2362d3Smrg 3886de2362d3Smrg qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` 3887de2362d3Smrg $ECHO "\ 3888de2362d3Smrg 3889de2362d3Smrg# A function that is used when there is no print builtin or printf. 3890de2362d3Smrgfunc_fallback_echo () 3891de2362d3Smrg{ 3892de2362d3Smrg eval 'cat <<_LTECHO_EOF 3893de2362d3Smrg\$1 3894de2362d3Smrg_LTECHO_EOF' 3895de2362d3Smrg} 3896de2362d3Smrg ECHO=\"$qECHO\" 3897de2362d3Smrg fi 3898de2362d3Smrg 3899de2362d3Smrg# Very basic option parsing. These options are (a) specific to 3900de2362d3Smrg# the libtool wrapper, (b) are identical between the wrapper 3901de2362d3Smrg# /script/ and the wrapper /executable/ which is used only on 3902de2362d3Smrg# windows platforms, and (c) all begin with the string "--lt-" 3903de2362d3Smrg# (application programs are unlikely to have options which match 3904de2362d3Smrg# this pattern). 3905de2362d3Smrg# 3906de2362d3Smrg# There are only two supported options: --lt-debug and 3907de2362d3Smrg# --lt-dump-script. There is, deliberately, no --lt-help. 3908de2362d3Smrg# 3909de2362d3Smrg# The first argument to this parsing function should be the 3910de2362d3Smrg# script's $0 value, followed by "$@". 3911de2362d3Smrglt_option_debug= 3912de2362d3Smrgfunc_parse_lt_options () 3913de2362d3Smrg{ 3914de2362d3Smrg lt_script_arg0=\$0 3915de2362d3Smrg shift 3916de2362d3Smrg for lt_opt 3917de2362d3Smrg do 3918de2362d3Smrg case \"\$lt_opt\" in 3919de2362d3Smrg --lt-debug) lt_option_debug=1 ;; 3920de2362d3Smrg --lt-dump-script) 3921de2362d3Smrg lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` 3922de2362d3Smrg test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. 3923de2362d3Smrg lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` 3924de2362d3Smrg cat \"\$lt_dump_D/\$lt_dump_F\" 3925de2362d3Smrg exit 0 3926de2362d3Smrg ;; 3927de2362d3Smrg --lt-*) 3928de2362d3Smrg \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 3929de2362d3Smrg exit 1 3930de2362d3Smrg ;; 3931de2362d3Smrg esac 3932de2362d3Smrg done 3933de2362d3Smrg 3934de2362d3Smrg # Print the debug banner immediately: 3935de2362d3Smrg if test -n \"\$lt_option_debug\"; then 3936de2362d3Smrg echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2 3937de2362d3Smrg fi 3938de2362d3Smrg} 3939de2362d3Smrg 3940de2362d3Smrg# Used when --lt-debug. Prints its arguments to stdout 3941de2362d3Smrg# (redirection is the responsibility of the caller) 3942de2362d3Smrgfunc_lt_dump_args () 3943de2362d3Smrg{ 3944de2362d3Smrg lt_dump_args_N=1; 3945de2362d3Smrg for lt_arg 3946de2362d3Smrg do 3947de2362d3Smrg \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\" 3948de2362d3Smrg lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` 3949de2362d3Smrg done 3950de2362d3Smrg} 3951de2362d3Smrg 3952de2362d3Smrg# Core function for launching the target application 3953de2362d3Smrgfunc_exec_program_core () 3954de2362d3Smrg{ 3955de2362d3Smrg" 3956de2362d3Smrg case $host in 3957de2362d3Smrg # Backslashes separate directories on plain windows 3958de2362d3Smrg *-*-mingw | *-*-os2* | *-cegcc*) 3959de2362d3Smrg $ECHO "\ 3960de2362d3Smrg if test -n \"\$lt_option_debug\"; then 3961de2362d3Smrg \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2 3962de2362d3Smrg func_lt_dump_args \${1+\"\$@\"} 1>&2 3963de2362d3Smrg fi 3964de2362d3Smrg exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} 3965de2362d3Smrg" 3966de2362d3Smrg ;; 3967de2362d3Smrg 3968de2362d3Smrg *) 3969de2362d3Smrg $ECHO "\ 3970de2362d3Smrg if test -n \"\$lt_option_debug\"; then 3971de2362d3Smrg \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2 3972de2362d3Smrg func_lt_dump_args \${1+\"\$@\"} 1>&2 3973de2362d3Smrg fi 3974de2362d3Smrg exec \"\$progdir/\$program\" \${1+\"\$@\"} 3975de2362d3Smrg" 3976de2362d3Smrg ;; 3977de2362d3Smrg esac 3978de2362d3Smrg $ECHO "\ 3979de2362d3Smrg \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 3980de2362d3Smrg exit 1 3981de2362d3Smrg} 3982de2362d3Smrg 3983de2362d3Smrg# A function to encapsulate launching the target application 3984de2362d3Smrg# Strips options in the --lt-* namespace from \$@ and 3985de2362d3Smrg# launches target application with the remaining arguments. 3986de2362d3Smrgfunc_exec_program () 3987de2362d3Smrg{ 3988de2362d3Smrg case \" \$* \" in 3989de2362d3Smrg *\\ --lt-*) 3990de2362d3Smrg for lt_wr_arg 3991de2362d3Smrg do 3992de2362d3Smrg case \$lt_wr_arg in 3993de2362d3Smrg --lt-*) ;; 3994de2362d3Smrg *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; 3995de2362d3Smrg esac 3996de2362d3Smrg shift 3997de2362d3Smrg done ;; 3998de2362d3Smrg esac 3999de2362d3Smrg func_exec_program_core \${1+\"\$@\"} 4000de2362d3Smrg} 4001de2362d3Smrg 4002de2362d3Smrg # Parse options 4003de2362d3Smrg func_parse_lt_options \"\$0\" \${1+\"\$@\"} 4004de2362d3Smrg 4005de2362d3Smrg # Find the directory that this script lives in. 4006de2362d3Smrg thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` 4007de2362d3Smrg test \"x\$thisdir\" = \"x\$file\" && thisdir=. 4008de2362d3Smrg 4009de2362d3Smrg # Follow symbolic links until we get to the real thisdir. 4010de2362d3Smrg file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` 4011de2362d3Smrg while test -n \"\$file\"; do 4012de2362d3Smrg destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` 4013de2362d3Smrg 4014de2362d3Smrg # If there was a directory component, then change thisdir. 4015de2362d3Smrg if test \"x\$destdir\" != \"x\$file\"; then 4016de2362d3Smrg case \"\$destdir\" in 4017de2362d3Smrg [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; 4018de2362d3Smrg *) thisdir=\"\$thisdir/\$destdir\" ;; 4019de2362d3Smrg esac 4020de2362d3Smrg fi 4021de2362d3Smrg 4022de2362d3Smrg file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` 4023de2362d3Smrg file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` 4024de2362d3Smrg done 4025de2362d3Smrg 4026de2362d3Smrg # Usually 'no', except on cygwin/mingw when embedded into 4027de2362d3Smrg # the cwrapper. 4028de2362d3Smrg WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 4029de2362d3Smrg if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then 4030de2362d3Smrg # special case for '.' 4031de2362d3Smrg if test \"\$thisdir\" = \".\"; then 4032de2362d3Smrg thisdir=\`pwd\` 4033de2362d3Smrg fi 4034de2362d3Smrg # remove .libs from thisdir 4035de2362d3Smrg case \"\$thisdir\" in 4036de2362d3Smrg *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; 4037de2362d3Smrg $objdir ) thisdir=. ;; 4038de2362d3Smrg esac 4039de2362d3Smrg fi 4040de2362d3Smrg 4041de2362d3Smrg # Try to get the absolute directory name. 4042de2362d3Smrg absdir=\`cd \"\$thisdir\" && pwd\` 4043de2362d3Smrg test -n \"\$absdir\" && thisdir=\"\$absdir\" 4044de2362d3Smrg" 4045de2362d3Smrg 4046de2362d3Smrg if test "$fast_install" = yes; then 4047de2362d3Smrg $ECHO "\ 4048de2362d3Smrg program=lt-'$outputname'$exeext 4049de2362d3Smrg progdir=\"\$thisdir/$objdir\" 4050de2362d3Smrg 4051de2362d3Smrg if test ! -f \"\$progdir/\$program\" || 4052de2362d3Smrg { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ 4053de2362d3Smrg test \"X\$file\" != \"X\$progdir/\$program\"; }; then 4054de2362d3Smrg 4055de2362d3Smrg file=\"\$\$-\$program\" 4056de2362d3Smrg 4057de2362d3Smrg if test ! -d \"\$progdir\"; then 4058de2362d3Smrg $MKDIR \"\$progdir\" 4059de2362d3Smrg else 4060de2362d3Smrg $RM \"\$progdir/\$file\" 4061de2362d3Smrg fi" 4062de2362d3Smrg 4063de2362d3Smrg $ECHO "\ 4064de2362d3Smrg 4065de2362d3Smrg # relink executable if necessary 4066de2362d3Smrg if test -n \"\$relink_command\"; then 4067de2362d3Smrg if relink_command_output=\`eval \$relink_command 2>&1\`; then : 4068de2362d3Smrg else 4069de2362d3Smrg $ECHO \"\$relink_command_output\" >&2 4070de2362d3Smrg $RM \"\$progdir/\$file\" 4071de2362d3Smrg exit 1 4072de2362d3Smrg fi 4073de2362d3Smrg fi 4074de2362d3Smrg 4075de2362d3Smrg $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || 4076de2362d3Smrg { $RM \"\$progdir/\$program\"; 4077de2362d3Smrg $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } 4078de2362d3Smrg $RM \"\$progdir/\$file\" 4079de2362d3Smrg fi" 4080de2362d3Smrg else 4081de2362d3Smrg $ECHO "\ 4082de2362d3Smrg program='$outputname' 4083de2362d3Smrg progdir=\"\$thisdir/$objdir\" 4084de2362d3Smrg" 4085de2362d3Smrg fi 4086de2362d3Smrg 4087de2362d3Smrg $ECHO "\ 4088de2362d3Smrg 4089de2362d3Smrg if test -f \"\$progdir/\$program\"; then" 4090de2362d3Smrg 4091de2362d3Smrg # fixup the dll searchpath if we need to. 4092de2362d3Smrg # 4093de2362d3Smrg # Fix the DLL searchpath if we need to. Do this before prepending 4094de2362d3Smrg # to shlibpath, because on Windows, both are PATH and uninstalled 4095de2362d3Smrg # libraries must come first. 4096de2362d3Smrg if test -n "$dllsearchpath"; then 4097de2362d3Smrg $ECHO "\ 4098de2362d3Smrg # Add the dll search path components to the executable PATH 4099de2362d3Smrg PATH=$dllsearchpath:\$PATH 4100de2362d3Smrg" 4101de2362d3Smrg fi 4102de2362d3Smrg 4103de2362d3Smrg # Export our shlibpath_var if we have one. 4104de2362d3Smrg if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 4105de2362d3Smrg $ECHO "\ 4106de2362d3Smrg # Add our own library path to $shlibpath_var 4107de2362d3Smrg $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" 4108de2362d3Smrg 4109de2362d3Smrg # Some systems cannot cope with colon-terminated $shlibpath_var 4110de2362d3Smrg # The second colon is a workaround for a bug in BeOS R4 sed 4111de2362d3Smrg $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` 4112de2362d3Smrg 4113de2362d3Smrg export $shlibpath_var 4114de2362d3Smrg" 4115de2362d3Smrg fi 4116de2362d3Smrg 4117de2362d3Smrg $ECHO "\ 4118de2362d3Smrg if test \"\$libtool_execute_magic\" != \"$magic\"; then 4119de2362d3Smrg # Run the actual program with our arguments. 4120de2362d3Smrg func_exec_program \${1+\"\$@\"} 4121de2362d3Smrg fi 4122de2362d3Smrg else 4123de2362d3Smrg # The program doesn't exist. 4124de2362d3Smrg \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 4125de2362d3Smrg \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 4126de2362d3Smrg \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 4127de2362d3Smrg exit 1 4128de2362d3Smrg fi 4129de2362d3Smrgfi\ 4130de2362d3Smrg" 4131de2362d3Smrg} 4132de2362d3Smrg 4133de2362d3Smrg 4134de2362d3Smrg# func_emit_cwrapperexe_src 4135de2362d3Smrg# emit the source code for a wrapper executable on stdout 4136de2362d3Smrg# Must ONLY be called from within func_mode_link because 4137de2362d3Smrg# it depends on a number of variable set therein. 4138de2362d3Smrgfunc_emit_cwrapperexe_src () 4139de2362d3Smrg{ 4140de2362d3Smrg cat <<EOF 4141de2362d3Smrg 4142de2362d3Smrg/* $cwrappersource - temporary wrapper executable for $objdir/$outputname 4143de2362d3Smrg Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 4144de2362d3Smrg 4145de2362d3Smrg The $output program cannot be directly executed until all the libtool 4146de2362d3Smrg libraries that it depends on are installed. 4147de2362d3Smrg 4148de2362d3Smrg This wrapper executable should never be moved out of the build directory. 4149de2362d3Smrg If it is, it will not operate correctly. 4150de2362d3Smrg*/ 4151de2362d3SmrgEOF 4152de2362d3Smrg cat <<"EOF" 4153de2362d3Smrg#ifdef _MSC_VER 4154de2362d3Smrg# define _CRT_SECURE_NO_DEPRECATE 1 4155de2362d3Smrg#endif 4156de2362d3Smrg#include <stdio.h> 4157de2362d3Smrg#include <stdlib.h> 4158de2362d3Smrg#ifdef _MSC_VER 4159de2362d3Smrg# include <direct.h> 4160de2362d3Smrg# include <process.h> 4161de2362d3Smrg# include <io.h> 4162de2362d3Smrg#else 4163de2362d3Smrg# include <unistd.h> 4164de2362d3Smrg# include <stdint.h> 4165de2362d3Smrg# ifdef __CYGWIN__ 4166de2362d3Smrg# include <io.h> 4167de2362d3Smrg# endif 4168de2362d3Smrg#endif 4169de2362d3Smrg#include <malloc.h> 4170de2362d3Smrg#include <stdarg.h> 4171de2362d3Smrg#include <assert.h> 4172de2362d3Smrg#include <string.h> 4173de2362d3Smrg#include <ctype.h> 4174de2362d3Smrg#include <errno.h> 4175de2362d3Smrg#include <fcntl.h> 4176de2362d3Smrg#include <sys/stat.h> 4177de2362d3Smrg 4178de2362d3Smrg/* declarations of non-ANSI functions */ 4179de2362d3Smrg#if defined(__MINGW32__) 4180de2362d3Smrg# ifdef __STRICT_ANSI__ 4181de2362d3Smrgint _putenv (const char *); 4182de2362d3Smrg# endif 4183de2362d3Smrg#elif defined(__CYGWIN__) 4184de2362d3Smrg# ifdef __STRICT_ANSI__ 4185de2362d3Smrgchar *realpath (const char *, char *); 4186de2362d3Smrgint putenv (char *); 4187de2362d3Smrgint setenv (const char *, const char *, int); 4188de2362d3Smrg# endif 4189de2362d3Smrg/* #elif defined (other platforms) ... */ 4190de2362d3Smrg#endif 4191de2362d3Smrg 4192de2362d3Smrg/* portability defines, excluding path handling macros */ 4193de2362d3Smrg#if defined(_MSC_VER) 4194de2362d3Smrg# define setmode _setmode 4195de2362d3Smrg# define stat _stat 4196de2362d3Smrg# define chmod _chmod 4197de2362d3Smrg# define getcwd _getcwd 4198de2362d3Smrg# define putenv _putenv 4199de2362d3Smrg# define S_IXUSR _S_IEXEC 4200de2362d3Smrg# ifndef _INTPTR_T_DEFINED 4201de2362d3Smrg# define _INTPTR_T_DEFINED 4202de2362d3Smrg# define intptr_t int 4203de2362d3Smrg# endif 4204de2362d3Smrg#elif defined(__MINGW32__) 4205de2362d3Smrg# define setmode _setmode 4206de2362d3Smrg# define stat _stat 4207de2362d3Smrg# define chmod _chmod 4208de2362d3Smrg# define getcwd _getcwd 4209de2362d3Smrg# define putenv _putenv 4210de2362d3Smrg#elif defined(__CYGWIN__) 4211de2362d3Smrg# define HAVE_SETENV 4212de2362d3Smrg# define FOPEN_WB "wb" 4213de2362d3Smrg/* #elif defined (other platforms) ... */ 4214de2362d3Smrg#endif 4215de2362d3Smrg 4216de2362d3Smrg#if defined(PATH_MAX) 4217de2362d3Smrg# define LT_PATHMAX PATH_MAX 4218de2362d3Smrg#elif defined(MAXPATHLEN) 4219de2362d3Smrg# define LT_PATHMAX MAXPATHLEN 4220de2362d3Smrg#else 4221de2362d3Smrg# define LT_PATHMAX 1024 4222de2362d3Smrg#endif 4223de2362d3Smrg 4224de2362d3Smrg#ifndef S_IXOTH 4225de2362d3Smrg# define S_IXOTH 0 4226de2362d3Smrg#endif 4227de2362d3Smrg#ifndef S_IXGRP 4228de2362d3Smrg# define S_IXGRP 0 4229de2362d3Smrg#endif 4230de2362d3Smrg 4231de2362d3Smrg/* path handling portability macros */ 4232de2362d3Smrg#ifndef DIR_SEPARATOR 4233de2362d3Smrg# define DIR_SEPARATOR '/' 4234de2362d3Smrg# define PATH_SEPARATOR ':' 4235de2362d3Smrg#endif 4236de2362d3Smrg 4237de2362d3Smrg#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ 4238de2362d3Smrg defined (__OS2__) 4239de2362d3Smrg# define HAVE_DOS_BASED_FILE_SYSTEM 4240de2362d3Smrg# define FOPEN_WB "wb" 4241de2362d3Smrg# ifndef DIR_SEPARATOR_2 4242de2362d3Smrg# define DIR_SEPARATOR_2 '\\' 4243de2362d3Smrg# endif 4244de2362d3Smrg# ifndef PATH_SEPARATOR_2 4245de2362d3Smrg# define PATH_SEPARATOR_2 ';' 4246de2362d3Smrg# endif 4247de2362d3Smrg#endif 4248de2362d3Smrg 4249de2362d3Smrg#ifndef DIR_SEPARATOR_2 4250de2362d3Smrg# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) 4251de2362d3Smrg#else /* DIR_SEPARATOR_2 */ 4252de2362d3Smrg# define IS_DIR_SEPARATOR(ch) \ 4253de2362d3Smrg (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) 4254de2362d3Smrg#endif /* DIR_SEPARATOR_2 */ 4255de2362d3Smrg 4256de2362d3Smrg#ifndef PATH_SEPARATOR_2 4257de2362d3Smrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) 4258de2362d3Smrg#else /* PATH_SEPARATOR_2 */ 4259de2362d3Smrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) 4260de2362d3Smrg#endif /* PATH_SEPARATOR_2 */ 4261de2362d3Smrg 4262de2362d3Smrg#ifndef FOPEN_WB 4263de2362d3Smrg# define FOPEN_WB "w" 4264de2362d3Smrg#endif 4265de2362d3Smrg#ifndef _O_BINARY 4266de2362d3Smrg# define _O_BINARY 0 4267de2362d3Smrg#endif 4268de2362d3Smrg 4269de2362d3Smrg#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) 4270de2362d3Smrg#define XFREE(stale) do { \ 4271de2362d3Smrg if (stale) { free ((void *) stale); stale = 0; } \ 4272de2362d3Smrg} while (0) 4273de2362d3Smrg 4274de2362d3Smrg#if defined(LT_DEBUGWRAPPER) 4275de2362d3Smrgstatic int lt_debug = 1; 4276de2362d3Smrg#else 4277de2362d3Smrgstatic int lt_debug = 0; 4278de2362d3Smrg#endif 4279de2362d3Smrg 4280de2362d3Smrgconst char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ 4281de2362d3Smrg 4282de2362d3Smrgvoid *xmalloc (size_t num); 4283de2362d3Smrgchar *xstrdup (const char *string); 4284de2362d3Smrgconst char *base_name (const char *name); 4285de2362d3Smrgchar *find_executable (const char *wrapper); 4286de2362d3Smrgchar *chase_symlinks (const char *pathspec); 4287de2362d3Smrgint make_executable (const char *path); 4288de2362d3Smrgint check_executable (const char *path); 4289de2362d3Smrgchar *strendzap (char *str, const char *pat); 4290de2362d3Smrgvoid lt_debugprintf (const char *file, int line, const char *fmt, ...); 4291de2362d3Smrgvoid lt_fatal (const char *file, int line, const char *message, ...); 4292de2362d3Smrgstatic const char *nonnull (const char *s); 4293de2362d3Smrgstatic const char *nonempty (const char *s); 4294de2362d3Smrgvoid lt_setenv (const char *name, const char *value); 4295de2362d3Smrgchar *lt_extend_str (const char *orig_value, const char *add, int to_end); 4296de2362d3Smrgvoid lt_update_exe_path (const char *name, const char *value); 4297de2362d3Smrgvoid lt_update_lib_path (const char *name, const char *value); 4298de2362d3Smrgchar **prepare_spawn (char **argv); 4299de2362d3Smrgvoid lt_dump_script (FILE *f); 4300de2362d3SmrgEOF 4301de2362d3Smrg 4302de2362d3Smrg cat <<EOF 4303de2362d3Smrgvolatile const char * MAGIC_EXE = "$magic_exe"; 4304de2362d3Smrgconst char * LIB_PATH_VARNAME = "$shlibpath_var"; 4305de2362d3SmrgEOF 4306de2362d3Smrg 4307de2362d3Smrg if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 4308de2362d3Smrg func_to_host_path "$temp_rpath" 4309de2362d3Smrg cat <<EOF 4310de2362d3Smrgconst char * LIB_PATH_VALUE = "$func_to_host_path_result"; 4311de2362d3SmrgEOF 4312de2362d3Smrg else 4313de2362d3Smrg cat <<"EOF" 4314de2362d3Smrgconst char * LIB_PATH_VALUE = ""; 4315de2362d3SmrgEOF 4316de2362d3Smrg fi 4317de2362d3Smrg 4318de2362d3Smrg if test -n "$dllsearchpath"; then 4319de2362d3Smrg func_to_host_path "$dllsearchpath:" 4320de2362d3Smrg cat <<EOF 4321de2362d3Smrgconst char * EXE_PATH_VARNAME = "PATH"; 4322de2362d3Smrgconst char * EXE_PATH_VALUE = "$func_to_host_path_result"; 4323de2362d3SmrgEOF 4324de2362d3Smrg else 4325de2362d3Smrg cat <<"EOF" 4326de2362d3Smrgconst char * EXE_PATH_VARNAME = ""; 4327de2362d3Smrgconst char * EXE_PATH_VALUE = ""; 4328de2362d3SmrgEOF 4329de2362d3Smrg fi 4330de2362d3Smrg 4331de2362d3Smrg if test "$fast_install" = yes; then 4332de2362d3Smrg cat <<EOF 4333de2362d3Smrgconst char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */ 4334de2362d3SmrgEOF 4335de2362d3Smrg else 4336de2362d3Smrg cat <<EOF 4337de2362d3Smrgconst char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */ 4338de2362d3SmrgEOF 4339de2362d3Smrg fi 4340de2362d3Smrg 4341de2362d3Smrg 4342de2362d3Smrg cat <<"EOF" 4343de2362d3Smrg 4344de2362d3Smrg#define LTWRAPPER_OPTION_PREFIX "--lt-" 4345de2362d3Smrg 4346de2362d3Smrgstatic const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX; 4347de2362d3Smrgstatic const char *dumpscript_opt = LTWRAPPER_OPTION_PREFIX "dump-script"; 4348de2362d3Smrgstatic const char *debug_opt = LTWRAPPER_OPTION_PREFIX "debug"; 4349de2362d3Smrg 4350de2362d3Smrgint 4351de2362d3Smrgmain (int argc, char *argv[]) 4352de2362d3Smrg{ 4353de2362d3Smrg char **newargz; 4354de2362d3Smrg int newargc; 4355de2362d3Smrg char *tmp_pathspec; 4356de2362d3Smrg char *actual_cwrapper_path; 4357de2362d3Smrg char *actual_cwrapper_name; 4358de2362d3Smrg char *target_name; 4359de2362d3Smrg char *lt_argv_zero; 4360de2362d3Smrg intptr_t rval = 127; 4361de2362d3Smrg 4362de2362d3Smrg int i; 4363de2362d3Smrg 4364de2362d3Smrg program_name = (char *) xstrdup (base_name (argv[0])); 4365de2362d3Smrg newargz = XMALLOC (char *, argc + 1); 4366de2362d3Smrg 4367de2362d3Smrg /* very simple arg parsing; don't want to rely on getopt 4368de2362d3Smrg * also, copy all non cwrapper options to newargz, except 4369de2362d3Smrg * argz[0], which is handled differently 4370de2362d3Smrg */ 4371de2362d3Smrg newargc=0; 4372de2362d3Smrg for (i = 1; i < argc; i++) 4373de2362d3Smrg { 4374de2362d3Smrg if (strcmp (argv[i], dumpscript_opt) == 0) 4375de2362d3Smrg { 4376de2362d3SmrgEOF 4377de2362d3Smrg case "$host" in 4378de2362d3Smrg *mingw* | *cygwin* ) 4379de2362d3Smrg # make stdout use "unix" line endings 4380de2362d3Smrg echo " setmode(1,_O_BINARY);" 4381de2362d3Smrg ;; 4382de2362d3Smrg esac 4383de2362d3Smrg 4384de2362d3Smrg cat <<"EOF" 4385de2362d3Smrg lt_dump_script (stdout); 4386de2362d3Smrg return 0; 4387de2362d3Smrg } 4388de2362d3Smrg if (strcmp (argv[i], debug_opt) == 0) 4389de2362d3Smrg { 4390de2362d3Smrg lt_debug = 1; 4391de2362d3Smrg continue; 4392de2362d3Smrg } 4393de2362d3Smrg if (strcmp (argv[i], ltwrapper_option_prefix) == 0) 4394de2362d3Smrg { 4395de2362d3Smrg /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX 4396de2362d3Smrg namespace, but it is not one of the ones we know about and 4397de2362d3Smrg have already dealt with, above (inluding dump-script), then 4398de2362d3Smrg report an error. Otherwise, targets might begin to believe 4399de2362d3Smrg they are allowed to use options in the LTWRAPPER_OPTION_PREFIX 4400de2362d3Smrg namespace. The first time any user complains about this, we'll 4401de2362d3Smrg need to make LTWRAPPER_OPTION_PREFIX a configure-time option 4402de2362d3Smrg or a configure.ac-settable value. 4403de2362d3Smrg */ 4404de2362d3Smrg lt_fatal (__FILE__, __LINE__, 4405de2362d3Smrg "unrecognized %s option: '%s'", 4406de2362d3Smrg ltwrapper_option_prefix, argv[i]); 4407de2362d3Smrg } 4408de2362d3Smrg /* otherwise ... */ 4409de2362d3Smrg newargz[++newargc] = xstrdup (argv[i]); 4410de2362d3Smrg } 4411de2362d3Smrg newargz[++newargc] = NULL; 4412de2362d3Smrg 4413de2362d3SmrgEOF 4414de2362d3Smrg cat <<EOF 4415de2362d3Smrg /* The GNU banner must be the first non-error debug message */ 4416de2362d3Smrg lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\n"); 4417de2362d3SmrgEOF 4418de2362d3Smrg cat <<"EOF" 4419de2362d3Smrg lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]); 4420de2362d3Smrg lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name); 4421de2362d3Smrg 4422de2362d3Smrg tmp_pathspec = find_executable (argv[0]); 4423de2362d3Smrg if (tmp_pathspec == NULL) 4424de2362d3Smrg lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]); 4425de2362d3Smrg lt_debugprintf (__FILE__, __LINE__, 4426de2362d3Smrg "(main) found exe (before symlink chase) at: %s\n", 4427de2362d3Smrg tmp_pathspec); 4428de2362d3Smrg 4429de2362d3Smrg actual_cwrapper_path = chase_symlinks (tmp_pathspec); 4430de2362d3Smrg lt_debugprintf (__FILE__, __LINE__, 4431de2362d3Smrg "(main) found exe (after symlink chase) at: %s\n", 4432de2362d3Smrg actual_cwrapper_path); 4433de2362d3Smrg XFREE (tmp_pathspec); 4434de2362d3Smrg 4435de2362d3Smrg actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path)); 4436de2362d3Smrg strendzap (actual_cwrapper_path, actual_cwrapper_name); 4437de2362d3Smrg 4438de2362d3Smrg /* wrapper name transforms */ 4439de2362d3Smrg strendzap (actual_cwrapper_name, ".exe"); 4440de2362d3Smrg tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1); 4441de2362d3Smrg XFREE (actual_cwrapper_name); 4442de2362d3Smrg actual_cwrapper_name = tmp_pathspec; 4443de2362d3Smrg tmp_pathspec = 0; 4444de2362d3Smrg 4445de2362d3Smrg /* target_name transforms -- use actual target program name; might have lt- prefix */ 4446de2362d3Smrg target_name = xstrdup (base_name (TARGET_PROGRAM_NAME)); 4447de2362d3Smrg strendzap (target_name, ".exe"); 4448de2362d3Smrg tmp_pathspec = lt_extend_str (target_name, ".exe", 1); 4449de2362d3Smrg XFREE (target_name); 4450de2362d3Smrg target_name = tmp_pathspec; 4451de2362d3Smrg tmp_pathspec = 0; 4452de2362d3Smrg 4453de2362d3Smrg lt_debugprintf (__FILE__, __LINE__, 4454de2362d3Smrg "(main) libtool target name: %s\n", 4455de2362d3Smrg target_name); 4456de2362d3SmrgEOF 4457de2362d3Smrg 4458de2362d3Smrg cat <<EOF 4459de2362d3Smrg newargz[0] = 4460de2362d3Smrg XMALLOC (char, (strlen (actual_cwrapper_path) + 4461de2362d3Smrg strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1)); 4462de2362d3Smrg strcpy (newargz[0], actual_cwrapper_path); 4463de2362d3Smrg strcat (newargz[0], "$objdir"); 4464de2362d3Smrg strcat (newargz[0], "/"); 4465de2362d3SmrgEOF 4466de2362d3Smrg 4467de2362d3Smrg cat <<"EOF" 4468de2362d3Smrg /* stop here, and copy so we don't have to do this twice */ 4469de2362d3Smrg tmp_pathspec = xstrdup (newargz[0]); 4470de2362d3Smrg 4471de2362d3Smrg /* do NOT want the lt- prefix here, so use actual_cwrapper_name */ 4472de2362d3Smrg strcat (newargz[0], actual_cwrapper_name); 4473de2362d3Smrg 4474de2362d3Smrg /* DO want the lt- prefix here if it exists, so use target_name */ 4475de2362d3Smrg lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1); 4476de2362d3Smrg XFREE (tmp_pathspec); 4477de2362d3Smrg tmp_pathspec = NULL; 4478de2362d3SmrgEOF 4479de2362d3Smrg 4480de2362d3Smrg case $host_os in 4481de2362d3Smrg mingw*) 4482de2362d3Smrg cat <<"EOF" 4483de2362d3Smrg { 4484de2362d3Smrg char* p; 4485de2362d3Smrg while ((p = strchr (newargz[0], '\\')) != NULL) 4486de2362d3Smrg { 4487de2362d3Smrg *p = '/'; 4488de2362d3Smrg } 4489de2362d3Smrg while ((p = strchr (lt_argv_zero, '\\')) != NULL) 4490de2362d3Smrg { 4491de2362d3Smrg *p = '/'; 4492de2362d3Smrg } 4493de2362d3Smrg } 4494de2362d3SmrgEOF 4495de2362d3Smrg ;; 4496de2362d3Smrg esac 4497de2362d3Smrg 4498de2362d3Smrg cat <<"EOF" 4499de2362d3Smrg XFREE (target_name); 4500de2362d3Smrg XFREE (actual_cwrapper_path); 4501de2362d3Smrg XFREE (actual_cwrapper_name); 4502de2362d3Smrg 4503de2362d3Smrg lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */ 4504de2362d3Smrg lt_setenv ("DUALCASE", "1"); /* for MSK sh */ 4505de2362d3Smrg /* Update the DLL searchpath. EXE_PATH_VALUE ($dllsearchpath) must 4506de2362d3Smrg be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath) 4507de2362d3Smrg because on Windows, both *_VARNAMEs are PATH but uninstalled 4508de2362d3Smrg libraries must come first. */ 4509de2362d3Smrg lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE); 4510de2362d3Smrg lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE); 4511de2362d3Smrg 4512de2362d3Smrg lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n", 4513de2362d3Smrg nonnull (lt_argv_zero)); 4514de2362d3Smrg for (i = 0; i < newargc; i++) 4515de2362d3Smrg { 4516de2362d3Smrg lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n", 4517de2362d3Smrg i, nonnull (newargz[i])); 4518de2362d3Smrg } 4519de2362d3Smrg 4520de2362d3SmrgEOF 4521de2362d3Smrg 4522de2362d3Smrg case $host_os in 4523de2362d3Smrg mingw*) 4524de2362d3Smrg cat <<"EOF" 4525de2362d3Smrg /* execv doesn't actually work on mingw as expected on unix */ 4526de2362d3Smrg newargz = prepare_spawn (newargz); 4527de2362d3Smrg rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz); 4528de2362d3Smrg if (rval == -1) 4529de2362d3Smrg { 4530de2362d3Smrg /* failed to start process */ 4531de2362d3Smrg lt_debugprintf (__FILE__, __LINE__, 4532de2362d3Smrg "(main) failed to launch target \"%s\": %s\n", 4533de2362d3Smrg lt_argv_zero, nonnull (strerror (errno))); 4534de2362d3Smrg return 127; 4535de2362d3Smrg } 4536de2362d3Smrg return rval; 4537de2362d3SmrgEOF 4538de2362d3Smrg ;; 4539de2362d3Smrg *) 4540de2362d3Smrg cat <<"EOF" 4541de2362d3Smrg execv (lt_argv_zero, newargz); 4542de2362d3Smrg return rval; /* =127, but avoids unused variable warning */ 4543de2362d3SmrgEOF 4544de2362d3Smrg ;; 4545de2362d3Smrg esac 4546de2362d3Smrg 4547de2362d3Smrg cat <<"EOF" 4548de2362d3Smrg} 4549de2362d3Smrg 4550de2362d3Smrgvoid * 4551de2362d3Smrgxmalloc (size_t num) 4552de2362d3Smrg{ 4553de2362d3Smrg void *p = (void *) malloc (num); 4554de2362d3Smrg if (!p) 4555de2362d3Smrg lt_fatal (__FILE__, __LINE__, "memory exhausted"); 4556de2362d3Smrg 4557de2362d3Smrg return p; 4558de2362d3Smrg} 4559de2362d3Smrg 4560de2362d3Smrgchar * 4561de2362d3Smrgxstrdup (const char *string) 4562de2362d3Smrg{ 4563de2362d3Smrg return string ? strcpy ((char *) xmalloc (strlen (string) + 1), 4564de2362d3Smrg string) : NULL; 4565de2362d3Smrg} 4566de2362d3Smrg 4567de2362d3Smrgconst char * 4568de2362d3Smrgbase_name (const char *name) 4569de2362d3Smrg{ 4570de2362d3Smrg const char *base; 4571de2362d3Smrg 4572de2362d3Smrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 4573de2362d3Smrg /* Skip over the disk name in MSDOS pathnames. */ 4574de2362d3Smrg if (isalpha ((unsigned char) name[0]) && name[1] == ':') 4575de2362d3Smrg name += 2; 4576de2362d3Smrg#endif 4577de2362d3Smrg 4578de2362d3Smrg for (base = name; *name; name++) 4579de2362d3Smrg if (IS_DIR_SEPARATOR (*name)) 4580de2362d3Smrg base = name + 1; 4581de2362d3Smrg return base; 4582de2362d3Smrg} 4583de2362d3Smrg 4584de2362d3Smrgint 4585de2362d3Smrgcheck_executable (const char *path) 4586de2362d3Smrg{ 4587de2362d3Smrg struct stat st; 4588de2362d3Smrg 4589de2362d3Smrg lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n", 4590de2362d3Smrg nonempty (path)); 4591de2362d3Smrg if ((!path) || (!*path)) 4592de2362d3Smrg return 0; 4593de2362d3Smrg 4594de2362d3Smrg if ((stat (path, &st) >= 0) 4595de2362d3Smrg && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) 4596de2362d3Smrg return 1; 4597de2362d3Smrg else 4598de2362d3Smrg return 0; 4599de2362d3Smrg} 4600de2362d3Smrg 4601de2362d3Smrgint 4602de2362d3Smrgmake_executable (const char *path) 4603de2362d3Smrg{ 4604de2362d3Smrg int rval = 0; 4605de2362d3Smrg struct stat st; 4606de2362d3Smrg 4607de2362d3Smrg lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", 4608de2362d3Smrg nonempty (path)); 4609de2362d3Smrg if ((!path) || (!*path)) 4610de2362d3Smrg return 0; 4611de2362d3Smrg 4612de2362d3Smrg if (stat (path, &st) >= 0) 4613de2362d3Smrg { 4614de2362d3Smrg rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); 4615de2362d3Smrg } 4616de2362d3Smrg return rval; 4617de2362d3Smrg} 4618de2362d3Smrg 4619de2362d3Smrg/* Searches for the full path of the wrapper. Returns 4620de2362d3Smrg newly allocated full path name if found, NULL otherwise 4621de2362d3Smrg Does not chase symlinks, even on platforms that support them. 4622de2362d3Smrg*/ 4623de2362d3Smrgchar * 4624de2362d3Smrgfind_executable (const char *wrapper) 4625de2362d3Smrg{ 4626de2362d3Smrg int has_slash = 0; 4627de2362d3Smrg const char *p; 4628de2362d3Smrg const char *p_next; 4629de2362d3Smrg /* static buffer for getcwd */ 4630de2362d3Smrg char tmp[LT_PATHMAX + 1]; 4631de2362d3Smrg int tmp_len; 4632de2362d3Smrg char *concat_name; 4633de2362d3Smrg 4634de2362d3Smrg lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", 4635de2362d3Smrg nonempty (wrapper)); 4636de2362d3Smrg 4637de2362d3Smrg if ((wrapper == NULL) || (*wrapper == '\0')) 4638de2362d3Smrg return NULL; 4639de2362d3Smrg 4640de2362d3Smrg /* Absolute path? */ 4641de2362d3Smrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 4642de2362d3Smrg if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') 4643de2362d3Smrg { 4644de2362d3Smrg concat_name = xstrdup (wrapper); 4645de2362d3Smrg if (check_executable (concat_name)) 4646de2362d3Smrg return concat_name; 4647de2362d3Smrg XFREE (concat_name); 4648de2362d3Smrg } 4649de2362d3Smrg else 4650de2362d3Smrg { 4651de2362d3Smrg#endif 4652de2362d3Smrg if (IS_DIR_SEPARATOR (wrapper[0])) 4653de2362d3Smrg { 4654de2362d3Smrg concat_name = xstrdup (wrapper); 4655de2362d3Smrg if (check_executable (concat_name)) 4656de2362d3Smrg return concat_name; 4657de2362d3Smrg XFREE (concat_name); 4658de2362d3Smrg } 4659de2362d3Smrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 4660de2362d3Smrg } 4661de2362d3Smrg#endif 4662de2362d3Smrg 4663de2362d3Smrg for (p = wrapper; *p; p++) 4664de2362d3Smrg if (*p == '/') 4665de2362d3Smrg { 4666de2362d3Smrg has_slash = 1; 4667de2362d3Smrg break; 4668de2362d3Smrg } 4669de2362d3Smrg if (!has_slash) 4670de2362d3Smrg { 4671de2362d3Smrg /* no slashes; search PATH */ 4672de2362d3Smrg const char *path = getenv ("PATH"); 4673de2362d3Smrg if (path != NULL) 4674de2362d3Smrg { 4675de2362d3Smrg for (p = path; *p; p = p_next) 4676de2362d3Smrg { 4677de2362d3Smrg const char *q; 4678de2362d3Smrg size_t p_len; 4679de2362d3Smrg for (q = p; *q; q++) 4680de2362d3Smrg if (IS_PATH_SEPARATOR (*q)) 4681de2362d3Smrg break; 4682de2362d3Smrg p_len = q - p; 4683de2362d3Smrg p_next = (*q == '\0' ? q : q + 1); 4684de2362d3Smrg if (p_len == 0) 4685de2362d3Smrg { 4686de2362d3Smrg /* empty path: current directory */ 4687de2362d3Smrg if (getcwd (tmp, LT_PATHMAX) == NULL) 4688de2362d3Smrg lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", 4689de2362d3Smrg nonnull (strerror (errno))); 4690de2362d3Smrg tmp_len = strlen (tmp); 4691de2362d3Smrg concat_name = 4692de2362d3Smrg XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); 4693de2362d3Smrg memcpy (concat_name, tmp, tmp_len); 4694de2362d3Smrg concat_name[tmp_len] = '/'; 4695de2362d3Smrg strcpy (concat_name + tmp_len + 1, wrapper); 4696de2362d3Smrg } 4697de2362d3Smrg else 4698de2362d3Smrg { 4699de2362d3Smrg concat_name = 4700de2362d3Smrg XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); 4701de2362d3Smrg memcpy (concat_name, p, p_len); 4702de2362d3Smrg concat_name[p_len] = '/'; 4703de2362d3Smrg strcpy (concat_name + p_len + 1, wrapper); 4704de2362d3Smrg } 4705de2362d3Smrg if (check_executable (concat_name)) 4706de2362d3Smrg return concat_name; 4707de2362d3Smrg XFREE (concat_name); 4708de2362d3Smrg } 4709de2362d3Smrg } 4710de2362d3Smrg /* not found in PATH; assume curdir */ 4711de2362d3Smrg } 4712de2362d3Smrg /* Relative path | not found in path: prepend cwd */ 4713de2362d3Smrg if (getcwd (tmp, LT_PATHMAX) == NULL) 4714de2362d3Smrg lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", 4715de2362d3Smrg nonnull (strerror (errno))); 4716de2362d3Smrg tmp_len = strlen (tmp); 4717de2362d3Smrg concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); 4718de2362d3Smrg memcpy (concat_name, tmp, tmp_len); 4719de2362d3Smrg concat_name[tmp_len] = '/'; 4720de2362d3Smrg strcpy (concat_name + tmp_len + 1, wrapper); 4721de2362d3Smrg 4722de2362d3Smrg if (check_executable (concat_name)) 4723de2362d3Smrg return concat_name; 4724de2362d3Smrg XFREE (concat_name); 4725de2362d3Smrg return NULL; 4726de2362d3Smrg} 4727de2362d3Smrg 4728de2362d3Smrgchar * 4729de2362d3Smrgchase_symlinks (const char *pathspec) 4730de2362d3Smrg{ 4731de2362d3Smrg#ifndef S_ISLNK 4732de2362d3Smrg return xstrdup (pathspec); 4733de2362d3Smrg#else 4734de2362d3Smrg char buf[LT_PATHMAX]; 4735de2362d3Smrg struct stat s; 4736de2362d3Smrg char *tmp_pathspec = xstrdup (pathspec); 4737de2362d3Smrg char *p; 4738de2362d3Smrg int has_symlinks = 0; 4739de2362d3Smrg while (strlen (tmp_pathspec) && !has_symlinks) 4740de2362d3Smrg { 4741de2362d3Smrg lt_debugprintf (__FILE__, __LINE__, 4742de2362d3Smrg "checking path component for symlinks: %s\n", 4743de2362d3Smrg tmp_pathspec); 4744de2362d3Smrg if (lstat (tmp_pathspec, &s) == 0) 4745de2362d3Smrg { 4746de2362d3Smrg if (S_ISLNK (s.st_mode) != 0) 4747de2362d3Smrg { 4748de2362d3Smrg has_symlinks = 1; 4749de2362d3Smrg break; 4750de2362d3Smrg } 4751de2362d3Smrg 4752de2362d3Smrg /* search backwards for last DIR_SEPARATOR */ 4753de2362d3Smrg p = tmp_pathspec + strlen (tmp_pathspec) - 1; 4754de2362d3Smrg while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) 4755de2362d3Smrg p--; 4756de2362d3Smrg if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) 4757de2362d3Smrg { 4758de2362d3Smrg /* no more DIR_SEPARATORS left */ 4759de2362d3Smrg break; 4760de2362d3Smrg } 4761de2362d3Smrg *p = '\0'; 4762de2362d3Smrg } 4763de2362d3Smrg else 4764de2362d3Smrg { 4765de2362d3Smrg lt_fatal (__FILE__, __LINE__, 4766de2362d3Smrg "error accessing file \"%s\": %s", 4767de2362d3Smrg tmp_pathspec, nonnull (strerror (errno))); 4768de2362d3Smrg } 4769de2362d3Smrg } 4770de2362d3Smrg XFREE (tmp_pathspec); 4771de2362d3Smrg 4772de2362d3Smrg if (!has_symlinks) 4773de2362d3Smrg { 4774de2362d3Smrg return xstrdup (pathspec); 4775de2362d3Smrg } 4776de2362d3Smrg 4777de2362d3Smrg tmp_pathspec = realpath (pathspec, buf); 4778de2362d3Smrg if (tmp_pathspec == 0) 4779de2362d3Smrg { 4780de2362d3Smrg lt_fatal (__FILE__, __LINE__, 4781de2362d3Smrg "could not follow symlinks for %s", pathspec); 4782de2362d3Smrg } 4783de2362d3Smrg return xstrdup (tmp_pathspec); 4784de2362d3Smrg#endif 4785de2362d3Smrg} 4786de2362d3Smrg 4787de2362d3Smrgchar * 4788de2362d3Smrgstrendzap (char *str, const char *pat) 4789de2362d3Smrg{ 4790de2362d3Smrg size_t len, patlen; 4791de2362d3Smrg 4792de2362d3Smrg assert (str != NULL); 4793de2362d3Smrg assert (pat != NULL); 4794de2362d3Smrg 4795de2362d3Smrg len = strlen (str); 4796de2362d3Smrg patlen = strlen (pat); 4797de2362d3Smrg 4798de2362d3Smrg if (patlen <= len) 4799de2362d3Smrg { 4800de2362d3Smrg str += len - patlen; 4801de2362d3Smrg if (strcmp (str, pat) == 0) 4802de2362d3Smrg *str = '\0'; 4803de2362d3Smrg } 4804de2362d3Smrg return str; 4805de2362d3Smrg} 4806de2362d3Smrg 4807de2362d3Smrgvoid 4808de2362d3Smrglt_debugprintf (const char *file, int line, const char *fmt, ...) 4809de2362d3Smrg{ 4810de2362d3Smrg va_list args; 4811de2362d3Smrg if (lt_debug) 4812de2362d3Smrg { 4813de2362d3Smrg (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); 4814de2362d3Smrg va_start (args, fmt); 4815de2362d3Smrg (void) vfprintf (stderr, fmt, args); 4816de2362d3Smrg va_end (args); 4817de2362d3Smrg } 4818de2362d3Smrg} 4819de2362d3Smrg 4820de2362d3Smrgstatic void 4821de2362d3Smrglt_error_core (int exit_status, const char *file, 4822de2362d3Smrg int line, const char *mode, 4823de2362d3Smrg const char *message, va_list ap) 4824de2362d3Smrg{ 4825de2362d3Smrg fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); 4826de2362d3Smrg vfprintf (stderr, message, ap); 4827de2362d3Smrg fprintf (stderr, ".\n"); 4828de2362d3Smrg 4829de2362d3Smrg if (exit_status >= 0) 4830de2362d3Smrg exit (exit_status); 4831de2362d3Smrg} 4832de2362d3Smrg 4833de2362d3Smrgvoid 4834de2362d3Smrglt_fatal (const char *file, int line, const char *message, ...) 4835de2362d3Smrg{ 4836de2362d3Smrg va_list ap; 4837de2362d3Smrg va_start (ap, message); 4838de2362d3Smrg lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); 4839de2362d3Smrg va_end (ap); 4840de2362d3Smrg} 4841de2362d3Smrg 4842de2362d3Smrgstatic const char * 4843de2362d3Smrgnonnull (const char *s) 4844de2362d3Smrg{ 4845de2362d3Smrg return s ? s : "(null)"; 4846de2362d3Smrg} 4847de2362d3Smrg 4848de2362d3Smrgstatic const char * 4849de2362d3Smrgnonempty (const char *s) 4850de2362d3Smrg{ 4851de2362d3Smrg return (s && !*s) ? "(empty)" : nonnull (s); 4852de2362d3Smrg} 4853de2362d3Smrg 4854de2362d3Smrgvoid 4855de2362d3Smrglt_setenv (const char *name, const char *value) 4856de2362d3Smrg{ 4857de2362d3Smrg lt_debugprintf (__FILE__, __LINE__, 4858de2362d3Smrg "(lt_setenv) setting '%s' to '%s'\n", 4859de2362d3Smrg nonnull (name), nonnull (value)); 4860de2362d3Smrg { 4861de2362d3Smrg#ifdef HAVE_SETENV 4862de2362d3Smrg /* always make a copy, for consistency with !HAVE_SETENV */ 4863de2362d3Smrg char *str = xstrdup (value); 4864de2362d3Smrg setenv (name, str, 1); 4865de2362d3Smrg#else 4866de2362d3Smrg int len = strlen (name) + 1 + strlen (value) + 1; 4867de2362d3Smrg char *str = XMALLOC (char, len); 4868de2362d3Smrg sprintf (str, "%s=%s", name, value); 4869de2362d3Smrg if (putenv (str) != EXIT_SUCCESS) 4870de2362d3Smrg { 4871de2362d3Smrg XFREE (str); 4872de2362d3Smrg } 4873de2362d3Smrg#endif 4874de2362d3Smrg } 4875de2362d3Smrg} 4876de2362d3Smrg 4877de2362d3Smrgchar * 4878de2362d3Smrglt_extend_str (const char *orig_value, const char *add, int to_end) 4879de2362d3Smrg{ 4880de2362d3Smrg char *new_value; 4881de2362d3Smrg if (orig_value && *orig_value) 4882de2362d3Smrg { 4883de2362d3Smrg int orig_value_len = strlen (orig_value); 4884de2362d3Smrg int add_len = strlen (add); 4885de2362d3Smrg new_value = XMALLOC (char, add_len + orig_value_len + 1); 4886de2362d3Smrg if (to_end) 4887de2362d3Smrg { 4888de2362d3Smrg strcpy (new_value, orig_value); 4889de2362d3Smrg strcpy (new_value + orig_value_len, add); 4890de2362d3Smrg } 4891de2362d3Smrg else 4892de2362d3Smrg { 4893de2362d3Smrg strcpy (new_value, add); 4894de2362d3Smrg strcpy (new_value + add_len, orig_value); 4895de2362d3Smrg } 4896de2362d3Smrg } 4897de2362d3Smrg else 4898de2362d3Smrg { 4899de2362d3Smrg new_value = xstrdup (add); 4900de2362d3Smrg } 4901de2362d3Smrg return new_value; 4902de2362d3Smrg} 4903de2362d3Smrg 4904de2362d3Smrgvoid 4905de2362d3Smrglt_update_exe_path (const char *name, const char *value) 4906de2362d3Smrg{ 4907de2362d3Smrg lt_debugprintf (__FILE__, __LINE__, 4908de2362d3Smrg "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", 4909de2362d3Smrg nonnull (name), nonnull (value)); 4910de2362d3Smrg 4911de2362d3Smrg if (name && *name && value && *value) 4912de2362d3Smrg { 4913de2362d3Smrg char *new_value = lt_extend_str (getenv (name), value, 0); 4914de2362d3Smrg /* some systems can't cope with a ':'-terminated path #' */ 4915de2362d3Smrg int len = strlen (new_value); 4916de2362d3Smrg while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) 4917de2362d3Smrg { 4918de2362d3Smrg new_value[len-1] = '\0'; 4919de2362d3Smrg } 4920de2362d3Smrg lt_setenv (name, new_value); 4921de2362d3Smrg XFREE (new_value); 4922de2362d3Smrg } 4923de2362d3Smrg} 4924de2362d3Smrg 4925de2362d3Smrgvoid 4926de2362d3Smrglt_update_lib_path (const char *name, const char *value) 4927de2362d3Smrg{ 4928de2362d3Smrg lt_debugprintf (__FILE__, __LINE__, 4929de2362d3Smrg "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", 4930de2362d3Smrg nonnull (name), nonnull (value)); 4931de2362d3Smrg 4932de2362d3Smrg if (name && *name && value && *value) 4933de2362d3Smrg { 4934de2362d3Smrg char *new_value = lt_extend_str (getenv (name), value, 0); 4935de2362d3Smrg lt_setenv (name, new_value); 4936de2362d3Smrg XFREE (new_value); 4937de2362d3Smrg } 4938de2362d3Smrg} 4939de2362d3Smrg 4940de2362d3SmrgEOF 4941de2362d3Smrg case $host_os in 4942de2362d3Smrg mingw*) 4943de2362d3Smrg cat <<"EOF" 4944de2362d3Smrg 4945de2362d3Smrg/* Prepares an argument vector before calling spawn(). 4946de2362d3Smrg Note that spawn() does not by itself call the command interpreter 4947de2362d3Smrg (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : 4948de2362d3Smrg ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); 4949de2362d3Smrg GetVersionEx(&v); 4950de2362d3Smrg v.dwPlatformId == VER_PLATFORM_WIN32_NT; 4951de2362d3Smrg }) ? "cmd.exe" : "command.com"). 4952de2362d3Smrg Instead it simply concatenates the arguments, separated by ' ', and calls 4953de2362d3Smrg CreateProcess(). We must quote the arguments since Win32 CreateProcess() 4954de2362d3Smrg interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a 4955de2362d3Smrg special way: 4956de2362d3Smrg - Space and tab are interpreted as delimiters. They are not treated as 4957de2362d3Smrg delimiters if they are surrounded by double quotes: "...". 4958de2362d3Smrg - Unescaped double quotes are removed from the input. Their only effect is 4959de2362d3Smrg that within double quotes, space and tab are treated like normal 4960de2362d3Smrg characters. 4961de2362d3Smrg - Backslashes not followed by double quotes are not special. 4962de2362d3Smrg - But 2*n+1 backslashes followed by a double quote become 4963de2362d3Smrg n backslashes followed by a double quote (n >= 0): 4964de2362d3Smrg \" -> " 4965de2362d3Smrg \\\" -> \" 4966de2362d3Smrg \\\\\" -> \\" 4967de2362d3Smrg */ 4968de2362d3Smrg#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" 4969de2362d3Smrg#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" 4970de2362d3Smrgchar ** 4971de2362d3Smrgprepare_spawn (char **argv) 4972de2362d3Smrg{ 4973de2362d3Smrg size_t argc; 4974de2362d3Smrg char **new_argv; 4975de2362d3Smrg size_t i; 4976de2362d3Smrg 4977de2362d3Smrg /* Count number of arguments. */ 4978de2362d3Smrg for (argc = 0; argv[argc] != NULL; argc++) 4979de2362d3Smrg ; 4980de2362d3Smrg 4981de2362d3Smrg /* Allocate new argument vector. */ 4982de2362d3Smrg new_argv = XMALLOC (char *, argc + 1); 4983de2362d3Smrg 4984de2362d3Smrg /* Put quoted arguments into the new argument vector. */ 4985de2362d3Smrg for (i = 0; i < argc; i++) 4986de2362d3Smrg { 4987de2362d3Smrg const char *string = argv[i]; 4988de2362d3Smrg 4989de2362d3Smrg if (string[0] == '\0') 4990de2362d3Smrg new_argv[i] = xstrdup ("\"\""); 4991de2362d3Smrg else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) 4992de2362d3Smrg { 4993de2362d3Smrg int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); 4994de2362d3Smrg size_t length; 4995de2362d3Smrg unsigned int backslashes; 4996de2362d3Smrg const char *s; 4997de2362d3Smrg char *quoted_string; 4998de2362d3Smrg char *p; 4999de2362d3Smrg 5000de2362d3Smrg length = 0; 5001de2362d3Smrg backslashes = 0; 5002de2362d3Smrg if (quote_around) 5003de2362d3Smrg length++; 5004de2362d3Smrg for (s = string; *s != '\0'; s++) 5005de2362d3Smrg { 5006de2362d3Smrg char c = *s; 5007de2362d3Smrg if (c == '"') 5008de2362d3Smrg length += backslashes + 1; 5009de2362d3Smrg length++; 5010de2362d3Smrg if (c == '\\') 5011de2362d3Smrg backslashes++; 5012de2362d3Smrg else 5013de2362d3Smrg backslashes = 0; 5014de2362d3Smrg } 5015de2362d3Smrg if (quote_around) 5016de2362d3Smrg length += backslashes + 1; 5017de2362d3Smrg 5018de2362d3Smrg quoted_string = XMALLOC (char, length + 1); 5019de2362d3Smrg 5020de2362d3Smrg p = quoted_string; 5021de2362d3Smrg backslashes = 0; 5022de2362d3Smrg if (quote_around) 5023de2362d3Smrg *p++ = '"'; 5024de2362d3Smrg for (s = string; *s != '\0'; s++) 5025de2362d3Smrg { 5026de2362d3Smrg char c = *s; 5027de2362d3Smrg if (c == '"') 5028de2362d3Smrg { 5029de2362d3Smrg unsigned int j; 5030de2362d3Smrg for (j = backslashes + 1; j > 0; j--) 5031de2362d3Smrg *p++ = '\\'; 5032de2362d3Smrg } 5033de2362d3Smrg *p++ = c; 5034de2362d3Smrg if (c == '\\') 5035de2362d3Smrg backslashes++; 5036de2362d3Smrg else 5037de2362d3Smrg backslashes = 0; 5038de2362d3Smrg } 5039de2362d3Smrg if (quote_around) 5040de2362d3Smrg { 5041de2362d3Smrg unsigned int j; 5042de2362d3Smrg for (j = backslashes; j > 0; j--) 5043de2362d3Smrg *p++ = '\\'; 5044de2362d3Smrg *p++ = '"'; 5045de2362d3Smrg } 5046de2362d3Smrg *p = '\0'; 5047de2362d3Smrg 5048de2362d3Smrg new_argv[i] = quoted_string; 5049de2362d3Smrg } 5050de2362d3Smrg else 5051de2362d3Smrg new_argv[i] = (char *) string; 5052de2362d3Smrg } 5053de2362d3Smrg new_argv[argc] = NULL; 5054de2362d3Smrg 5055de2362d3Smrg return new_argv; 5056de2362d3Smrg} 5057de2362d3SmrgEOF 5058de2362d3Smrg ;; 5059de2362d3Smrg esac 5060de2362d3Smrg 5061de2362d3Smrg cat <<"EOF" 5062de2362d3Smrgvoid lt_dump_script (FILE* f) 5063de2362d3Smrg{ 5064de2362d3SmrgEOF 5065de2362d3Smrg func_emit_wrapper yes | 5066de2362d3Smrg $SED -n -e ' 5067de2362d3Smrgs/^\(.\{79\}\)\(..*\)/\1\ 5068de2362d3Smrg\2/ 5069de2362d3Smrgh 5070de2362d3Smrgs/\([\\"]\)/\\\1/g 5071de2362d3Smrgs/$/\\n/ 5072de2362d3Smrgs/\([^\n]*\).*/ fputs ("\1", f);/p 5073de2362d3Smrgg 5074de2362d3SmrgD' 5075de2362d3Smrg cat <<"EOF" 5076de2362d3Smrg} 5077de2362d3SmrgEOF 5078de2362d3Smrg} 5079de2362d3Smrg# end: func_emit_cwrapperexe_src 5080de2362d3Smrg 5081de2362d3Smrg# func_win32_import_lib_p ARG 5082de2362d3Smrg# True if ARG is an import lib, as indicated by $file_magic_cmd 5083de2362d3Smrgfunc_win32_import_lib_p () 5084de2362d3Smrg{ 5085de2362d3Smrg $opt_debug 5086de2362d3Smrg case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in 5087de2362d3Smrg *import*) : ;; 5088de2362d3Smrg *) false ;; 5089de2362d3Smrg esac 5090de2362d3Smrg} 5091de2362d3Smrg 5092de2362d3Smrg# func_mode_link arg... 5093de2362d3Smrgfunc_mode_link () 5094de2362d3Smrg{ 5095de2362d3Smrg $opt_debug 5096de2362d3Smrg case $host in 5097de2362d3Smrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 5098de2362d3Smrg # It is impossible to link a dll without this setting, and 5099de2362d3Smrg # we shouldn't force the makefile maintainer to figure out 5100de2362d3Smrg # which system we are compiling for in order to pass an extra 5101de2362d3Smrg # flag for every libtool invocation. 5102de2362d3Smrg # allow_undefined=no 5103de2362d3Smrg 5104de2362d3Smrg # FIXME: Unfortunately, there are problems with the above when trying 5105de2362d3Smrg # to make a dll which has undefined symbols, in which case not 5106de2362d3Smrg # even a static library is built. For now, we need to specify 5107de2362d3Smrg # -no-undefined on the libtool link line when we can be certain 5108de2362d3Smrg # that all symbols are satisfied, otherwise we get a static library. 5109de2362d3Smrg allow_undefined=yes 5110de2362d3Smrg ;; 5111de2362d3Smrg *) 5112de2362d3Smrg allow_undefined=yes 5113de2362d3Smrg ;; 5114de2362d3Smrg esac 5115de2362d3Smrg libtool_args=$nonopt 5116de2362d3Smrg base_compile="$nonopt $@" 5117de2362d3Smrg compile_command=$nonopt 5118de2362d3Smrg finalize_command=$nonopt 5119de2362d3Smrg 5120de2362d3Smrg compile_rpath= 5121de2362d3Smrg finalize_rpath= 5122de2362d3Smrg compile_shlibpath= 5123de2362d3Smrg finalize_shlibpath= 5124de2362d3Smrg convenience= 5125de2362d3Smrg old_convenience= 5126de2362d3Smrg deplibs= 5127de2362d3Smrg old_deplibs= 5128de2362d3Smrg compiler_flags= 5129de2362d3Smrg linker_flags= 5130de2362d3Smrg dllsearchpath= 5131de2362d3Smrg lib_search_path=`pwd` 5132de2362d3Smrg inst_prefix_dir= 5133de2362d3Smrg new_inherited_linker_flags= 5134de2362d3Smrg 5135de2362d3Smrg avoid_version=no 5136de2362d3Smrg bindir= 5137de2362d3Smrg dlfiles= 5138de2362d3Smrg dlprefiles= 5139de2362d3Smrg dlself=no 5140de2362d3Smrg export_dynamic=no 5141de2362d3Smrg export_symbols= 5142de2362d3Smrg export_symbols_regex= 5143de2362d3Smrg generated= 5144de2362d3Smrg libobjs= 5145de2362d3Smrg ltlibs= 5146de2362d3Smrg module=no 5147de2362d3Smrg no_install=no 5148de2362d3Smrg objs= 5149de2362d3Smrg non_pic_objects= 5150de2362d3Smrg precious_files_regex= 5151de2362d3Smrg prefer_static_libs=no 5152de2362d3Smrg preload=no 5153de2362d3Smrg prev= 5154de2362d3Smrg prevarg= 5155de2362d3Smrg release= 5156de2362d3Smrg rpath= 5157de2362d3Smrg xrpath= 5158de2362d3Smrg perm_rpath= 5159de2362d3Smrg temp_rpath= 5160de2362d3Smrg thread_safe=no 5161de2362d3Smrg vinfo= 5162de2362d3Smrg vinfo_number=no 5163de2362d3Smrg weak_libs= 5164de2362d3Smrg single_module="${wl}-single_module" 5165de2362d3Smrg func_infer_tag $base_compile 5166de2362d3Smrg 5167de2362d3Smrg # We need to know -static, to get the right output filenames. 5168de2362d3Smrg for arg 5169de2362d3Smrg do 5170de2362d3Smrg case $arg in 5171de2362d3Smrg -shared) 5172de2362d3Smrg test "$build_libtool_libs" != yes && \ 5173de2362d3Smrg func_fatal_configuration "can not build a shared library" 5174de2362d3Smrg build_old_libs=no 5175de2362d3Smrg break 5176de2362d3Smrg ;; 5177de2362d3Smrg -all-static | -static | -static-libtool-libs) 5178de2362d3Smrg case $arg in 5179de2362d3Smrg -all-static) 5180de2362d3Smrg if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then 5181de2362d3Smrg func_warning "complete static linking is impossible in this configuration" 5182de2362d3Smrg fi 5183de2362d3Smrg if test -n "$link_static_flag"; then 5184de2362d3Smrg dlopen_self=$dlopen_self_static 5185de2362d3Smrg fi 5186de2362d3Smrg prefer_static_libs=yes 5187de2362d3Smrg ;; 5188de2362d3Smrg -static) 5189de2362d3Smrg if test -z "$pic_flag" && test -n "$link_static_flag"; then 5190de2362d3Smrg dlopen_self=$dlopen_self_static 5191de2362d3Smrg fi 5192de2362d3Smrg prefer_static_libs=built 5193de2362d3Smrg ;; 5194de2362d3Smrg -static-libtool-libs) 5195de2362d3Smrg if test -z "$pic_flag" && test -n "$link_static_flag"; then 5196de2362d3Smrg dlopen_self=$dlopen_self_static 5197de2362d3Smrg fi 5198de2362d3Smrg prefer_static_libs=yes 5199de2362d3Smrg ;; 5200de2362d3Smrg esac 5201de2362d3Smrg build_libtool_libs=no 5202de2362d3Smrg build_old_libs=yes 5203de2362d3Smrg break 5204de2362d3Smrg ;; 5205de2362d3Smrg esac 5206de2362d3Smrg done 5207de2362d3Smrg 5208de2362d3Smrg # See if our shared archives depend on static archives. 5209de2362d3Smrg test -n "$old_archive_from_new_cmds" && build_old_libs=yes 5210de2362d3Smrg 5211de2362d3Smrg # Go through the arguments, transforming them on the way. 5212de2362d3Smrg while test "$#" -gt 0; do 5213de2362d3Smrg arg="$1" 5214de2362d3Smrg shift 5215de2362d3Smrg func_quote_for_eval "$arg" 5216de2362d3Smrg qarg=$func_quote_for_eval_unquoted_result 5217de2362d3Smrg func_append libtool_args " $func_quote_for_eval_result" 5218de2362d3Smrg 5219de2362d3Smrg # If the previous option needs an argument, assign it. 5220de2362d3Smrg if test -n "$prev"; then 5221de2362d3Smrg case $prev in 5222de2362d3Smrg output) 5223de2362d3Smrg func_append compile_command " @OUTPUT@" 5224de2362d3Smrg func_append finalize_command " @OUTPUT@" 5225de2362d3Smrg ;; 5226de2362d3Smrg esac 5227de2362d3Smrg 5228de2362d3Smrg case $prev in 5229de2362d3Smrg bindir) 5230de2362d3Smrg bindir="$arg" 5231de2362d3Smrg prev= 5232de2362d3Smrg continue 5233de2362d3Smrg ;; 5234de2362d3Smrg dlfiles|dlprefiles) 5235de2362d3Smrg if test "$preload" = no; then 5236de2362d3Smrg # Add the symbol object into the linking commands. 5237de2362d3Smrg func_append compile_command " @SYMFILE@" 5238de2362d3Smrg func_append finalize_command " @SYMFILE@" 5239de2362d3Smrg preload=yes 5240de2362d3Smrg fi 5241de2362d3Smrg case $arg in 5242de2362d3Smrg *.la | *.lo) ;; # We handle these cases below. 5243de2362d3Smrg force) 5244de2362d3Smrg if test "$dlself" = no; then 5245de2362d3Smrg dlself=needless 5246de2362d3Smrg export_dynamic=yes 5247de2362d3Smrg fi 5248de2362d3Smrg prev= 5249de2362d3Smrg continue 5250de2362d3Smrg ;; 5251de2362d3Smrg self) 5252de2362d3Smrg if test "$prev" = dlprefiles; then 5253de2362d3Smrg dlself=yes 5254de2362d3Smrg elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then 5255de2362d3Smrg dlself=yes 5256de2362d3Smrg else 5257de2362d3Smrg dlself=needless 5258de2362d3Smrg export_dynamic=yes 5259de2362d3Smrg fi 5260de2362d3Smrg prev= 5261de2362d3Smrg continue 5262de2362d3Smrg ;; 5263de2362d3Smrg *) 5264de2362d3Smrg if test "$prev" = dlfiles; then 5265de2362d3Smrg func_append dlfiles " $arg" 5266de2362d3Smrg else 5267de2362d3Smrg func_append dlprefiles " $arg" 5268de2362d3Smrg fi 5269de2362d3Smrg prev= 5270de2362d3Smrg continue 5271de2362d3Smrg ;; 5272de2362d3Smrg esac 5273de2362d3Smrg ;; 5274de2362d3Smrg expsyms) 5275de2362d3Smrg export_symbols="$arg" 5276de2362d3Smrg test -f "$arg" \ 5277de2362d3Smrg || func_fatal_error "symbol file \`$arg' does not exist" 5278de2362d3Smrg prev= 5279de2362d3Smrg continue 5280de2362d3Smrg ;; 5281de2362d3Smrg expsyms_regex) 5282de2362d3Smrg export_symbols_regex="$arg" 5283de2362d3Smrg prev= 5284de2362d3Smrg continue 5285de2362d3Smrg ;; 5286de2362d3Smrg framework) 5287de2362d3Smrg case $host in 5288de2362d3Smrg *-*-darwin*) 5289de2362d3Smrg case "$deplibs " in 5290de2362d3Smrg *" $qarg.ltframework "*) ;; 5291de2362d3Smrg *) func_append deplibs " $qarg.ltframework" # this is fixed later 5292de2362d3Smrg ;; 5293de2362d3Smrg esac 5294de2362d3Smrg ;; 5295de2362d3Smrg esac 5296de2362d3Smrg prev= 5297de2362d3Smrg continue 5298de2362d3Smrg ;; 5299de2362d3Smrg inst_prefix) 5300de2362d3Smrg inst_prefix_dir="$arg" 5301de2362d3Smrg prev= 5302de2362d3Smrg continue 5303de2362d3Smrg ;; 5304de2362d3Smrg objectlist) 5305de2362d3Smrg if test -f "$arg"; then 5306de2362d3Smrg save_arg=$arg 5307de2362d3Smrg moreargs= 5308de2362d3Smrg for fil in `cat "$save_arg"` 5309de2362d3Smrg do 5310de2362d3Smrg# func_append moreargs " $fil" 5311de2362d3Smrg arg=$fil 5312de2362d3Smrg # A libtool-controlled object. 5313de2362d3Smrg 5314de2362d3Smrg # Check to see that this really is a libtool object. 5315de2362d3Smrg if func_lalib_unsafe_p "$arg"; then 5316de2362d3Smrg pic_object= 5317de2362d3Smrg non_pic_object= 5318de2362d3Smrg 5319de2362d3Smrg # Read the .lo file 5320de2362d3Smrg func_source "$arg" 5321de2362d3Smrg 5322de2362d3Smrg if test -z "$pic_object" || 5323de2362d3Smrg test -z "$non_pic_object" || 5324de2362d3Smrg test "$pic_object" = none && 5325de2362d3Smrg test "$non_pic_object" = none; then 5326de2362d3Smrg func_fatal_error "cannot find name of object for \`$arg'" 5327de2362d3Smrg fi 5328de2362d3Smrg 5329de2362d3Smrg # Extract subdirectory from the argument. 5330de2362d3Smrg func_dirname "$arg" "/" "" 5331de2362d3Smrg xdir="$func_dirname_result" 5332de2362d3Smrg 5333de2362d3Smrg if test "$pic_object" != none; then 5334de2362d3Smrg # Prepend the subdirectory the object is found in. 5335de2362d3Smrg pic_object="$xdir$pic_object" 5336de2362d3Smrg 5337de2362d3Smrg if test "$prev" = dlfiles; then 5338de2362d3Smrg if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 5339de2362d3Smrg func_append dlfiles " $pic_object" 5340de2362d3Smrg prev= 5341de2362d3Smrg continue 5342de2362d3Smrg else 5343de2362d3Smrg # If libtool objects are unsupported, then we need to preload. 5344de2362d3Smrg prev=dlprefiles 5345de2362d3Smrg fi 5346de2362d3Smrg fi 5347de2362d3Smrg 5348de2362d3Smrg # CHECK ME: I think I busted this. -Ossama 5349de2362d3Smrg if test "$prev" = dlprefiles; then 5350de2362d3Smrg # Preload the old-style object. 5351de2362d3Smrg func_append dlprefiles " $pic_object" 5352de2362d3Smrg prev= 5353de2362d3Smrg fi 5354de2362d3Smrg 5355de2362d3Smrg # A PIC object. 5356de2362d3Smrg func_append libobjs " $pic_object" 5357de2362d3Smrg arg="$pic_object" 5358de2362d3Smrg fi 5359de2362d3Smrg 5360de2362d3Smrg # Non-PIC object. 5361de2362d3Smrg if test "$non_pic_object" != none; then 5362de2362d3Smrg # Prepend the subdirectory the object is found in. 5363de2362d3Smrg non_pic_object="$xdir$non_pic_object" 5364de2362d3Smrg 5365de2362d3Smrg # A standard non-PIC object 5366de2362d3Smrg func_append non_pic_objects " $non_pic_object" 5367de2362d3Smrg if test -z "$pic_object" || test "$pic_object" = none ; then 5368de2362d3Smrg arg="$non_pic_object" 5369de2362d3Smrg fi 5370de2362d3Smrg else 5371de2362d3Smrg # If the PIC object exists, use it instead. 5372de2362d3Smrg # $xdir was prepended to $pic_object above. 5373de2362d3Smrg non_pic_object="$pic_object" 5374de2362d3Smrg func_append non_pic_objects " $non_pic_object" 5375de2362d3Smrg fi 5376de2362d3Smrg else 5377de2362d3Smrg # Only an error if not doing a dry-run. 5378de2362d3Smrg if $opt_dry_run; then 5379de2362d3Smrg # Extract subdirectory from the argument. 5380de2362d3Smrg func_dirname "$arg" "/" "" 5381de2362d3Smrg xdir="$func_dirname_result" 5382de2362d3Smrg 5383de2362d3Smrg func_lo2o "$arg" 5384de2362d3Smrg pic_object=$xdir$objdir/$func_lo2o_result 5385de2362d3Smrg non_pic_object=$xdir$func_lo2o_result 5386de2362d3Smrg func_append libobjs " $pic_object" 5387de2362d3Smrg func_append non_pic_objects " $non_pic_object" 5388de2362d3Smrg else 5389de2362d3Smrg func_fatal_error "\`$arg' is not a valid libtool object" 5390de2362d3Smrg fi 5391de2362d3Smrg fi 5392de2362d3Smrg done 5393de2362d3Smrg else 5394de2362d3Smrg func_fatal_error "link input file \`$arg' does not exist" 5395de2362d3Smrg fi 5396de2362d3Smrg arg=$save_arg 5397de2362d3Smrg prev= 5398de2362d3Smrg continue 5399de2362d3Smrg ;; 5400de2362d3Smrg precious_regex) 5401de2362d3Smrg precious_files_regex="$arg" 5402de2362d3Smrg prev= 5403de2362d3Smrg continue 5404de2362d3Smrg ;; 5405de2362d3Smrg release) 5406de2362d3Smrg release="-$arg" 5407de2362d3Smrg prev= 5408de2362d3Smrg continue 5409de2362d3Smrg ;; 5410de2362d3Smrg rpath | xrpath) 5411de2362d3Smrg # We need an absolute path. 5412de2362d3Smrg case $arg in 5413de2362d3Smrg [\\/]* | [A-Za-z]:[\\/]*) ;; 5414de2362d3Smrg *) 5415de2362d3Smrg func_fatal_error "only absolute run-paths are allowed" 5416de2362d3Smrg ;; 5417de2362d3Smrg esac 5418de2362d3Smrg if test "$prev" = rpath; then 5419de2362d3Smrg case "$rpath " in 5420de2362d3Smrg *" $arg "*) ;; 5421de2362d3Smrg *) func_append rpath " $arg" ;; 5422de2362d3Smrg esac 5423de2362d3Smrg else 5424de2362d3Smrg case "$xrpath " in 5425de2362d3Smrg *" $arg "*) ;; 5426de2362d3Smrg *) func_append xrpath " $arg" ;; 5427de2362d3Smrg esac 5428de2362d3Smrg fi 5429de2362d3Smrg prev= 5430de2362d3Smrg continue 5431de2362d3Smrg ;; 5432de2362d3Smrg shrext) 5433de2362d3Smrg shrext_cmds="$arg" 5434de2362d3Smrg prev= 5435de2362d3Smrg continue 5436de2362d3Smrg ;; 5437de2362d3Smrg weak) 5438de2362d3Smrg func_append weak_libs " $arg" 5439de2362d3Smrg prev= 5440de2362d3Smrg continue 5441de2362d3Smrg ;; 5442de2362d3Smrg xcclinker) 5443de2362d3Smrg func_append linker_flags " $qarg" 5444de2362d3Smrg func_append compiler_flags " $qarg" 5445de2362d3Smrg prev= 5446de2362d3Smrg func_append compile_command " $qarg" 5447de2362d3Smrg func_append finalize_command " $qarg" 5448de2362d3Smrg continue 5449de2362d3Smrg ;; 5450de2362d3Smrg xcompiler) 5451de2362d3Smrg func_append compiler_flags " $qarg" 5452de2362d3Smrg prev= 5453de2362d3Smrg func_append compile_command " $qarg" 5454de2362d3Smrg func_append finalize_command " $qarg" 5455de2362d3Smrg continue 5456de2362d3Smrg ;; 5457de2362d3Smrg xlinker) 5458de2362d3Smrg func_append linker_flags " $qarg" 5459de2362d3Smrg func_append compiler_flags " $wl$qarg" 5460de2362d3Smrg prev= 5461de2362d3Smrg func_append compile_command " $wl$qarg" 5462de2362d3Smrg func_append finalize_command " $wl$qarg" 5463de2362d3Smrg continue 5464de2362d3Smrg ;; 5465de2362d3Smrg *) 5466de2362d3Smrg eval "$prev=\"\$arg\"" 5467de2362d3Smrg prev= 5468de2362d3Smrg continue 5469de2362d3Smrg ;; 5470de2362d3Smrg esac 5471de2362d3Smrg fi # test -n "$prev" 5472de2362d3Smrg 5473de2362d3Smrg prevarg="$arg" 5474de2362d3Smrg 5475de2362d3Smrg case $arg in 5476de2362d3Smrg -all-static) 5477de2362d3Smrg if test -n "$link_static_flag"; then 5478de2362d3Smrg # See comment for -static flag below, for more details. 5479de2362d3Smrg func_append compile_command " $link_static_flag" 5480de2362d3Smrg func_append finalize_command " $link_static_flag" 5481de2362d3Smrg fi 5482de2362d3Smrg continue 5483de2362d3Smrg ;; 5484de2362d3Smrg 5485de2362d3Smrg -allow-undefined) 5486de2362d3Smrg # FIXME: remove this flag sometime in the future. 5487de2362d3Smrg func_fatal_error "\`-allow-undefined' must not be used because it is the default" 5488de2362d3Smrg ;; 5489de2362d3Smrg 5490de2362d3Smrg -avoid-version) 5491de2362d3Smrg avoid_version=yes 5492de2362d3Smrg continue 5493de2362d3Smrg ;; 5494de2362d3Smrg 5495de2362d3Smrg -bindir) 5496de2362d3Smrg prev=bindir 5497de2362d3Smrg continue 5498de2362d3Smrg ;; 5499de2362d3Smrg 5500de2362d3Smrg -dlopen) 5501de2362d3Smrg prev=dlfiles 5502de2362d3Smrg continue 5503de2362d3Smrg ;; 5504de2362d3Smrg 5505de2362d3Smrg -dlpreopen) 5506de2362d3Smrg prev=dlprefiles 5507de2362d3Smrg continue 5508de2362d3Smrg ;; 5509de2362d3Smrg 5510de2362d3Smrg -export-dynamic) 5511de2362d3Smrg export_dynamic=yes 5512de2362d3Smrg continue 5513de2362d3Smrg ;; 5514de2362d3Smrg 5515de2362d3Smrg -export-symbols | -export-symbols-regex) 5516de2362d3Smrg if test -n "$export_symbols" || test -n "$export_symbols_regex"; then 5517de2362d3Smrg func_fatal_error "more than one -exported-symbols argument is not allowed" 5518de2362d3Smrg fi 5519de2362d3Smrg if test "X$arg" = "X-export-symbols"; then 5520de2362d3Smrg prev=expsyms 5521de2362d3Smrg else 5522de2362d3Smrg prev=expsyms_regex 5523de2362d3Smrg fi 5524de2362d3Smrg continue 5525de2362d3Smrg ;; 5526de2362d3Smrg 5527de2362d3Smrg -framework) 5528de2362d3Smrg prev=framework 5529de2362d3Smrg continue 5530de2362d3Smrg ;; 5531de2362d3Smrg 5532de2362d3Smrg -inst-prefix-dir) 5533de2362d3Smrg prev=inst_prefix 5534de2362d3Smrg continue 5535de2362d3Smrg ;; 5536de2362d3Smrg 5537de2362d3Smrg # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* 5538de2362d3Smrg # so, if we see these flags be careful not to treat them like -L 5539de2362d3Smrg -L[A-Z][A-Z]*:*) 5540de2362d3Smrg case $with_gcc/$host in 5541de2362d3Smrg no/*-*-irix* | /*-*-irix*) 5542de2362d3Smrg func_append compile_command " $arg" 5543de2362d3Smrg func_append finalize_command " $arg" 5544de2362d3Smrg ;; 5545de2362d3Smrg esac 5546de2362d3Smrg continue 5547de2362d3Smrg ;; 5548de2362d3Smrg 5549de2362d3Smrg -L*) 5550de2362d3Smrg func_stripname "-L" '' "$arg" 5551de2362d3Smrg if test -z "$func_stripname_result"; then 5552de2362d3Smrg if test "$#" -gt 0; then 5553de2362d3Smrg func_fatal_error "require no space between \`-L' and \`$1'" 5554de2362d3Smrg else 5555de2362d3Smrg func_fatal_error "need path for \`-L' option" 5556de2362d3Smrg fi 5557de2362d3Smrg fi 5558de2362d3Smrg func_resolve_sysroot "$func_stripname_result" 5559de2362d3Smrg dir=$func_resolve_sysroot_result 5560de2362d3Smrg # We need an absolute path. 5561de2362d3Smrg case $dir in 5562de2362d3Smrg [\\/]* | [A-Za-z]:[\\/]*) ;; 5563de2362d3Smrg *) 5564de2362d3Smrg absdir=`cd "$dir" && pwd` 5565de2362d3Smrg test -z "$absdir" && \ 5566de2362d3Smrg func_fatal_error "cannot determine absolute directory name of \`$dir'" 5567de2362d3Smrg dir="$absdir" 5568de2362d3Smrg ;; 5569de2362d3Smrg esac 5570de2362d3Smrg case "$deplibs " in 5571de2362d3Smrg *" -L$dir "* | *" $arg "*) 5572de2362d3Smrg # Will only happen for absolute or sysroot arguments 5573de2362d3Smrg ;; 5574de2362d3Smrg *) 5575de2362d3Smrg # Preserve sysroot, but never include relative directories 5576de2362d3Smrg case $dir in 5577de2362d3Smrg [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; 5578de2362d3Smrg *) func_append deplibs " -L$dir" ;; 5579de2362d3Smrg esac 5580de2362d3Smrg func_append lib_search_path " $dir" 5581de2362d3Smrg ;; 5582de2362d3Smrg esac 5583de2362d3Smrg case $host in 5584de2362d3Smrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 5585de2362d3Smrg testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` 5586de2362d3Smrg case :$dllsearchpath: in 5587de2362d3Smrg *":$dir:"*) ;; 5588de2362d3Smrg ::) dllsearchpath=$dir;; 5589de2362d3Smrg *) func_append dllsearchpath ":$dir";; 5590de2362d3Smrg esac 5591de2362d3Smrg case :$dllsearchpath: in 5592de2362d3Smrg *":$testbindir:"*) ;; 5593de2362d3Smrg ::) dllsearchpath=$testbindir;; 5594de2362d3Smrg *) func_append dllsearchpath ":$testbindir";; 5595de2362d3Smrg esac 5596de2362d3Smrg ;; 5597de2362d3Smrg esac 5598de2362d3Smrg continue 5599de2362d3Smrg ;; 5600de2362d3Smrg 5601de2362d3Smrg -l*) 5602de2362d3Smrg if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then 5603de2362d3Smrg case $host in 5604de2362d3Smrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) 5605de2362d3Smrg # These systems don't actually have a C or math library (as such) 5606de2362d3Smrg continue 5607de2362d3Smrg ;; 5608de2362d3Smrg *-*-os2*) 5609de2362d3Smrg # These systems don't actually have a C library (as such) 5610de2362d3Smrg test "X$arg" = "X-lc" && continue 5611de2362d3Smrg ;; 5612de2362d3Smrg *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 5613de2362d3Smrg # Do not include libc due to us having libc/libc_r. 5614de2362d3Smrg test "X$arg" = "X-lc" && continue 5615de2362d3Smrg ;; 5616de2362d3Smrg *-*-rhapsody* | *-*-darwin1.[012]) 5617de2362d3Smrg # Rhapsody C and math libraries are in the System framework 5618de2362d3Smrg func_append deplibs " System.ltframework" 5619de2362d3Smrg continue 5620de2362d3Smrg ;; 5621de2362d3Smrg *-*-sco3.2v5* | *-*-sco5v6*) 5622de2362d3Smrg # Causes problems with __ctype 5623de2362d3Smrg test "X$arg" = "X-lc" && continue 5624de2362d3Smrg ;; 5625de2362d3Smrg *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 5626de2362d3Smrg # Compiler inserts libc in the correct place for threads to work 5627de2362d3Smrg test "X$arg" = "X-lc" && continue 5628de2362d3Smrg ;; 5629de2362d3Smrg esac 5630de2362d3Smrg elif test "X$arg" = "X-lc_r"; then 5631de2362d3Smrg case $host in 5632de2362d3Smrg *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 5633de2362d3Smrg # Do not include libc_r directly, use -pthread flag. 5634de2362d3Smrg continue 5635de2362d3Smrg ;; 5636de2362d3Smrg esac 5637de2362d3Smrg fi 5638de2362d3Smrg func_append deplibs " $arg" 5639de2362d3Smrg continue 5640de2362d3Smrg ;; 5641de2362d3Smrg 5642de2362d3Smrg -module) 5643de2362d3Smrg module=yes 5644de2362d3Smrg continue 5645de2362d3Smrg ;; 5646de2362d3Smrg 5647de2362d3Smrg # Tru64 UNIX uses -model [arg] to determine the layout of C++ 5648de2362d3Smrg # classes, name mangling, and exception handling. 5649de2362d3Smrg # Darwin uses the -arch flag to determine output architecture. 5650de2362d3Smrg -model|-arch|-isysroot|--sysroot) 5651de2362d3Smrg func_append compiler_flags " $arg" 5652de2362d3Smrg func_append compile_command " $arg" 5653de2362d3Smrg func_append finalize_command " $arg" 5654de2362d3Smrg prev=xcompiler 5655de2362d3Smrg continue 5656de2362d3Smrg ;; 5657de2362d3Smrg 5658de2362d3Smrg -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ 5659de2362d3Smrg |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) 5660de2362d3Smrg func_append compiler_flags " $arg" 5661de2362d3Smrg func_append compile_command " $arg" 5662de2362d3Smrg func_append finalize_command " $arg" 5663de2362d3Smrg case "$new_inherited_linker_flags " in 5664de2362d3Smrg *" $arg "*) ;; 5665de2362d3Smrg * ) func_append new_inherited_linker_flags " $arg" ;; 5666de2362d3Smrg esac 5667de2362d3Smrg continue 5668de2362d3Smrg ;; 5669de2362d3Smrg 5670de2362d3Smrg -multi_module) 5671de2362d3Smrg single_module="${wl}-multi_module" 5672de2362d3Smrg continue 5673de2362d3Smrg ;; 5674de2362d3Smrg 5675de2362d3Smrg -no-fast-install) 5676de2362d3Smrg fast_install=no 5677de2362d3Smrg continue 5678de2362d3Smrg ;; 5679de2362d3Smrg 5680de2362d3Smrg -no-install) 5681de2362d3Smrg case $host in 5682de2362d3Smrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) 5683de2362d3Smrg # The PATH hackery in wrapper scripts is required on Windows 5684de2362d3Smrg # and Darwin in order for the loader to find any dlls it needs. 5685de2362d3Smrg func_warning "\`-no-install' is ignored for $host" 5686de2362d3Smrg func_warning "assuming \`-no-fast-install' instead" 5687de2362d3Smrg fast_install=no 5688de2362d3Smrg ;; 5689de2362d3Smrg *) no_install=yes ;; 5690de2362d3Smrg esac 5691de2362d3Smrg continue 5692de2362d3Smrg ;; 5693de2362d3Smrg 5694de2362d3Smrg -no-undefined) 5695de2362d3Smrg allow_undefined=no 5696de2362d3Smrg continue 5697de2362d3Smrg ;; 5698de2362d3Smrg 5699de2362d3Smrg -objectlist) 5700de2362d3Smrg prev=objectlist 5701de2362d3Smrg continue 5702de2362d3Smrg ;; 5703de2362d3Smrg 5704de2362d3Smrg -o) prev=output ;; 5705de2362d3Smrg 5706de2362d3Smrg -precious-files-regex) 5707de2362d3Smrg prev=precious_regex 5708de2362d3Smrg continue 5709de2362d3Smrg ;; 5710de2362d3Smrg 5711de2362d3Smrg -release) 5712de2362d3Smrg prev=release 5713de2362d3Smrg continue 5714de2362d3Smrg ;; 5715de2362d3Smrg 5716de2362d3Smrg -rpath) 5717de2362d3Smrg prev=rpath 5718de2362d3Smrg continue 5719de2362d3Smrg ;; 5720de2362d3Smrg 5721de2362d3Smrg -R) 5722de2362d3Smrg prev=xrpath 5723de2362d3Smrg continue 5724de2362d3Smrg ;; 5725de2362d3Smrg 5726de2362d3Smrg -R*) 5727de2362d3Smrg func_stripname '-R' '' "$arg" 5728de2362d3Smrg dir=$func_stripname_result 5729de2362d3Smrg # We need an absolute path. 5730de2362d3Smrg case $dir in 5731de2362d3Smrg [\\/]* | [A-Za-z]:[\\/]*) ;; 5732de2362d3Smrg =*) 5733de2362d3Smrg func_stripname '=' '' "$dir" 5734de2362d3Smrg dir=$lt_sysroot$func_stripname_result 5735de2362d3Smrg ;; 5736de2362d3Smrg *) 5737de2362d3Smrg func_fatal_error "only absolute run-paths are allowed" 5738de2362d3Smrg ;; 5739de2362d3Smrg esac 5740de2362d3Smrg case "$xrpath " in 5741de2362d3Smrg *" $dir "*) ;; 5742de2362d3Smrg *) func_append xrpath " $dir" ;; 5743de2362d3Smrg esac 5744de2362d3Smrg continue 5745de2362d3Smrg ;; 5746de2362d3Smrg 5747de2362d3Smrg -shared) 5748de2362d3Smrg # The effects of -shared are defined in a previous loop. 5749de2362d3Smrg continue 5750de2362d3Smrg ;; 5751de2362d3Smrg 5752de2362d3Smrg -shrext) 5753de2362d3Smrg prev=shrext 5754de2362d3Smrg continue 5755de2362d3Smrg ;; 5756de2362d3Smrg 5757de2362d3Smrg -static | -static-libtool-libs) 5758de2362d3Smrg # The effects of -static are defined in a previous loop. 5759de2362d3Smrg # We used to do the same as -all-static on platforms that 5760de2362d3Smrg # didn't have a PIC flag, but the assumption that the effects 5761de2362d3Smrg # would be equivalent was wrong. It would break on at least 5762de2362d3Smrg # Digital Unix and AIX. 5763de2362d3Smrg continue 5764de2362d3Smrg ;; 5765de2362d3Smrg 5766de2362d3Smrg -thread-safe) 5767de2362d3Smrg thread_safe=yes 5768de2362d3Smrg continue 5769de2362d3Smrg ;; 5770de2362d3Smrg 5771de2362d3Smrg -version-info) 5772de2362d3Smrg prev=vinfo 5773de2362d3Smrg continue 5774de2362d3Smrg ;; 5775de2362d3Smrg 5776de2362d3Smrg -version-number) 5777de2362d3Smrg prev=vinfo 5778de2362d3Smrg vinfo_number=yes 5779de2362d3Smrg continue 5780de2362d3Smrg ;; 5781de2362d3Smrg 5782de2362d3Smrg -weak) 5783de2362d3Smrg prev=weak 5784de2362d3Smrg continue 5785de2362d3Smrg ;; 5786de2362d3Smrg 5787de2362d3Smrg -Wc,*) 5788de2362d3Smrg func_stripname '-Wc,' '' "$arg" 5789de2362d3Smrg args=$func_stripname_result 5790de2362d3Smrg arg= 5791de2362d3Smrg save_ifs="$IFS"; IFS=',' 5792de2362d3Smrg for flag in $args; do 5793de2362d3Smrg IFS="$save_ifs" 5794de2362d3Smrg func_quote_for_eval "$flag" 5795de2362d3Smrg func_append arg " $func_quote_for_eval_result" 5796de2362d3Smrg func_append compiler_flags " $func_quote_for_eval_result" 5797de2362d3Smrg done 5798de2362d3Smrg IFS="$save_ifs" 5799de2362d3Smrg func_stripname ' ' '' "$arg" 5800de2362d3Smrg arg=$func_stripname_result 5801de2362d3Smrg ;; 5802de2362d3Smrg 5803de2362d3Smrg -Wl,*) 5804de2362d3Smrg func_stripname '-Wl,' '' "$arg" 5805de2362d3Smrg args=$func_stripname_result 5806de2362d3Smrg arg= 5807de2362d3Smrg save_ifs="$IFS"; IFS=',' 5808de2362d3Smrg for flag in $args; do 5809de2362d3Smrg IFS="$save_ifs" 5810de2362d3Smrg func_quote_for_eval "$flag" 5811de2362d3Smrg func_append arg " $wl$func_quote_for_eval_result" 5812de2362d3Smrg func_append compiler_flags " $wl$func_quote_for_eval_result" 5813de2362d3Smrg func_append linker_flags " $func_quote_for_eval_result" 5814de2362d3Smrg done 5815de2362d3Smrg IFS="$save_ifs" 5816de2362d3Smrg func_stripname ' ' '' "$arg" 5817de2362d3Smrg arg=$func_stripname_result 5818de2362d3Smrg ;; 5819de2362d3Smrg 5820de2362d3Smrg -Xcompiler) 5821de2362d3Smrg prev=xcompiler 5822de2362d3Smrg continue 5823de2362d3Smrg ;; 5824de2362d3Smrg 5825de2362d3Smrg -Xlinker) 5826de2362d3Smrg prev=xlinker 5827de2362d3Smrg continue 5828de2362d3Smrg ;; 5829de2362d3Smrg 5830de2362d3Smrg -XCClinker) 5831de2362d3Smrg prev=xcclinker 5832de2362d3Smrg continue 5833de2362d3Smrg ;; 5834de2362d3Smrg 5835de2362d3Smrg # -msg_* for osf cc 5836de2362d3Smrg -msg_*) 5837de2362d3Smrg func_quote_for_eval "$arg" 5838de2362d3Smrg arg="$func_quote_for_eval_result" 5839de2362d3Smrg ;; 5840de2362d3Smrg 5841de2362d3Smrg # Flags to be passed through unchanged, with rationale: 5842de2362d3Smrg # -64, -mips[0-9] enable 64-bit mode for the SGI compiler 5843de2362d3Smrg # -r[0-9][0-9]* specify processor for the SGI compiler 5844de2362d3Smrg # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler 5845de2362d3Smrg # +DA*, +DD* enable 64-bit mode for the HP compiler 5846de2362d3Smrg # -q* compiler args for the IBM compiler 5847de2362d3Smrg # -m*, -t[45]*, -txscale* architecture-specific flags for GCC 5848de2362d3Smrg # -F/path path to uninstalled frameworks, gcc on darwin 5849de2362d3Smrg # -p, -pg, --coverage, -fprofile-* profiling flags for GCC 5850de2362d3Smrg # @file GCC response files 5851de2362d3Smrg # -tp=* Portland pgcc target processor selection 5852de2362d3Smrg # --sysroot=* for sysroot support 5853de2362d3Smrg # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization 5854de2362d3Smrg -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ 5855de2362d3Smrg -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ 5856de2362d3Smrg -O*|-flto*|-fwhopr*|-fuse-linker-plugin) 5857de2362d3Smrg func_quote_for_eval "$arg" 5858de2362d3Smrg arg="$func_quote_for_eval_result" 5859de2362d3Smrg func_append compile_command " $arg" 5860de2362d3Smrg func_append finalize_command " $arg" 5861de2362d3Smrg func_append compiler_flags " $arg" 5862de2362d3Smrg continue 5863de2362d3Smrg ;; 5864de2362d3Smrg 5865de2362d3Smrg # Some other compiler flag. 5866de2362d3Smrg -* | +*) 5867de2362d3Smrg func_quote_for_eval "$arg" 5868de2362d3Smrg arg="$func_quote_for_eval_result" 5869de2362d3Smrg ;; 5870de2362d3Smrg 5871de2362d3Smrg *.$objext) 5872de2362d3Smrg # A standard object. 5873de2362d3Smrg func_append objs " $arg" 5874de2362d3Smrg ;; 5875de2362d3Smrg 5876de2362d3Smrg *.lo) 5877de2362d3Smrg # A libtool-controlled object. 5878de2362d3Smrg 5879de2362d3Smrg # Check to see that this really is a libtool object. 5880de2362d3Smrg if func_lalib_unsafe_p "$arg"; then 5881de2362d3Smrg pic_object= 5882de2362d3Smrg non_pic_object= 5883de2362d3Smrg 5884de2362d3Smrg # Read the .lo file 5885de2362d3Smrg func_source "$arg" 5886de2362d3Smrg 5887de2362d3Smrg if test -z "$pic_object" || 5888de2362d3Smrg test -z "$non_pic_object" || 5889de2362d3Smrg test "$pic_object" = none && 5890de2362d3Smrg test "$non_pic_object" = none; then 5891de2362d3Smrg func_fatal_error "cannot find name of object for \`$arg'" 5892de2362d3Smrg fi 5893de2362d3Smrg 5894de2362d3Smrg # Extract subdirectory from the argument. 5895de2362d3Smrg func_dirname "$arg" "/" "" 5896de2362d3Smrg xdir="$func_dirname_result" 5897de2362d3Smrg 5898de2362d3Smrg if test "$pic_object" != none; then 5899de2362d3Smrg # Prepend the subdirectory the object is found in. 5900de2362d3Smrg pic_object="$xdir$pic_object" 5901de2362d3Smrg 5902de2362d3Smrg if test "$prev" = dlfiles; then 5903de2362d3Smrg if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 5904de2362d3Smrg func_append dlfiles " $pic_object" 5905de2362d3Smrg prev= 5906de2362d3Smrg continue 5907de2362d3Smrg else 5908de2362d3Smrg # If libtool objects are unsupported, then we need to preload. 5909de2362d3Smrg prev=dlprefiles 5910de2362d3Smrg fi 5911de2362d3Smrg fi 5912de2362d3Smrg 5913de2362d3Smrg # CHECK ME: I think I busted this. -Ossama 5914de2362d3Smrg if test "$prev" = dlprefiles; then 5915de2362d3Smrg # Preload the old-style object. 5916de2362d3Smrg func_append dlprefiles " $pic_object" 5917de2362d3Smrg prev= 5918de2362d3Smrg fi 5919de2362d3Smrg 5920de2362d3Smrg # A PIC object. 5921de2362d3Smrg func_append libobjs " $pic_object" 5922de2362d3Smrg arg="$pic_object" 5923de2362d3Smrg fi 5924de2362d3Smrg 5925de2362d3Smrg # Non-PIC object. 5926de2362d3Smrg if test "$non_pic_object" != none; then 5927de2362d3Smrg # Prepend the subdirectory the object is found in. 5928de2362d3Smrg non_pic_object="$xdir$non_pic_object" 5929de2362d3Smrg 5930de2362d3Smrg # A standard non-PIC object 5931de2362d3Smrg func_append non_pic_objects " $non_pic_object" 5932de2362d3Smrg if test -z "$pic_object" || test "$pic_object" = none ; then 5933de2362d3Smrg arg="$non_pic_object" 5934de2362d3Smrg fi 5935de2362d3Smrg else 5936de2362d3Smrg # If the PIC object exists, use it instead. 5937de2362d3Smrg # $xdir was prepended to $pic_object above. 5938de2362d3Smrg non_pic_object="$pic_object" 5939de2362d3Smrg func_append non_pic_objects " $non_pic_object" 5940de2362d3Smrg fi 5941de2362d3Smrg else 5942de2362d3Smrg # Only an error if not doing a dry-run. 5943de2362d3Smrg if $opt_dry_run; then 5944de2362d3Smrg # Extract subdirectory from the argument. 5945de2362d3Smrg func_dirname "$arg" "/" "" 5946de2362d3Smrg xdir="$func_dirname_result" 5947de2362d3Smrg 5948de2362d3Smrg func_lo2o "$arg" 5949de2362d3Smrg pic_object=$xdir$objdir/$func_lo2o_result 5950de2362d3Smrg non_pic_object=$xdir$func_lo2o_result 5951de2362d3Smrg func_append libobjs " $pic_object" 5952de2362d3Smrg func_append non_pic_objects " $non_pic_object" 5953de2362d3Smrg else 5954de2362d3Smrg func_fatal_error "\`$arg' is not a valid libtool object" 5955de2362d3Smrg fi 5956de2362d3Smrg fi 5957de2362d3Smrg ;; 5958de2362d3Smrg 5959de2362d3Smrg *.$libext) 5960de2362d3Smrg # An archive. 5961de2362d3Smrg func_append deplibs " $arg" 5962de2362d3Smrg func_append old_deplibs " $arg" 5963de2362d3Smrg continue 5964de2362d3Smrg ;; 5965de2362d3Smrg 5966de2362d3Smrg *.la) 5967de2362d3Smrg # A libtool-controlled library. 5968de2362d3Smrg 5969de2362d3Smrg func_resolve_sysroot "$arg" 5970de2362d3Smrg if test "$prev" = dlfiles; then 5971de2362d3Smrg # This library was specified with -dlopen. 5972de2362d3Smrg func_append dlfiles " $func_resolve_sysroot_result" 5973de2362d3Smrg prev= 5974de2362d3Smrg elif test "$prev" = dlprefiles; then 5975de2362d3Smrg # The library was specified with -dlpreopen. 5976de2362d3Smrg func_append dlprefiles " $func_resolve_sysroot_result" 5977de2362d3Smrg prev= 5978de2362d3Smrg else 5979de2362d3Smrg func_append deplibs " $func_resolve_sysroot_result" 5980de2362d3Smrg fi 5981de2362d3Smrg continue 5982de2362d3Smrg ;; 5983de2362d3Smrg 5984de2362d3Smrg # Some other compiler argument. 5985de2362d3Smrg *) 5986de2362d3Smrg # Unknown arguments in both finalize_command and compile_command need 5987de2362d3Smrg # to be aesthetically quoted because they are evaled later. 5988de2362d3Smrg func_quote_for_eval "$arg" 5989de2362d3Smrg arg="$func_quote_for_eval_result" 5990de2362d3Smrg ;; 5991de2362d3Smrg esac # arg 5992de2362d3Smrg 5993de2362d3Smrg # Now actually substitute the argument into the commands. 5994de2362d3Smrg if test -n "$arg"; then 5995de2362d3Smrg func_append compile_command " $arg" 5996de2362d3Smrg func_append finalize_command " $arg" 5997de2362d3Smrg fi 5998de2362d3Smrg done # argument parsing loop 5999de2362d3Smrg 6000de2362d3Smrg test -n "$prev" && \ 6001de2362d3Smrg func_fatal_help "the \`$prevarg' option requires an argument" 6002de2362d3Smrg 6003de2362d3Smrg if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then 6004de2362d3Smrg eval arg=\"$export_dynamic_flag_spec\" 6005de2362d3Smrg func_append compile_command " $arg" 6006de2362d3Smrg func_append finalize_command " $arg" 6007de2362d3Smrg fi 6008de2362d3Smrg 6009de2362d3Smrg oldlibs= 6010de2362d3Smrg # calculate the name of the file, without its directory 6011de2362d3Smrg func_basename "$output" 6012de2362d3Smrg outputname="$func_basename_result" 6013de2362d3Smrg libobjs_save="$libobjs" 6014de2362d3Smrg 6015de2362d3Smrg if test -n "$shlibpath_var"; then 6016de2362d3Smrg # get the directories listed in $shlibpath_var 6017de2362d3Smrg eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\` 6018de2362d3Smrg else 6019de2362d3Smrg shlib_search_path= 6020de2362d3Smrg fi 6021de2362d3Smrg eval sys_lib_search_path=\"$sys_lib_search_path_spec\" 6022de2362d3Smrg eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" 6023de2362d3Smrg 6024de2362d3Smrg func_dirname "$output" "/" "" 6025de2362d3Smrg output_objdir="$func_dirname_result$objdir" 6026de2362d3Smrg func_to_tool_file "$output_objdir/" 6027de2362d3Smrg tool_output_objdir=$func_to_tool_file_result 6028de2362d3Smrg # Create the object directory. 6029de2362d3Smrg func_mkdir_p "$output_objdir" 6030de2362d3Smrg 6031de2362d3Smrg # Determine the type of output 6032de2362d3Smrg case $output in 6033de2362d3Smrg "") 6034de2362d3Smrg func_fatal_help "you must specify an output file" 6035de2362d3Smrg ;; 6036de2362d3Smrg *.$libext) linkmode=oldlib ;; 6037de2362d3Smrg *.lo | *.$objext) linkmode=obj ;; 6038de2362d3Smrg *.la) linkmode=lib ;; 6039de2362d3Smrg *) linkmode=prog ;; # Anything else should be a program. 6040de2362d3Smrg esac 6041de2362d3Smrg 6042de2362d3Smrg specialdeplibs= 6043de2362d3Smrg 6044de2362d3Smrg libs= 6045de2362d3Smrg # Find all interdependent deplibs by searching for libraries 6046de2362d3Smrg # that are linked more than once (e.g. -la -lb -la) 6047de2362d3Smrg for deplib in $deplibs; do 6048de2362d3Smrg if $opt_preserve_dup_deps ; then 6049de2362d3Smrg case "$libs " in 6050de2362d3Smrg *" $deplib "*) func_append specialdeplibs " $deplib" ;; 6051de2362d3Smrg esac 6052de2362d3Smrg fi 6053de2362d3Smrg func_append libs " $deplib" 6054de2362d3Smrg done 6055de2362d3Smrg 6056de2362d3Smrg if test "$linkmode" = lib; then 6057de2362d3Smrg libs="$predeps $libs $compiler_lib_search_path $postdeps" 6058de2362d3Smrg 6059de2362d3Smrg # Compute libraries that are listed more than once in $predeps 6060de2362d3Smrg # $postdeps and mark them as special (i.e., whose duplicates are 6061de2362d3Smrg # not to be eliminated). 6062de2362d3Smrg pre_post_deps= 6063de2362d3Smrg if $opt_duplicate_compiler_generated_deps; then 6064de2362d3Smrg for pre_post_dep in $predeps $postdeps; do 6065de2362d3Smrg case "$pre_post_deps " in 6066de2362d3Smrg *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; 6067de2362d3Smrg esac 6068de2362d3Smrg func_append pre_post_deps " $pre_post_dep" 6069de2362d3Smrg done 6070de2362d3Smrg fi 6071de2362d3Smrg pre_post_deps= 6072de2362d3Smrg fi 6073de2362d3Smrg 6074de2362d3Smrg deplibs= 6075de2362d3Smrg newdependency_libs= 6076de2362d3Smrg newlib_search_path= 6077de2362d3Smrg need_relink=no # whether we're linking any uninstalled libtool libraries 6078de2362d3Smrg notinst_deplibs= # not-installed libtool libraries 6079de2362d3Smrg notinst_path= # paths that contain not-installed libtool libraries 6080de2362d3Smrg 6081de2362d3Smrg case $linkmode in 6082de2362d3Smrg lib) 6083de2362d3Smrg passes="conv dlpreopen link" 6084de2362d3Smrg for file in $dlfiles $dlprefiles; do 6085de2362d3Smrg case $file in 6086de2362d3Smrg *.la) ;; 6087de2362d3Smrg *) 6088de2362d3Smrg func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" 6089de2362d3Smrg ;; 6090de2362d3Smrg esac 6091de2362d3Smrg done 6092de2362d3Smrg ;; 6093de2362d3Smrg prog) 6094de2362d3Smrg compile_deplibs= 6095de2362d3Smrg finalize_deplibs= 6096de2362d3Smrg alldeplibs=no 6097de2362d3Smrg newdlfiles= 6098de2362d3Smrg newdlprefiles= 6099de2362d3Smrg passes="conv scan dlopen dlpreopen link" 6100de2362d3Smrg ;; 6101de2362d3Smrg *) passes="conv" 6102de2362d3Smrg ;; 6103de2362d3Smrg esac 6104de2362d3Smrg 6105de2362d3Smrg for pass in $passes; do 6106de2362d3Smrg # The preopen pass in lib mode reverses $deplibs; put it back here 6107de2362d3Smrg # so that -L comes before libs that need it for instance... 6108de2362d3Smrg if test "$linkmode,$pass" = "lib,link"; then 6109de2362d3Smrg ## FIXME: Find the place where the list is rebuilt in the wrong 6110de2362d3Smrg ## order, and fix it there properly 6111de2362d3Smrg tmp_deplibs= 6112de2362d3Smrg for deplib in $deplibs; do 6113de2362d3Smrg tmp_deplibs="$deplib $tmp_deplibs" 6114de2362d3Smrg done 6115de2362d3Smrg deplibs="$tmp_deplibs" 6116de2362d3Smrg fi 6117de2362d3Smrg 6118de2362d3Smrg if test "$linkmode,$pass" = "lib,link" || 6119de2362d3Smrg test "$linkmode,$pass" = "prog,scan"; then 6120de2362d3Smrg libs="$deplibs" 6121de2362d3Smrg deplibs= 6122de2362d3Smrg fi 6123de2362d3Smrg if test "$linkmode" = prog; then 6124de2362d3Smrg case $pass in 6125de2362d3Smrg dlopen) libs="$dlfiles" ;; 6126de2362d3Smrg dlpreopen) libs="$dlprefiles" ;; 6127de2362d3Smrg link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; 6128de2362d3Smrg esac 6129de2362d3Smrg fi 6130de2362d3Smrg if test "$linkmode,$pass" = "lib,dlpreopen"; then 6131de2362d3Smrg # Collect and forward deplibs of preopened libtool libs 6132de2362d3Smrg for lib in $dlprefiles; do 6133de2362d3Smrg # Ignore non-libtool-libs 6134de2362d3Smrg dependency_libs= 6135de2362d3Smrg func_resolve_sysroot "$lib" 6136de2362d3Smrg case $lib in 6137de2362d3Smrg *.la) func_source "$func_resolve_sysroot_result" ;; 6138de2362d3Smrg esac 6139de2362d3Smrg 6140de2362d3Smrg # Collect preopened libtool deplibs, except any this library 6141de2362d3Smrg # has declared as weak libs 6142de2362d3Smrg for deplib in $dependency_libs; do 6143de2362d3Smrg func_basename "$deplib" 6144de2362d3Smrg deplib_base=$func_basename_result 6145de2362d3Smrg case " $weak_libs " in 6146de2362d3Smrg *" $deplib_base "*) ;; 6147de2362d3Smrg *) func_append deplibs " $deplib" ;; 6148de2362d3Smrg esac 6149de2362d3Smrg done 6150de2362d3Smrg done 6151de2362d3Smrg libs="$dlprefiles" 6152de2362d3Smrg fi 6153de2362d3Smrg if test "$pass" = dlopen; then 6154de2362d3Smrg # Collect dlpreopened libraries 6155de2362d3Smrg save_deplibs="$deplibs" 6156de2362d3Smrg deplibs= 6157de2362d3Smrg fi 6158de2362d3Smrg 6159de2362d3Smrg for deplib in $libs; do 6160de2362d3Smrg lib= 6161de2362d3Smrg found=no 6162de2362d3Smrg case $deplib in 6163de2362d3Smrg -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ 6164de2362d3Smrg |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) 6165de2362d3Smrg if test "$linkmode,$pass" = "prog,link"; then 6166de2362d3Smrg compile_deplibs="$deplib $compile_deplibs" 6167de2362d3Smrg finalize_deplibs="$deplib $finalize_deplibs" 6168de2362d3Smrg else 6169de2362d3Smrg func_append compiler_flags " $deplib" 6170de2362d3Smrg if test "$linkmode" = lib ; then 6171de2362d3Smrg case "$new_inherited_linker_flags " in 6172de2362d3Smrg *" $deplib "*) ;; 6173de2362d3Smrg * ) func_append new_inherited_linker_flags " $deplib" ;; 6174de2362d3Smrg esac 6175de2362d3Smrg fi 6176de2362d3Smrg fi 6177de2362d3Smrg continue 6178de2362d3Smrg ;; 6179de2362d3Smrg -l*) 6180de2362d3Smrg if test "$linkmode" != lib && test "$linkmode" != prog; then 6181de2362d3Smrg func_warning "\`-l' is ignored for archives/objects" 6182de2362d3Smrg continue 6183de2362d3Smrg fi 6184de2362d3Smrg func_stripname '-l' '' "$deplib" 6185de2362d3Smrg name=$func_stripname_result 6186de2362d3Smrg if test "$linkmode" = lib; then 6187de2362d3Smrg searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" 6188de2362d3Smrg else 6189de2362d3Smrg searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" 6190de2362d3Smrg fi 6191de2362d3Smrg for searchdir in $searchdirs; do 6192de2362d3Smrg for search_ext in .la $std_shrext .so .a; do 6193de2362d3Smrg # Search the libtool library 6194de2362d3Smrg lib="$searchdir/lib${name}${search_ext}" 6195de2362d3Smrg if test -f "$lib"; then 6196de2362d3Smrg if test "$search_ext" = ".la"; then 6197de2362d3Smrg found=yes 6198de2362d3Smrg else 6199de2362d3Smrg found=no 6200de2362d3Smrg fi 6201de2362d3Smrg break 2 6202de2362d3Smrg fi 6203de2362d3Smrg done 6204de2362d3Smrg done 6205de2362d3Smrg if test "$found" != yes; then 6206de2362d3Smrg # deplib doesn't seem to be a libtool library 6207de2362d3Smrg if test "$linkmode,$pass" = "prog,link"; then 6208de2362d3Smrg compile_deplibs="$deplib $compile_deplibs" 6209de2362d3Smrg finalize_deplibs="$deplib $finalize_deplibs" 6210de2362d3Smrg else 6211de2362d3Smrg deplibs="$deplib $deplibs" 6212de2362d3Smrg test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 6213de2362d3Smrg fi 6214de2362d3Smrg continue 6215de2362d3Smrg else # deplib is a libtool library 6216de2362d3Smrg # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, 6217de2362d3Smrg # We need to do some special things here, and not later. 6218de2362d3Smrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 6219de2362d3Smrg case " $predeps $postdeps " in 6220de2362d3Smrg *" $deplib "*) 6221de2362d3Smrg if func_lalib_p "$lib"; then 6222de2362d3Smrg library_names= 6223de2362d3Smrg old_library= 6224de2362d3Smrg func_source "$lib" 6225de2362d3Smrg for l in $old_library $library_names; do 6226de2362d3Smrg ll="$l" 6227de2362d3Smrg done 6228de2362d3Smrg if test "X$ll" = "X$old_library" ; then # only static version available 6229de2362d3Smrg found=no 6230de2362d3Smrg func_dirname "$lib" "" "." 6231de2362d3Smrg ladir="$func_dirname_result" 6232de2362d3Smrg lib=$ladir/$old_library 6233de2362d3Smrg if test "$linkmode,$pass" = "prog,link"; then 6234de2362d3Smrg compile_deplibs="$deplib $compile_deplibs" 6235de2362d3Smrg finalize_deplibs="$deplib $finalize_deplibs" 6236de2362d3Smrg else 6237de2362d3Smrg deplibs="$deplib $deplibs" 6238de2362d3Smrg test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 6239de2362d3Smrg fi 6240de2362d3Smrg continue 6241de2362d3Smrg fi 6242de2362d3Smrg fi 6243de2362d3Smrg ;; 6244de2362d3Smrg *) ;; 6245de2362d3Smrg esac 6246de2362d3Smrg fi 6247de2362d3Smrg fi 6248de2362d3Smrg ;; # -l 6249de2362d3Smrg *.ltframework) 6250de2362d3Smrg if test "$linkmode,$pass" = "prog,link"; then 6251de2362d3Smrg compile_deplibs="$deplib $compile_deplibs" 6252de2362d3Smrg finalize_deplibs="$deplib $finalize_deplibs" 6253de2362d3Smrg else 6254de2362d3Smrg deplibs="$deplib $deplibs" 6255de2362d3Smrg if test "$linkmode" = lib ; then 6256de2362d3Smrg case "$new_inherited_linker_flags " in 6257de2362d3Smrg *" $deplib "*) ;; 6258de2362d3Smrg * ) func_append new_inherited_linker_flags " $deplib" ;; 6259de2362d3Smrg esac 6260de2362d3Smrg fi 6261de2362d3Smrg fi 6262de2362d3Smrg continue 6263de2362d3Smrg ;; 6264de2362d3Smrg -L*) 6265de2362d3Smrg case $linkmode in 6266de2362d3Smrg lib) 6267de2362d3Smrg deplibs="$deplib $deplibs" 6268de2362d3Smrg test "$pass" = conv && continue 6269de2362d3Smrg newdependency_libs="$deplib $newdependency_libs" 6270de2362d3Smrg func_stripname '-L' '' "$deplib" 6271de2362d3Smrg func_resolve_sysroot "$func_stripname_result" 6272de2362d3Smrg func_append newlib_search_path " $func_resolve_sysroot_result" 6273de2362d3Smrg ;; 6274de2362d3Smrg prog) 6275de2362d3Smrg if test "$pass" = conv; then 6276de2362d3Smrg deplibs="$deplib $deplibs" 6277de2362d3Smrg continue 6278de2362d3Smrg fi 6279de2362d3Smrg if test "$pass" = scan; then 6280de2362d3Smrg deplibs="$deplib $deplibs" 6281de2362d3Smrg else 6282de2362d3Smrg compile_deplibs="$deplib $compile_deplibs" 6283de2362d3Smrg finalize_deplibs="$deplib $finalize_deplibs" 6284de2362d3Smrg fi 6285de2362d3Smrg func_stripname '-L' '' "$deplib" 6286de2362d3Smrg func_resolve_sysroot "$func_stripname_result" 6287de2362d3Smrg func_append newlib_search_path " $func_resolve_sysroot_result" 6288de2362d3Smrg ;; 6289de2362d3Smrg *) 6290de2362d3Smrg func_warning "\`-L' is ignored for archives/objects" 6291de2362d3Smrg ;; 6292de2362d3Smrg esac # linkmode 6293de2362d3Smrg continue 6294de2362d3Smrg ;; # -L 6295de2362d3Smrg -R*) 6296de2362d3Smrg if test "$pass" = link; then 6297de2362d3Smrg func_stripname '-R' '' "$deplib" 6298de2362d3Smrg func_resolve_sysroot "$func_stripname_result" 6299de2362d3Smrg dir=$func_resolve_sysroot_result 6300de2362d3Smrg # Make sure the xrpath contains only unique directories. 6301de2362d3Smrg case "$xrpath " in 6302de2362d3Smrg *" $dir "*) ;; 6303de2362d3Smrg *) func_append xrpath " $dir" ;; 6304de2362d3Smrg esac 6305de2362d3Smrg fi 6306de2362d3Smrg deplibs="$deplib $deplibs" 6307de2362d3Smrg continue 6308de2362d3Smrg ;; 6309de2362d3Smrg *.la) 6310de2362d3Smrg func_resolve_sysroot "$deplib" 6311de2362d3Smrg lib=$func_resolve_sysroot_result 6312de2362d3Smrg ;; 6313de2362d3Smrg *.$libext) 6314de2362d3Smrg if test "$pass" = conv; then 6315de2362d3Smrg deplibs="$deplib $deplibs" 6316de2362d3Smrg continue 6317de2362d3Smrg fi 6318de2362d3Smrg case $linkmode in 6319de2362d3Smrg lib) 6320de2362d3Smrg # Linking convenience modules into shared libraries is allowed, 6321de2362d3Smrg # but linking other static libraries is non-portable. 6322de2362d3Smrg case " $dlpreconveniencelibs " in 6323de2362d3Smrg *" $deplib "*) ;; 6324de2362d3Smrg *) 6325de2362d3Smrg valid_a_lib=no 6326de2362d3Smrg case $deplibs_check_method in 6327de2362d3Smrg match_pattern*) 6328de2362d3Smrg set dummy $deplibs_check_method; shift 6329de2362d3Smrg match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 6330de2362d3Smrg if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ 6331de2362d3Smrg | $EGREP "$match_pattern_regex" > /dev/null; then 6332de2362d3Smrg valid_a_lib=yes 6333de2362d3Smrg fi 6334de2362d3Smrg ;; 6335de2362d3Smrg pass_all) 6336de2362d3Smrg valid_a_lib=yes 6337de2362d3Smrg ;; 6338de2362d3Smrg esac 6339de2362d3Smrg if test "$valid_a_lib" != yes; then 6340de2362d3Smrg echo 6341de2362d3Smrg $ECHO "*** Warning: Trying to link with static lib archive $deplib." 6342de2362d3Smrg echo "*** I have the capability to make that library automatically link in when" 6343de2362d3Smrg echo "*** you link to this library. But I can only do this if you have a" 6344de2362d3Smrg echo "*** shared version of the library, which you do not appear to have" 6345de2362d3Smrg echo "*** because the file extensions .$libext of this argument makes me believe" 6346de2362d3Smrg echo "*** that it is just a static archive that I should not use here." 6347de2362d3Smrg else 6348de2362d3Smrg echo 6349de2362d3Smrg $ECHO "*** Warning: Linking the shared library $output against the" 6350de2362d3Smrg $ECHO "*** static library $deplib is not portable!" 6351de2362d3Smrg deplibs="$deplib $deplibs" 6352de2362d3Smrg fi 6353de2362d3Smrg ;; 6354de2362d3Smrg esac 6355de2362d3Smrg continue 6356de2362d3Smrg ;; 6357de2362d3Smrg prog) 6358de2362d3Smrg if test "$pass" != link; then 6359de2362d3Smrg deplibs="$deplib $deplibs" 6360de2362d3Smrg else 6361de2362d3Smrg compile_deplibs="$deplib $compile_deplibs" 6362de2362d3Smrg finalize_deplibs="$deplib $finalize_deplibs" 6363de2362d3Smrg fi 6364de2362d3Smrg continue 6365de2362d3Smrg ;; 6366de2362d3Smrg esac # linkmode 6367de2362d3Smrg ;; # *.$libext 6368de2362d3Smrg *.lo | *.$objext) 6369de2362d3Smrg if test "$pass" = conv; then 6370de2362d3Smrg deplibs="$deplib $deplibs" 6371de2362d3Smrg elif test "$linkmode" = prog; then 6372de2362d3Smrg if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then 6373de2362d3Smrg # If there is no dlopen support or we're linking statically, 6374de2362d3Smrg # we need to preload. 6375de2362d3Smrg func_append newdlprefiles " $deplib" 6376de2362d3Smrg compile_deplibs="$deplib $compile_deplibs" 6377de2362d3Smrg finalize_deplibs="$deplib $finalize_deplibs" 6378de2362d3Smrg else 6379de2362d3Smrg func_append newdlfiles " $deplib" 6380de2362d3Smrg fi 6381de2362d3Smrg fi 6382de2362d3Smrg continue 6383de2362d3Smrg ;; 6384de2362d3Smrg %DEPLIBS%) 6385de2362d3Smrg alldeplibs=yes 6386de2362d3Smrg continue 6387de2362d3Smrg ;; 6388de2362d3Smrg esac # case $deplib 6389de2362d3Smrg 6390de2362d3Smrg if test "$found" = yes || test -f "$lib"; then : 6391de2362d3Smrg else 6392de2362d3Smrg func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" 6393de2362d3Smrg fi 6394de2362d3Smrg 6395de2362d3Smrg # Check to see that this really is a libtool archive. 6396de2362d3Smrg func_lalib_unsafe_p "$lib" \ 6397de2362d3Smrg || func_fatal_error "\`$lib' is not a valid libtool archive" 6398de2362d3Smrg 6399de2362d3Smrg func_dirname "$lib" "" "." 6400de2362d3Smrg ladir="$func_dirname_result" 6401de2362d3Smrg 6402de2362d3Smrg dlname= 6403de2362d3Smrg dlopen= 6404de2362d3Smrg dlpreopen= 6405de2362d3Smrg libdir= 6406de2362d3Smrg library_names= 6407de2362d3Smrg old_library= 6408de2362d3Smrg inherited_linker_flags= 6409de2362d3Smrg # If the library was installed with an old release of libtool, 6410de2362d3Smrg # it will not redefine variables installed, or shouldnotlink 6411de2362d3Smrg installed=yes 6412de2362d3Smrg shouldnotlink=no 6413de2362d3Smrg avoidtemprpath= 6414de2362d3Smrg 6415de2362d3Smrg 6416de2362d3Smrg # Read the .la file 6417de2362d3Smrg func_source "$lib" 6418de2362d3Smrg 6419de2362d3Smrg # Convert "-framework foo" to "foo.ltframework" 6420de2362d3Smrg if test -n "$inherited_linker_flags"; then 6421de2362d3Smrg tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` 6422de2362d3Smrg for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do 6423de2362d3Smrg case " $new_inherited_linker_flags " in 6424de2362d3Smrg *" $tmp_inherited_linker_flag "*) ;; 6425de2362d3Smrg *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; 6426de2362d3Smrg esac 6427de2362d3Smrg done 6428de2362d3Smrg fi 6429de2362d3Smrg dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 6430de2362d3Smrg if test "$linkmode,$pass" = "lib,link" || 6431de2362d3Smrg test "$linkmode,$pass" = "prog,scan" || 6432de2362d3Smrg { test "$linkmode" != prog && test "$linkmode" != lib; }; then 6433de2362d3Smrg test -n "$dlopen" && func_append dlfiles " $dlopen" 6434de2362d3Smrg test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" 6435de2362d3Smrg fi 6436de2362d3Smrg 6437de2362d3Smrg if test "$pass" = conv; then 6438de2362d3Smrg # Only check for convenience libraries 6439de2362d3Smrg deplibs="$lib $deplibs" 6440de2362d3Smrg if test -z "$libdir"; then 6441de2362d3Smrg if test -z "$old_library"; then 6442de2362d3Smrg func_fatal_error "cannot find name of link library for \`$lib'" 6443de2362d3Smrg fi 6444de2362d3Smrg # It is a libtool convenience library, so add in its objects. 6445de2362d3Smrg func_append convenience " $ladir/$objdir/$old_library" 6446de2362d3Smrg func_append old_convenience " $ladir/$objdir/$old_library" 6447de2362d3Smrg elif test "$linkmode" != prog && test "$linkmode" != lib; then 6448de2362d3Smrg func_fatal_error "\`$lib' is not a convenience library" 6449de2362d3Smrg fi 6450de2362d3Smrg tmp_libs= 6451de2362d3Smrg for deplib in $dependency_libs; do 6452de2362d3Smrg deplibs="$deplib $deplibs" 6453de2362d3Smrg if $opt_preserve_dup_deps ; then 6454de2362d3Smrg case "$tmp_libs " in 6455de2362d3Smrg *" $deplib "*) func_append specialdeplibs " $deplib" ;; 6456de2362d3Smrg esac 6457de2362d3Smrg fi 6458de2362d3Smrg func_append tmp_libs " $deplib" 6459de2362d3Smrg done 6460de2362d3Smrg continue 6461de2362d3Smrg fi # $pass = conv 6462de2362d3Smrg 6463de2362d3Smrg 6464de2362d3Smrg # Get the name of the library we link against. 6465de2362d3Smrg linklib= 6466de2362d3Smrg if test -n "$old_library" && 6467de2362d3Smrg { test "$prefer_static_libs" = yes || 6468de2362d3Smrg test "$prefer_static_libs,$installed" = "built,no"; }; then 6469de2362d3Smrg linklib=$old_library 6470de2362d3Smrg else 6471de2362d3Smrg for l in $old_library $library_names; do 6472de2362d3Smrg linklib="$l" 6473de2362d3Smrg done 6474de2362d3Smrg fi 6475de2362d3Smrg if test -z "$linklib"; then 6476de2362d3Smrg func_fatal_error "cannot find name of link library for \`$lib'" 6477de2362d3Smrg fi 6478de2362d3Smrg 6479de2362d3Smrg # This library was specified with -dlopen. 6480de2362d3Smrg if test "$pass" = dlopen; then 6481de2362d3Smrg if test -z "$libdir"; then 6482de2362d3Smrg func_fatal_error "cannot -dlopen a convenience library: \`$lib'" 6483de2362d3Smrg fi 6484de2362d3Smrg if test -z "$dlname" || 6485de2362d3Smrg test "$dlopen_support" != yes || 6486de2362d3Smrg test "$build_libtool_libs" = no; then 6487de2362d3Smrg # If there is no dlname, no dlopen support or we're linking 6488de2362d3Smrg # statically, we need to preload. We also need to preload any 6489de2362d3Smrg # dependent libraries so libltdl's deplib preloader doesn't 6490de2362d3Smrg # bomb out in the load deplibs phase. 6491de2362d3Smrg func_append dlprefiles " $lib $dependency_libs" 6492de2362d3Smrg else 6493de2362d3Smrg func_append newdlfiles " $lib" 6494de2362d3Smrg fi 6495de2362d3Smrg continue 6496de2362d3Smrg fi # $pass = dlopen 6497de2362d3Smrg 6498de2362d3Smrg # We need an absolute path. 6499de2362d3Smrg case $ladir in 6500de2362d3Smrg [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; 6501de2362d3Smrg *) 6502de2362d3Smrg abs_ladir=`cd "$ladir" && pwd` 6503de2362d3Smrg if test -z "$abs_ladir"; then 6504de2362d3Smrg func_warning "cannot determine absolute directory name of \`$ladir'" 6505de2362d3Smrg func_warning "passing it literally to the linker, although it might fail" 6506de2362d3Smrg abs_ladir="$ladir" 6507de2362d3Smrg fi 6508de2362d3Smrg ;; 6509de2362d3Smrg esac 6510de2362d3Smrg func_basename "$lib" 6511de2362d3Smrg laname="$func_basename_result" 6512de2362d3Smrg 6513de2362d3Smrg # Find the relevant object directory and library name. 6514de2362d3Smrg if test "X$installed" = Xyes; then 6515de2362d3Smrg if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then 6516de2362d3Smrg func_warning "library \`$lib' was moved." 6517de2362d3Smrg dir="$ladir" 6518de2362d3Smrg absdir="$abs_ladir" 6519de2362d3Smrg libdir="$abs_ladir" 6520de2362d3Smrg else 6521de2362d3Smrg dir="$lt_sysroot$libdir" 6522de2362d3Smrg absdir="$lt_sysroot$libdir" 6523de2362d3Smrg fi 6524de2362d3Smrg test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes 6525de2362d3Smrg else 6526de2362d3Smrg if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then 6527de2362d3Smrg dir="$ladir" 6528de2362d3Smrg absdir="$abs_ladir" 6529de2362d3Smrg # Remove this search path later 6530de2362d3Smrg func_append notinst_path " $abs_ladir" 6531de2362d3Smrg else 6532de2362d3Smrg dir="$ladir/$objdir" 6533de2362d3Smrg absdir="$abs_ladir/$objdir" 6534de2362d3Smrg # Remove this search path later 6535de2362d3Smrg func_append notinst_path " $abs_ladir" 6536de2362d3Smrg fi 6537de2362d3Smrg fi # $installed = yes 6538de2362d3Smrg func_stripname 'lib' '.la' "$laname" 6539de2362d3Smrg name=$func_stripname_result 6540de2362d3Smrg 6541de2362d3Smrg # This library was specified with -dlpreopen. 6542de2362d3Smrg if test "$pass" = dlpreopen; then 6543de2362d3Smrg if test -z "$libdir" && test "$linkmode" = prog; then 6544de2362d3Smrg func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" 6545de2362d3Smrg fi 6546de2362d3Smrg case "$host" in 6547de2362d3Smrg # special handling for platforms with PE-DLLs. 6548de2362d3Smrg *cygwin* | *mingw* | *cegcc* ) 6549de2362d3Smrg # Linker will automatically link against shared library if both 6550de2362d3Smrg # static and shared are present. Therefore, ensure we extract 6551de2362d3Smrg # symbols from the import library if a shared library is present 6552de2362d3Smrg # (otherwise, the dlopen module name will be incorrect). We do 6553de2362d3Smrg # this by putting the import library name into $newdlprefiles. 6554de2362d3Smrg # We recover the dlopen module name by 'saving' the la file 6555de2362d3Smrg # name in a special purpose variable, and (later) extracting the 6556de2362d3Smrg # dlname from the la file. 6557de2362d3Smrg if test -n "$dlname"; then 6558de2362d3Smrg func_tr_sh "$dir/$linklib" 6559de2362d3Smrg eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" 6560de2362d3Smrg func_append newdlprefiles " $dir/$linklib" 6561de2362d3Smrg else 6562de2362d3Smrg func_append newdlprefiles " $dir/$old_library" 6563de2362d3Smrg # Keep a list of preopened convenience libraries to check 6564de2362d3Smrg # that they are being used correctly in the link pass. 6565de2362d3Smrg test -z "$libdir" && \ 6566de2362d3Smrg func_append dlpreconveniencelibs " $dir/$old_library" 6567de2362d3Smrg fi 6568de2362d3Smrg ;; 6569de2362d3Smrg * ) 6570de2362d3Smrg # Prefer using a static library (so that no silly _DYNAMIC symbols 6571de2362d3Smrg # are required to link). 6572de2362d3Smrg if test -n "$old_library"; then 6573de2362d3Smrg func_append newdlprefiles " $dir/$old_library" 6574de2362d3Smrg # Keep a list of preopened convenience libraries to check 6575de2362d3Smrg # that they are being used correctly in the link pass. 6576de2362d3Smrg test -z "$libdir" && \ 6577de2362d3Smrg func_append dlpreconveniencelibs " $dir/$old_library" 6578de2362d3Smrg # Otherwise, use the dlname, so that lt_dlopen finds it. 6579de2362d3Smrg elif test -n "$dlname"; then 6580de2362d3Smrg func_append newdlprefiles " $dir/$dlname" 6581de2362d3Smrg else 6582de2362d3Smrg func_append newdlprefiles " $dir/$linklib" 6583de2362d3Smrg fi 6584de2362d3Smrg ;; 6585de2362d3Smrg esac 6586de2362d3Smrg fi # $pass = dlpreopen 6587de2362d3Smrg 6588de2362d3Smrg if test -z "$libdir"; then 6589de2362d3Smrg # Link the convenience library 6590de2362d3Smrg if test "$linkmode" = lib; then 6591de2362d3Smrg deplibs="$dir/$old_library $deplibs" 6592de2362d3Smrg elif test "$linkmode,$pass" = "prog,link"; then 6593de2362d3Smrg compile_deplibs="$dir/$old_library $compile_deplibs" 6594de2362d3Smrg finalize_deplibs="$dir/$old_library $finalize_deplibs" 6595de2362d3Smrg else 6596de2362d3Smrg deplibs="$lib $deplibs" # used for prog,scan pass 6597de2362d3Smrg fi 6598de2362d3Smrg continue 6599de2362d3Smrg fi 6600de2362d3Smrg 6601de2362d3Smrg 6602de2362d3Smrg if test "$linkmode" = prog && test "$pass" != link; then 6603de2362d3Smrg func_append newlib_search_path " $ladir" 6604de2362d3Smrg deplibs="$lib $deplibs" 6605de2362d3Smrg 6606de2362d3Smrg linkalldeplibs=no 6607de2362d3Smrg if test "$link_all_deplibs" != no || test -z "$library_names" || 6608de2362d3Smrg test "$build_libtool_libs" = no; then 6609de2362d3Smrg linkalldeplibs=yes 6610de2362d3Smrg fi 6611de2362d3Smrg 6612de2362d3Smrg tmp_libs= 6613de2362d3Smrg for deplib in $dependency_libs; do 6614de2362d3Smrg case $deplib in 6615de2362d3Smrg -L*) func_stripname '-L' '' "$deplib" 6616de2362d3Smrg func_resolve_sysroot "$func_stripname_result" 6617de2362d3Smrg func_append newlib_search_path " $func_resolve_sysroot_result" 6618de2362d3Smrg ;; 6619de2362d3Smrg esac 6620de2362d3Smrg # Need to link against all dependency_libs? 6621de2362d3Smrg if test "$linkalldeplibs" = yes; then 6622de2362d3Smrg deplibs="$deplib $deplibs" 6623de2362d3Smrg else 6624de2362d3Smrg # Need to hardcode shared library paths 6625de2362d3Smrg # or/and link against static libraries 6626de2362d3Smrg newdependency_libs="$deplib $newdependency_libs" 6627de2362d3Smrg fi 6628de2362d3Smrg if $opt_preserve_dup_deps ; then 6629de2362d3Smrg case "$tmp_libs " in 6630de2362d3Smrg *" $deplib "*) func_append specialdeplibs " $deplib" ;; 6631de2362d3Smrg esac 6632de2362d3Smrg fi 6633de2362d3Smrg func_append tmp_libs " $deplib" 6634de2362d3Smrg done # for deplib 6635de2362d3Smrg continue 6636de2362d3Smrg fi # $linkmode = prog... 6637de2362d3Smrg 6638de2362d3Smrg if test "$linkmode,$pass" = "prog,link"; then 6639de2362d3Smrg if test -n "$library_names" && 6640de2362d3Smrg { { test "$prefer_static_libs" = no || 6641de2362d3Smrg test "$prefer_static_libs,$installed" = "built,yes"; } || 6642de2362d3Smrg test -z "$old_library"; }; then 6643de2362d3Smrg # We need to hardcode the library path 6644de2362d3Smrg if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then 6645de2362d3Smrg # Make sure the rpath contains only unique directories. 6646de2362d3Smrg case "$temp_rpath:" in 6647de2362d3Smrg *"$absdir:"*) ;; 6648de2362d3Smrg *) func_append temp_rpath "$absdir:" ;; 6649de2362d3Smrg esac 6650de2362d3Smrg fi 6651de2362d3Smrg 6652de2362d3Smrg # Hardcode the library path. 6653de2362d3Smrg # Skip directories that are in the system default run-time 6654de2362d3Smrg # search path. 6655de2362d3Smrg case " $sys_lib_dlsearch_path " in 6656de2362d3Smrg *" $absdir "*) ;; 6657de2362d3Smrg *) 6658de2362d3Smrg case "$compile_rpath " in 6659de2362d3Smrg *" $absdir "*) ;; 6660de2362d3Smrg *) func_append compile_rpath " $absdir" ;; 6661de2362d3Smrg esac 6662de2362d3Smrg ;; 6663de2362d3Smrg esac 6664de2362d3Smrg case " $sys_lib_dlsearch_path " in 6665de2362d3Smrg *" $libdir "*) ;; 6666de2362d3Smrg *) 6667de2362d3Smrg case "$finalize_rpath " in 6668de2362d3Smrg *" $libdir "*) ;; 6669de2362d3Smrg *) func_append finalize_rpath " $libdir" ;; 6670de2362d3Smrg esac 6671de2362d3Smrg ;; 6672de2362d3Smrg esac 6673de2362d3Smrg fi # $linkmode,$pass = prog,link... 6674de2362d3Smrg 6675de2362d3Smrg if test "$alldeplibs" = yes && 6676de2362d3Smrg { test "$deplibs_check_method" = pass_all || 6677de2362d3Smrg { test "$build_libtool_libs" = yes && 6678de2362d3Smrg test -n "$library_names"; }; }; then 6679de2362d3Smrg # We only need to search for static libraries 6680de2362d3Smrg continue 6681de2362d3Smrg fi 6682de2362d3Smrg fi 6683de2362d3Smrg 6684de2362d3Smrg link_static=no # Whether the deplib will be linked statically 6685de2362d3Smrg use_static_libs=$prefer_static_libs 6686de2362d3Smrg if test "$use_static_libs" = built && test "$installed" = yes; then 6687de2362d3Smrg use_static_libs=no 6688de2362d3Smrg fi 6689de2362d3Smrg if test -n "$library_names" && 6690de2362d3Smrg { test "$use_static_libs" = no || test -z "$old_library"; }; then 6691de2362d3Smrg case $host in 6692de2362d3Smrg *cygwin* | *mingw* | *cegcc*) 6693de2362d3Smrg # No point in relinking DLLs because paths are not encoded 6694de2362d3Smrg func_append notinst_deplibs " $lib" 6695de2362d3Smrg need_relink=no 6696de2362d3Smrg ;; 6697de2362d3Smrg *) 6698de2362d3Smrg if test "$installed" = no; then 6699de2362d3Smrg func_append notinst_deplibs " $lib" 6700de2362d3Smrg need_relink=yes 6701de2362d3Smrg fi 6702de2362d3Smrg ;; 6703de2362d3Smrg esac 6704de2362d3Smrg # This is a shared library 6705de2362d3Smrg 6706de2362d3Smrg # Warn about portability, can't link against -module's on some 6707de2362d3Smrg # systems (darwin). Don't bleat about dlopened modules though! 6708de2362d3Smrg dlopenmodule="" 6709de2362d3Smrg for dlpremoduletest in $dlprefiles; do 6710de2362d3Smrg if test "X$dlpremoduletest" = "X$lib"; then 6711de2362d3Smrg dlopenmodule="$dlpremoduletest" 6712de2362d3Smrg break 6713de2362d3Smrg fi 6714de2362d3Smrg done 6715de2362d3Smrg if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then 6716de2362d3Smrg echo 6717de2362d3Smrg if test "$linkmode" = prog; then 6718de2362d3Smrg $ECHO "*** Warning: Linking the executable $output against the loadable module" 6719de2362d3Smrg else 6720de2362d3Smrg $ECHO "*** Warning: Linking the shared library $output against the loadable module" 6721de2362d3Smrg fi 6722de2362d3Smrg $ECHO "*** $linklib is not portable!" 6723de2362d3Smrg fi 6724de2362d3Smrg if test "$linkmode" = lib && 6725de2362d3Smrg test "$hardcode_into_libs" = yes; then 6726de2362d3Smrg # Hardcode the library path. 6727de2362d3Smrg # Skip directories that are in the system default run-time 6728de2362d3Smrg # search path. 6729de2362d3Smrg case " $sys_lib_dlsearch_path " in 6730de2362d3Smrg *" $absdir "*) ;; 6731de2362d3Smrg *) 6732de2362d3Smrg case "$compile_rpath " in 6733de2362d3Smrg *" $absdir "*) ;; 6734de2362d3Smrg *) func_append compile_rpath " $absdir" ;; 6735de2362d3Smrg esac 6736de2362d3Smrg ;; 6737de2362d3Smrg esac 6738de2362d3Smrg case " $sys_lib_dlsearch_path " in 6739de2362d3Smrg *" $libdir "*) ;; 6740de2362d3Smrg *) 6741de2362d3Smrg case "$finalize_rpath " in 6742de2362d3Smrg *" $libdir "*) ;; 6743de2362d3Smrg *) func_append finalize_rpath " $libdir" ;; 6744de2362d3Smrg esac 6745de2362d3Smrg ;; 6746de2362d3Smrg esac 6747de2362d3Smrg fi 6748de2362d3Smrg 6749de2362d3Smrg if test -n "$old_archive_from_expsyms_cmds"; then 6750de2362d3Smrg # figure out the soname 6751de2362d3Smrg set dummy $library_names 6752de2362d3Smrg shift 6753de2362d3Smrg realname="$1" 6754de2362d3Smrg shift 6755de2362d3Smrg libname=`eval "\\$ECHO \"$libname_spec\""` 6756de2362d3Smrg # use dlname if we got it. it's perfectly good, no? 6757de2362d3Smrg if test -n "$dlname"; then 6758de2362d3Smrg soname="$dlname" 6759de2362d3Smrg elif test -n "$soname_spec"; then 6760de2362d3Smrg # bleh windows 6761de2362d3Smrg case $host in 6762de2362d3Smrg *cygwin* | mingw* | *cegcc*) 6763de2362d3Smrg func_arith $current - $age 6764de2362d3Smrg major=$func_arith_result 6765de2362d3Smrg versuffix="-$major" 6766de2362d3Smrg ;; 6767de2362d3Smrg esac 6768de2362d3Smrg eval soname=\"$soname_spec\" 6769de2362d3Smrg else 6770de2362d3Smrg soname="$realname" 6771de2362d3Smrg fi 6772de2362d3Smrg 6773de2362d3Smrg # Make a new name for the extract_expsyms_cmds to use 6774de2362d3Smrg soroot="$soname" 6775de2362d3Smrg func_basename "$soroot" 6776de2362d3Smrg soname="$func_basename_result" 6777de2362d3Smrg func_stripname 'lib' '.dll' "$soname" 6778de2362d3Smrg newlib=libimp-$func_stripname_result.a 6779de2362d3Smrg 6780de2362d3Smrg # If the library has no export list, then create one now 6781de2362d3Smrg if test -f "$output_objdir/$soname-def"; then : 6782de2362d3Smrg else 6783de2362d3Smrg func_verbose "extracting exported symbol list from \`$soname'" 6784de2362d3Smrg func_execute_cmds "$extract_expsyms_cmds" 'exit $?' 6785de2362d3Smrg fi 6786de2362d3Smrg 6787de2362d3Smrg # Create $newlib 6788de2362d3Smrg if test -f "$output_objdir/$newlib"; then :; else 6789de2362d3Smrg func_verbose "generating import library for \`$soname'" 6790de2362d3Smrg func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' 6791de2362d3Smrg fi 6792de2362d3Smrg # make sure the library variables are pointing to the new library 6793de2362d3Smrg dir=$output_objdir 6794de2362d3Smrg linklib=$newlib 6795de2362d3Smrg fi # test -n "$old_archive_from_expsyms_cmds" 6796de2362d3Smrg 6797de2362d3Smrg if test "$linkmode" = prog || test "$opt_mode" != relink; then 6798de2362d3Smrg add_shlibpath= 6799de2362d3Smrg add_dir= 6800de2362d3Smrg add= 6801de2362d3Smrg lib_linked=yes 6802de2362d3Smrg case $hardcode_action in 6803de2362d3Smrg immediate | unsupported) 6804de2362d3Smrg if test "$hardcode_direct" = no; then 6805de2362d3Smrg add="$dir/$linklib" 6806de2362d3Smrg case $host in 6807de2362d3Smrg *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; 6808de2362d3Smrg *-*-sysv4*uw2*) add_dir="-L$dir" ;; 6809de2362d3Smrg *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ 6810de2362d3Smrg *-*-unixware7*) add_dir="-L$dir" ;; 6811de2362d3Smrg *-*-darwin* ) 6812de2362d3Smrg # if the lib is a (non-dlopened) module then we can not 6813de2362d3Smrg # link against it, someone is ignoring the earlier warnings 6814de2362d3Smrg if /usr/bin/file -L $add 2> /dev/null | 6815de2362d3Smrg $GREP ": [^:]* bundle" >/dev/null ; then 6816de2362d3Smrg if test "X$dlopenmodule" != "X$lib"; then 6817de2362d3Smrg $ECHO "*** Warning: lib $linklib is a module, not a shared library" 6818de2362d3Smrg if test -z "$old_library" ; then 6819de2362d3Smrg echo 6820de2362d3Smrg echo "*** And there doesn't seem to be a static archive available" 6821de2362d3Smrg echo "*** The link will probably fail, sorry" 6822de2362d3Smrg else 6823de2362d3Smrg add="$dir/$old_library" 6824de2362d3Smrg fi 6825de2362d3Smrg elif test -n "$old_library"; then 6826de2362d3Smrg add="$dir/$old_library" 6827de2362d3Smrg fi 6828de2362d3Smrg fi 6829de2362d3Smrg esac 6830de2362d3Smrg elif test "$hardcode_minus_L" = no; then 6831de2362d3Smrg case $host in 6832de2362d3Smrg *-*-sunos*) add_shlibpath="$dir" ;; 6833de2362d3Smrg esac 6834de2362d3Smrg add_dir="-L$dir" 6835de2362d3Smrg add="-l$name" 6836de2362d3Smrg elif test "$hardcode_shlibpath_var" = no; then 6837de2362d3Smrg add_shlibpath="$dir" 6838de2362d3Smrg add="-l$name" 6839de2362d3Smrg else 6840de2362d3Smrg lib_linked=no 6841de2362d3Smrg fi 6842de2362d3Smrg ;; 6843de2362d3Smrg relink) 6844de2362d3Smrg if test "$hardcode_direct" = yes && 6845de2362d3Smrg test "$hardcode_direct_absolute" = no; then 6846de2362d3Smrg add="$dir/$linklib" 6847de2362d3Smrg elif test "$hardcode_minus_L" = yes; then 6848de2362d3Smrg add_dir="-L$absdir" 6849de2362d3Smrg # Try looking first in the location we're being installed to. 6850de2362d3Smrg if test -n "$inst_prefix_dir"; then 6851de2362d3Smrg case $libdir in 6852de2362d3Smrg [\\/]*) 6853de2362d3Smrg func_append add_dir " -L$inst_prefix_dir$libdir" 6854de2362d3Smrg ;; 6855de2362d3Smrg esac 6856de2362d3Smrg fi 6857de2362d3Smrg add="-l$name" 6858de2362d3Smrg elif test "$hardcode_shlibpath_var" = yes; then 6859de2362d3Smrg add_shlibpath="$dir" 6860de2362d3Smrg add="-l$name" 6861de2362d3Smrg else 6862de2362d3Smrg lib_linked=no 6863de2362d3Smrg fi 6864de2362d3Smrg ;; 6865de2362d3Smrg *) lib_linked=no ;; 6866de2362d3Smrg esac 6867de2362d3Smrg 6868de2362d3Smrg if test "$lib_linked" != yes; then 6869de2362d3Smrg func_fatal_configuration "unsupported hardcode properties" 6870de2362d3Smrg fi 6871de2362d3Smrg 6872de2362d3Smrg if test -n "$add_shlibpath"; then 6873de2362d3Smrg case :$compile_shlibpath: in 6874de2362d3Smrg *":$add_shlibpath:"*) ;; 6875de2362d3Smrg *) func_append compile_shlibpath "$add_shlibpath:" ;; 6876de2362d3Smrg esac 6877de2362d3Smrg fi 6878de2362d3Smrg if test "$linkmode" = prog; then 6879de2362d3Smrg test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" 6880de2362d3Smrg test -n "$add" && compile_deplibs="$add $compile_deplibs" 6881de2362d3Smrg else 6882de2362d3Smrg test -n "$add_dir" && deplibs="$add_dir $deplibs" 6883de2362d3Smrg test -n "$add" && deplibs="$add $deplibs" 6884de2362d3Smrg if test "$hardcode_direct" != yes && 6885de2362d3Smrg test "$hardcode_minus_L" != yes && 6886de2362d3Smrg test "$hardcode_shlibpath_var" = yes; then 6887de2362d3Smrg case :$finalize_shlibpath: in 6888de2362d3Smrg *":$libdir:"*) ;; 6889de2362d3Smrg *) func_append finalize_shlibpath "$libdir:" ;; 6890de2362d3Smrg esac 6891de2362d3Smrg fi 6892de2362d3Smrg fi 6893de2362d3Smrg fi 6894de2362d3Smrg 6895de2362d3Smrg if test "$linkmode" = prog || test "$opt_mode" = relink; then 6896de2362d3Smrg add_shlibpath= 6897de2362d3Smrg add_dir= 6898de2362d3Smrg add= 6899de2362d3Smrg # Finalize command for both is simple: just hardcode it. 6900de2362d3Smrg if test "$hardcode_direct" = yes && 6901de2362d3Smrg test "$hardcode_direct_absolute" = no; then 6902de2362d3Smrg add="$libdir/$linklib" 6903de2362d3Smrg elif test "$hardcode_minus_L" = yes; then 6904de2362d3Smrg add_dir="-L$libdir" 6905de2362d3Smrg add="-l$name" 6906de2362d3Smrg elif test "$hardcode_shlibpath_var" = yes; then 6907de2362d3Smrg case :$finalize_shlibpath: in 6908de2362d3Smrg *":$libdir:"*) ;; 6909de2362d3Smrg *) func_append finalize_shlibpath "$libdir:" ;; 6910de2362d3Smrg esac 6911de2362d3Smrg add="-l$name" 6912de2362d3Smrg elif test "$hardcode_automatic" = yes; then 6913de2362d3Smrg if test -n "$inst_prefix_dir" && 6914de2362d3Smrg test -f "$inst_prefix_dir$libdir/$linklib" ; then 6915de2362d3Smrg add="$inst_prefix_dir$libdir/$linklib" 6916de2362d3Smrg else 6917de2362d3Smrg add="$libdir/$linklib" 6918de2362d3Smrg fi 6919de2362d3Smrg else 6920de2362d3Smrg # We cannot seem to hardcode it, guess we'll fake it. 6921de2362d3Smrg add_dir="-L$libdir" 6922de2362d3Smrg # Try looking first in the location we're being installed to. 6923de2362d3Smrg if test -n "$inst_prefix_dir"; then 6924de2362d3Smrg case $libdir in 6925de2362d3Smrg [\\/]*) 6926de2362d3Smrg func_append add_dir " -L$inst_prefix_dir$libdir" 6927de2362d3Smrg ;; 6928de2362d3Smrg esac 6929de2362d3Smrg fi 6930de2362d3Smrg add="-l$name" 6931de2362d3Smrg fi 6932de2362d3Smrg 6933de2362d3Smrg if test "$linkmode" = prog; then 6934de2362d3Smrg test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" 6935de2362d3Smrg test -n "$add" && finalize_deplibs="$add $finalize_deplibs" 6936de2362d3Smrg else 6937de2362d3Smrg test -n "$add_dir" && deplibs="$add_dir $deplibs" 6938de2362d3Smrg test -n "$add" && deplibs="$add $deplibs" 6939de2362d3Smrg fi 6940de2362d3Smrg fi 6941de2362d3Smrg elif test "$linkmode" = prog; then 6942de2362d3Smrg # Here we assume that one of hardcode_direct or hardcode_minus_L 6943de2362d3Smrg # is not unsupported. This is valid on all known static and 6944de2362d3Smrg # shared platforms. 6945de2362d3Smrg if test "$hardcode_direct" != unsupported; then 6946de2362d3Smrg test -n "$old_library" && linklib="$old_library" 6947de2362d3Smrg compile_deplibs="$dir/$linklib $compile_deplibs" 6948de2362d3Smrg finalize_deplibs="$dir/$linklib $finalize_deplibs" 6949de2362d3Smrg else 6950de2362d3Smrg compile_deplibs="-l$name -L$dir $compile_deplibs" 6951de2362d3Smrg finalize_deplibs="-l$name -L$dir $finalize_deplibs" 6952de2362d3Smrg fi 6953de2362d3Smrg elif test "$build_libtool_libs" = yes; then 6954de2362d3Smrg # Not a shared library 6955de2362d3Smrg if test "$deplibs_check_method" != pass_all; then 6956de2362d3Smrg # We're trying link a shared library against a static one 6957de2362d3Smrg # but the system doesn't support it. 6958de2362d3Smrg 6959de2362d3Smrg # Just print a warning and add the library to dependency_libs so 6960de2362d3Smrg # that the program can be linked against the static library. 6961de2362d3Smrg echo 6962de2362d3Smrg $ECHO "*** Warning: This system can not link to static lib archive $lib." 6963de2362d3Smrg echo "*** I have the capability to make that library automatically link in when" 6964de2362d3Smrg echo "*** you link to this library. But I can only do this if you have a" 6965de2362d3Smrg echo "*** shared version of the library, which you do not appear to have." 6966de2362d3Smrg if test "$module" = yes; then 6967de2362d3Smrg echo "*** But as you try to build a module library, libtool will still create " 6968de2362d3Smrg echo "*** a static module, that should work as long as the dlopening application" 6969de2362d3Smrg echo "*** is linked with the -dlopen flag to resolve symbols at runtime." 6970de2362d3Smrg if test -z "$global_symbol_pipe"; then 6971de2362d3Smrg echo 6972de2362d3Smrg echo "*** However, this would only work if libtool was able to extract symbol" 6973de2362d3Smrg echo "*** lists from a program, using \`nm' or equivalent, but libtool could" 6974de2362d3Smrg echo "*** not find such a program. So, this module is probably useless." 6975de2362d3Smrg echo "*** \`nm' from GNU binutils and a full rebuild may help." 6976de2362d3Smrg fi 6977de2362d3Smrg if test "$build_old_libs" = no; then 6978de2362d3Smrg build_libtool_libs=module 6979de2362d3Smrg build_old_libs=yes 6980de2362d3Smrg else 6981de2362d3Smrg build_libtool_libs=no 6982de2362d3Smrg fi 6983de2362d3Smrg fi 6984de2362d3Smrg else 6985de2362d3Smrg deplibs="$dir/$old_library $deplibs" 6986de2362d3Smrg link_static=yes 6987de2362d3Smrg fi 6988de2362d3Smrg fi # link shared/static library? 6989de2362d3Smrg 6990de2362d3Smrg if test "$linkmode" = lib; then 6991de2362d3Smrg if test -n "$dependency_libs" && 6992de2362d3Smrg { test "$hardcode_into_libs" != yes || 6993de2362d3Smrg test "$build_old_libs" = yes || 6994de2362d3Smrg test "$link_static" = yes; }; then 6995de2362d3Smrg # Extract -R from dependency_libs 6996de2362d3Smrg temp_deplibs= 6997de2362d3Smrg for libdir in $dependency_libs; do 6998de2362d3Smrg case $libdir in 6999de2362d3Smrg -R*) func_stripname '-R' '' "$libdir" 7000de2362d3Smrg temp_xrpath=$func_stripname_result 7001de2362d3Smrg case " $xrpath " in 7002de2362d3Smrg *" $temp_xrpath "*) ;; 7003de2362d3Smrg *) func_append xrpath " $temp_xrpath";; 7004de2362d3Smrg esac;; 7005de2362d3Smrg *) func_append temp_deplibs " $libdir";; 7006de2362d3Smrg esac 7007de2362d3Smrg done 7008de2362d3Smrg dependency_libs="$temp_deplibs" 7009de2362d3Smrg fi 7010de2362d3Smrg 7011de2362d3Smrg func_append newlib_search_path " $absdir" 7012de2362d3Smrg # Link against this library 7013de2362d3Smrg test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" 7014de2362d3Smrg # ... and its dependency_libs 7015de2362d3Smrg tmp_libs= 7016de2362d3Smrg for deplib in $dependency_libs; do 7017de2362d3Smrg newdependency_libs="$deplib $newdependency_libs" 7018de2362d3Smrg case $deplib in 7019de2362d3Smrg -L*) func_stripname '-L' '' "$deplib" 7020de2362d3Smrg func_resolve_sysroot "$func_stripname_result";; 7021de2362d3Smrg *) func_resolve_sysroot "$deplib" ;; 7022de2362d3Smrg esac 7023de2362d3Smrg if $opt_preserve_dup_deps ; then 7024de2362d3Smrg case "$tmp_libs " in 7025de2362d3Smrg *" $func_resolve_sysroot_result "*) 7026de2362d3Smrg func_append specialdeplibs " $func_resolve_sysroot_result" ;; 7027de2362d3Smrg esac 7028de2362d3Smrg fi 7029de2362d3Smrg func_append tmp_libs " $func_resolve_sysroot_result" 7030de2362d3Smrg done 7031de2362d3Smrg 7032de2362d3Smrg if test "$link_all_deplibs" != no; then 7033de2362d3Smrg # Add the search paths of all dependency libraries 7034de2362d3Smrg for deplib in $dependency_libs; do 7035de2362d3Smrg path= 7036de2362d3Smrg case $deplib in 7037de2362d3Smrg -L*) path="$deplib" ;; 7038de2362d3Smrg *.la) 7039de2362d3Smrg func_resolve_sysroot "$deplib" 7040de2362d3Smrg deplib=$func_resolve_sysroot_result 7041de2362d3Smrg func_dirname "$deplib" "" "." 7042de2362d3Smrg dir=$func_dirname_result 7043de2362d3Smrg # We need an absolute path. 7044de2362d3Smrg case $dir in 7045de2362d3Smrg [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; 7046de2362d3Smrg *) 7047de2362d3Smrg absdir=`cd "$dir" && pwd` 7048de2362d3Smrg if test -z "$absdir"; then 7049de2362d3Smrg func_warning "cannot determine absolute directory name of \`$dir'" 7050de2362d3Smrg absdir="$dir" 7051de2362d3Smrg fi 7052de2362d3Smrg ;; 7053de2362d3Smrg esac 7054de2362d3Smrg if $GREP "^installed=no" $deplib > /dev/null; then 7055de2362d3Smrg case $host in 7056de2362d3Smrg *-*-darwin*) 7057de2362d3Smrg depdepl= 7058de2362d3Smrg eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` 7059de2362d3Smrg if test -n "$deplibrary_names" ; then 7060de2362d3Smrg for tmp in $deplibrary_names ; do 7061de2362d3Smrg depdepl=$tmp 7062de2362d3Smrg done 7063de2362d3Smrg if test -f "$absdir/$objdir/$depdepl" ; then 7064de2362d3Smrg depdepl="$absdir/$objdir/$depdepl" 7065de2362d3Smrg darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` 7066de2362d3Smrg if test -z "$darwin_install_name"; then 7067de2362d3Smrg darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` 7068de2362d3Smrg fi 7069de2362d3Smrg func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" 7070de2362d3Smrg func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}" 7071de2362d3Smrg path= 7072de2362d3Smrg fi 7073de2362d3Smrg fi 7074de2362d3Smrg ;; 7075de2362d3Smrg *) 7076de2362d3Smrg path="-L$absdir/$objdir" 7077de2362d3Smrg ;; 7078de2362d3Smrg esac 7079de2362d3Smrg else 7080de2362d3Smrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 7081de2362d3Smrg test -z "$libdir" && \ 7082de2362d3Smrg func_fatal_error "\`$deplib' is not a valid libtool archive" 7083de2362d3Smrg test "$absdir" != "$libdir" && \ 7084de2362d3Smrg func_warning "\`$deplib' seems to be moved" 7085de2362d3Smrg 7086de2362d3Smrg path="-L$absdir" 7087de2362d3Smrg fi 7088de2362d3Smrg ;; 7089de2362d3Smrg esac 7090de2362d3Smrg case " $deplibs " in 7091de2362d3Smrg *" $path "*) ;; 7092de2362d3Smrg *) deplibs="$path $deplibs" ;; 7093de2362d3Smrg esac 7094de2362d3Smrg done 7095de2362d3Smrg fi # link_all_deplibs != no 7096de2362d3Smrg fi # linkmode = lib 7097de2362d3Smrg done # for deplib in $libs 7098de2362d3Smrg if test "$pass" = link; then 7099de2362d3Smrg if test "$linkmode" = "prog"; then 7100de2362d3Smrg compile_deplibs="$new_inherited_linker_flags $compile_deplibs" 7101de2362d3Smrg finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" 7102de2362d3Smrg else 7103de2362d3Smrg compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 7104de2362d3Smrg fi 7105de2362d3Smrg fi 7106de2362d3Smrg dependency_libs="$newdependency_libs" 7107de2362d3Smrg if test "$pass" = dlpreopen; then 7108de2362d3Smrg # Link the dlpreopened libraries before other libraries 7109de2362d3Smrg for deplib in $save_deplibs; do 7110de2362d3Smrg deplibs="$deplib $deplibs" 7111de2362d3Smrg done 7112de2362d3Smrg fi 7113de2362d3Smrg if test "$pass" != dlopen; then 7114de2362d3Smrg if test "$pass" != conv; then 7115de2362d3Smrg # Make sure lib_search_path contains only unique directories. 7116de2362d3Smrg lib_search_path= 7117de2362d3Smrg for dir in $newlib_search_path; do 7118de2362d3Smrg case "$lib_search_path " in 7119de2362d3Smrg *" $dir "*) ;; 7120de2362d3Smrg *) func_append lib_search_path " $dir" ;; 7121de2362d3Smrg esac 7122de2362d3Smrg done 7123de2362d3Smrg newlib_search_path= 7124de2362d3Smrg fi 7125de2362d3Smrg 7126de2362d3Smrg if test "$linkmode,$pass" != "prog,link"; then 7127de2362d3Smrg vars="deplibs" 7128de2362d3Smrg else 7129de2362d3Smrg vars="compile_deplibs finalize_deplibs" 7130de2362d3Smrg fi 7131de2362d3Smrg for var in $vars dependency_libs; do 7132de2362d3Smrg # Add libraries to $var in reverse order 7133de2362d3Smrg eval tmp_libs=\"\$$var\" 7134de2362d3Smrg new_libs= 7135de2362d3Smrg for deplib in $tmp_libs; do 7136de2362d3Smrg # FIXME: Pedantically, this is the right thing to do, so 7137de2362d3Smrg # that some nasty dependency loop isn't accidentally 7138de2362d3Smrg # broken: 7139de2362d3Smrg #new_libs="$deplib $new_libs" 7140de2362d3Smrg # Pragmatically, this seems to cause very few problems in 7141de2362d3Smrg # practice: 7142de2362d3Smrg case $deplib in 7143de2362d3Smrg -L*) new_libs="$deplib $new_libs" ;; 7144de2362d3Smrg -R*) ;; 7145de2362d3Smrg *) 7146de2362d3Smrg # And here is the reason: when a library appears more 7147de2362d3Smrg # than once as an explicit dependence of a library, or 7148de2362d3Smrg # is implicitly linked in more than once by the 7149de2362d3Smrg # compiler, it is considered special, and multiple 7150de2362d3Smrg # occurrences thereof are not removed. Compare this 7151de2362d3Smrg # with having the same library being listed as a 7152de2362d3Smrg # dependency of multiple other libraries: in this case, 7153de2362d3Smrg # we know (pedantically, we assume) the library does not 7154de2362d3Smrg # need to be listed more than once, so we keep only the 7155de2362d3Smrg # last copy. This is not always right, but it is rare 7156de2362d3Smrg # enough that we require users that really mean to play 7157de2362d3Smrg # such unportable linking tricks to link the library 7158de2362d3Smrg # using -Wl,-lname, so that libtool does not consider it 7159de2362d3Smrg # for duplicate removal. 7160de2362d3Smrg case " $specialdeplibs " in 7161de2362d3Smrg *" $deplib "*) new_libs="$deplib $new_libs" ;; 7162de2362d3Smrg *) 7163de2362d3Smrg case " $new_libs " in 7164de2362d3Smrg *" $deplib "*) ;; 7165de2362d3Smrg *) new_libs="$deplib $new_libs" ;; 7166de2362d3Smrg esac 7167de2362d3Smrg ;; 7168de2362d3Smrg esac 7169de2362d3Smrg ;; 7170de2362d3Smrg esac 7171de2362d3Smrg done 7172de2362d3Smrg tmp_libs= 7173de2362d3Smrg for deplib in $new_libs; do 7174de2362d3Smrg case $deplib in 7175de2362d3Smrg -L*) 7176de2362d3Smrg case " $tmp_libs " in 7177de2362d3Smrg *" $deplib "*) ;; 7178de2362d3Smrg *) func_append tmp_libs " $deplib" ;; 7179de2362d3Smrg esac 7180de2362d3Smrg ;; 7181de2362d3Smrg *) func_append tmp_libs " $deplib" ;; 7182de2362d3Smrg esac 7183de2362d3Smrg done 7184de2362d3Smrg eval $var=\"$tmp_libs\" 7185de2362d3Smrg done # for var 7186de2362d3Smrg fi 7187de2362d3Smrg # Last step: remove runtime libs from dependency_libs 7188de2362d3Smrg # (they stay in deplibs) 7189de2362d3Smrg tmp_libs= 7190de2362d3Smrg for i in $dependency_libs ; do 7191de2362d3Smrg case " $predeps $postdeps $compiler_lib_search_path " in 7192de2362d3Smrg *" $i "*) 7193de2362d3Smrg i="" 7194de2362d3Smrg ;; 7195de2362d3Smrg esac 7196de2362d3Smrg if test -n "$i" ; then 7197de2362d3Smrg func_append tmp_libs " $i" 7198de2362d3Smrg fi 7199de2362d3Smrg done 7200de2362d3Smrg dependency_libs=$tmp_libs 7201de2362d3Smrg done # for pass 7202de2362d3Smrg if test "$linkmode" = prog; then 7203de2362d3Smrg dlfiles="$newdlfiles" 7204de2362d3Smrg fi 7205de2362d3Smrg if test "$linkmode" = prog || test "$linkmode" = lib; then 7206de2362d3Smrg dlprefiles="$newdlprefiles" 7207de2362d3Smrg fi 7208de2362d3Smrg 7209de2362d3Smrg case $linkmode in 7210de2362d3Smrg oldlib) 7211de2362d3Smrg if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 7212de2362d3Smrg func_warning "\`-dlopen' is ignored for archives" 7213de2362d3Smrg fi 7214de2362d3Smrg 7215de2362d3Smrg case " $deplibs" in 7216de2362d3Smrg *\ -l* | *\ -L*) 7217de2362d3Smrg func_warning "\`-l' and \`-L' are ignored for archives" ;; 7218de2362d3Smrg esac 7219de2362d3Smrg 7220de2362d3Smrg test -n "$rpath" && \ 7221de2362d3Smrg func_warning "\`-rpath' is ignored for archives" 7222de2362d3Smrg 7223de2362d3Smrg test -n "$xrpath" && \ 7224de2362d3Smrg func_warning "\`-R' is ignored for archives" 7225de2362d3Smrg 7226de2362d3Smrg test -n "$vinfo" && \ 7227de2362d3Smrg func_warning "\`-version-info/-version-number' is ignored for archives" 7228de2362d3Smrg 7229de2362d3Smrg test -n "$release" && \ 7230de2362d3Smrg func_warning "\`-release' is ignored for archives" 7231de2362d3Smrg 7232de2362d3Smrg test -n "$export_symbols$export_symbols_regex" && \ 7233de2362d3Smrg func_warning "\`-export-symbols' is ignored for archives" 7234de2362d3Smrg 7235de2362d3Smrg # Now set the variables for building old libraries. 7236de2362d3Smrg build_libtool_libs=no 7237de2362d3Smrg oldlibs="$output" 7238de2362d3Smrg func_append objs "$old_deplibs" 7239de2362d3Smrg ;; 7240de2362d3Smrg 7241de2362d3Smrg lib) 7242de2362d3Smrg # Make sure we only generate libraries of the form `libNAME.la'. 7243de2362d3Smrg case $outputname in 7244de2362d3Smrg lib*) 7245de2362d3Smrg func_stripname 'lib' '.la' "$outputname" 7246de2362d3Smrg name=$func_stripname_result 7247de2362d3Smrg eval shared_ext=\"$shrext_cmds\" 7248de2362d3Smrg eval libname=\"$libname_spec\" 7249de2362d3Smrg ;; 7250de2362d3Smrg *) 7251de2362d3Smrg test "$module" = no && \ 7252de2362d3Smrg func_fatal_help "libtool library \`$output' must begin with \`lib'" 7253de2362d3Smrg 7254de2362d3Smrg if test "$need_lib_prefix" != no; then 7255de2362d3Smrg # Add the "lib" prefix for modules if required 7256de2362d3Smrg func_stripname '' '.la' "$outputname" 7257de2362d3Smrg name=$func_stripname_result 7258de2362d3Smrg eval shared_ext=\"$shrext_cmds\" 7259de2362d3Smrg eval libname=\"$libname_spec\" 7260de2362d3Smrg else 7261de2362d3Smrg func_stripname '' '.la' "$outputname" 7262de2362d3Smrg libname=$func_stripname_result 7263de2362d3Smrg fi 7264de2362d3Smrg ;; 7265de2362d3Smrg esac 7266de2362d3Smrg 7267de2362d3Smrg if test -n "$objs"; then 7268de2362d3Smrg if test "$deplibs_check_method" != pass_all; then 7269de2362d3Smrg func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 7270de2362d3Smrg else 7271de2362d3Smrg echo 7272de2362d3Smrg $ECHO "*** Warning: Linking the shared library $output against the non-libtool" 7273de2362d3Smrg $ECHO "*** objects $objs is not portable!" 7274de2362d3Smrg func_append libobjs " $objs" 7275de2362d3Smrg fi 7276de2362d3Smrg fi 7277de2362d3Smrg 7278de2362d3Smrg test "$dlself" != no && \ 7279de2362d3Smrg func_warning "\`-dlopen self' is ignored for libtool libraries" 7280de2362d3Smrg 7281de2362d3Smrg set dummy $rpath 7282de2362d3Smrg shift 7283de2362d3Smrg test "$#" -gt 1 && \ 7284de2362d3Smrg func_warning "ignoring multiple \`-rpath's for a libtool library" 7285de2362d3Smrg 7286de2362d3Smrg install_libdir="$1" 7287de2362d3Smrg 7288de2362d3Smrg oldlibs= 7289de2362d3Smrg if test -z "$rpath"; then 7290de2362d3Smrg if test "$build_libtool_libs" = yes; then 7291de2362d3Smrg # Building a libtool convenience library. 7292de2362d3Smrg # Some compilers have problems with a `.al' extension so 7293de2362d3Smrg # convenience libraries should have the same extension an 7294de2362d3Smrg # archive normally would. 7295de2362d3Smrg oldlibs="$output_objdir/$libname.$libext $oldlibs" 7296de2362d3Smrg build_libtool_libs=convenience 7297de2362d3Smrg build_old_libs=yes 7298de2362d3Smrg fi 7299de2362d3Smrg 7300de2362d3Smrg test -n "$vinfo" && \ 7301de2362d3Smrg func_warning "\`-version-info/-version-number' is ignored for convenience libraries" 7302de2362d3Smrg 7303de2362d3Smrg test -n "$release" && \ 7304de2362d3Smrg func_warning "\`-release' is ignored for convenience libraries" 7305de2362d3Smrg else 7306de2362d3Smrg 7307de2362d3Smrg # Parse the version information argument. 7308de2362d3Smrg save_ifs="$IFS"; IFS=':' 7309de2362d3Smrg set dummy $vinfo 0 0 0 7310de2362d3Smrg shift 7311de2362d3Smrg IFS="$save_ifs" 7312de2362d3Smrg 7313de2362d3Smrg test -n "$7" && \ 7314de2362d3Smrg func_fatal_help "too many parameters to \`-version-info'" 7315de2362d3Smrg 7316de2362d3Smrg # convert absolute version numbers to libtool ages 7317de2362d3Smrg # this retains compatibility with .la files and attempts 7318de2362d3Smrg # to make the code below a bit more comprehensible 7319de2362d3Smrg 7320de2362d3Smrg case $vinfo_number in 7321de2362d3Smrg yes) 7322de2362d3Smrg number_major="$1" 7323de2362d3Smrg number_minor="$2" 7324de2362d3Smrg number_revision="$3" 7325de2362d3Smrg # 7326de2362d3Smrg # There are really only two kinds -- those that 7327de2362d3Smrg # use the current revision as the major version 7328de2362d3Smrg # and those that subtract age and use age as 7329de2362d3Smrg # a minor version. But, then there is irix 7330de2362d3Smrg # which has an extra 1 added just for fun 7331de2362d3Smrg # 7332de2362d3Smrg case $version_type in 7333de2362d3Smrg # correct linux to gnu/linux during the next big refactor 7334de2362d3Smrg darwin|linux|osf|windows|none) 7335de2362d3Smrg func_arith $number_major + $number_minor 7336de2362d3Smrg current=$func_arith_result 7337de2362d3Smrg age="$number_minor" 7338de2362d3Smrg revision="$number_revision" 7339de2362d3Smrg ;; 7340de2362d3Smrg freebsd-aout|freebsd-elf|qnx|sunos) 7341de2362d3Smrg current="$number_major" 7342de2362d3Smrg revision="$number_minor" 7343de2362d3Smrg age="0" 7344de2362d3Smrg ;; 7345de2362d3Smrg irix|nonstopux) 7346de2362d3Smrg func_arith $number_major + $number_minor 7347de2362d3Smrg current=$func_arith_result 7348de2362d3Smrg age="$number_minor" 7349de2362d3Smrg revision="$number_minor" 7350de2362d3Smrg lt_irix_increment=no 7351de2362d3Smrg ;; 7352de2362d3Smrg esac 7353de2362d3Smrg ;; 7354de2362d3Smrg no) 7355de2362d3Smrg current="$1" 7356de2362d3Smrg revision="$2" 7357de2362d3Smrg age="$3" 7358de2362d3Smrg ;; 7359de2362d3Smrg esac 7360de2362d3Smrg 7361de2362d3Smrg # Check that each of the things are valid numbers. 7362de2362d3Smrg case $current in 7363de2362d3Smrg 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]) ;; 7364de2362d3Smrg *) 7365de2362d3Smrg func_error "CURRENT \`$current' must be a nonnegative integer" 7366de2362d3Smrg func_fatal_error "\`$vinfo' is not valid version information" 7367de2362d3Smrg ;; 7368de2362d3Smrg esac 7369de2362d3Smrg 7370de2362d3Smrg case $revision in 7371de2362d3Smrg 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]) ;; 7372de2362d3Smrg *) 7373de2362d3Smrg func_error "REVISION \`$revision' must be a nonnegative integer" 7374de2362d3Smrg func_fatal_error "\`$vinfo' is not valid version information" 7375de2362d3Smrg ;; 7376de2362d3Smrg esac 7377de2362d3Smrg 7378de2362d3Smrg case $age in 7379de2362d3Smrg 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]) ;; 7380de2362d3Smrg *) 7381de2362d3Smrg func_error "AGE \`$age' must be a nonnegative integer" 7382de2362d3Smrg func_fatal_error "\`$vinfo' is not valid version information" 7383de2362d3Smrg ;; 7384de2362d3Smrg esac 7385de2362d3Smrg 7386de2362d3Smrg if test "$age" -gt "$current"; then 7387de2362d3Smrg func_error "AGE \`$age' is greater than the current interface number \`$current'" 7388de2362d3Smrg func_fatal_error "\`$vinfo' is not valid version information" 7389de2362d3Smrg fi 7390de2362d3Smrg 7391de2362d3Smrg # Calculate the version variables. 7392de2362d3Smrg major= 7393de2362d3Smrg versuffix= 7394de2362d3Smrg verstring= 7395de2362d3Smrg case $version_type in 7396de2362d3Smrg none) ;; 7397de2362d3Smrg 7398de2362d3Smrg darwin) 7399de2362d3Smrg # Like Linux, but with the current version available in 7400de2362d3Smrg # verstring for coding it into the library header 7401de2362d3Smrg func_arith $current - $age 7402de2362d3Smrg major=.$func_arith_result 7403de2362d3Smrg versuffix="$major.$age.$revision" 7404de2362d3Smrg # Darwin ld doesn't like 0 for these options... 7405de2362d3Smrg func_arith $current + 1 7406de2362d3Smrg minor_current=$func_arith_result 7407de2362d3Smrg xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" 7408de2362d3Smrg verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" 7409de2362d3Smrg ;; 7410de2362d3Smrg 7411de2362d3Smrg freebsd-aout) 7412de2362d3Smrg major=".$current" 7413de2362d3Smrg versuffix=".$current.$revision"; 7414de2362d3Smrg ;; 7415de2362d3Smrg 7416de2362d3Smrg freebsd-elf) 7417de2362d3Smrg major=".$current" 7418de2362d3Smrg versuffix=".$current" 7419de2362d3Smrg ;; 7420de2362d3Smrg 7421de2362d3Smrg irix | nonstopux) 7422de2362d3Smrg if test "X$lt_irix_increment" = "Xno"; then 7423de2362d3Smrg func_arith $current - $age 7424de2362d3Smrg else 7425de2362d3Smrg func_arith $current - $age + 1 7426de2362d3Smrg fi 7427de2362d3Smrg major=$func_arith_result 7428de2362d3Smrg 7429de2362d3Smrg case $version_type in 7430de2362d3Smrg nonstopux) verstring_prefix=nonstopux ;; 7431de2362d3Smrg *) verstring_prefix=sgi ;; 7432de2362d3Smrg esac 7433de2362d3Smrg verstring="$verstring_prefix$major.$revision" 7434de2362d3Smrg 7435de2362d3Smrg # Add in all the interfaces that we are compatible with. 7436de2362d3Smrg loop=$revision 7437de2362d3Smrg while test "$loop" -ne 0; do 7438de2362d3Smrg func_arith $revision - $loop 7439de2362d3Smrg iface=$func_arith_result 7440de2362d3Smrg func_arith $loop - 1 7441de2362d3Smrg loop=$func_arith_result 7442de2362d3Smrg verstring="$verstring_prefix$major.$iface:$verstring" 7443de2362d3Smrg done 7444de2362d3Smrg 7445de2362d3Smrg # Before this point, $major must not contain `.'. 7446de2362d3Smrg major=.$major 7447de2362d3Smrg versuffix="$major.$revision" 7448de2362d3Smrg ;; 7449de2362d3Smrg 7450de2362d3Smrg linux) # correct to gnu/linux during the next big refactor 7451de2362d3Smrg func_arith $current - $age 7452de2362d3Smrg major=.$func_arith_result 7453de2362d3Smrg versuffix="$major.$age.$revision" 7454de2362d3Smrg ;; 7455de2362d3Smrg 7456de2362d3Smrg osf) 7457de2362d3Smrg func_arith $current - $age 7458de2362d3Smrg major=.$func_arith_result 7459de2362d3Smrg versuffix=".$current.$age.$revision" 7460de2362d3Smrg verstring="$current.$age.$revision" 7461de2362d3Smrg 7462de2362d3Smrg # Add in all the interfaces that we are compatible with. 7463de2362d3Smrg loop=$age 7464de2362d3Smrg while test "$loop" -ne 0; do 7465de2362d3Smrg func_arith $current - $loop 7466de2362d3Smrg iface=$func_arith_result 7467de2362d3Smrg func_arith $loop - 1 7468de2362d3Smrg loop=$func_arith_result 7469de2362d3Smrg verstring="$verstring:${iface}.0" 7470de2362d3Smrg done 7471de2362d3Smrg 7472de2362d3Smrg # Make executables depend on our current version. 7473de2362d3Smrg func_append verstring ":${current}.0" 7474de2362d3Smrg ;; 7475de2362d3Smrg 7476de2362d3Smrg qnx) 7477de2362d3Smrg major=".$current" 7478de2362d3Smrg versuffix=".$current" 7479de2362d3Smrg ;; 7480de2362d3Smrg 7481de2362d3Smrg sunos) 7482de2362d3Smrg major=".$current" 7483de2362d3Smrg versuffix=".$current.$revision" 7484de2362d3Smrg ;; 7485de2362d3Smrg 7486de2362d3Smrg windows) 7487de2362d3Smrg # Use '-' rather than '.', since we only want one 7488de2362d3Smrg # extension on DOS 8.3 filesystems. 7489de2362d3Smrg func_arith $current - $age 7490de2362d3Smrg major=$func_arith_result 7491de2362d3Smrg versuffix="-$major" 7492de2362d3Smrg ;; 7493de2362d3Smrg 7494de2362d3Smrg *) 7495de2362d3Smrg func_fatal_configuration "unknown library version type \`$version_type'" 7496de2362d3Smrg ;; 7497de2362d3Smrg esac 7498de2362d3Smrg 7499de2362d3Smrg # Clear the version info if we defaulted, and they specified a release. 7500de2362d3Smrg if test -z "$vinfo" && test -n "$release"; then 7501de2362d3Smrg major= 7502de2362d3Smrg case $version_type in 7503de2362d3Smrg darwin) 7504de2362d3Smrg # we can't check for "0.0" in archive_cmds due to quoting 7505de2362d3Smrg # problems, so we reset it completely 7506de2362d3Smrg verstring= 7507de2362d3Smrg ;; 7508de2362d3Smrg *) 7509de2362d3Smrg verstring="0.0" 7510de2362d3Smrg ;; 7511de2362d3Smrg esac 7512de2362d3Smrg if test "$need_version" = no; then 7513de2362d3Smrg versuffix= 7514de2362d3Smrg else 7515de2362d3Smrg versuffix=".0.0" 7516de2362d3Smrg fi 7517de2362d3Smrg fi 7518de2362d3Smrg 7519de2362d3Smrg # Remove version info from name if versioning should be avoided 7520de2362d3Smrg if test "$avoid_version" = yes && test "$need_version" = no; then 7521de2362d3Smrg major= 7522de2362d3Smrg versuffix= 7523de2362d3Smrg verstring="" 7524de2362d3Smrg fi 7525de2362d3Smrg 7526de2362d3Smrg # Check to see if the archive will have undefined symbols. 7527de2362d3Smrg if test "$allow_undefined" = yes; then 7528de2362d3Smrg if test "$allow_undefined_flag" = unsupported; then 7529de2362d3Smrg func_warning "undefined symbols not allowed in $host shared libraries" 7530de2362d3Smrg build_libtool_libs=no 7531de2362d3Smrg build_old_libs=yes 7532de2362d3Smrg fi 7533de2362d3Smrg else 7534de2362d3Smrg # Don't allow undefined symbols. 7535de2362d3Smrg allow_undefined_flag="$no_undefined_flag" 7536de2362d3Smrg fi 7537de2362d3Smrg 7538de2362d3Smrg fi 7539de2362d3Smrg 7540de2362d3Smrg func_generate_dlsyms "$libname" "$libname" "yes" 7541de2362d3Smrg func_append libobjs " $symfileobj" 7542de2362d3Smrg test "X$libobjs" = "X " && libobjs= 7543de2362d3Smrg 7544de2362d3Smrg if test "$opt_mode" != relink; then 7545de2362d3Smrg # Remove our outputs, but don't remove object files since they 7546de2362d3Smrg # may have been created when compiling PIC objects. 7547de2362d3Smrg removelist= 7548de2362d3Smrg tempremovelist=`$ECHO "$output_objdir/*"` 7549de2362d3Smrg for p in $tempremovelist; do 7550de2362d3Smrg case $p in 7551de2362d3Smrg *.$objext | *.gcno) 7552de2362d3Smrg ;; 7553de2362d3Smrg $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) 7554de2362d3Smrg if test "X$precious_files_regex" != "X"; then 7555de2362d3Smrg if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 7556de2362d3Smrg then 7557de2362d3Smrg continue 7558de2362d3Smrg fi 7559de2362d3Smrg fi 7560de2362d3Smrg func_append removelist " $p" 7561de2362d3Smrg ;; 7562de2362d3Smrg *) ;; 7563de2362d3Smrg esac 7564de2362d3Smrg done 7565de2362d3Smrg test -n "$removelist" && \ 7566de2362d3Smrg func_show_eval "${RM}r \$removelist" 7567de2362d3Smrg fi 7568de2362d3Smrg 7569de2362d3Smrg # Now set the variables for building old libraries. 7570de2362d3Smrg if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then 7571de2362d3Smrg func_append oldlibs " $output_objdir/$libname.$libext" 7572de2362d3Smrg 7573de2362d3Smrg # Transform .lo files to .o files. 7574de2362d3Smrg oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP` 7575de2362d3Smrg fi 7576de2362d3Smrg 7577de2362d3Smrg # Eliminate all temporary directories. 7578de2362d3Smrg #for path in $notinst_path; do 7579de2362d3Smrg # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` 7580de2362d3Smrg # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` 7581de2362d3Smrg # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` 7582de2362d3Smrg #done 7583de2362d3Smrg 7584de2362d3Smrg if test -n "$xrpath"; then 7585de2362d3Smrg # If the user specified any rpath flags, then add them. 7586de2362d3Smrg temp_xrpath= 7587de2362d3Smrg for libdir in $xrpath; do 7588de2362d3Smrg func_replace_sysroot "$libdir" 7589de2362d3Smrg func_append temp_xrpath " -R$func_replace_sysroot_result" 7590de2362d3Smrg case "$finalize_rpath " in 7591de2362d3Smrg *" $libdir "*) ;; 7592de2362d3Smrg *) func_append finalize_rpath " $libdir" ;; 7593de2362d3Smrg esac 7594de2362d3Smrg done 7595de2362d3Smrg if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then 7596de2362d3Smrg dependency_libs="$temp_xrpath $dependency_libs" 7597de2362d3Smrg fi 7598de2362d3Smrg fi 7599de2362d3Smrg 7600de2362d3Smrg # Make sure dlfiles contains only unique files that won't be dlpreopened 7601de2362d3Smrg old_dlfiles="$dlfiles" 7602de2362d3Smrg dlfiles= 7603de2362d3Smrg for lib in $old_dlfiles; do 7604de2362d3Smrg case " $dlprefiles $dlfiles " in 7605de2362d3Smrg *" $lib "*) ;; 7606de2362d3Smrg *) func_append dlfiles " $lib" ;; 7607de2362d3Smrg esac 7608de2362d3Smrg done 7609de2362d3Smrg 7610de2362d3Smrg # Make sure dlprefiles contains only unique files 7611de2362d3Smrg old_dlprefiles="$dlprefiles" 7612de2362d3Smrg dlprefiles= 7613de2362d3Smrg for lib in $old_dlprefiles; do 7614de2362d3Smrg case "$dlprefiles " in 7615de2362d3Smrg *" $lib "*) ;; 7616de2362d3Smrg *) func_append dlprefiles " $lib" ;; 7617de2362d3Smrg esac 7618de2362d3Smrg done 7619de2362d3Smrg 7620de2362d3Smrg if test "$build_libtool_libs" = yes; then 7621de2362d3Smrg if test -n "$rpath"; then 7622de2362d3Smrg case $host in 7623de2362d3Smrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) 7624de2362d3Smrg # these systems don't actually have a c library (as such)! 7625de2362d3Smrg ;; 7626de2362d3Smrg *-*-rhapsody* | *-*-darwin1.[012]) 7627de2362d3Smrg # Rhapsody C library is in the System framework 7628de2362d3Smrg func_append deplibs " System.ltframework" 7629de2362d3Smrg ;; 7630de2362d3Smrg *-*-netbsd*) 7631de2362d3Smrg # Don't link with libc until the a.out ld.so is fixed. 7632de2362d3Smrg ;; 7633de2362d3Smrg *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 7634de2362d3Smrg # Do not include libc due to us having libc/libc_r. 7635de2362d3Smrg ;; 7636de2362d3Smrg *-*-sco3.2v5* | *-*-sco5v6*) 7637de2362d3Smrg # Causes problems with __ctype 7638de2362d3Smrg ;; 7639de2362d3Smrg *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 7640de2362d3Smrg # Compiler inserts libc in the correct place for threads to work 7641de2362d3Smrg ;; 7642de2362d3Smrg *) 7643de2362d3Smrg # Add libc to deplibs on all other systems if necessary. 7644de2362d3Smrg if test "$build_libtool_need_lc" = "yes"; then 7645de2362d3Smrg func_append deplibs " -lc" 7646de2362d3Smrg fi 7647de2362d3Smrg ;; 7648de2362d3Smrg esac 7649de2362d3Smrg fi 7650de2362d3Smrg 7651de2362d3Smrg # Transform deplibs into only deplibs that can be linked in shared. 7652de2362d3Smrg name_save=$name 7653de2362d3Smrg libname_save=$libname 7654de2362d3Smrg release_save=$release 7655de2362d3Smrg versuffix_save=$versuffix 7656de2362d3Smrg major_save=$major 7657de2362d3Smrg # I'm not sure if I'm treating the release correctly. I think 7658de2362d3Smrg # release should show up in the -l (ie -lgmp5) so we don't want to 7659de2362d3Smrg # add it in twice. Is that correct? 7660de2362d3Smrg release="" 7661de2362d3Smrg versuffix="" 7662de2362d3Smrg major="" 7663de2362d3Smrg newdeplibs= 7664de2362d3Smrg droppeddeps=no 7665de2362d3Smrg case $deplibs_check_method in 7666de2362d3Smrg pass_all) 7667de2362d3Smrg # Don't check for shared/static. Everything works. 7668de2362d3Smrg # This might be a little naive. We might want to check 7669de2362d3Smrg # whether the library exists or not. But this is on 7670de2362d3Smrg # osf3 & osf4 and I'm not really sure... Just 7671de2362d3Smrg # implementing what was already the behavior. 7672de2362d3Smrg newdeplibs=$deplibs 7673de2362d3Smrg ;; 7674de2362d3Smrg test_compile) 7675de2362d3Smrg # This code stresses the "libraries are programs" paradigm to its 7676de2362d3Smrg # limits. Maybe even breaks it. We compile a program, linking it 7677de2362d3Smrg # against the deplibs as a proxy for the library. Then we can check 7678de2362d3Smrg # whether they linked in statically or dynamically with ldd. 7679de2362d3Smrg $opt_dry_run || $RM conftest.c 7680de2362d3Smrg cat > conftest.c <<EOF 7681de2362d3Smrg int main() { return 0; } 7682de2362d3SmrgEOF 7683de2362d3Smrg $opt_dry_run || $RM conftest 7684de2362d3Smrg if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then 7685de2362d3Smrg ldd_output=`ldd conftest` 7686de2362d3Smrg for i in $deplibs; do 7687de2362d3Smrg case $i in 7688de2362d3Smrg -l*) 7689de2362d3Smrg func_stripname -l '' "$i" 7690de2362d3Smrg name=$func_stripname_result 7691de2362d3Smrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 7692de2362d3Smrg case " $predeps $postdeps " in 7693de2362d3Smrg *" $i "*) 7694de2362d3Smrg func_append newdeplibs " $i" 7695de2362d3Smrg i="" 7696de2362d3Smrg ;; 7697de2362d3Smrg esac 7698de2362d3Smrg fi 7699de2362d3Smrg if test -n "$i" ; then 7700de2362d3Smrg libname=`eval "\\$ECHO \"$libname_spec\""` 7701de2362d3Smrg deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` 7702de2362d3Smrg set dummy $deplib_matches; shift 7703de2362d3Smrg deplib_match=$1 7704de2362d3Smrg if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 7705de2362d3Smrg func_append newdeplibs " $i" 7706de2362d3Smrg else 7707de2362d3Smrg droppeddeps=yes 7708de2362d3Smrg echo 7709de2362d3Smrg $ECHO "*** Warning: dynamic linker does not accept needed library $i." 7710de2362d3Smrg echo "*** I have the capability to make that library automatically link in when" 7711de2362d3Smrg echo "*** you link to this library. But I can only do this if you have a" 7712de2362d3Smrg echo "*** shared version of the library, which I believe you do not have" 7713de2362d3Smrg echo "*** because a test_compile did reveal that the linker did not use it for" 7714de2362d3Smrg echo "*** its dynamic dependency list that programs get resolved with at runtime." 7715de2362d3Smrg fi 7716de2362d3Smrg fi 7717de2362d3Smrg ;; 7718de2362d3Smrg *) 7719de2362d3Smrg func_append newdeplibs " $i" 7720de2362d3Smrg ;; 7721de2362d3Smrg esac 7722de2362d3Smrg done 7723de2362d3Smrg else 7724de2362d3Smrg # Error occurred in the first compile. Let's try to salvage 7725de2362d3Smrg # the situation: Compile a separate program for each library. 7726de2362d3Smrg for i in $deplibs; do 7727de2362d3Smrg case $i in 7728de2362d3Smrg -l*) 7729de2362d3Smrg func_stripname -l '' "$i" 7730de2362d3Smrg name=$func_stripname_result 7731de2362d3Smrg $opt_dry_run || $RM conftest 7732de2362d3Smrg if $LTCC $LTCFLAGS -o conftest conftest.c $i; then 7733de2362d3Smrg ldd_output=`ldd conftest` 7734de2362d3Smrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 7735de2362d3Smrg case " $predeps $postdeps " in 7736de2362d3Smrg *" $i "*) 7737de2362d3Smrg func_append newdeplibs " $i" 7738de2362d3Smrg i="" 7739de2362d3Smrg ;; 7740de2362d3Smrg esac 7741de2362d3Smrg fi 7742de2362d3Smrg if test -n "$i" ; then 7743de2362d3Smrg libname=`eval "\\$ECHO \"$libname_spec\""` 7744de2362d3Smrg deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` 7745de2362d3Smrg set dummy $deplib_matches; shift 7746de2362d3Smrg deplib_match=$1 7747de2362d3Smrg if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 7748de2362d3Smrg func_append newdeplibs " $i" 7749de2362d3Smrg else 7750de2362d3Smrg droppeddeps=yes 7751de2362d3Smrg echo 7752de2362d3Smrg $ECHO "*** Warning: dynamic linker does not accept needed library $i." 7753de2362d3Smrg echo "*** I have the capability to make that library automatically link in when" 7754de2362d3Smrg echo "*** you link to this library. But I can only do this if you have a" 7755de2362d3Smrg echo "*** shared version of the library, which you do not appear to have" 7756de2362d3Smrg echo "*** because a test_compile did reveal that the linker did not use this one" 7757de2362d3Smrg echo "*** as a dynamic dependency that programs can get resolved with at runtime." 7758de2362d3Smrg fi 7759de2362d3Smrg fi 7760de2362d3Smrg else 7761de2362d3Smrg droppeddeps=yes 7762de2362d3Smrg echo 7763de2362d3Smrg $ECHO "*** Warning! Library $i is needed by this library but I was not able to" 7764de2362d3Smrg echo "*** make it link in! You will probably need to install it or some" 7765de2362d3Smrg echo "*** library that it depends on before this library will be fully" 7766de2362d3Smrg echo "*** functional. Installing it before continuing would be even better." 7767de2362d3Smrg fi 7768de2362d3Smrg ;; 7769de2362d3Smrg *) 7770de2362d3Smrg func_append newdeplibs " $i" 7771de2362d3Smrg ;; 7772de2362d3Smrg esac 7773de2362d3Smrg done 7774de2362d3Smrg fi 7775de2362d3Smrg ;; 7776de2362d3Smrg file_magic*) 7777de2362d3Smrg set dummy $deplibs_check_method; shift 7778de2362d3Smrg file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 7779de2362d3Smrg for a_deplib in $deplibs; do 7780de2362d3Smrg case $a_deplib in 7781de2362d3Smrg -l*) 7782de2362d3Smrg func_stripname -l '' "$a_deplib" 7783de2362d3Smrg name=$func_stripname_result 7784de2362d3Smrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 7785de2362d3Smrg case " $predeps $postdeps " in 7786de2362d3Smrg *" $a_deplib "*) 7787de2362d3Smrg func_append newdeplibs " $a_deplib" 7788de2362d3Smrg a_deplib="" 7789de2362d3Smrg ;; 7790de2362d3Smrg esac 7791de2362d3Smrg fi 7792de2362d3Smrg if test -n "$a_deplib" ; then 7793de2362d3Smrg libname=`eval "\\$ECHO \"$libname_spec\""` 7794de2362d3Smrg if test -n "$file_magic_glob"; then 7795de2362d3Smrg libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob` 7796de2362d3Smrg else 7797de2362d3Smrg libnameglob=$libname 7798de2362d3Smrg fi 7799de2362d3Smrg test "$want_nocaseglob" = yes && nocaseglob=`shopt -p nocaseglob` 7800de2362d3Smrg for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 7801de2362d3Smrg if test "$want_nocaseglob" = yes; then 7802de2362d3Smrg shopt -s nocaseglob 7803de2362d3Smrg potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` 7804de2362d3Smrg $nocaseglob 7805de2362d3Smrg else 7806de2362d3Smrg potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` 7807de2362d3Smrg fi 7808de2362d3Smrg for potent_lib in $potential_libs; do 7809de2362d3Smrg # Follow soft links. 7810de2362d3Smrg if ls -lLd "$potent_lib" 2>/dev/null | 7811de2362d3Smrg $GREP " -> " >/dev/null; then 7812de2362d3Smrg continue 7813de2362d3Smrg fi 7814de2362d3Smrg # The statement above tries to avoid entering an 7815de2362d3Smrg # endless loop below, in case of cyclic links. 7816de2362d3Smrg # We might still enter an endless loop, since a link 7817de2362d3Smrg # loop can be closed while we follow links, 7818de2362d3Smrg # but so what? 7819de2362d3Smrg potlib="$potent_lib" 7820de2362d3Smrg while test -h "$potlib" 2>/dev/null; do 7821de2362d3Smrg potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` 7822de2362d3Smrg case $potliblink in 7823de2362d3Smrg [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; 7824de2362d3Smrg *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";; 7825de2362d3Smrg esac 7826de2362d3Smrg done 7827de2362d3Smrg if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | 7828de2362d3Smrg $SED -e 10q | 7829de2362d3Smrg $EGREP "$file_magic_regex" > /dev/null; then 7830de2362d3Smrg func_append newdeplibs " $a_deplib" 7831de2362d3Smrg a_deplib="" 7832de2362d3Smrg break 2 7833de2362d3Smrg fi 7834de2362d3Smrg done 7835de2362d3Smrg done 7836de2362d3Smrg fi 7837de2362d3Smrg if test -n "$a_deplib" ; then 7838de2362d3Smrg droppeddeps=yes 7839de2362d3Smrg echo 7840de2362d3Smrg $ECHO "*** Warning: linker path does not have real file for library $a_deplib." 7841de2362d3Smrg echo "*** I have the capability to make that library automatically link in when" 7842de2362d3Smrg echo "*** you link to this library. But I can only do this if you have a" 7843de2362d3Smrg echo "*** shared version of the library, which you do not appear to have" 7844de2362d3Smrg echo "*** because I did check the linker path looking for a file starting" 7845de2362d3Smrg if test -z "$potlib" ; then 7846de2362d3Smrg $ECHO "*** with $libname but no candidates were found. (...for file magic test)" 7847de2362d3Smrg else 7848de2362d3Smrg $ECHO "*** with $libname and none of the candidates passed a file format test" 7849de2362d3Smrg $ECHO "*** using a file magic. Last file checked: $potlib" 7850de2362d3Smrg fi 7851de2362d3Smrg fi 7852de2362d3Smrg ;; 7853de2362d3Smrg *) 7854de2362d3Smrg # Add a -L argument. 7855de2362d3Smrg func_append newdeplibs " $a_deplib" 7856de2362d3Smrg ;; 7857de2362d3Smrg esac 7858de2362d3Smrg done # Gone through all deplibs. 7859de2362d3Smrg ;; 7860de2362d3Smrg match_pattern*) 7861de2362d3Smrg set dummy $deplibs_check_method; shift 7862de2362d3Smrg match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 7863de2362d3Smrg for a_deplib in $deplibs; do 7864de2362d3Smrg case $a_deplib in 7865de2362d3Smrg -l*) 7866de2362d3Smrg func_stripname -l '' "$a_deplib" 7867de2362d3Smrg name=$func_stripname_result 7868de2362d3Smrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 7869de2362d3Smrg case " $predeps $postdeps " in 7870de2362d3Smrg *" $a_deplib "*) 7871de2362d3Smrg func_append newdeplibs " $a_deplib" 7872de2362d3Smrg a_deplib="" 7873de2362d3Smrg ;; 7874de2362d3Smrg esac 7875de2362d3Smrg fi 7876de2362d3Smrg if test -n "$a_deplib" ; then 7877de2362d3Smrg libname=`eval "\\$ECHO \"$libname_spec\""` 7878de2362d3Smrg for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 7879de2362d3Smrg potential_libs=`ls $i/$libname[.-]* 2>/dev/null` 7880de2362d3Smrg for potent_lib in $potential_libs; do 7881de2362d3Smrg potlib="$potent_lib" # see symlink-check above in file_magic test 7882de2362d3Smrg if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ 7883de2362d3Smrg $EGREP "$match_pattern_regex" > /dev/null; then 7884de2362d3Smrg func_append newdeplibs " $a_deplib" 7885de2362d3Smrg a_deplib="" 7886de2362d3Smrg break 2 7887de2362d3Smrg fi 7888de2362d3Smrg done 7889de2362d3Smrg done 7890de2362d3Smrg fi 7891de2362d3Smrg if test -n "$a_deplib" ; then 7892de2362d3Smrg droppeddeps=yes 7893de2362d3Smrg echo 7894de2362d3Smrg $ECHO "*** Warning: linker path does not have real file for library $a_deplib." 7895de2362d3Smrg echo "*** I have the capability to make that library automatically link in when" 7896de2362d3Smrg echo "*** you link to this library. But I can only do this if you have a" 7897de2362d3Smrg echo "*** shared version of the library, which you do not appear to have" 7898de2362d3Smrg echo "*** because I did check the linker path looking for a file starting" 7899de2362d3Smrg if test -z "$potlib" ; then 7900de2362d3Smrg $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" 7901de2362d3Smrg else 7902de2362d3Smrg $ECHO "*** with $libname and none of the candidates passed a file format test" 7903de2362d3Smrg $ECHO "*** using a regex pattern. Last file checked: $potlib" 7904de2362d3Smrg fi 7905de2362d3Smrg fi 7906de2362d3Smrg ;; 7907de2362d3Smrg *) 7908de2362d3Smrg # Add a -L argument. 7909de2362d3Smrg func_append newdeplibs " $a_deplib" 7910de2362d3Smrg ;; 7911de2362d3Smrg esac 7912de2362d3Smrg done # Gone through all deplibs. 7913de2362d3Smrg ;; 7914de2362d3Smrg none | unknown | *) 7915de2362d3Smrg newdeplibs="" 7916de2362d3Smrg tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` 7917de2362d3Smrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 7918de2362d3Smrg for i in $predeps $postdeps ; do 7919de2362d3Smrg # can't use Xsed below, because $i might contain '/' 7920de2362d3Smrg tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"` 7921de2362d3Smrg done 7922de2362d3Smrg fi 7923de2362d3Smrg case $tmp_deplibs in 7924de2362d3Smrg *[!\ \ ]*) 7925de2362d3Smrg echo 7926de2362d3Smrg if test "X$deplibs_check_method" = "Xnone"; then 7927de2362d3Smrg echo "*** Warning: inter-library dependencies are not supported in this platform." 7928de2362d3Smrg else 7929de2362d3Smrg echo "*** Warning: inter-library dependencies are not known to be supported." 7930de2362d3Smrg fi 7931de2362d3Smrg echo "*** All declared inter-library dependencies are being dropped." 7932de2362d3Smrg droppeddeps=yes 7933de2362d3Smrg ;; 7934de2362d3Smrg esac 7935de2362d3Smrg ;; 7936de2362d3Smrg esac 7937de2362d3Smrg versuffix=$versuffix_save 7938de2362d3Smrg major=$major_save 7939de2362d3Smrg release=$release_save 7940de2362d3Smrg libname=$libname_save 7941de2362d3Smrg name=$name_save 7942de2362d3Smrg 7943de2362d3Smrg case $host in 7944de2362d3Smrg *-*-rhapsody* | *-*-darwin1.[012]) 7945de2362d3Smrg # On Rhapsody replace the C library with the System framework 7946de2362d3Smrg newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` 7947de2362d3Smrg ;; 7948de2362d3Smrg esac 7949de2362d3Smrg 7950de2362d3Smrg if test "$droppeddeps" = yes; then 7951de2362d3Smrg if test "$module" = yes; then 7952de2362d3Smrg echo 7953de2362d3Smrg echo "*** Warning: libtool could not satisfy all declared inter-library" 7954de2362d3Smrg $ECHO "*** dependencies of module $libname. Therefore, libtool will create" 7955de2362d3Smrg echo "*** a static module, that should work as long as the dlopening" 7956de2362d3Smrg echo "*** application is linked with the -dlopen flag." 7957de2362d3Smrg if test -z "$global_symbol_pipe"; then 7958de2362d3Smrg echo 7959de2362d3Smrg echo "*** However, this would only work if libtool was able to extract symbol" 7960de2362d3Smrg echo "*** lists from a program, using \`nm' or equivalent, but libtool could" 7961de2362d3Smrg echo "*** not find such a program. So, this module is probably useless." 7962de2362d3Smrg echo "*** \`nm' from GNU binutils and a full rebuild may help." 7963de2362d3Smrg fi 7964de2362d3Smrg if test "$build_old_libs" = no; then 7965de2362d3Smrg oldlibs="$output_objdir/$libname.$libext" 7966de2362d3Smrg build_libtool_libs=module 7967de2362d3Smrg build_old_libs=yes 7968de2362d3Smrg else 7969de2362d3Smrg build_libtool_libs=no 7970de2362d3Smrg fi 7971de2362d3Smrg else 7972de2362d3Smrg echo "*** The inter-library dependencies that have been dropped here will be" 7973de2362d3Smrg echo "*** automatically added whenever a program is linked with this library" 7974de2362d3Smrg echo "*** or is declared to -dlopen it." 7975de2362d3Smrg 7976de2362d3Smrg if test "$allow_undefined" = no; then 7977de2362d3Smrg echo 7978de2362d3Smrg echo "*** Since this library must not contain undefined symbols," 7979de2362d3Smrg echo "*** because either the platform does not support them or" 7980de2362d3Smrg echo "*** it was explicitly requested with -no-undefined," 7981de2362d3Smrg echo "*** libtool will only create a static version of it." 7982de2362d3Smrg if test "$build_old_libs" = no; then 7983de2362d3Smrg oldlibs="$output_objdir/$libname.$libext" 7984de2362d3Smrg build_libtool_libs=module 7985de2362d3Smrg build_old_libs=yes 7986de2362d3Smrg else 7987de2362d3Smrg build_libtool_libs=no 7988de2362d3Smrg fi 7989de2362d3Smrg fi 7990de2362d3Smrg fi 7991de2362d3Smrg fi 7992de2362d3Smrg # Done checking deplibs! 7993de2362d3Smrg deplibs=$newdeplibs 7994de2362d3Smrg fi 7995de2362d3Smrg # Time to change all our "foo.ltframework" stuff back to "-framework foo" 7996de2362d3Smrg case $host in 7997de2362d3Smrg *-*-darwin*) 7998de2362d3Smrg newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 7999de2362d3Smrg new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 8000de2362d3Smrg deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 8001de2362d3Smrg ;; 8002de2362d3Smrg esac 8003de2362d3Smrg 8004de2362d3Smrg # move library search paths that coincide with paths to not yet 8005de2362d3Smrg # installed libraries to the beginning of the library search list 8006de2362d3Smrg new_libs= 8007de2362d3Smrg for path in $notinst_path; do 8008de2362d3Smrg case " $new_libs " in 8009de2362d3Smrg *" -L$path/$objdir "*) ;; 8010de2362d3Smrg *) 8011de2362d3Smrg case " $deplibs " in 8012de2362d3Smrg *" -L$path/$objdir "*) 8013de2362d3Smrg func_append new_libs " -L$path/$objdir" ;; 8014de2362d3Smrg esac 8015de2362d3Smrg ;; 8016de2362d3Smrg esac 8017de2362d3Smrg done 8018de2362d3Smrg for deplib in $deplibs; do 8019de2362d3Smrg case $deplib in 8020de2362d3Smrg -L*) 8021de2362d3Smrg case " $new_libs " in 8022de2362d3Smrg *" $deplib "*) ;; 8023de2362d3Smrg *) func_append new_libs " $deplib" ;; 8024de2362d3Smrg esac 8025de2362d3Smrg ;; 8026de2362d3Smrg *) func_append new_libs " $deplib" ;; 8027de2362d3Smrg esac 8028de2362d3Smrg done 8029de2362d3Smrg deplibs="$new_libs" 8030de2362d3Smrg 8031de2362d3Smrg # All the library-specific variables (install_libdir is set above). 8032de2362d3Smrg library_names= 8033de2362d3Smrg old_library= 8034de2362d3Smrg dlname= 8035de2362d3Smrg 8036de2362d3Smrg # Test again, we may have decided not to build it any more 8037de2362d3Smrg if test "$build_libtool_libs" = yes; then 8038de2362d3Smrg # Remove ${wl} instances when linking with ld. 8039de2362d3Smrg # FIXME: should test the right _cmds variable. 8040de2362d3Smrg case $archive_cmds in 8041de2362d3Smrg *\$LD\ *) wl= ;; 8042de2362d3Smrg esac 8043de2362d3Smrg if test "$hardcode_into_libs" = yes; then 8044de2362d3Smrg # Hardcode the library paths 8045de2362d3Smrg hardcode_libdirs= 8046de2362d3Smrg dep_rpath= 8047de2362d3Smrg rpath="$finalize_rpath" 8048de2362d3Smrg test "$opt_mode" != relink && rpath="$compile_rpath$rpath" 8049de2362d3Smrg for libdir in $rpath; do 8050de2362d3Smrg if test -n "$hardcode_libdir_flag_spec"; then 8051de2362d3Smrg if test -n "$hardcode_libdir_separator"; then 8052de2362d3Smrg func_replace_sysroot "$libdir" 8053de2362d3Smrg libdir=$func_replace_sysroot_result 8054de2362d3Smrg if test -z "$hardcode_libdirs"; then 8055de2362d3Smrg hardcode_libdirs="$libdir" 8056de2362d3Smrg else 8057de2362d3Smrg # Just accumulate the unique libdirs. 8058de2362d3Smrg case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 8059de2362d3Smrg *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 8060de2362d3Smrg ;; 8061de2362d3Smrg *) 8062de2362d3Smrg func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" 8063de2362d3Smrg ;; 8064de2362d3Smrg esac 8065de2362d3Smrg fi 8066de2362d3Smrg else 8067de2362d3Smrg eval flag=\"$hardcode_libdir_flag_spec\" 8068de2362d3Smrg func_append dep_rpath " $flag" 8069de2362d3Smrg fi 8070de2362d3Smrg elif test -n "$runpath_var"; then 8071de2362d3Smrg case "$perm_rpath " in 8072de2362d3Smrg *" $libdir "*) ;; 8073de2362d3Smrg *) func_append perm_rpath " $libdir" ;; 8074de2362d3Smrg esac 8075de2362d3Smrg fi 8076de2362d3Smrg done 8077de2362d3Smrg # Substitute the hardcoded libdirs into the rpath. 8078de2362d3Smrg if test -n "$hardcode_libdir_separator" && 8079de2362d3Smrg test -n "$hardcode_libdirs"; then 8080de2362d3Smrg libdir="$hardcode_libdirs" 8081de2362d3Smrg eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" 8082de2362d3Smrg fi 8083de2362d3Smrg if test -n "$runpath_var" && test -n "$perm_rpath"; then 8084de2362d3Smrg # We should set the runpath_var. 8085de2362d3Smrg rpath= 8086de2362d3Smrg for dir in $perm_rpath; do 8087de2362d3Smrg func_append rpath "$dir:" 8088de2362d3Smrg done 8089de2362d3Smrg eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" 8090de2362d3Smrg fi 8091de2362d3Smrg test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" 8092de2362d3Smrg fi 8093de2362d3Smrg 8094de2362d3Smrg shlibpath="$finalize_shlibpath" 8095de2362d3Smrg test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath" 8096de2362d3Smrg if test -n "$shlibpath"; then 8097de2362d3Smrg eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" 8098de2362d3Smrg fi 8099de2362d3Smrg 8100de2362d3Smrg # Get the real and link names of the library. 8101de2362d3Smrg eval shared_ext=\"$shrext_cmds\" 8102de2362d3Smrg eval library_names=\"$library_names_spec\" 8103de2362d3Smrg set dummy $library_names 8104de2362d3Smrg shift 8105de2362d3Smrg realname="$1" 8106de2362d3Smrg shift 8107de2362d3Smrg 8108de2362d3Smrg if test -n "$soname_spec"; then 8109de2362d3Smrg eval soname=\"$soname_spec\" 8110de2362d3Smrg else 8111de2362d3Smrg soname="$realname" 8112de2362d3Smrg fi 8113de2362d3Smrg if test -z "$dlname"; then 8114de2362d3Smrg dlname=$soname 8115de2362d3Smrg fi 8116de2362d3Smrg 8117de2362d3Smrg lib="$output_objdir/$realname" 8118de2362d3Smrg linknames= 8119de2362d3Smrg for link 8120de2362d3Smrg do 8121de2362d3Smrg func_append linknames " $link" 8122de2362d3Smrg done 8123de2362d3Smrg 8124de2362d3Smrg # Use standard objects if they are pic 8125de2362d3Smrg test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` 8126de2362d3Smrg test "X$libobjs" = "X " && libobjs= 8127de2362d3Smrg 8128de2362d3Smrg delfiles= 8129de2362d3Smrg if test -n "$export_symbols" && test -n "$include_expsyms"; then 8130de2362d3Smrg $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" 8131de2362d3Smrg export_symbols="$output_objdir/$libname.uexp" 8132de2362d3Smrg func_append delfiles " $export_symbols" 8133de2362d3Smrg fi 8134de2362d3Smrg 8135de2362d3Smrg orig_export_symbols= 8136de2362d3Smrg case $host_os in 8137de2362d3Smrg cygwin* | mingw* | cegcc*) 8138de2362d3Smrg if test -n "$export_symbols" && test -z "$export_symbols_regex"; then 8139de2362d3Smrg # exporting using user supplied symfile 8140de2362d3Smrg if test "x`$SED 1q $export_symbols`" != xEXPORTS; then 8141de2362d3Smrg # and it's NOT already a .def file. Must figure out 8142de2362d3Smrg # which of the given symbols are data symbols and tag 8143de2362d3Smrg # them as such. So, trigger use of export_symbols_cmds. 8144de2362d3Smrg # export_symbols gets reassigned inside the "prepare 8145de2362d3Smrg # the list of exported symbols" if statement, so the 8146de2362d3Smrg # include_expsyms logic still works. 8147de2362d3Smrg orig_export_symbols="$export_symbols" 8148de2362d3Smrg export_symbols= 8149de2362d3Smrg always_export_symbols=yes 8150de2362d3Smrg fi 8151de2362d3Smrg fi 8152de2362d3Smrg ;; 8153de2362d3Smrg esac 8154de2362d3Smrg 8155de2362d3Smrg # Prepare the list of exported symbols 8156de2362d3Smrg if test -z "$export_symbols"; then 8157de2362d3Smrg if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then 8158de2362d3Smrg func_verbose "generating symbol list for \`$libname.la'" 8159de2362d3Smrg export_symbols="$output_objdir/$libname.exp" 8160de2362d3Smrg $opt_dry_run || $RM $export_symbols 8161de2362d3Smrg cmds=$export_symbols_cmds 8162de2362d3Smrg save_ifs="$IFS"; IFS='~' 8163de2362d3Smrg for cmd1 in $cmds; do 8164de2362d3Smrg IFS="$save_ifs" 8165de2362d3Smrg # Take the normal branch if the nm_file_list_spec branch 8166de2362d3Smrg # doesn't work or if tool conversion is not needed. 8167de2362d3Smrg case $nm_file_list_spec~$to_tool_file_cmd in 8168de2362d3Smrg *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) 8169de2362d3Smrg try_normal_branch=yes 8170de2362d3Smrg eval cmd=\"$cmd1\" 8171de2362d3Smrg func_len " $cmd" 8172de2362d3Smrg len=$func_len_result 8173de2362d3Smrg ;; 8174de2362d3Smrg *) 8175de2362d3Smrg try_normal_branch=no 8176de2362d3Smrg ;; 8177de2362d3Smrg esac 8178de2362d3Smrg if test "$try_normal_branch" = yes \ 8179de2362d3Smrg && { test "$len" -lt "$max_cmd_len" \ 8180de2362d3Smrg || test "$max_cmd_len" -le -1; } 8181de2362d3Smrg then 8182de2362d3Smrg func_show_eval "$cmd" 'exit $?' 8183de2362d3Smrg skipped_export=false 8184de2362d3Smrg elif test -n "$nm_file_list_spec"; then 8185de2362d3Smrg func_basename "$output" 8186de2362d3Smrg output_la=$func_basename_result 8187de2362d3Smrg save_libobjs=$libobjs 8188de2362d3Smrg save_output=$output 8189de2362d3Smrg output=${output_objdir}/${output_la}.nm 8190de2362d3Smrg func_to_tool_file "$output" 8191de2362d3Smrg libobjs=$nm_file_list_spec$func_to_tool_file_result 8192de2362d3Smrg func_append delfiles " $output" 8193de2362d3Smrg func_verbose "creating $NM input file list: $output" 8194de2362d3Smrg for obj in $save_libobjs; do 8195de2362d3Smrg func_to_tool_file "$obj" 8196de2362d3Smrg $ECHO "$func_to_tool_file_result" 8197de2362d3Smrg done > "$output" 8198de2362d3Smrg eval cmd=\"$cmd1\" 8199de2362d3Smrg func_show_eval "$cmd" 'exit $?' 8200de2362d3Smrg output=$save_output 8201de2362d3Smrg libobjs=$save_libobjs 8202de2362d3Smrg skipped_export=false 8203de2362d3Smrg else 8204de2362d3Smrg # The command line is too long to execute in one step. 8205de2362d3Smrg func_verbose "using reloadable object file for export list..." 8206de2362d3Smrg skipped_export=: 8207de2362d3Smrg # Break out early, otherwise skipped_export may be 8208de2362d3Smrg # set to false by a later but shorter cmd. 8209de2362d3Smrg break 8210de2362d3Smrg fi 8211de2362d3Smrg done 8212de2362d3Smrg IFS="$save_ifs" 8213de2362d3Smrg if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then 8214de2362d3Smrg func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' 8215de2362d3Smrg func_show_eval '$MV "${export_symbols}T" "$export_symbols"' 8216de2362d3Smrg fi 8217de2362d3Smrg fi 8218de2362d3Smrg fi 8219de2362d3Smrg 8220de2362d3Smrg if test -n "$export_symbols" && test -n "$include_expsyms"; then 8221de2362d3Smrg tmp_export_symbols="$export_symbols" 8222de2362d3Smrg test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" 8223de2362d3Smrg $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' 8224de2362d3Smrg fi 8225de2362d3Smrg 8226de2362d3Smrg if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then 8227de2362d3Smrg # The given exports_symbols file has to be filtered, so filter it. 8228de2362d3Smrg func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" 8229de2362d3Smrg # FIXME: $output_objdir/$libname.filter potentially contains lots of 8230de2362d3Smrg # 's' commands which not all seds can handle. GNU sed should be fine 8231de2362d3Smrg # though. Also, the filter scales superlinearly with the number of 8232de2362d3Smrg # global variables. join(1) would be nice here, but unfortunately 8233de2362d3Smrg # isn't a blessed tool. 8234de2362d3Smrg $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter 8235de2362d3Smrg func_append delfiles " $export_symbols $output_objdir/$libname.filter" 8236de2362d3Smrg export_symbols=$output_objdir/$libname.def 8237de2362d3Smrg $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols 8238de2362d3Smrg fi 8239de2362d3Smrg 8240de2362d3Smrg tmp_deplibs= 8241de2362d3Smrg for test_deplib in $deplibs; do 8242de2362d3Smrg case " $convenience " in 8243de2362d3Smrg *" $test_deplib "*) ;; 8244de2362d3Smrg *) 8245de2362d3Smrg func_append tmp_deplibs " $test_deplib" 8246de2362d3Smrg ;; 8247de2362d3Smrg esac 8248de2362d3Smrg done 8249de2362d3Smrg deplibs="$tmp_deplibs" 8250de2362d3Smrg 8251de2362d3Smrg if test -n "$convenience"; then 8252de2362d3Smrg if test -n "$whole_archive_flag_spec" && 8253de2362d3Smrg test "$compiler_needs_object" = yes && 8254de2362d3Smrg test -z "$libobjs"; then 8255de2362d3Smrg # extract the archives, so we have objects to list. 8256de2362d3Smrg # TODO: could optimize this to just extract one archive. 8257de2362d3Smrg whole_archive_flag_spec= 8258de2362d3Smrg fi 8259de2362d3Smrg if test -n "$whole_archive_flag_spec"; then 8260de2362d3Smrg save_libobjs=$libobjs 8261de2362d3Smrg eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 8262de2362d3Smrg test "X$libobjs" = "X " && libobjs= 8263de2362d3Smrg else 8264de2362d3Smrg gentop="$output_objdir/${outputname}x" 8265de2362d3Smrg func_append generated " $gentop" 8266de2362d3Smrg 8267de2362d3Smrg func_extract_archives $gentop $convenience 8268de2362d3Smrg func_append libobjs " $func_extract_archives_result" 8269de2362d3Smrg test "X$libobjs" = "X " && libobjs= 8270de2362d3Smrg fi 8271de2362d3Smrg fi 8272de2362d3Smrg 8273de2362d3Smrg if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then 8274de2362d3Smrg eval flag=\"$thread_safe_flag_spec\" 8275de2362d3Smrg func_append linker_flags " $flag" 8276de2362d3Smrg fi 8277de2362d3Smrg 8278de2362d3Smrg # Make a backup of the uninstalled library when relinking 8279de2362d3Smrg if test "$opt_mode" = relink; then 8280de2362d3Smrg $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? 8281de2362d3Smrg fi 8282de2362d3Smrg 8283de2362d3Smrg # Do each of the archive commands. 8284de2362d3Smrg if test "$module" = yes && test -n "$module_cmds" ; then 8285de2362d3Smrg if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 8286de2362d3Smrg eval test_cmds=\"$module_expsym_cmds\" 8287de2362d3Smrg cmds=$module_expsym_cmds 8288de2362d3Smrg else 8289de2362d3Smrg eval test_cmds=\"$module_cmds\" 8290de2362d3Smrg cmds=$module_cmds 8291de2362d3Smrg fi 8292de2362d3Smrg else 8293de2362d3Smrg if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 8294de2362d3Smrg eval test_cmds=\"$archive_expsym_cmds\" 8295de2362d3Smrg cmds=$archive_expsym_cmds 8296de2362d3Smrg else 8297de2362d3Smrg eval test_cmds=\"$archive_cmds\" 8298de2362d3Smrg cmds=$archive_cmds 8299de2362d3Smrg fi 8300de2362d3Smrg fi 8301de2362d3Smrg 8302de2362d3Smrg if test "X$skipped_export" != "X:" && 8303de2362d3Smrg func_len " $test_cmds" && 8304de2362d3Smrg len=$func_len_result && 8305de2362d3Smrg test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then 8306de2362d3Smrg : 8307de2362d3Smrg else 8308de2362d3Smrg # The command line is too long to link in one step, link piecewise 8309de2362d3Smrg # or, if using GNU ld and skipped_export is not :, use a linker 8310de2362d3Smrg # script. 8311de2362d3Smrg 8312de2362d3Smrg # Save the value of $output and $libobjs because we want to 8313de2362d3Smrg # use them later. If we have whole_archive_flag_spec, we 8314de2362d3Smrg # want to use save_libobjs as it was before 8315de2362d3Smrg # whole_archive_flag_spec was expanded, because we can't 8316de2362d3Smrg # assume the linker understands whole_archive_flag_spec. 8317de2362d3Smrg # This may have to be revisited, in case too many 8318de2362d3Smrg # convenience libraries get linked in and end up exceeding 8319de2362d3Smrg # the spec. 8320de2362d3Smrg if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then 8321de2362d3Smrg save_libobjs=$libobjs 8322de2362d3Smrg fi 8323de2362d3Smrg save_output=$output 8324de2362d3Smrg func_basename "$output" 8325de2362d3Smrg output_la=$func_basename_result 8326de2362d3Smrg 8327de2362d3Smrg # Clear the reloadable object creation command queue and 8328de2362d3Smrg # initialize k to one. 8329de2362d3Smrg test_cmds= 8330de2362d3Smrg concat_cmds= 8331de2362d3Smrg objlist= 8332de2362d3Smrg last_robj= 8333de2362d3Smrg k=1 8334de2362d3Smrg 8335de2362d3Smrg if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then 8336de2362d3Smrg output=${output_objdir}/${output_la}.lnkscript 8337de2362d3Smrg func_verbose "creating GNU ld script: $output" 8338de2362d3Smrg echo 'INPUT (' > $output 8339de2362d3Smrg for obj in $save_libobjs 8340de2362d3Smrg do 8341de2362d3Smrg func_to_tool_file "$obj" 8342de2362d3Smrg $ECHO "$func_to_tool_file_result" >> $output 8343de2362d3Smrg done 8344de2362d3Smrg echo ')' >> $output 8345de2362d3Smrg func_append delfiles " $output" 8346de2362d3Smrg func_to_tool_file "$output" 8347de2362d3Smrg output=$func_to_tool_file_result 8348de2362d3Smrg elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then 8349de2362d3Smrg output=${output_objdir}/${output_la}.lnk 8350de2362d3Smrg func_verbose "creating linker input file list: $output" 8351de2362d3Smrg : > $output 8352de2362d3Smrg set x $save_libobjs 8353de2362d3Smrg shift 8354de2362d3Smrg firstobj= 8355de2362d3Smrg if test "$compiler_needs_object" = yes; then 8356de2362d3Smrg firstobj="$1 " 8357de2362d3Smrg shift 8358de2362d3Smrg fi 8359de2362d3Smrg for obj 8360de2362d3Smrg do 8361de2362d3Smrg func_to_tool_file "$obj" 8362de2362d3Smrg $ECHO "$func_to_tool_file_result" >> $output 8363de2362d3Smrg done 8364de2362d3Smrg func_append delfiles " $output" 8365de2362d3Smrg func_to_tool_file "$output" 8366de2362d3Smrg output=$firstobj\"$file_list_spec$func_to_tool_file_result\" 8367de2362d3Smrg else 8368de2362d3Smrg if test -n "$save_libobjs"; then 8369de2362d3Smrg func_verbose "creating reloadable object files..." 8370de2362d3Smrg output=$output_objdir/$output_la-${k}.$objext 8371de2362d3Smrg eval test_cmds=\"$reload_cmds\" 8372de2362d3Smrg func_len " $test_cmds" 8373de2362d3Smrg len0=$func_len_result 8374de2362d3Smrg len=$len0 8375de2362d3Smrg 8376de2362d3Smrg # Loop over the list of objects to be linked. 8377de2362d3Smrg for obj in $save_libobjs 8378de2362d3Smrg do 8379de2362d3Smrg func_len " $obj" 8380de2362d3Smrg func_arith $len + $func_len_result 8381de2362d3Smrg len=$func_arith_result 8382de2362d3Smrg if test "X$objlist" = X || 8383de2362d3Smrg test "$len" -lt "$max_cmd_len"; then 8384de2362d3Smrg func_append objlist " $obj" 8385de2362d3Smrg else 8386de2362d3Smrg # The command $test_cmds is almost too long, add a 8387de2362d3Smrg # command to the queue. 8388de2362d3Smrg if test "$k" -eq 1 ; then 8389de2362d3Smrg # The first file doesn't have a previous command to add. 8390de2362d3Smrg reload_objs=$objlist 8391de2362d3Smrg eval concat_cmds=\"$reload_cmds\" 8392de2362d3Smrg else 8393de2362d3Smrg # All subsequent reloadable object files will link in 8394de2362d3Smrg # the last one created. 8395de2362d3Smrg reload_objs="$objlist $last_robj" 8396de2362d3Smrg eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" 8397de2362d3Smrg fi 8398de2362d3Smrg last_robj=$output_objdir/$output_la-${k}.$objext 8399de2362d3Smrg func_arith $k + 1 8400de2362d3Smrg k=$func_arith_result 8401de2362d3Smrg output=$output_objdir/$output_la-${k}.$objext 8402de2362d3Smrg objlist=" $obj" 8403de2362d3Smrg func_len " $last_robj" 8404de2362d3Smrg func_arith $len0 + $func_len_result 8405de2362d3Smrg len=$func_arith_result 8406de2362d3Smrg fi 8407de2362d3Smrg done 8408de2362d3Smrg # Handle the remaining objects by creating one last 8409de2362d3Smrg # reloadable object file. All subsequent reloadable object 8410de2362d3Smrg # files will link in the last one created. 8411de2362d3Smrg test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 8412de2362d3Smrg reload_objs="$objlist $last_robj" 8413de2362d3Smrg eval concat_cmds=\"\${concat_cmds}$reload_cmds\" 8414de2362d3Smrg if test -n "$last_robj"; then 8415de2362d3Smrg eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" 8416de2362d3Smrg fi 8417de2362d3Smrg func_append delfiles " $output" 8418de2362d3Smrg 8419de2362d3Smrg else 8420de2362d3Smrg output= 8421de2362d3Smrg fi 8422de2362d3Smrg 8423de2362d3Smrg if ${skipped_export-false}; then 8424de2362d3Smrg func_verbose "generating symbol list for \`$libname.la'" 8425de2362d3Smrg export_symbols="$output_objdir/$libname.exp" 8426de2362d3Smrg $opt_dry_run || $RM $export_symbols 8427de2362d3Smrg libobjs=$output 8428de2362d3Smrg # Append the command to create the export file. 8429de2362d3Smrg test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 8430de2362d3Smrg eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" 8431de2362d3Smrg if test -n "$last_robj"; then 8432de2362d3Smrg eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" 8433de2362d3Smrg fi 8434de2362d3Smrg fi 8435de2362d3Smrg 8436de2362d3Smrg test -n "$save_libobjs" && 8437de2362d3Smrg func_verbose "creating a temporary reloadable object file: $output" 8438de2362d3Smrg 8439de2362d3Smrg # Loop through the commands generated above and execute them. 8440de2362d3Smrg save_ifs="$IFS"; IFS='~' 8441de2362d3Smrg for cmd in $concat_cmds; do 8442de2362d3Smrg IFS="$save_ifs" 8443de2362d3Smrg $opt_silent || { 8444de2362d3Smrg func_quote_for_expand "$cmd" 8445de2362d3Smrg eval "func_echo $func_quote_for_expand_result" 8446de2362d3Smrg } 8447de2362d3Smrg $opt_dry_run || eval "$cmd" || { 8448de2362d3Smrg lt_exit=$? 8449de2362d3Smrg 8450de2362d3Smrg # Restore the uninstalled library and exit 8451de2362d3Smrg if test "$opt_mode" = relink; then 8452de2362d3Smrg ( cd "$output_objdir" && \ 8453de2362d3Smrg $RM "${realname}T" && \ 8454de2362d3Smrg $MV "${realname}U" "$realname" ) 8455de2362d3Smrg fi 8456de2362d3Smrg 8457de2362d3Smrg exit $lt_exit 8458de2362d3Smrg } 8459de2362d3Smrg done 8460de2362d3Smrg IFS="$save_ifs" 8461de2362d3Smrg 8462de2362d3Smrg if test -n "$export_symbols_regex" && ${skipped_export-false}; then 8463de2362d3Smrg func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' 8464de2362d3Smrg func_show_eval '$MV "${export_symbols}T" "$export_symbols"' 8465de2362d3Smrg fi 8466de2362d3Smrg fi 8467de2362d3Smrg 8468de2362d3Smrg if ${skipped_export-false}; then 8469de2362d3Smrg if test -n "$export_symbols" && test -n "$include_expsyms"; then 8470de2362d3Smrg tmp_export_symbols="$export_symbols" 8471de2362d3Smrg test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" 8472de2362d3Smrg $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' 8473de2362d3Smrg fi 8474de2362d3Smrg 8475de2362d3Smrg if test -n "$orig_export_symbols"; then 8476de2362d3Smrg # The given exports_symbols file has to be filtered, so filter it. 8477de2362d3Smrg func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" 8478de2362d3Smrg # FIXME: $output_objdir/$libname.filter potentially contains lots of 8479de2362d3Smrg # 's' commands which not all seds can handle. GNU sed should be fine 8480de2362d3Smrg # though. Also, the filter scales superlinearly with the number of 8481de2362d3Smrg # global variables. join(1) would be nice here, but unfortunately 8482de2362d3Smrg # isn't a blessed tool. 8483de2362d3Smrg $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter 8484de2362d3Smrg func_append delfiles " $export_symbols $output_objdir/$libname.filter" 8485de2362d3Smrg export_symbols=$output_objdir/$libname.def 8486de2362d3Smrg $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols 8487de2362d3Smrg fi 8488de2362d3Smrg fi 8489de2362d3Smrg 8490de2362d3Smrg libobjs=$output 8491de2362d3Smrg # Restore the value of output. 8492de2362d3Smrg output=$save_output 8493de2362d3Smrg 8494de2362d3Smrg if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then 8495de2362d3Smrg eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 8496de2362d3Smrg test "X$libobjs" = "X " && libobjs= 8497de2362d3Smrg fi 8498de2362d3Smrg # Expand the library linking commands again to reset the 8499de2362d3Smrg # value of $libobjs for piecewise linking. 8500de2362d3Smrg 8501de2362d3Smrg # Do each of the archive commands. 8502de2362d3Smrg if test "$module" = yes && test -n "$module_cmds" ; then 8503de2362d3Smrg if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 8504de2362d3Smrg cmds=$module_expsym_cmds 8505de2362d3Smrg else 8506de2362d3Smrg cmds=$module_cmds 8507de2362d3Smrg fi 8508de2362d3Smrg else 8509de2362d3Smrg if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 8510de2362d3Smrg cmds=$archive_expsym_cmds 8511de2362d3Smrg else 8512de2362d3Smrg cmds=$archive_cmds 8513de2362d3Smrg fi 8514de2362d3Smrg fi 8515de2362d3Smrg fi 8516de2362d3Smrg 8517de2362d3Smrg if test -n "$delfiles"; then 8518de2362d3Smrg # Append the command to remove temporary files to $cmds. 8519de2362d3Smrg eval cmds=\"\$cmds~\$RM $delfiles\" 8520de2362d3Smrg fi 8521de2362d3Smrg 8522de2362d3Smrg # Add any objects from preloaded convenience libraries 8523de2362d3Smrg if test -n "$dlprefiles"; then 8524de2362d3Smrg gentop="$output_objdir/${outputname}x" 8525de2362d3Smrg func_append generated " $gentop" 8526de2362d3Smrg 8527de2362d3Smrg func_extract_archives $gentop $dlprefiles 8528de2362d3Smrg func_append libobjs " $func_extract_archives_result" 8529de2362d3Smrg test "X$libobjs" = "X " && libobjs= 8530de2362d3Smrg fi 8531de2362d3Smrg 8532de2362d3Smrg save_ifs="$IFS"; IFS='~' 8533de2362d3Smrg for cmd in $cmds; do 8534de2362d3Smrg IFS="$save_ifs" 8535de2362d3Smrg eval cmd=\"$cmd\" 8536de2362d3Smrg $opt_silent || { 8537de2362d3Smrg func_quote_for_expand "$cmd" 8538de2362d3Smrg eval "func_echo $func_quote_for_expand_result" 8539de2362d3Smrg } 8540de2362d3Smrg $opt_dry_run || eval "$cmd" || { 8541de2362d3Smrg lt_exit=$? 8542de2362d3Smrg 8543de2362d3Smrg # Restore the uninstalled library and exit 8544de2362d3Smrg if test "$opt_mode" = relink; then 8545de2362d3Smrg ( cd "$output_objdir" && \ 8546de2362d3Smrg $RM "${realname}T" && \ 8547de2362d3Smrg $MV "${realname}U" "$realname" ) 8548de2362d3Smrg fi 8549de2362d3Smrg 8550de2362d3Smrg exit $lt_exit 8551de2362d3Smrg } 8552de2362d3Smrg done 8553de2362d3Smrg IFS="$save_ifs" 8554de2362d3Smrg 8555de2362d3Smrg # Restore the uninstalled library and exit 8556de2362d3Smrg if test "$opt_mode" = relink; then 8557de2362d3Smrg $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? 8558de2362d3Smrg 8559de2362d3Smrg if test -n "$convenience"; then 8560de2362d3Smrg if test -z "$whole_archive_flag_spec"; then 8561de2362d3Smrg func_show_eval '${RM}r "$gentop"' 8562de2362d3Smrg fi 8563de2362d3Smrg fi 8564de2362d3Smrg 8565de2362d3Smrg exit $EXIT_SUCCESS 8566de2362d3Smrg fi 8567de2362d3Smrg 8568de2362d3Smrg # Create links to the real library. 8569de2362d3Smrg for linkname in $linknames; do 8570de2362d3Smrg if test "$realname" != "$linkname"; then 8571de2362d3Smrg func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' 8572de2362d3Smrg fi 8573de2362d3Smrg done 8574de2362d3Smrg 8575de2362d3Smrg # If -module or -export-dynamic was specified, set the dlname. 8576de2362d3Smrg if test "$module" = yes || test "$export_dynamic" = yes; then 8577de2362d3Smrg # On all known operating systems, these are identical. 8578de2362d3Smrg dlname="$soname" 8579de2362d3Smrg fi 8580de2362d3Smrg fi 8581de2362d3Smrg ;; 8582de2362d3Smrg 8583de2362d3Smrg obj) 8584de2362d3Smrg if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 8585de2362d3Smrg func_warning "\`-dlopen' is ignored for objects" 8586de2362d3Smrg fi 8587de2362d3Smrg 8588de2362d3Smrg case " $deplibs" in 8589de2362d3Smrg *\ -l* | *\ -L*) 8590de2362d3Smrg func_warning "\`-l' and \`-L' are ignored for objects" ;; 8591de2362d3Smrg esac 8592de2362d3Smrg 8593de2362d3Smrg test -n "$rpath" && \ 8594de2362d3Smrg func_warning "\`-rpath' is ignored for objects" 8595de2362d3Smrg 8596de2362d3Smrg test -n "$xrpath" && \ 8597de2362d3Smrg func_warning "\`-R' is ignored for objects" 8598de2362d3Smrg 8599de2362d3Smrg test -n "$vinfo" && \ 8600de2362d3Smrg func_warning "\`-version-info' is ignored for objects" 8601de2362d3Smrg 8602de2362d3Smrg test -n "$release" && \ 8603de2362d3Smrg func_warning "\`-release' is ignored for objects" 8604de2362d3Smrg 8605de2362d3Smrg case $output in 8606de2362d3Smrg *.lo) 8607de2362d3Smrg test -n "$objs$old_deplibs" && \ 8608de2362d3Smrg func_fatal_error "cannot build library object \`$output' from non-libtool objects" 8609de2362d3Smrg 8610de2362d3Smrg libobj=$output 8611de2362d3Smrg func_lo2o "$libobj" 8612de2362d3Smrg obj=$func_lo2o_result 8613de2362d3Smrg ;; 8614de2362d3Smrg *) 8615de2362d3Smrg libobj= 8616de2362d3Smrg obj="$output" 8617de2362d3Smrg ;; 8618de2362d3Smrg esac 8619de2362d3Smrg 8620de2362d3Smrg # Delete the old objects. 8621de2362d3Smrg $opt_dry_run || $RM $obj $libobj 8622de2362d3Smrg 8623de2362d3Smrg # Objects from convenience libraries. This assumes 8624de2362d3Smrg # single-version convenience libraries. Whenever we create 8625de2362d3Smrg # different ones for PIC/non-PIC, this we'll have to duplicate 8626de2362d3Smrg # the extraction. 8627de2362d3Smrg reload_conv_objs= 8628de2362d3Smrg gentop= 8629de2362d3Smrg # reload_cmds runs $LD directly, so let us get rid of 8630de2362d3Smrg # -Wl from whole_archive_flag_spec and hope we can get by with 8631de2362d3Smrg # turning comma into space.. 8632de2362d3Smrg wl= 8633de2362d3Smrg 8634de2362d3Smrg if test -n "$convenience"; then 8635de2362d3Smrg if test -n "$whole_archive_flag_spec"; then 8636de2362d3Smrg eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" 8637de2362d3Smrg reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` 8638de2362d3Smrg else 8639de2362d3Smrg gentop="$output_objdir/${obj}x" 8640de2362d3Smrg func_append generated " $gentop" 8641de2362d3Smrg 8642de2362d3Smrg func_extract_archives $gentop $convenience 8643de2362d3Smrg reload_conv_objs="$reload_objs $func_extract_archives_result" 8644de2362d3Smrg fi 8645de2362d3Smrg fi 8646de2362d3Smrg 8647de2362d3Smrg # If we're not building shared, we need to use non_pic_objs 8648de2362d3Smrg test "$build_libtool_libs" != yes && libobjs="$non_pic_objects" 8649de2362d3Smrg 8650de2362d3Smrg # Create the old-style object. 8651de2362d3Smrg reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test 8652de2362d3Smrg 8653de2362d3Smrg output="$obj" 8654de2362d3Smrg func_execute_cmds "$reload_cmds" 'exit $?' 8655de2362d3Smrg 8656de2362d3Smrg # Exit if we aren't doing a library object file. 8657de2362d3Smrg if test -z "$libobj"; then 8658de2362d3Smrg if test -n "$gentop"; then 8659de2362d3Smrg func_show_eval '${RM}r "$gentop"' 8660de2362d3Smrg fi 8661de2362d3Smrg 8662de2362d3Smrg exit $EXIT_SUCCESS 8663de2362d3Smrg fi 8664de2362d3Smrg 8665de2362d3Smrg if test "$build_libtool_libs" != yes; then 8666de2362d3Smrg if test -n "$gentop"; then 8667de2362d3Smrg func_show_eval '${RM}r "$gentop"' 8668de2362d3Smrg fi 8669de2362d3Smrg 8670de2362d3Smrg # Create an invalid libtool object if no PIC, so that we don't 8671de2362d3Smrg # accidentally link it into a program. 8672de2362d3Smrg # $show "echo timestamp > $libobj" 8673de2362d3Smrg # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? 8674de2362d3Smrg exit $EXIT_SUCCESS 8675de2362d3Smrg fi 8676de2362d3Smrg 8677de2362d3Smrg if test -n "$pic_flag" || test "$pic_mode" != default; then 8678de2362d3Smrg # Only do commands if we really have different PIC objects. 8679de2362d3Smrg reload_objs="$libobjs $reload_conv_objs" 8680de2362d3Smrg output="$libobj" 8681de2362d3Smrg func_execute_cmds "$reload_cmds" 'exit $?' 8682de2362d3Smrg fi 8683de2362d3Smrg 8684de2362d3Smrg if test -n "$gentop"; then 8685de2362d3Smrg func_show_eval '${RM}r "$gentop"' 8686de2362d3Smrg fi 8687de2362d3Smrg 8688de2362d3Smrg exit $EXIT_SUCCESS 8689de2362d3Smrg ;; 8690de2362d3Smrg 8691de2362d3Smrg prog) 8692de2362d3Smrg case $host in 8693de2362d3Smrg *cygwin*) func_stripname '' '.exe' "$output" 8694de2362d3Smrg output=$func_stripname_result.exe;; 8695de2362d3Smrg esac 8696de2362d3Smrg test -n "$vinfo" && \ 8697de2362d3Smrg func_warning "\`-version-info' is ignored for programs" 8698de2362d3Smrg 8699de2362d3Smrg test -n "$release" && \ 8700de2362d3Smrg func_warning "\`-release' is ignored for programs" 8701de2362d3Smrg 8702de2362d3Smrg test "$preload" = yes \ 8703de2362d3Smrg && test "$dlopen_support" = unknown \ 8704de2362d3Smrg && test "$dlopen_self" = unknown \ 8705de2362d3Smrg && test "$dlopen_self_static" = unknown && \ 8706de2362d3Smrg func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." 8707de2362d3Smrg 8708de2362d3Smrg case $host in 8709de2362d3Smrg *-*-rhapsody* | *-*-darwin1.[012]) 8710de2362d3Smrg # On Rhapsody replace the C library is the System framework 8711de2362d3Smrg compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` 8712de2362d3Smrg finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` 8713de2362d3Smrg ;; 8714de2362d3Smrg esac 8715de2362d3Smrg 8716de2362d3Smrg case $host in 8717de2362d3Smrg *-*-darwin*) 8718de2362d3Smrg # Don't allow lazy linking, it breaks C++ global constructors 8719de2362d3Smrg # But is supposedly fixed on 10.4 or later (yay!). 8720de2362d3Smrg if test "$tagname" = CXX ; then 8721de2362d3Smrg case ${MACOSX_DEPLOYMENT_TARGET-10.0} in 8722de2362d3Smrg 10.[0123]) 8723de2362d3Smrg func_append compile_command " ${wl}-bind_at_load" 8724de2362d3Smrg func_append finalize_command " ${wl}-bind_at_load" 8725de2362d3Smrg ;; 8726de2362d3Smrg esac 8727de2362d3Smrg fi 8728de2362d3Smrg # Time to change all our "foo.ltframework" stuff back to "-framework foo" 8729de2362d3Smrg compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 8730de2362d3Smrg finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 8731de2362d3Smrg ;; 8732de2362d3Smrg esac 8733de2362d3Smrg 8734de2362d3Smrg 8735de2362d3Smrg # move library search paths that coincide with paths to not yet 8736de2362d3Smrg # installed libraries to the beginning of the library search list 8737de2362d3Smrg new_libs= 8738de2362d3Smrg for path in $notinst_path; do 8739de2362d3Smrg case " $new_libs " in 8740de2362d3Smrg *" -L$path/$objdir "*) ;; 8741de2362d3Smrg *) 8742de2362d3Smrg case " $compile_deplibs " in 8743de2362d3Smrg *" -L$path/$objdir "*) 8744de2362d3Smrg func_append new_libs " -L$path/$objdir" ;; 8745de2362d3Smrg esac 8746de2362d3Smrg ;; 8747de2362d3Smrg esac 8748de2362d3Smrg done 8749de2362d3Smrg for deplib in $compile_deplibs; do 8750de2362d3Smrg case $deplib in 8751de2362d3Smrg -L*) 8752de2362d3Smrg case " $new_libs " in 8753de2362d3Smrg *" $deplib "*) ;; 8754de2362d3Smrg *) func_append new_libs " $deplib" ;; 8755de2362d3Smrg esac 8756de2362d3Smrg ;; 8757de2362d3Smrg *) func_append new_libs " $deplib" ;; 8758de2362d3Smrg esac 8759de2362d3Smrg done 8760de2362d3Smrg compile_deplibs="$new_libs" 8761de2362d3Smrg 8762de2362d3Smrg 8763de2362d3Smrg func_append compile_command " $compile_deplibs" 8764de2362d3Smrg func_append finalize_command " $finalize_deplibs" 8765de2362d3Smrg 8766de2362d3Smrg if test -n "$rpath$xrpath"; then 8767de2362d3Smrg # If the user specified any rpath flags, then add them. 8768de2362d3Smrg for libdir in $rpath $xrpath; do 8769de2362d3Smrg # This is the magic to use -rpath. 8770de2362d3Smrg case "$finalize_rpath " in 8771de2362d3Smrg *" $libdir "*) ;; 8772de2362d3Smrg *) func_append finalize_rpath " $libdir" ;; 8773de2362d3Smrg esac 8774de2362d3Smrg done 8775de2362d3Smrg fi 8776de2362d3Smrg 8777de2362d3Smrg # Now hardcode the library paths 8778de2362d3Smrg rpath= 8779de2362d3Smrg hardcode_libdirs= 8780de2362d3Smrg for libdir in $compile_rpath $finalize_rpath; do 8781de2362d3Smrg if test -n "$hardcode_libdir_flag_spec"; then 8782de2362d3Smrg if test -n "$hardcode_libdir_separator"; then 8783de2362d3Smrg if test -z "$hardcode_libdirs"; then 8784de2362d3Smrg hardcode_libdirs="$libdir" 8785de2362d3Smrg else 8786de2362d3Smrg # Just accumulate the unique libdirs. 8787de2362d3Smrg case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 8788de2362d3Smrg *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 8789de2362d3Smrg ;; 8790de2362d3Smrg *) 8791de2362d3Smrg func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" 8792de2362d3Smrg ;; 8793de2362d3Smrg esac 8794de2362d3Smrg fi 8795de2362d3Smrg else 8796de2362d3Smrg eval flag=\"$hardcode_libdir_flag_spec\" 8797de2362d3Smrg func_append rpath " $flag" 8798de2362d3Smrg fi 8799de2362d3Smrg elif test -n "$runpath_var"; then 8800de2362d3Smrg case "$perm_rpath " in 8801de2362d3Smrg *" $libdir "*) ;; 8802de2362d3Smrg *) func_append perm_rpath " $libdir" ;; 8803de2362d3Smrg esac 8804de2362d3Smrg fi 8805de2362d3Smrg case $host in 8806de2362d3Smrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 8807de2362d3Smrg testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` 8808de2362d3Smrg case :$dllsearchpath: in 8809de2362d3Smrg *":$libdir:"*) ;; 8810de2362d3Smrg ::) dllsearchpath=$libdir;; 8811de2362d3Smrg *) func_append dllsearchpath ":$libdir";; 8812de2362d3Smrg esac 8813de2362d3Smrg case :$dllsearchpath: in 8814de2362d3Smrg *":$testbindir:"*) ;; 8815de2362d3Smrg ::) dllsearchpath=$testbindir;; 8816de2362d3Smrg *) func_append dllsearchpath ":$testbindir";; 8817de2362d3Smrg esac 8818de2362d3Smrg ;; 8819de2362d3Smrg esac 8820de2362d3Smrg done 8821de2362d3Smrg # Substitute the hardcoded libdirs into the rpath. 8822de2362d3Smrg if test -n "$hardcode_libdir_separator" && 8823de2362d3Smrg test -n "$hardcode_libdirs"; then 8824de2362d3Smrg libdir="$hardcode_libdirs" 8825de2362d3Smrg eval rpath=\" $hardcode_libdir_flag_spec\" 8826de2362d3Smrg fi 8827de2362d3Smrg compile_rpath="$rpath" 8828de2362d3Smrg 8829de2362d3Smrg rpath= 8830de2362d3Smrg hardcode_libdirs= 8831de2362d3Smrg for libdir in $finalize_rpath; do 8832de2362d3Smrg if test -n "$hardcode_libdir_flag_spec"; then 8833de2362d3Smrg if test -n "$hardcode_libdir_separator"; then 8834de2362d3Smrg if test -z "$hardcode_libdirs"; then 8835de2362d3Smrg hardcode_libdirs="$libdir" 8836de2362d3Smrg else 8837de2362d3Smrg # Just accumulate the unique libdirs. 8838de2362d3Smrg case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 8839de2362d3Smrg *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 8840de2362d3Smrg ;; 8841de2362d3Smrg *) 8842de2362d3Smrg func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" 8843de2362d3Smrg ;; 8844de2362d3Smrg esac 8845de2362d3Smrg fi 8846de2362d3Smrg else 8847de2362d3Smrg eval flag=\"$hardcode_libdir_flag_spec\" 8848de2362d3Smrg func_append rpath " $flag" 8849de2362d3Smrg fi 8850de2362d3Smrg elif test -n "$runpath_var"; then 8851de2362d3Smrg case "$finalize_perm_rpath " in 8852de2362d3Smrg *" $libdir "*) ;; 8853de2362d3Smrg *) func_append finalize_perm_rpath " $libdir" ;; 8854de2362d3Smrg esac 8855de2362d3Smrg fi 8856de2362d3Smrg done 8857de2362d3Smrg # Substitute the hardcoded libdirs into the rpath. 8858de2362d3Smrg if test -n "$hardcode_libdir_separator" && 8859de2362d3Smrg test -n "$hardcode_libdirs"; then 8860de2362d3Smrg libdir="$hardcode_libdirs" 8861de2362d3Smrg eval rpath=\" $hardcode_libdir_flag_spec\" 8862de2362d3Smrg fi 8863de2362d3Smrg finalize_rpath="$rpath" 8864de2362d3Smrg 8865de2362d3Smrg if test -n "$libobjs" && test "$build_old_libs" = yes; then 8866de2362d3Smrg # Transform all the library objects into standard objects. 8867de2362d3Smrg compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` 8868de2362d3Smrg finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` 8869de2362d3Smrg fi 8870de2362d3Smrg 8871de2362d3Smrg func_generate_dlsyms "$outputname" "@PROGRAM@" "no" 8872de2362d3Smrg 8873de2362d3Smrg # template prelinking step 8874de2362d3Smrg if test -n "$prelink_cmds"; then 8875de2362d3Smrg func_execute_cmds "$prelink_cmds" 'exit $?' 8876de2362d3Smrg fi 8877de2362d3Smrg 8878de2362d3Smrg wrappers_required=yes 8879de2362d3Smrg case $host in 8880de2362d3Smrg *cegcc* | *mingw32ce*) 8881de2362d3Smrg # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. 8882de2362d3Smrg wrappers_required=no 8883de2362d3Smrg ;; 8884de2362d3Smrg *cygwin* | *mingw* ) 8885de2362d3Smrg if test "$build_libtool_libs" != yes; then 8886de2362d3Smrg wrappers_required=no 8887de2362d3Smrg fi 8888de2362d3Smrg ;; 8889de2362d3Smrg *) 8890de2362d3Smrg if test "$need_relink" = no || test "$build_libtool_libs" != yes; then 8891de2362d3Smrg wrappers_required=no 8892de2362d3Smrg fi 8893de2362d3Smrg ;; 8894de2362d3Smrg esac 8895de2362d3Smrg if test "$wrappers_required" = no; then 8896de2362d3Smrg # Replace the output file specification. 8897de2362d3Smrg compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` 8898de2362d3Smrg link_command="$compile_command$compile_rpath" 8899de2362d3Smrg 8900de2362d3Smrg # We have no uninstalled library dependencies, so finalize right now. 8901de2362d3Smrg exit_status=0 8902de2362d3Smrg func_show_eval "$link_command" 'exit_status=$?' 8903de2362d3Smrg 8904de2362d3Smrg if test -n "$postlink_cmds"; then 8905de2362d3Smrg func_to_tool_file "$output" 8906de2362d3Smrg postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` 8907de2362d3Smrg func_execute_cmds "$postlink_cmds" 'exit $?' 8908de2362d3Smrg fi 8909de2362d3Smrg 8910de2362d3Smrg # Delete the generated files. 8911de2362d3Smrg if test -f "$output_objdir/${outputname}S.${objext}"; then 8912de2362d3Smrg func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' 8913de2362d3Smrg fi 8914de2362d3Smrg 8915de2362d3Smrg exit $exit_status 8916de2362d3Smrg fi 8917de2362d3Smrg 8918de2362d3Smrg if test -n "$compile_shlibpath$finalize_shlibpath"; then 8919de2362d3Smrg compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" 8920de2362d3Smrg fi 8921de2362d3Smrg if test -n "$finalize_shlibpath"; then 8922de2362d3Smrg finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" 8923de2362d3Smrg fi 8924de2362d3Smrg 8925de2362d3Smrg compile_var= 8926de2362d3Smrg finalize_var= 8927de2362d3Smrg if test -n "$runpath_var"; then 8928de2362d3Smrg if test -n "$perm_rpath"; then 8929de2362d3Smrg # We should set the runpath_var. 8930de2362d3Smrg rpath= 8931de2362d3Smrg for dir in $perm_rpath; do 8932de2362d3Smrg func_append rpath "$dir:" 8933de2362d3Smrg done 8934de2362d3Smrg compile_var="$runpath_var=\"$rpath\$$runpath_var\" " 8935de2362d3Smrg fi 8936de2362d3Smrg if test -n "$finalize_perm_rpath"; then 8937de2362d3Smrg # We should set the runpath_var. 8938de2362d3Smrg rpath= 8939de2362d3Smrg for dir in $finalize_perm_rpath; do 8940de2362d3Smrg func_append rpath "$dir:" 8941de2362d3Smrg done 8942de2362d3Smrg finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " 8943de2362d3Smrg fi 8944de2362d3Smrg fi 8945de2362d3Smrg 8946de2362d3Smrg if test "$no_install" = yes; then 8947de2362d3Smrg # We don't need to create a wrapper script. 8948de2362d3Smrg link_command="$compile_var$compile_command$compile_rpath" 8949de2362d3Smrg # Replace the output file specification. 8950de2362d3Smrg link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` 8951de2362d3Smrg # Delete the old output file. 8952de2362d3Smrg $opt_dry_run || $RM $output 8953de2362d3Smrg # Link the executable and exit 8954de2362d3Smrg func_show_eval "$link_command" 'exit $?' 8955de2362d3Smrg 8956de2362d3Smrg if test -n "$postlink_cmds"; then 8957de2362d3Smrg func_to_tool_file "$output" 8958de2362d3Smrg postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` 8959de2362d3Smrg func_execute_cmds "$postlink_cmds" 'exit $?' 8960de2362d3Smrg fi 8961de2362d3Smrg 8962de2362d3Smrg exit $EXIT_SUCCESS 8963de2362d3Smrg fi 8964de2362d3Smrg 8965de2362d3Smrg if test "$hardcode_action" = relink; then 8966de2362d3Smrg # Fast installation is not supported 8967de2362d3Smrg link_command="$compile_var$compile_command$compile_rpath" 8968de2362d3Smrg relink_command="$finalize_var$finalize_command$finalize_rpath" 8969de2362d3Smrg 8970de2362d3Smrg func_warning "this platform does not like uninstalled shared libraries" 8971de2362d3Smrg func_warning "\`$output' will be relinked during installation" 8972de2362d3Smrg else 8973de2362d3Smrg if test "$fast_install" != no; then 8974de2362d3Smrg link_command="$finalize_var$compile_command$finalize_rpath" 8975de2362d3Smrg if test "$fast_install" = yes; then 8976de2362d3Smrg relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` 8977de2362d3Smrg else 8978de2362d3Smrg # fast_install is set to needless 8979de2362d3Smrg relink_command= 8980de2362d3Smrg fi 8981de2362d3Smrg else 8982de2362d3Smrg link_command="$compile_var$compile_command$compile_rpath" 8983de2362d3Smrg relink_command="$finalize_var$finalize_command$finalize_rpath" 8984de2362d3Smrg fi 8985de2362d3Smrg fi 8986de2362d3Smrg 8987de2362d3Smrg # Replace the output file specification. 8988de2362d3Smrg link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` 8989de2362d3Smrg 8990de2362d3Smrg # Delete the old output files. 8991de2362d3Smrg $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname 8992de2362d3Smrg 8993de2362d3Smrg func_show_eval "$link_command" 'exit $?' 8994de2362d3Smrg 8995de2362d3Smrg if test -n "$postlink_cmds"; then 8996de2362d3Smrg func_to_tool_file "$output_objdir/$outputname" 8997de2362d3Smrg postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` 8998de2362d3Smrg func_execute_cmds "$postlink_cmds" 'exit $?' 8999de2362d3Smrg fi 9000de2362d3Smrg 9001de2362d3Smrg # Now create the wrapper script. 9002de2362d3Smrg func_verbose "creating $output" 9003de2362d3Smrg 9004de2362d3Smrg # Quote the relink command for shipping. 9005de2362d3Smrg if test -n "$relink_command"; then 9006de2362d3Smrg # Preserve any variables that may affect compiler behavior 9007de2362d3Smrg for var in $variables_saved_for_relink; do 9008de2362d3Smrg if eval test -z \"\${$var+set}\"; then 9009de2362d3Smrg relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" 9010de2362d3Smrg elif eval var_value=\$$var; test -z "$var_value"; then 9011de2362d3Smrg relink_command="$var=; export $var; $relink_command" 9012de2362d3Smrg else 9013de2362d3Smrg func_quote_for_eval "$var_value" 9014de2362d3Smrg relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" 9015de2362d3Smrg fi 9016de2362d3Smrg done 9017de2362d3Smrg relink_command="(cd `pwd`; $relink_command)" 9018de2362d3Smrg relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` 9019de2362d3Smrg fi 9020de2362d3Smrg 9021de2362d3Smrg # Only actually do things if not in dry run mode. 9022de2362d3Smrg $opt_dry_run || { 9023de2362d3Smrg # win32 will think the script is a binary if it has 9024de2362d3Smrg # a .exe suffix, so we strip it off here. 9025de2362d3Smrg case $output in 9026de2362d3Smrg *.exe) func_stripname '' '.exe' "$output" 9027de2362d3Smrg output=$func_stripname_result ;; 9028de2362d3Smrg esac 9029de2362d3Smrg # test for cygwin because mv fails w/o .exe extensions 9030de2362d3Smrg case $host in 9031de2362d3Smrg *cygwin*) 9032de2362d3Smrg exeext=.exe 9033de2362d3Smrg func_stripname '' '.exe' "$outputname" 9034de2362d3Smrg outputname=$func_stripname_result ;; 9035de2362d3Smrg *) exeext= ;; 9036de2362d3Smrg esac 9037de2362d3Smrg case $host in 9038de2362d3Smrg *cygwin* | *mingw* ) 9039de2362d3Smrg func_dirname_and_basename "$output" "" "." 9040de2362d3Smrg output_name=$func_basename_result 9041de2362d3Smrg output_path=$func_dirname_result 9042de2362d3Smrg cwrappersource="$output_path/$objdir/lt-$output_name.c" 9043de2362d3Smrg cwrapper="$output_path/$output_name.exe" 9044de2362d3Smrg $RM $cwrappersource $cwrapper 9045de2362d3Smrg trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 9046de2362d3Smrg 9047de2362d3Smrg func_emit_cwrapperexe_src > $cwrappersource 9048de2362d3Smrg 9049de2362d3Smrg # The wrapper executable is built using the $host compiler, 9050de2362d3Smrg # because it contains $host paths and files. If cross- 9051de2362d3Smrg # compiling, it, like the target executable, must be 9052de2362d3Smrg # executed on the $host or under an emulation environment. 9053de2362d3Smrg $opt_dry_run || { 9054de2362d3Smrg $LTCC $LTCFLAGS -o $cwrapper $cwrappersource 9055de2362d3Smrg $STRIP $cwrapper 9056de2362d3Smrg } 9057de2362d3Smrg 9058de2362d3Smrg # Now, create the wrapper script for func_source use: 9059de2362d3Smrg func_ltwrapper_scriptname $cwrapper 9060de2362d3Smrg $RM $func_ltwrapper_scriptname_result 9061de2362d3Smrg trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 9062de2362d3Smrg $opt_dry_run || { 9063de2362d3Smrg # note: this script will not be executed, so do not chmod. 9064de2362d3Smrg if test "x$build" = "x$host" ; then 9065de2362d3Smrg $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result 9066de2362d3Smrg else 9067de2362d3Smrg func_emit_wrapper no > $func_ltwrapper_scriptname_result 9068de2362d3Smrg fi 9069de2362d3Smrg } 9070de2362d3Smrg ;; 9071de2362d3Smrg * ) 9072de2362d3Smrg $RM $output 9073de2362d3Smrg trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 9074de2362d3Smrg 9075de2362d3Smrg func_emit_wrapper no > $output 9076de2362d3Smrg chmod +x $output 9077de2362d3Smrg ;; 9078de2362d3Smrg esac 9079de2362d3Smrg } 9080de2362d3Smrg exit $EXIT_SUCCESS 9081de2362d3Smrg ;; 9082de2362d3Smrg esac 9083de2362d3Smrg 9084de2362d3Smrg # See if we need to build an old-fashioned archive. 9085de2362d3Smrg for oldlib in $oldlibs; do 9086de2362d3Smrg 9087de2362d3Smrg if test "$build_libtool_libs" = convenience; then 9088de2362d3Smrg oldobjs="$libobjs_save $symfileobj" 9089de2362d3Smrg addlibs="$convenience" 9090de2362d3Smrg build_libtool_libs=no 9091de2362d3Smrg else 9092de2362d3Smrg if test "$build_libtool_libs" = module; then 9093de2362d3Smrg oldobjs="$libobjs_save" 9094de2362d3Smrg build_libtool_libs=no 9095de2362d3Smrg else 9096de2362d3Smrg oldobjs="$old_deplibs $non_pic_objects" 9097de2362d3Smrg if test "$preload" = yes && test -f "$symfileobj"; then 9098de2362d3Smrg func_append oldobjs " $symfileobj" 9099de2362d3Smrg fi 9100de2362d3Smrg fi 9101de2362d3Smrg addlibs="$old_convenience" 9102de2362d3Smrg fi 9103de2362d3Smrg 9104de2362d3Smrg if test -n "$addlibs"; then 9105de2362d3Smrg gentop="$output_objdir/${outputname}x" 9106de2362d3Smrg func_append generated " $gentop" 9107de2362d3Smrg 9108de2362d3Smrg func_extract_archives $gentop $addlibs 9109de2362d3Smrg func_append oldobjs " $func_extract_archives_result" 9110de2362d3Smrg fi 9111de2362d3Smrg 9112de2362d3Smrg # Do each command in the archive commands. 9113de2362d3Smrg if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then 9114de2362d3Smrg cmds=$old_archive_from_new_cmds 9115de2362d3Smrg else 9116de2362d3Smrg 9117de2362d3Smrg # Add any objects from preloaded convenience libraries 9118de2362d3Smrg if test -n "$dlprefiles"; then 9119de2362d3Smrg gentop="$output_objdir/${outputname}x" 9120de2362d3Smrg func_append generated " $gentop" 9121de2362d3Smrg 9122de2362d3Smrg func_extract_archives $gentop $dlprefiles 9123de2362d3Smrg func_append oldobjs " $func_extract_archives_result" 9124de2362d3Smrg fi 9125de2362d3Smrg 9126de2362d3Smrg # POSIX demands no paths to be encoded in archives. We have 9127de2362d3Smrg # to avoid creating archives with duplicate basenames if we 9128de2362d3Smrg # might have to extract them afterwards, e.g., when creating a 9129de2362d3Smrg # static archive out of a convenience library, or when linking 9130de2362d3Smrg # the entirety of a libtool archive into another (currently 9131de2362d3Smrg # not supported by libtool). 9132de2362d3Smrg if (for obj in $oldobjs 9133de2362d3Smrg do 9134de2362d3Smrg func_basename "$obj" 9135de2362d3Smrg $ECHO "$func_basename_result" 9136de2362d3Smrg done | sort | sort -uc >/dev/null 2>&1); then 9137de2362d3Smrg : 9138de2362d3Smrg else 9139de2362d3Smrg echo "copying selected object files to avoid basename conflicts..." 9140de2362d3Smrg gentop="$output_objdir/${outputname}x" 9141de2362d3Smrg func_append generated " $gentop" 9142de2362d3Smrg func_mkdir_p "$gentop" 9143de2362d3Smrg save_oldobjs=$oldobjs 9144de2362d3Smrg oldobjs= 9145de2362d3Smrg counter=1 9146de2362d3Smrg for obj in $save_oldobjs 9147de2362d3Smrg do 9148de2362d3Smrg func_basename "$obj" 9149de2362d3Smrg objbase="$func_basename_result" 9150de2362d3Smrg case " $oldobjs " in 9151de2362d3Smrg " ") oldobjs=$obj ;; 9152de2362d3Smrg *[\ /]"$objbase "*) 9153de2362d3Smrg while :; do 9154de2362d3Smrg # Make sure we don't pick an alternate name that also 9155de2362d3Smrg # overlaps. 9156de2362d3Smrg newobj=lt$counter-$objbase 9157de2362d3Smrg func_arith $counter + 1 9158de2362d3Smrg counter=$func_arith_result 9159de2362d3Smrg case " $oldobjs " in 9160de2362d3Smrg *[\ /]"$newobj "*) ;; 9161de2362d3Smrg *) if test ! -f "$gentop/$newobj"; then break; fi ;; 9162de2362d3Smrg esac 9163de2362d3Smrg done 9164de2362d3Smrg func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" 9165de2362d3Smrg func_append oldobjs " $gentop/$newobj" 9166de2362d3Smrg ;; 9167de2362d3Smrg *) func_append oldobjs " $obj" ;; 9168de2362d3Smrg esac 9169de2362d3Smrg done 9170de2362d3Smrg fi 9171de2362d3Smrg func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 9172de2362d3Smrg tool_oldlib=$func_to_tool_file_result 9173de2362d3Smrg eval cmds=\"$old_archive_cmds\" 9174de2362d3Smrg 9175de2362d3Smrg func_len " $cmds" 9176de2362d3Smrg len=$func_len_result 9177de2362d3Smrg if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then 9178de2362d3Smrg cmds=$old_archive_cmds 9179de2362d3Smrg elif test -n "$archiver_list_spec"; then 9180de2362d3Smrg func_verbose "using command file archive linking..." 9181de2362d3Smrg for obj in $oldobjs 9182de2362d3Smrg do 9183de2362d3Smrg func_to_tool_file "$obj" 9184de2362d3Smrg $ECHO "$func_to_tool_file_result" 9185de2362d3Smrg done > $output_objdir/$libname.libcmd 9186de2362d3Smrg func_to_tool_file "$output_objdir/$libname.libcmd" 9187de2362d3Smrg oldobjs=" $archiver_list_spec$func_to_tool_file_result" 9188de2362d3Smrg cmds=$old_archive_cmds 9189de2362d3Smrg else 9190de2362d3Smrg # the command line is too long to link in one step, link in parts 9191de2362d3Smrg func_verbose "using piecewise archive linking..." 9192de2362d3Smrg save_RANLIB=$RANLIB 9193de2362d3Smrg RANLIB=: 9194de2362d3Smrg objlist= 9195de2362d3Smrg concat_cmds= 9196de2362d3Smrg save_oldobjs=$oldobjs 9197de2362d3Smrg oldobjs= 9198de2362d3Smrg # Is there a better way of finding the last object in the list? 9199de2362d3Smrg for obj in $save_oldobjs 9200de2362d3Smrg do 9201de2362d3Smrg last_oldobj=$obj 9202de2362d3Smrg done 9203de2362d3Smrg eval test_cmds=\"$old_archive_cmds\" 9204de2362d3Smrg func_len " $test_cmds" 9205de2362d3Smrg len0=$func_len_result 9206de2362d3Smrg len=$len0 9207de2362d3Smrg for obj in $save_oldobjs 9208de2362d3Smrg do 9209de2362d3Smrg func_len " $obj" 9210de2362d3Smrg func_arith $len + $func_len_result 9211de2362d3Smrg len=$func_arith_result 9212de2362d3Smrg func_append objlist " $obj" 9213de2362d3Smrg if test "$len" -lt "$max_cmd_len"; then 9214de2362d3Smrg : 9215de2362d3Smrg else 9216de2362d3Smrg # the above command should be used before it gets too long 9217de2362d3Smrg oldobjs=$objlist 9218de2362d3Smrg if test "$obj" = "$last_oldobj" ; then 9219de2362d3Smrg RANLIB=$save_RANLIB 9220de2362d3Smrg fi 9221de2362d3Smrg test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 9222de2362d3Smrg eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" 9223de2362d3Smrg objlist= 9224de2362d3Smrg len=$len0 9225de2362d3Smrg fi 9226de2362d3Smrg done 9227de2362d3Smrg RANLIB=$save_RANLIB 9228de2362d3Smrg oldobjs=$objlist 9229de2362d3Smrg if test "X$oldobjs" = "X" ; then 9230de2362d3Smrg eval cmds=\"\$concat_cmds\" 9231de2362d3Smrg else 9232de2362d3Smrg eval cmds=\"\$concat_cmds~\$old_archive_cmds\" 9233de2362d3Smrg fi 9234de2362d3Smrg fi 9235de2362d3Smrg fi 9236de2362d3Smrg func_execute_cmds "$cmds" 'exit $?' 9237de2362d3Smrg done 9238de2362d3Smrg 9239de2362d3Smrg test -n "$generated" && \ 9240de2362d3Smrg func_show_eval "${RM}r$generated" 9241de2362d3Smrg 9242de2362d3Smrg # Now create the libtool archive. 9243de2362d3Smrg case $output in 9244de2362d3Smrg *.la) 9245de2362d3Smrg old_library= 9246de2362d3Smrg test "$build_old_libs" = yes && old_library="$libname.$libext" 9247de2362d3Smrg func_verbose "creating $output" 9248de2362d3Smrg 9249de2362d3Smrg # Preserve any variables that may affect compiler behavior 9250de2362d3Smrg for var in $variables_saved_for_relink; do 9251de2362d3Smrg if eval test -z \"\${$var+set}\"; then 9252de2362d3Smrg relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" 9253de2362d3Smrg elif eval var_value=\$$var; test -z "$var_value"; then 9254de2362d3Smrg relink_command="$var=; export $var; $relink_command" 9255de2362d3Smrg else 9256de2362d3Smrg func_quote_for_eval "$var_value" 9257de2362d3Smrg relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" 9258de2362d3Smrg fi 9259de2362d3Smrg done 9260de2362d3Smrg # Quote the link command for shipping. 9261de2362d3Smrg relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" 9262de2362d3Smrg relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` 9263de2362d3Smrg if test "$hardcode_automatic" = yes ; then 9264de2362d3Smrg relink_command= 9265de2362d3Smrg fi 9266de2362d3Smrg 9267de2362d3Smrg # Only create the output if not a dry run. 9268de2362d3Smrg $opt_dry_run || { 9269de2362d3Smrg for installed in no yes; do 9270de2362d3Smrg if test "$installed" = yes; then 9271de2362d3Smrg if test -z "$install_libdir"; then 9272de2362d3Smrg break 9273de2362d3Smrg fi 9274de2362d3Smrg output="$output_objdir/$outputname"i 9275de2362d3Smrg # Replace all uninstalled libtool libraries with the installed ones 9276de2362d3Smrg newdependency_libs= 9277de2362d3Smrg for deplib in $dependency_libs; do 9278de2362d3Smrg case $deplib in 9279de2362d3Smrg *.la) 9280de2362d3Smrg func_basename "$deplib" 9281de2362d3Smrg name="$func_basename_result" 9282de2362d3Smrg func_resolve_sysroot "$deplib" 9283de2362d3Smrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` 9284de2362d3Smrg test -z "$libdir" && \ 9285de2362d3Smrg func_fatal_error "\`$deplib' is not a valid libtool archive" 9286de2362d3Smrg func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" 9287de2362d3Smrg ;; 9288de2362d3Smrg -L*) 9289de2362d3Smrg func_stripname -L '' "$deplib" 9290de2362d3Smrg func_replace_sysroot "$func_stripname_result" 9291de2362d3Smrg func_append newdependency_libs " -L$func_replace_sysroot_result" 9292de2362d3Smrg ;; 9293de2362d3Smrg -R*) 9294de2362d3Smrg func_stripname -R '' "$deplib" 9295de2362d3Smrg func_replace_sysroot "$func_stripname_result" 9296de2362d3Smrg func_append newdependency_libs " -R$func_replace_sysroot_result" 9297de2362d3Smrg ;; 9298de2362d3Smrg *) func_append newdependency_libs " $deplib" ;; 9299de2362d3Smrg esac 9300de2362d3Smrg done 9301de2362d3Smrg dependency_libs="$newdependency_libs" 9302de2362d3Smrg newdlfiles= 9303de2362d3Smrg 9304de2362d3Smrg for lib in $dlfiles; do 9305de2362d3Smrg case $lib in 9306de2362d3Smrg *.la) 9307de2362d3Smrg func_basename "$lib" 9308de2362d3Smrg name="$func_basename_result" 9309de2362d3Smrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 9310de2362d3Smrg test -z "$libdir" && \ 9311de2362d3Smrg func_fatal_error "\`$lib' is not a valid libtool archive" 9312de2362d3Smrg func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" 9313de2362d3Smrg ;; 9314de2362d3Smrg *) func_append newdlfiles " $lib" ;; 9315de2362d3Smrg esac 9316de2362d3Smrg done 9317de2362d3Smrg dlfiles="$newdlfiles" 9318de2362d3Smrg newdlprefiles= 9319de2362d3Smrg for lib in $dlprefiles; do 9320de2362d3Smrg case $lib in 9321de2362d3Smrg *.la) 9322de2362d3Smrg # Only pass preopened files to the pseudo-archive (for 9323de2362d3Smrg # eventual linking with the app. that links it) if we 9324de2362d3Smrg # didn't already link the preopened objects directly into 9325de2362d3Smrg # the library: 9326de2362d3Smrg func_basename "$lib" 9327de2362d3Smrg name="$func_basename_result" 9328de2362d3Smrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 9329de2362d3Smrg test -z "$libdir" && \ 9330de2362d3Smrg func_fatal_error "\`$lib' is not a valid libtool archive" 9331de2362d3Smrg func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" 9332de2362d3Smrg ;; 9333de2362d3Smrg esac 9334de2362d3Smrg done 9335de2362d3Smrg dlprefiles="$newdlprefiles" 9336de2362d3Smrg else 9337de2362d3Smrg newdlfiles= 9338de2362d3Smrg for lib in $dlfiles; do 9339de2362d3Smrg case $lib in 9340de2362d3Smrg [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 9341de2362d3Smrg *) abs=`pwd`"/$lib" ;; 9342de2362d3Smrg esac 9343de2362d3Smrg func_append newdlfiles " $abs" 9344de2362d3Smrg done 9345de2362d3Smrg dlfiles="$newdlfiles" 9346de2362d3Smrg newdlprefiles= 9347de2362d3Smrg for lib in $dlprefiles; do 9348de2362d3Smrg case $lib in 9349de2362d3Smrg [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 9350de2362d3Smrg *) abs=`pwd`"/$lib" ;; 9351de2362d3Smrg esac 9352de2362d3Smrg func_append newdlprefiles " $abs" 9353de2362d3Smrg done 9354de2362d3Smrg dlprefiles="$newdlprefiles" 9355de2362d3Smrg fi 9356de2362d3Smrg $RM $output 9357de2362d3Smrg # place dlname in correct position for cygwin 9358de2362d3Smrg # In fact, it would be nice if we could use this code for all target 9359de2362d3Smrg # systems that can't hard-code library paths into their executables 9360de2362d3Smrg # and that have no shared library path variable independent of PATH, 9361de2362d3Smrg # but it turns out we can't easily determine that from inspecting 9362de2362d3Smrg # libtool variables, so we have to hard-code the OSs to which it 9363de2362d3Smrg # applies here; at the moment, that means platforms that use the PE 9364de2362d3Smrg # object format with DLL files. See the long comment at the top of 9365de2362d3Smrg # tests/bindir.at for full details. 9366de2362d3Smrg tdlname=$dlname 9367de2362d3Smrg case $host,$output,$installed,$module,$dlname in 9368de2362d3Smrg *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) 9369de2362d3Smrg # If a -bindir argument was supplied, place the dll there. 9370de2362d3Smrg if test "x$bindir" != x ; 9371de2362d3Smrg then 9372de2362d3Smrg func_relative_path "$install_libdir" "$bindir" 9373de2362d3Smrg tdlname=$func_relative_path_result$dlname 9374de2362d3Smrg else 9375de2362d3Smrg # Otherwise fall back on heuristic. 9376de2362d3Smrg tdlname=../bin/$dlname 9377de2362d3Smrg fi 9378de2362d3Smrg ;; 9379de2362d3Smrg esac 9380de2362d3Smrg $ECHO > $output "\ 9381de2362d3Smrg# $outputname - a libtool library file 9382de2362d3Smrg# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 9383de2362d3Smrg# 9384de2362d3Smrg# Please DO NOT delete this file! 9385de2362d3Smrg# It is necessary for linking the library. 9386de2362d3Smrg 9387de2362d3Smrg# The name that we can dlopen(3). 9388de2362d3Smrgdlname='$tdlname' 9389de2362d3Smrg 9390de2362d3Smrg# Names of this library. 9391de2362d3Smrglibrary_names='$library_names' 9392de2362d3Smrg 9393de2362d3Smrg# The name of the static archive. 9394de2362d3Smrgold_library='$old_library' 9395de2362d3Smrg 9396de2362d3Smrg# Linker flags that can not go in dependency_libs. 9397de2362d3Smrginherited_linker_flags='$new_inherited_linker_flags' 9398de2362d3Smrg 9399de2362d3Smrg# Libraries that this one depends upon. 9400de2362d3Smrgdependency_libs='$dependency_libs' 9401de2362d3Smrg 9402de2362d3Smrg# Names of additional weak libraries provided by this library 9403de2362d3Smrgweak_library_names='$weak_libs' 9404de2362d3Smrg 9405de2362d3Smrg# Version information for $libname. 9406de2362d3Smrgcurrent=$current 9407de2362d3Smrgage=$age 9408de2362d3Smrgrevision=$revision 9409de2362d3Smrg 9410de2362d3Smrg# Is this an already installed library? 9411de2362d3Smrginstalled=$installed 9412de2362d3Smrg 9413de2362d3Smrg# Should we warn about portability when linking against -modules? 9414de2362d3Smrgshouldnotlink=$module 9415de2362d3Smrg 9416de2362d3Smrg# Files to dlopen/dlpreopen 9417de2362d3Smrgdlopen='$dlfiles' 9418de2362d3Smrgdlpreopen='$dlprefiles' 9419de2362d3Smrg 9420de2362d3Smrg# Directory that this library needs to be installed in: 9421de2362d3Smrglibdir='$install_libdir'" 9422de2362d3Smrg if test "$installed" = no && test "$need_relink" = yes; then 9423de2362d3Smrg $ECHO >> $output "\ 9424de2362d3Smrgrelink_command=\"$relink_command\"" 9425de2362d3Smrg fi 9426de2362d3Smrg done 9427de2362d3Smrg } 9428de2362d3Smrg 9429de2362d3Smrg # Do a symbolic link so that the libtool archive can be found in 9430de2362d3Smrg # LD_LIBRARY_PATH before the program is installed. 9431de2362d3Smrg func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' 9432de2362d3Smrg ;; 9433de2362d3Smrg esac 9434de2362d3Smrg exit $EXIT_SUCCESS 9435de2362d3Smrg} 9436de2362d3Smrg 9437de2362d3Smrg{ test "$opt_mode" = link || test "$opt_mode" = relink; } && 9438de2362d3Smrg func_mode_link ${1+"$@"} 9439de2362d3Smrg 9440de2362d3Smrg 9441de2362d3Smrg# func_mode_uninstall arg... 9442de2362d3Smrgfunc_mode_uninstall () 9443de2362d3Smrg{ 9444de2362d3Smrg $opt_debug 9445de2362d3Smrg RM="$nonopt" 9446de2362d3Smrg files= 9447de2362d3Smrg rmforce= 9448de2362d3Smrg exit_status=0 9449de2362d3Smrg 9450de2362d3Smrg # This variable tells wrapper scripts just to set variables rather 9451de2362d3Smrg # than running their programs. 9452de2362d3Smrg libtool_install_magic="$magic" 9453de2362d3Smrg 9454de2362d3Smrg for arg 9455de2362d3Smrg do 9456de2362d3Smrg case $arg in 9457de2362d3Smrg -f) func_append RM " $arg"; rmforce=yes ;; 9458de2362d3Smrg -*) func_append RM " $arg" ;; 9459de2362d3Smrg *) func_append files " $arg" ;; 9460de2362d3Smrg esac 9461de2362d3Smrg done 9462de2362d3Smrg 9463de2362d3Smrg test -z "$RM" && \ 9464de2362d3Smrg func_fatal_help "you must specify an RM program" 9465de2362d3Smrg 9466de2362d3Smrg rmdirs= 9467de2362d3Smrg 9468de2362d3Smrg for file in $files; do 9469de2362d3Smrg func_dirname "$file" "" "." 9470de2362d3Smrg dir="$func_dirname_result" 9471de2362d3Smrg if test "X$dir" = X.; then 9472de2362d3Smrg odir="$objdir" 9473de2362d3Smrg else 9474de2362d3Smrg odir="$dir/$objdir" 9475de2362d3Smrg fi 9476de2362d3Smrg func_basename "$file" 9477de2362d3Smrg name="$func_basename_result" 9478de2362d3Smrg test "$opt_mode" = uninstall && odir="$dir" 9479de2362d3Smrg 9480de2362d3Smrg # Remember odir for removal later, being careful to avoid duplicates 9481de2362d3Smrg if test "$opt_mode" = clean; then 9482de2362d3Smrg case " $rmdirs " in 9483de2362d3Smrg *" $odir "*) ;; 9484de2362d3Smrg *) func_append rmdirs " $odir" ;; 9485de2362d3Smrg esac 9486de2362d3Smrg fi 9487de2362d3Smrg 9488de2362d3Smrg # Don't error if the file doesn't exist and rm -f was used. 9489de2362d3Smrg if { test -L "$file"; } >/dev/null 2>&1 || 9490de2362d3Smrg { test -h "$file"; } >/dev/null 2>&1 || 9491de2362d3Smrg test -f "$file"; then 9492de2362d3Smrg : 9493de2362d3Smrg elif test -d "$file"; then 9494de2362d3Smrg exit_status=1 9495de2362d3Smrg continue 9496de2362d3Smrg elif test "$rmforce" = yes; then 9497de2362d3Smrg continue 9498de2362d3Smrg fi 9499de2362d3Smrg 9500de2362d3Smrg rmfiles="$file" 9501de2362d3Smrg 9502de2362d3Smrg case $name in 9503de2362d3Smrg *.la) 9504de2362d3Smrg # Possibly a libtool archive, so verify it. 9505de2362d3Smrg if func_lalib_p "$file"; then 9506de2362d3Smrg func_source $dir/$name 9507de2362d3Smrg 9508de2362d3Smrg # Delete the libtool libraries and symlinks. 9509de2362d3Smrg for n in $library_names; do 9510de2362d3Smrg func_append rmfiles " $odir/$n" 9511de2362d3Smrg done 9512de2362d3Smrg test -n "$old_library" && func_append rmfiles " $odir/$old_library" 9513de2362d3Smrg 9514de2362d3Smrg case "$opt_mode" in 9515de2362d3Smrg clean) 9516de2362d3Smrg case " $library_names " in 9517de2362d3Smrg *" $dlname "*) ;; 9518de2362d3Smrg *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; 9519de2362d3Smrg esac 9520de2362d3Smrg test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" 9521de2362d3Smrg ;; 9522de2362d3Smrg uninstall) 9523de2362d3Smrg if test -n "$library_names"; then 9524de2362d3Smrg # Do each command in the postuninstall commands. 9525de2362d3Smrg func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' 9526de2362d3Smrg fi 9527de2362d3Smrg 9528de2362d3Smrg if test -n "$old_library"; then 9529de2362d3Smrg # Do each command in the old_postuninstall commands. 9530de2362d3Smrg func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' 9531de2362d3Smrg fi 9532de2362d3Smrg # FIXME: should reinstall the best remaining shared library. 9533de2362d3Smrg ;; 9534de2362d3Smrg esac 9535de2362d3Smrg fi 9536de2362d3Smrg ;; 9537de2362d3Smrg 9538de2362d3Smrg *.lo) 9539de2362d3Smrg # Possibly a libtool object, so verify it. 9540de2362d3Smrg if func_lalib_p "$file"; then 9541de2362d3Smrg 9542de2362d3Smrg # Read the .lo file 9543de2362d3Smrg func_source $dir/$name 9544de2362d3Smrg 9545de2362d3Smrg # Add PIC object to the list of files to remove. 9546de2362d3Smrg if test -n "$pic_object" && 9547de2362d3Smrg test "$pic_object" != none; then 9548de2362d3Smrg func_append rmfiles " $dir/$pic_object" 9549de2362d3Smrg fi 9550de2362d3Smrg 9551de2362d3Smrg # Add non-PIC object to the list of files to remove. 9552de2362d3Smrg if test -n "$non_pic_object" && 9553de2362d3Smrg test "$non_pic_object" != none; then 9554de2362d3Smrg func_append rmfiles " $dir/$non_pic_object" 9555de2362d3Smrg fi 9556de2362d3Smrg fi 9557de2362d3Smrg ;; 9558de2362d3Smrg 9559de2362d3Smrg *) 9560de2362d3Smrg if test "$opt_mode" = clean ; then 9561de2362d3Smrg noexename=$name 9562de2362d3Smrg case $file in 9563de2362d3Smrg *.exe) 9564de2362d3Smrg func_stripname '' '.exe' "$file" 9565de2362d3Smrg file=$func_stripname_result 9566de2362d3Smrg func_stripname '' '.exe' "$name" 9567de2362d3Smrg noexename=$func_stripname_result 9568de2362d3Smrg # $file with .exe has already been added to rmfiles, 9569de2362d3Smrg # add $file without .exe 9570de2362d3Smrg func_append rmfiles " $file" 9571de2362d3Smrg ;; 9572de2362d3Smrg esac 9573de2362d3Smrg # Do a test to see if this is a libtool program. 9574de2362d3Smrg if func_ltwrapper_p "$file"; then 9575de2362d3Smrg if func_ltwrapper_executable_p "$file"; then 9576de2362d3Smrg func_ltwrapper_scriptname "$file" 9577de2362d3Smrg relink_command= 9578de2362d3Smrg func_source $func_ltwrapper_scriptname_result 9579de2362d3Smrg func_append rmfiles " $func_ltwrapper_scriptname_result" 9580de2362d3Smrg else 9581de2362d3Smrg relink_command= 9582de2362d3Smrg func_source $dir/$noexename 9583de2362d3Smrg fi 9584de2362d3Smrg 9585de2362d3Smrg # note $name still contains .exe if it was in $file originally 9586de2362d3Smrg # as does the version of $file that was added into $rmfiles 9587de2362d3Smrg func_append rmfiles " $odir/$name $odir/${name}S.${objext}" 9588de2362d3Smrg if test "$fast_install" = yes && test -n "$relink_command"; then 9589de2362d3Smrg func_append rmfiles " $odir/lt-$name" 9590de2362d3Smrg fi 9591de2362d3Smrg if test "X$noexename" != "X$name" ; then 9592de2362d3Smrg func_append rmfiles " $odir/lt-${noexename}.c" 9593de2362d3Smrg fi 9594de2362d3Smrg fi 9595de2362d3Smrg fi 9596de2362d3Smrg ;; 9597de2362d3Smrg esac 9598de2362d3Smrg func_show_eval "$RM $rmfiles" 'exit_status=1' 9599de2362d3Smrg done 9600de2362d3Smrg 9601de2362d3Smrg # Try to remove the ${objdir}s in the directories where we deleted files 9602de2362d3Smrg for dir in $rmdirs; do 9603de2362d3Smrg if test -d "$dir"; then 9604de2362d3Smrg func_show_eval "rmdir $dir >/dev/null 2>&1" 9605de2362d3Smrg fi 9606de2362d3Smrg done 9607de2362d3Smrg 9608de2362d3Smrg exit $exit_status 9609de2362d3Smrg} 9610de2362d3Smrg 9611de2362d3Smrg{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } && 9612de2362d3Smrg func_mode_uninstall ${1+"$@"} 9613de2362d3Smrg 9614de2362d3Smrgtest -z "$opt_mode" && { 9615de2362d3Smrg help="$generic_help" 9616de2362d3Smrg func_fatal_help "you must specify a MODE" 9617de2362d3Smrg} 9618de2362d3Smrg 9619de2362d3Smrgtest -z "$exec_cmd" && \ 9620de2362d3Smrg func_fatal_help "invalid operation mode \`$opt_mode'" 9621de2362d3Smrg 9622de2362d3Smrgif test -n "$exec_cmd"; then 9623de2362d3Smrg eval exec "$exec_cmd" 9624de2362d3Smrg exit $EXIT_FAILURE 9625de2362d3Smrgfi 9626de2362d3Smrg 9627de2362d3Smrgexit $exit_status 9628de2362d3Smrg 9629de2362d3Smrg 9630de2362d3Smrg# The TAGs below are defined such that we never get into a situation 9631de2362d3Smrg# in which we disable both kinds of libraries. Given conflicting 9632de2362d3Smrg# choices, we go for a static library, that is the most portable, 9633de2362d3Smrg# since we can't tell whether shared libraries were disabled because 9634de2362d3Smrg# the user asked for that or because the platform doesn't support 9635de2362d3Smrg# them. This is particularly important on AIX, because we don't 9636de2362d3Smrg# support having both static and shared libraries enabled at the same 9637de2362d3Smrg# time on that platform, so we default to a shared-only configuration. 9638de2362d3Smrg# If a disable-shared tag is given, we'll fallback to a static-only 9639de2362d3Smrg# configuration. But we'll never go from static-only to shared-only. 9640de2362d3Smrg 9641de2362d3Smrg# ### BEGIN LIBTOOL TAG CONFIG: disable-shared 9642de2362d3Smrgbuild_libtool_libs=no 9643de2362d3Smrgbuild_old_libs=yes 9644de2362d3Smrg# ### END LIBTOOL TAG CONFIG: disable-shared 9645de2362d3Smrg 9646de2362d3Smrg# ### BEGIN LIBTOOL TAG CONFIG: disable-static 9647de2362d3Smrgbuild_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` 9648de2362d3Smrg# ### END LIBTOOL TAG CONFIG: disable-static 9649de2362d3Smrg 9650de2362d3Smrg# Local Variables: 9651de2362d3Smrg# mode:shell-script 9652de2362d3Smrg# sh-indentation:2 9653de2362d3Smrg# End: 9654de2362d3Smrg# vi:sw=2 9655de2362d3Smrg 9656