11176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 21176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# libtool (GNU libtool) 2.4.2 31176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 41176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 51176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 61176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. 71176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# This is free software; see the source for copying conditions. There is NO 81176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 91176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# GNU Libtool is free software; you can redistribute it and/or modify 111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# it under the terms of the GNU General Public License as published by 121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# the Free Software Foundation; either version 2 of the License, or 131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# (at your option) any later version. 141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# 151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# As a special exception to the GNU General Public License, 161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# if you distribute this file as part of a program or library that 171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# is built using GNU Libtool, you may include this file under the 181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# same distribution terms that you use for the rest of that program. 191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# 201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# GNU Libtool is distributed in the hope that it will be useful, but 211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# WITHOUT ANY WARRANTY; without even the implied warranty of 221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# General Public License for more details. 241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# 251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# You should have received a copy of the GNU General Public License 261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# along with GNU Libtool; see the file COPYING. If not, a copy 271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# can be downloaded from http://www.gnu.org/licenses/gpl.html, 281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# or obtained by writing to the Free Software Foundation, Inc., 291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Usage: $progname [OPTION]... [MODE-ARG]... 321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# 331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Provide generalized library-building support services. 341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# 351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# --config show all configuration variables 361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# --debug enable verbose shell tracing 371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# -n, --dry-run display commands without modifying any files 381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# --features display basic configuration information and exit 391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# --mode=MODE use operation mode MODE 401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# --preserve-dup-deps don't remove duplicate dependency libraries 411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# --quiet, --silent don't print informational messages 421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# --no-quiet, --no-silent 431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# print informational messages (default) 441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# --no-warn don't display warning messages 451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# --tag=TAG use configuration variables from tag TAG 461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# -v, --verbose print more informational messages than default 471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# --no-verbose don't print the extra informational messages 481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# --version print version information 491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# -h, --help, --help-all print short, long, or detailed help message 501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# 511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# MODE must be one of the following: 521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# 531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# clean remove files from the build directory 541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# compile compile a source file into a libtool object 551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# execute automatically set library path, then run a program 561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# finish complete the installation of libtool libraries 571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# install install libraries or executables 581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# link create a library or an executable 591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# uninstall remove libraries from an installed directory 601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# 611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# MODE-ARGS vary depending on the MODE. When passed as first option, 621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that. 631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Try `$progname --help --mode=MODE' for a more detailed description of MODE. 641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# 651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# When reporting a bug, please describe a test case to reproduce it and 661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# include the following information: 671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# 681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# host-triplet: $host 691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# shell: $SHELL 701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# compiler: $LTCC 711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# compiler flags: $LTCFLAGS 721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# linker: $LD (gnu? $with_gnu_ld) 731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# $progname: (GNU libtool) 2.4.2 741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# automake: $automake_version 751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# autoconf: $autoconf_version 761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# 771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Report bugs to <bug-libtool@gnu.org>. 781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# GNU libtool home page: <http://www.gnu.org/software/libtool/>. 791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# General help using GNU software: <http://www.gnu.org/gethelp/>. 801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 811176bdada62cabc6ec4b0308a930e83b679d5d36John ReckPROGRAM=libtool 821176bdada62cabc6ec4b0308a930e83b679d5d36John ReckPACKAGE=libtool 831176bdada62cabc6ec4b0308a930e83b679d5d36John ReckVERSION=2.4.2 841176bdada62cabc6ec4b0308a930e83b679d5d36John ReckTIMESTAMP="" 851176bdada62cabc6ec4b0308a930e83b679d5d36John Reckpackage_revision=1.3337 861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Be Bourne compatible 881176bdada62cabc6ec4b0308a930e83b679d5d36John Reckif test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then 891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck emulate sh 901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck NULLCMD=: 911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which 921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # is contrary to our usage. Disable this feature. 931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck alias -g '${1+"$@"}'='"$@"' 941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck setopt NO_GLOB_SUBST 951176bdada62cabc6ec4b0308a930e83b679d5d36John Reckelse 961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac 971176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfi 981176bdada62cabc6ec4b0308a930e83b679d5d36John ReckBIN_SH=xpg4; export BIN_SH # for Tru64 991176bdada62cabc6ec4b0308a930e83b679d5d36John ReckDUALCASE=1; export DUALCASE # for MKS sh 1001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 1011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# A function that is used when there is no print builtin or printf. 1021176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_fallback_echo () 1031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 1041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval 'cat <<_LTECHO_EOF 1051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck$1 1061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck_LTECHO_EOF' 1071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 1081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 1091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# NLS nuisances: We save the old values to restore during execute mode. 1101176bdada62cabc6ec4b0308a930e83b679d5d36John Recklt_user_locale= 1111176bdada62cabc6ec4b0308a930e83b679d5d36John Recklt_safe_locale= 1121176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfor lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 1131176bdada62cabc6ec4b0308a930e83b679d5d36John Reckdo 1141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval "if test \"\${$lt_var+set}\" = set; then 1151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck save_$lt_var=\$$lt_var 1161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $lt_var=C 1171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck export $lt_var 1181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" 1191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" 1201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi" 1211176bdada62cabc6ec4b0308a930e83b679d5d36John Reckdone 1221176bdada62cabc6ec4b0308a930e83b679d5d36John ReckLC_ALL=C 1231176bdada62cabc6ec4b0308a930e83b679d5d36John ReckLANGUAGE=C 1241176bdada62cabc6ec4b0308a930e83b679d5d36John Reckexport LANGUAGE LC_ALL 1251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 1261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck$lt_unset CDPATH 1271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 1281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 1291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh 1301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# is ksh but when the shell is invoked as "sh" and the current value of 1311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# the _XPG environment variable is not equal to 1 (one), the special 1321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# positional parameter $0, within a function call, is the name of the 1331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# function. 1341176bdada62cabc6ec4b0308a930e83b679d5d36John Reckprogpath="$0" 1351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 1361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 1371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 1381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck: ${CP="cp -f"} 1391176bdada62cabc6ec4b0308a930e83b679d5d36John Recktest "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'} 1401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck: ${MAKE="make"} 1411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck: ${MKDIR="mkdir"} 1421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck: ${MV="mv -f"} 1431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck: ${RM="rm -f"} 1441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck: ${SHELL="${CONFIG_SHELL-/bin/sh}"} 1451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck: ${Xsed="$SED -e 1s/^X//"} 1461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 1471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Global variables: 1481176bdada62cabc6ec4b0308a930e83b679d5d36John ReckEXIT_SUCCESS=0 1491176bdada62cabc6ec4b0308a930e83b679d5d36John ReckEXIT_FAILURE=1 1501176bdada62cabc6ec4b0308a930e83b679d5d36John ReckEXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. 1511176bdada62cabc6ec4b0308a930e83b679d5d36John ReckEXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. 1521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 1531176bdada62cabc6ec4b0308a930e83b679d5d36John Reckexit_status=$EXIT_SUCCESS 1541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 1551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Make sure IFS has a sensible default 1561176bdada62cabc6ec4b0308a930e83b679d5d36John Recklt_nl=' 1571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck' 1581176bdada62cabc6ec4b0308a930e83b679d5d36John ReckIFS=" $lt_nl" 1591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 1601176bdada62cabc6ec4b0308a930e83b679d5d36John Reckdirname="s,/[^/]*$,," 1611176bdada62cabc6ec4b0308a930e83b679d5d36John Reckbasename="s,^.*/,," 1621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 1631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_dirname file append nondir_replacement 1641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Compute the dirname of FILE. If nonempty, add APPEND to the result, 1651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# otherwise set result to NONDIR_REPLACEMENT. 1661176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_dirname () 1671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 1681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_dirname_result=`$ECHO "${1}" | $SED "$dirname"` 1691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "X$func_dirname_result" = "X${1}"; then 1701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_dirname_result="${3}" 1711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 1721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_dirname_result="$func_dirname_result${2}" 1731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 1741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} # func_dirname may be replaced by extended shell implementation 1751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 1761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 1771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_basename file 1781176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_basename () 1791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 1801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_basename_result=`$ECHO "${1}" | $SED "$basename"` 1811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} # func_basename may be replaced by extended shell implementation 1821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 1831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 1841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_dirname_and_basename file append nondir_replacement 1851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# perform func_basename and func_dirname in a single function 1861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# call: 1871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# dirname: Compute the dirname of FILE. If nonempty, 1881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# add APPEND to the result, otherwise set result 1891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# to NONDIR_REPLACEMENT. 1901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# value returned in "$func_dirname_result" 1911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# basename: Compute filename of FILE. 1921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# value retuned in "$func_basename_result" 1931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Implementation must be kept synchronized with func_dirname 1941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# and func_basename. For efficiency, we do not delegate to 1951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# those functions but instead duplicate the functionality here. 1961176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_dirname_and_basename () 1971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 1981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Extract subdirectory from the argument. 1991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"` 2001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "X$func_dirname_result" = "X${1}"; then 2011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_dirname_result="${3}" 2021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 2031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_dirname_result="$func_dirname_result${2}" 2041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 2051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_basename_result=`$ECHO "${1}" | $SED -e "$basename"` 2061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} # func_dirname_and_basename may be replaced by extended shell implementation 2071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 2081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 2091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_stripname prefix suffix name 2101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# strip PREFIX and SUFFIX off of NAME. 2111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# PREFIX and SUFFIX must not contain globbing or regex special 2121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# characters, hashes, percent signs, but SUFFIX may contain a leading 2131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# dot (in which case that matches only a dot). 2141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_strip_suffix prefix name 2151176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_stripname () 2161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 2171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case ${2} in 2181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; 2191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; 2201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 2211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} # func_stripname may be replaced by extended shell implementation 2221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 2231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 2241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# These SED scripts presuppose an absolute path with a trailing slash. 2251176bdada62cabc6ec4b0308a930e83b679d5d36John Reckpathcar='s,^/\([^/]*\).*$,\1,' 2261176bdada62cabc6ec4b0308a930e83b679d5d36John Reckpathcdr='s,^/[^/]*,,' 2271176bdada62cabc6ec4b0308a930e83b679d5d36John Reckremovedotparts=':dotsl 2281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck s@/\./@/@g 2291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck t dotsl 2301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck s,/\.$,/,' 2311176bdada62cabc6ec4b0308a930e83b679d5d36John Reckcollapseslashes='s@/\{1,\}@/@g' 2321176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfinalslash='s,/*$,/,' 2331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 2341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_normal_abspath PATH 2351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Remove doubled-up and trailing slashes, "." path components, 2361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# and cancel out any ".." path components in PATH after making 2371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# it an absolute path. 2381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# value returned in "$func_normal_abspath_result" 2391176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_normal_abspath () 2401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 2411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Start from root dir and reassemble the path. 2421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_normal_abspath_result= 2431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_normal_abspath_tpath=$1 2441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_normal_abspath_altnamespace= 2451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $func_normal_abspath_tpath in 2461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck "") 2471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Empty path, that just means $cwd. 2481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_stripname '' '/' "`pwd`" 2491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_normal_abspath_result=$func_stripname_result 2501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck return 2511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 2521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # The next three entries are used to spot a run of precisely 2531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # two leading slashes without using negated character classes; 2541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # we take advantage of case's first-match behaviour. 2551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ///*) 2561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Unusual form of absolute path, do nothing. 2571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 2581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck //*) 2591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Not necessarily an ordinary path; POSIX reserves leading '//' 2601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # and for example Cygwin uses it to access remote file shares 2611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # over CIFS/SMB, so we conserve a leading double slash if found. 2621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_normal_abspath_altnamespace=/ 2631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 2641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck /*) 2651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Absolute path, do nothing. 2661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 2671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 2681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Relative path, prepend $cwd. 2691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath 2701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 2711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 2721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Cancel out all the simple stuff to save iterations. We also want 2731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # the path to end with a slash for ease of parsing, so make sure 2741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # there is one (and only one) here. 2751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ 2761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"` 2771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck while :; do 2781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Processed it all yet? 2791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$func_normal_abspath_tpath" = / ; then 2801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # If we ascended to the root using ".." the result may be empty now. 2811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -z "$func_normal_abspath_result" ; then 2821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_normal_abspath_result=/ 2831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 2841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck break 2851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 2861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ 2871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -e "$pathcar"` 2881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ 2891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -e "$pathcdr"` 2901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Figure out what to do with it 2911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $func_normal_abspath_tcomponent in 2921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck "") 2931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Trailing empty path component, ignore it. 2941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 2951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ..) 2961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Parent dir; strip last assembled component from result. 2971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_dirname "$func_normal_abspath_result" 2981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_normal_abspath_result=$func_dirname_result 2991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 3001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 3011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Actual path component, append it. 3021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent 3031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 3041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 3051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 3061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Restore leading double-slash if one was found on entry. 3071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result 3081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 3091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 3101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_relative_path SRCDIR DSTDIR 3111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# generates a relative path from SRCDIR to DSTDIR, with a trailing 3121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# slash if non-empty, suitable for immediately appending a filename 3131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# without needing to append a separator. 3141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# value returned in "$func_relative_path_result" 3151176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_relative_path () 3161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 3171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_relative_path_result= 3181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_normal_abspath "$1" 3191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_relative_path_tlibdir=$func_normal_abspath_result 3201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_normal_abspath "$2" 3211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_relative_path_tbindir=$func_normal_abspath_result 3221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 3231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Ascend the tree starting from libdir 3241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck while :; do 3251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # check if we have found a prefix of bindir 3261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $func_relative_path_tbindir in 3271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $func_relative_path_tlibdir) 3281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # found an exact match 3291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_relative_path_tcancelled= 3301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck break 3311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 3321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $func_relative_path_tlibdir*) 3331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # found a matching prefix 3341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" 3351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_relative_path_tcancelled=$func_stripname_result 3361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -z "$func_relative_path_result"; then 3371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_relative_path_result=. 3381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 3391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck break 3401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 3411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 3421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_dirname $func_relative_path_tlibdir 3431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_relative_path_tlibdir=${func_dirname_result} 3441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "x$func_relative_path_tlibdir" = x ; then 3451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Have to descend all the way to the root! 3461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_relative_path_result=../$func_relative_path_result 3471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_relative_path_tcancelled=$func_relative_path_tbindir 3481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck break 3491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 3501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_relative_path_result=../$func_relative_path_result 3511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 3521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 3531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 3541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 3551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Now calculate path; take care to avoid doubling-up slashes. 3561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_stripname '' '/' "$func_relative_path_result" 3571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_relative_path_result=$func_stripname_result 3581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_stripname '/' '/' "$func_relative_path_tcancelled" 3591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "x$func_stripname_result" != x ; then 3601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_relative_path_result=${func_relative_path_result}/${func_stripname_result} 3611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 3621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 3631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Normalisation. If bindir is libdir, return empty string, 3641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # else relative path ending with a slash; either way, target 3651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # file name can be directly appended. 3661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test ! -z "$func_relative_path_result"; then 3671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_stripname './' '' "$func_relative_path_result/" 3681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_relative_path_result=$func_stripname_result 3691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 3701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 3711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 3721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# The name of this program: 3731176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_dirname_and_basename "$progpath" 3741176bdada62cabc6ec4b0308a930e83b679d5d36John Reckprogname=$func_basename_result 3751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 3761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Make sure we have an absolute path for reexecution: 3771176bdada62cabc6ec4b0308a930e83b679d5d36John Reckcase $progpath in 3781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck [\\/]*|[A-Za-z]:\\*) ;; 3791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *[\\/]*) 3801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck progdir=$func_dirname_result 3811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck progdir=`cd "$progdir" && pwd` 3821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck progpath="$progdir/$progname" 3831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 3841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 3851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck save_IFS="$IFS" 3861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck IFS=${PATH_SEPARATOR-:} 3871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for progdir in $PATH; do 3881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck IFS="$save_IFS" 3891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -x "$progdir/$progname" && break 3901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 3911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck IFS="$save_IFS" 3921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -n "$progdir" || progdir=`pwd` 3931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck progpath="$progdir/$progname" 3941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 3951176bdada62cabc6ec4b0308a930e83b679d5d36John Reckesac 3961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 3971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Sed substitution that helps us do robust quoting. It backslashifies 3981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# metacharacters that are still active within double-quoted strings. 3991176bdada62cabc6ec4b0308a930e83b679d5d36John ReckXsed="${SED}"' -e 1s/^X//' 4001176bdada62cabc6ec4b0308a930e83b679d5d36John Recksed_quote_subst='s/\([`"$\\]\)/\\\1/g' 4011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 4021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Same as above, but do not quote variable references. 4031176bdada62cabc6ec4b0308a930e83b679d5d36John Reckdouble_quote_subst='s/\(["`\\]\)/\\\1/g' 4041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 4051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Sed substitution that turns a string into a regex matching for the 4061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# string literally. 4071176bdada62cabc6ec4b0308a930e83b679d5d36John Recksed_make_literal_regex='s,[].[^$\\*\/],\\&,g' 4081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 4091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Sed substitution that converts a w32 file name or path 4101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# which contains forward slashes, into one that contains 4111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# (escaped) backslashes. A very naive implementation. 4121176bdada62cabc6ec4b0308a930e83b679d5d36John Recklt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' 4131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 4141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Re-`\' parameter expansions in output of double_quote_subst that were 4151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# `\'-ed in input to the same. If an odd number of `\' preceded a '$' 4161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# in input to double_quote_subst, that '$' was protected from expansion. 4171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Since each input `\' is now two `\'s, look for any number of runs of 4181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# four `\'s followed by two `\'s and then a '$'. `\' that '$'. 4191176bdada62cabc6ec4b0308a930e83b679d5d36John Reckbs='\\' 4201176bdada62cabc6ec4b0308a930e83b679d5d36John Reckbs2='\\\\' 4211176bdada62cabc6ec4b0308a930e83b679d5d36John Reckbs4='\\\\\\\\' 4221176bdada62cabc6ec4b0308a930e83b679d5d36John Reckdollar='\$' 4231176bdada62cabc6ec4b0308a930e83b679d5d36John Recksed_double_backslash="\ 4241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck s/$bs4/&\\ 4251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck/g 4261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck s/^$bs2$dollar/$bs&/ 4271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g 4281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck s/\n//g" 4291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 4301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Standard options: 4311176bdada62cabc6ec4b0308a930e83b679d5d36John Reckopt_dry_run=false 4321176bdada62cabc6ec4b0308a930e83b679d5d36John Reckopt_help=false 4331176bdada62cabc6ec4b0308a930e83b679d5d36John Reckopt_quiet=false 4341176bdada62cabc6ec4b0308a930e83b679d5d36John Reckopt_verbose=false 4351176bdada62cabc6ec4b0308a930e83b679d5d36John Reckopt_warning=: 4361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 4371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_echo arg... 4381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Echo program name prefixed message, along with the current mode 4391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# name if it has been set yet. 4401176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_echo () 4411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 4421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $ECHO "$progname: ${opt_mode+$opt_mode: }$*" 4431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 4441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 4451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_verbose arg... 4461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Echo program name prefixed message in verbose mode only. 4471176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_verbose () 4481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 4491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_verbose && func_echo ${1+"$@"} 4501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 4511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # A bug in bash halts the script if the last line of a function 4521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # fails when set -e is in force, so we need another command to 4531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # work around that: 4541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck : 4551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 4561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 4571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_echo_all arg... 4581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Invoke $ECHO with all args, space-separated. 4591176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_echo_all () 4601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 4611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $ECHO "$*" 4621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 4631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 4641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_error arg... 4651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Echo program name prefixed message to standard error. 4661176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_error () 4671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 4681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2 4691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 4701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 4711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_warning arg... 4721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Echo program name prefixed warning message to standard error. 4731176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_warning () 4741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 4751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2 4761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 4771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # bash bug again: 4781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck : 4791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 4801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 4811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_fatal_error arg... 4821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Echo program name prefixed message to standard error, and exit. 4831176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_fatal_error () 4841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 4851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_error ${1+"$@"} 4861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck exit $EXIT_FAILURE 4871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 4881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 4891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_fatal_help arg... 4901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Echo program name prefixed message to standard error, followed by 4911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# a help hint, and exit. 4921176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_fatal_help () 4931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 4941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_error ${1+"$@"} 4951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_fatal_error "$help" 4961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 4971176bdada62cabc6ec4b0308a930e83b679d5d36John Reckhelp="Try \`$progname --help' for more information." ## default 4981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 4991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 5001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_grep expression filename 5011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Check whether EXPRESSION matches any line of FILENAME, without output. 5021176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_grep () 5031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 5041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $GREP "$1" "$2" >/dev/null 2>&1 5051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 5061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 5071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 5081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_mkdir_p directory-path 5091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Make sure the entire path to DIRECTORY-PATH is available. 5101176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_mkdir_p () 5111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 5121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck my_directory_path="$1" 5131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck my_dir_list= 5141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 5151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then 5161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 5171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Protect directory names starting with `-' 5181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $my_directory_path in 5191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -*) my_directory_path="./$my_directory_path" ;; 5201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 5211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 5221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # While some portion of DIR does not yet exist... 5231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck while test ! -d "$my_directory_path"; do 5241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # ...make a list in topmost first order. Use a colon delimited 5251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # list incase some portion of path contains whitespace. 5261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck my_dir_list="$my_directory_path:$my_dir_list" 5271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 5281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # If the last portion added has no slash in it, the list is done 5291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $my_directory_path in */*) ;; *) break ;; esac 5301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 5311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # ...otherwise throw away the child directory and loop 5321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"` 5331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 5341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'` 5351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 5361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck save_mkdir_p_IFS="$IFS"; IFS=':' 5371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for my_dir in $my_dir_list; do 5381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck IFS="$save_mkdir_p_IFS" 5391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # mkdir can fail with a `File exist' error if two processes 5401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # try to create one of the directories concurrently. Don't 5411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # stop in that case! 5421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $MKDIR "$my_dir" 2>/dev/null || : 5431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 5441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck IFS="$save_mkdir_p_IFS" 5451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 5461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Bail out if we (or some other process) failed to create a directory. 5471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -d "$my_directory_path" || \ 5481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_fatal_error "Failed to create \`$1'" 5491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 5501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 5511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 5521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 5531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_mktempdir [string] 5541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Make a temporary directory that won't clash with other running 5551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# libtool processes, and avoids race conditions if possible. If 5561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# given, STRING is the basename for that directory. 5571176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_mktempdir () 5581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 5591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck my_template="${TMPDIR-/tmp}/${1-$progname}" 5601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 5611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$opt_dry_run" = ":"; then 5621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Return a directory name, but don't create it in dry-run mode 5631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck my_tmpdir="${my_template}-$$" 5641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 5651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 5661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # If mktemp works, use that first and foremost 5671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` 5681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 5691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test ! -d "$my_tmpdir"; then 5701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Failing that, at least try and use $RANDOM to avoid a race 5711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck my_tmpdir="${my_template}-${RANDOM-0}$$" 5721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 5731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck save_mktempdir_umask=`umask` 5741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck umask 0077 5751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $MKDIR "$my_tmpdir" 5761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck umask $save_mktempdir_umask 5771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 5781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 5791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # If we're not in dry-run mode, bomb out on failure 5801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -d "$my_tmpdir" || \ 5811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_fatal_error "cannot create temporary directory \`$my_tmpdir'" 5821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 5831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 5841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $ECHO "$my_tmpdir" 5851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 5861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 5871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 5881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_quote_for_eval arg 5891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Aesthetically quote ARG to be evaled later. 5901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT 5911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# is double-quoted, suitable for a subsequent eval, whereas 5921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters 5931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# which are still active within double quotes backslashified. 5941176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_quote_for_eval () 5951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 5961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $1 in 5971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *[\\\`\"\$]*) 5981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;; 5991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 6001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_quote_for_eval_unquoted_result="$1" ;; 6011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 6021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 6031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $func_quote_for_eval_unquoted_result in 6041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Double-quote args containing shell metacharacters to delay 6051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # word splitting, command substitution and and variable 6061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # expansion for a subsequent eval. 6071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Many Bourne shells cannot handle close brackets correctly 6081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # in scan sets, so we specify it separately. 6091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 6101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" 6111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 6121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 6131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" 6141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 6151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 6161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 6171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 6181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_quote_for_expand arg 6191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Aesthetically quote ARG to be evaled later; same as above, 6201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# but do not quote variable references. 6211176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_quote_for_expand () 6221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 6231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $1 in 6241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *[\\\`\"]*) 6251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck my_arg=`$ECHO "$1" | $SED \ 6261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -e "$double_quote_subst" -e "$sed_double_backslash"` ;; 6271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 6281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck my_arg="$1" ;; 6291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 6301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 6311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $my_arg in 6321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Double-quote args containing shell metacharacters to delay 6331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # word splitting and command substitution for a subsequent eval. 6341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Many Bourne shells cannot handle close brackets correctly 6351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # in scan sets, so we specify it separately. 6361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 6371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck my_arg="\"$my_arg\"" 6381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 6391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 6401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 6411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_quote_for_expand_result="$my_arg" 6421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 6431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 6441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 6451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_show_eval cmd [fail_exp] 6461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is 6471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP 6481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# is given, then evaluate it. 6491176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_show_eval () 6501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 6511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck my_cmd="$1" 6521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck my_fail_exp="${2-:}" 6531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 6541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ${opt_silent-false} || { 6551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_quote_for_expand "$my_cmd" 6561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval "func_echo $func_quote_for_expand_result" 6571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } 6581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 6591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if ${opt_dry_run-false}; then :; else 6601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval "$my_cmd" 6611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck my_status=$? 6621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$my_status" -eq 0; then :; else 6631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval "(exit $my_status); $my_fail_exp" 6641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 6651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 6661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 6671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 6681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 6691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_show_eval_locale cmd [fail_exp] 6701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is 6711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP 6721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# is given, then evaluate it. Use the saved locale for evaluation. 6731176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_show_eval_locale () 6741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 6751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck my_cmd="$1" 6761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck my_fail_exp="${2-:}" 6771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 6781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ${opt_silent-false} || { 6791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_quote_for_expand "$my_cmd" 6801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval "func_echo $func_quote_for_expand_result" 6811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } 6821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 6831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if ${opt_dry_run-false}; then :; else 6841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval "$lt_user_locale 6851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $my_cmd" 6861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck my_status=$? 6871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval "$lt_safe_locale" 6881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$my_status" -eq 0; then :; else 6891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval "(exit $my_status); $my_fail_exp" 6901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 6911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 6921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 6931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 6941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_tr_sh 6951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Turn $1 into a string suitable for a shell variable name. 6961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Result is stored in $func_tr_sh_result. All characters 6971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# not in the set a-zA-Z0-9_ are replaced with '_'. Further, 6981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# if $1 begins with a digit, a '_' is prepended as well. 6991176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_tr_sh () 7001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 7011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $1 in 7021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck [0-9]* | *[!a-zA-Z0-9_]*) 7031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'` 7041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 7051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * ) 7061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_tr_sh_result=$1 7071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 7081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 7091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 7101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 7111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 7121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_version 7131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Echo version message to standard output and exit. 7141176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_version () 7151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 7161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_debug 7171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 7181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $SED -n '/(C)/!b go 7191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck :more 7201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck /\./!{ 7211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck N 7221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck s/\n# / / 7231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck b more 7241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } 7251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck :go 7261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck /^# '$PROGRAM' (GNU /,/# warranty; / { 7271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck s/^# // 7281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck s/^# *$// 7291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ 7301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck p 7311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck }' < "$progpath" 7321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck exit $? 7331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 7341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 7351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_usage 7361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Echo short help message to standard output and exit. 7371176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_usage () 7381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 7391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_debug 7401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 7411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $SED -n '/^# Usage:/,/^# *.*--help/ { 7421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck s/^# // 7431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck s/^# *$// 7441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck s/\$progname/'$progname'/ 7451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck p 7461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck }' < "$progpath" 7471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo 7481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $ECHO "run \`$progname --help | more' for full usage" 7491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck exit $? 7501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 7511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 7521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_help [NOEXIT] 7531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Echo long help message to standard output and exit, 7541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# unless 'noexit' is passed as argument. 7551176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_help () 7561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 7571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_debug 7581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 7591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $SED -n '/^# Usage:/,/# Report bugs to/ { 7601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck :print 7611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck s/^# // 7621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck s/^# *$// 7631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck s*\$progname*'$progname'* 7641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck s*\$host*'"$host"'* 7651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck s*\$SHELL*'"$SHELL"'* 7661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck s*\$LTCC*'"$LTCC"'* 7671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck s*\$LTCFLAGS*'"$LTCFLAGS"'* 7681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck s*\$LD*'"$LD"'* 7691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck s/\$with_gnu_ld/'"$with_gnu_ld"'/ 7701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/ 7711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/ 7721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck p 7731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck d 7741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } 7751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck /^# .* home page:/b print 7761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck /^# General help using/b print 7771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ' < "$progpath" 7781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ret=$? 7791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -z "$1"; then 7801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck exit $ret 7811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 7821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 7831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 7841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_missing_arg argname 7851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Echo program name prefixed message to standard error and set global 7861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# exit_cmd. 7871176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_missing_arg () 7881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 7891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_debug 7901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 7911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_error "missing argument for $1." 7921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck exit_cmd=exit 7931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 7941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 7951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 7961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_split_short_opt shortopt 7971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Set func_split_short_opt_name and func_split_short_opt_arg shell 7981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# variables after splitting SHORTOPT after the 2nd character. 7991176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_split_short_opt () 8001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 8011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck my_sed_short_opt='1s/^\(..\).*$/\1/;q' 8021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck my_sed_short_rest='1s/^..\(.*\)$/\1/;q' 8031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 8041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"` 8051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"` 8061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} # func_split_short_opt may be replaced by extended shell implementation 8071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 8081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 8091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_split_long_opt longopt 8101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Set func_split_long_opt_name and func_split_long_opt_arg shell 8111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# variables after splitting LONGOPT at the `=' sign. 8121176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_split_long_opt () 8131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 8141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q' 8151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck my_sed_long_arg='1s/^--[^=]*=//' 8161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 8171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"` 8181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"` 8191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} # func_split_long_opt may be replaced by extended shell implementation 8201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 8211176bdada62cabc6ec4b0308a930e83b679d5d36John Reckexit_cmd=: 8221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 8231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 8241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 8251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 8261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 8271176bdada62cabc6ec4b0308a930e83b679d5d36John Reckmagic="%%%MAGIC variable%%%" 8281176bdada62cabc6ec4b0308a930e83b679d5d36John Reckmagic_exe="%%%MAGIC EXE variable%%%" 8291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 8301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Global variables. 8311176bdada62cabc6ec4b0308a930e83b679d5d36John Recknonopt= 8321176bdada62cabc6ec4b0308a930e83b679d5d36John Reckpreserve_args= 8331176bdada62cabc6ec4b0308a930e83b679d5d36John Recklo2o="s/\\.lo\$/.${objext}/" 8341176bdada62cabc6ec4b0308a930e83b679d5d36John Recko2lo="s/\\.${objext}\$/.lo/" 8351176bdada62cabc6ec4b0308a930e83b679d5d36John Reckextracted_archives= 8361176bdada62cabc6ec4b0308a930e83b679d5d36John Reckextracted_serial=0 8371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 8381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# If this variable is set in any of the actions, the command in it 8391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# will be execed at the end. This prevents here-documents from being 8401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# left over by shells. 8411176bdada62cabc6ec4b0308a930e83b679d5d36John Reckexec_cmd= 8421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 8431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_append var value 8441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Append VALUE to the end of shell variable VAR. 8451176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_append () 8461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 8471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval "${1}=\$${1}\${2}" 8481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} # func_append may be replaced by extended shell implementation 8491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 8501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_append_quoted var value 8511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Quote VALUE and append to the end of shell variable VAR, separated 8521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# by a space. 8531176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_append_quoted () 8541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 8551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_quote_for_eval "${2}" 8561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval "${1}=\$${1}\\ \$func_quote_for_eval_result" 8571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} # func_append_quoted may be replaced by extended shell implementation 8581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 8591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 8601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_arith arithmetic-term... 8611176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_arith () 8621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 8631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_arith_result=`expr "${@}"` 8641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} # func_arith may be replaced by extended shell implementation 8651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 8661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 8671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_len string 8681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# STRING may not start with a hyphen. 8691176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_len () 8701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 8711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len` 8721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} # func_len may be replaced by extended shell implementation 8731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 8741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 8751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_lo2o object 8761176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_lo2o () 8771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 8781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"` 8791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} # func_lo2o may be replaced by extended shell implementation 8801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 8811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 8821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_xform libobj-or-source 8831176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_xform () 8841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 8851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'` 8861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} # func_xform may be replaced by extended shell implementation 8871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 8881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 8891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_fatal_configuration arg... 8901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Echo program name prefixed message to standard error, followed by 8911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# a configuration failure hint, and exit. 8921176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_fatal_configuration () 8931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 8941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_error ${1+"$@"} 8951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_error "See the $PACKAGE documentation for more information." 8961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_fatal_error "Fatal configuration error." 8971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 8981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 8991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 9001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_config 9011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Display the configuration for all the tags in this script. 9021176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_config () 9031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 9041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck re_begincf='^# ### BEGIN LIBTOOL' 9051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck re_endcf='^# ### END LIBTOOL' 9061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 9071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Default configuration. 9081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" 9091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 9101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Now print the configurations for the tags. 9111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for tagname in $taglist; do 9121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" 9131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 9141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 9151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck exit $? 9161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 9171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 9181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_features 9191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Display the features supported by this script. 9201176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_features () 9211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 9221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo "host: $host" 9231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$build_libtool_libs" = yes; then 9241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo "enable shared libraries" 9251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 9261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo "disable shared libraries" 9271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 9281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$build_old_libs" = yes; then 9291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo "enable static libraries" 9301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 9311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo "disable static libraries" 9321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 9331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 9341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck exit $? 9351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 9361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 9371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_enable_tag tagname 9381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Verify that TAGNAME is valid, and either flag an error and exit, or 9391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# enable the TAGNAME tag. We also add TAGNAME to the global $taglist 9401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# variable here. 9411176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_enable_tag () 9421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 9431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Global variable: 9441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck tagname="$1" 9451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 9461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" 9471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" 9481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck sed_extractcf="/$re_begincf/,/$re_endcf/p" 9491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 9501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Validate tagname. 9511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $tagname in 9521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *[!-_A-Za-z0-9,/]*) 9531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_fatal_error "invalid tag name: $tagname" 9541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 9551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 9561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 9571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Don't test for the "default" C tag, as we know it's 9581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # there but not specially marked. 9591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $tagname in 9601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck CC) ;; 9611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 9621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then 9631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck taglist="$taglist $tagname" 9641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 9651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Evaluate the configuration. Be careful to quote the path 9661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # and the sed script, to avoid splitting on whitespace, but 9671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # also don't use non-portable quotes within backquotes within 9681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # quotes we have to do it in 2 steps: 9691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` 9701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval "$extractedcf" 9711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 9721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_error "ignoring unknown tag $tagname" 9731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 9741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 9751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 9761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 9771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 9781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_check_version_match 9791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Ensure that we are using m4 macros, and libtool script from the same 9801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# release of libtool. 9811176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_check_version_match () 9821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 9831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$package_revision" != "$macro_revision"; then 9841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$VERSION" != "$macro_version"; then 9851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -z "$macro_version"; then 9861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck cat >&2 <<_LT_EOF 9871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck$progname: Version mismatch error. This is $PACKAGE $VERSION, but the 9881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck$progname: definition of this LT_INIT comes from an older release. 9891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION 9901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck$progname: and run autoconf again. 9911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck_LT_EOF 9921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 9931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck cat >&2 <<_LT_EOF 9941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck$progname: Version mismatch error. This is $PACKAGE $VERSION, but the 9951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. 9961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION 9971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck$progname: and run autoconf again. 9981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck_LT_EOF 9991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 10001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 10011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck cat >&2 <<_LT_EOF 10021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, 10031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck$progname: but the definition of this LT_INIT comes from revision $macro_revision. 10041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck$progname: You should recreate aclocal.m4 with macros from revision $package_revision 10051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck$progname: of $PACKAGE $VERSION and run autoconf again. 10061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck_LT_EOF 10071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 10081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 10091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck exit $EXIT_MISMATCH 10101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 10111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 10121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 10131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 10141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Shorthand for --mode=foo, only valid as the first argument 10151176bdada62cabc6ec4b0308a930e83b679d5d36John Reckcase $1 in 10161176bdada62cabc6ec4b0308a930e83b679d5d36John Reckclean|clea|cle|cl) 10171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck shift; set dummy --mode clean ${1+"$@"}; shift 10181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 10191176bdada62cabc6ec4b0308a930e83b679d5d36John Reckcompile|compil|compi|comp|com|co|c) 10201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck shift; set dummy --mode compile ${1+"$@"}; shift 10211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 10221176bdada62cabc6ec4b0308a930e83b679d5d36John Reckexecute|execut|execu|exec|exe|ex|e) 10231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck shift; set dummy --mode execute ${1+"$@"}; shift 10241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 10251176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfinish|finis|fini|fin|fi|f) 10261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck shift; set dummy --mode finish ${1+"$@"}; shift 10271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 10281176bdada62cabc6ec4b0308a930e83b679d5d36John Reckinstall|instal|insta|inst|ins|in|i) 10291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck shift; set dummy --mode install ${1+"$@"}; shift 10301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 10311176bdada62cabc6ec4b0308a930e83b679d5d36John Recklink|lin|li|l) 10321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck shift; set dummy --mode link ${1+"$@"}; shift 10331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 10341176bdada62cabc6ec4b0308a930e83b679d5d36John Reckuninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) 10351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck shift; set dummy --mode uninstall ${1+"$@"}; shift 10361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 10371176bdada62cabc6ec4b0308a930e83b679d5d36John Reckesac 10381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 10391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 10401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 10411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Option defaults: 10421176bdada62cabc6ec4b0308a930e83b679d5d36John Reckopt_debug=: 10431176bdada62cabc6ec4b0308a930e83b679d5d36John Reckopt_dry_run=false 10441176bdada62cabc6ec4b0308a930e83b679d5d36John Reckopt_config=false 10451176bdada62cabc6ec4b0308a930e83b679d5d36John Reckopt_preserve_dup_deps=false 10461176bdada62cabc6ec4b0308a930e83b679d5d36John Reckopt_features=false 10471176bdada62cabc6ec4b0308a930e83b679d5d36John Reckopt_finish=false 10481176bdada62cabc6ec4b0308a930e83b679d5d36John Reckopt_help=false 10491176bdada62cabc6ec4b0308a930e83b679d5d36John Reckopt_help_all=false 10501176bdada62cabc6ec4b0308a930e83b679d5d36John Reckopt_silent=: 10511176bdada62cabc6ec4b0308a930e83b679d5d36John Reckopt_warning=: 10521176bdada62cabc6ec4b0308a930e83b679d5d36John Reckopt_verbose=: 10531176bdada62cabc6ec4b0308a930e83b679d5d36John Reckopt_silent=false 10541176bdada62cabc6ec4b0308a930e83b679d5d36John Reckopt_verbose=false 10551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 10561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 10571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Parse options once, thoroughly. This comes as soon as possible in the 10581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# script to make things like `--version' happen as quickly as we can. 10591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 10601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # this just eases exit handling 10611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck while test $# -gt 0; do 10621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck opt="$1" 10631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck shift 10641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $opt in 10651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck --debug|-x) opt_debug='set -x' 10661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_echo "enabling shell trace mode" 10671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_debug 10681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 10691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck --dry-run|--dryrun|-n) 10701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck opt_dry_run=: 10711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 10721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck --config) 10731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck opt_config=: 10741176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_config 10751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 10761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck --dlopen|-dlopen) 10771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck optarg="$1" 10781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck opt_dlopen="${opt_dlopen+$opt_dlopen 10791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}$optarg" 10801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck shift 10811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 10821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck --preserve-dup-deps) 10831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck opt_preserve_dup_deps=: 10841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 10851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck --features) 10861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck opt_features=: 10871176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_features 10881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 10891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck --finish) 10901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck opt_finish=: 10911176bdada62cabc6ec4b0308a930e83b679d5d36John Reckset dummy --mode finish ${1+"$@"}; shift 10921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 10931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck --help) 10941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck opt_help=: 10951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 10961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck --help-all) 10971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck opt_help_all=: 10981176bdada62cabc6ec4b0308a930e83b679d5d36John Reckopt_help=': help-all' 10991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 11001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck --mode) 11011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test $# = 0 && func_missing_arg $opt && break 11021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck optarg="$1" 11031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck opt_mode="$optarg" 11041176bdada62cabc6ec4b0308a930e83b679d5d36John Reckcase $optarg in 11051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Valid mode arguments: 11061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck clean|compile|execute|finish|install|link|relink|uninstall) ;; 11071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 11081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Catch anything else as an error 11091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) func_error "invalid argument for $opt" 11101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck exit_cmd=exit 11111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck break 11121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 11131176bdada62cabc6ec4b0308a930e83b679d5d36John Reckesac 11141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck shift 11151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 11161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck --no-silent|--no-quiet) 11171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck opt_silent=false 11181176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_append preserve_args " $opt" 11191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 11201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck --no-warning|--no-warn) 11211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck opt_warning=false 11221176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_append preserve_args " $opt" 11231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 11241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck --no-verbose) 11251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck opt_verbose=false 11261176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_append preserve_args " $opt" 11271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 11281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck --silent|--quiet) 11291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck opt_silent=: 11301176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_append preserve_args " $opt" 11311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck opt_verbose=false 11321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 11331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck --verbose|-v) 11341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck opt_verbose=: 11351176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_append preserve_args " $opt" 11361176bdada62cabc6ec4b0308a930e83b679d5d36John Reckopt_silent=false 11371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 11381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck --tag) 11391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test $# = 0 && func_missing_arg $opt && break 11401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck optarg="$1" 11411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck opt_tag="$optarg" 11421176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_append preserve_args " $opt $optarg" 11431176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_enable_tag "$optarg" 11441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck shift 11451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 11461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 11471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -\?|-h) func_usage ;; 11481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck --help) func_help ;; 11491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck --version) func_version ;; 11501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 11511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Separate optargs to long options: 11521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck --*=*) 11531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_split_long_opt "$opt" 11541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"} 11551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck shift 11561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 11571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 11581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Separate non-argument short options: 11591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -\?*|-h*|-n*|-v*) 11601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_split_short_opt "$opt" 11611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"} 11621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck shift 11631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 11641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 11651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck --) break ;; 11661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -*) func_fatal_help "unrecognized option \`$opt'" ;; 11671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) set dummy "$opt" ${1+"$@"}; shift; break ;; 11681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 11691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 11701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 11711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Validate options: 11721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 11731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # save first non-option argument 11741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$#" -gt 0; then 11751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck nonopt="$opt" 11761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck shift 11771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 11781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 11791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # preserve --debug 11801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test "$opt_debug" = : || func_append preserve_args " --debug" 11811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 11821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $host in 11831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *cygwin* | *mingw* | *pw32* | *cegcc*) 11841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # don't eliminate duplications in $postdeps and $predeps 11851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck opt_duplicate_compiler_generated_deps=: 11861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 11871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 11881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps 11891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 11901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 11911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 11921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_help || { 11931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Sanity checks first: 11941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_check_version_match 11951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 11961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then 11971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_fatal_configuration "not configured to build any kind of library" 11981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 11991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 12001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Darwin sucks 12011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval std_shrext=\"$shrext_cmds\" 12021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 12031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Only execute mode is allowed to have -dlopen flags. 12041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$opt_dlopen" && test "$opt_mode" != execute; then 12051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_error "unrecognized option \`-dlopen'" 12061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $ECHO "$help" 1>&2 12071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck exit $EXIT_FAILURE 12081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 12091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 12101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Change the help message to a mode-specific one. 12111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck generic_help="$help" 12121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck help="Try \`$progname --help --mode=$opt_mode' for more information." 12131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } 12141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 12151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 12161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Bail if the options were screwed 12171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $exit_cmd $EXIT_FAILURE 12181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 12191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 12201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 12211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 12221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 12231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck## ----------- ## 12241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck## Main. ## 12251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck## ----------- ## 12261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 12271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_lalib_p file 12281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# True iff FILE is a libtool `.la' library or `.lo' object file. 12291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# This function is only a basic sanity check; it will hardly flush out 12301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# determined imposters. 12311176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_lalib_p () 12321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 12331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -f "$1" && 12341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $SED -e 4q "$1" 2>/dev/null \ 12351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 12361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 12371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 12381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_lalib_unsafe_p file 12391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# True iff FILE is a libtool `.la' library or `.lo' object file. 12401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# This function implements the same check as func_lalib_p without 12411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# resorting to external programs. To this end, it redirects stdin and 12421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# closes it afterwards, without saving the original file descriptor. 12431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# As a safety measure, use it only where a negative result would be 12441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# fatal anyway. Works if `file' does not exist. 12451176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_lalib_unsafe_p () 12461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 12471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck lalib_p=no 12481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then 12491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for lalib_p_l in 1 2 3 4 12501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck do 12511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck read lalib_p_line 12521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case "$lalib_p_line" in 12531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; 12541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 12551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 12561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck exec 0<&5 5<&- 12571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 12581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test "$lalib_p" = yes 12591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 12601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 12611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_ltwrapper_script_p file 12621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# True iff FILE is a libtool wrapper script 12631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# This function is only a basic sanity check; it will hardly flush out 12641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# determined imposters. 12651176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_ltwrapper_script_p () 12661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 12671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_lalib_p "$1" 12681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 12691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 12701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_ltwrapper_executable_p file 12711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# True iff FILE is a libtool wrapper executable 12721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# This function is only a basic sanity check; it will hardly flush out 12731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# determined imposters. 12741176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_ltwrapper_executable_p () 12751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 12761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_ltwrapper_exec_suffix= 12771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $1 in 12781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *.exe) ;; 12791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) func_ltwrapper_exec_suffix=.exe ;; 12801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 12811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 12821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 12831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 12841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_ltwrapper_scriptname file 12851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Assumes file is an ltwrapper_executable 12861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# uses $file to determine the appropriate filename for a 12871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# temporary ltwrapper_script. 12881176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_ltwrapper_scriptname () 12891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 12901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_dirname_and_basename "$1" "" "." 12911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_stripname '' '.exe' "$func_basename_result" 12921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" 12931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 12941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 12951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_ltwrapper_p file 12961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# True iff FILE is a libtool wrapper script or wrapper executable 12971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# This function is only a basic sanity check; it will hardly flush out 12981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# determined imposters. 12991176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_ltwrapper_p () 13001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 13011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" 13021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 13031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 13041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 13051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_execute_cmds commands fail_cmd 13061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Execute tilde-delimited COMMANDS. 13071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# If FAIL_CMD is given, eval that upon failure. 13081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# FAIL_CMD may read-access the current command in variable CMD! 13091176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_execute_cmds () 13101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 13111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_debug 13121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck save_ifs=$IFS; IFS='~' 13131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for cmd in $1; do 13141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck IFS=$save_ifs 13151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval cmd=\"$cmd\" 13161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_show_eval "$cmd" "${2-:}" 13171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 13181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck IFS=$save_ifs 13191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 13201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 13211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 13221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_source file 13231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Source FILE, adding directory component if necessary. 13241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Note that it is not necessary on cygwin/mingw to append a dot to 13251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# FILE even if both FILE and FILE.exe exist: automatic-append-.exe 13261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# behavior happens only for exec(3), not for open(2)! Also, sourcing 13271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# `FILE.' does not work on cygwin managed mounts. 13281176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_source () 13291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 13301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_debug 13311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $1 in 13321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck */* | *\\*) . "$1" ;; 13331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) . "./$1" ;; 13341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 13351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 13361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 13371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 13381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_resolve_sysroot PATH 13391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Replace a leading = in PATH with a sysroot. Store the result into 13401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_resolve_sysroot_result 13411176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_resolve_sysroot () 13421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 13431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_resolve_sysroot_result=$1 13441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $func_resolve_sysroot_result in 13451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck =*) 13461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_stripname '=' '' "$func_resolve_sysroot_result" 13471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_resolve_sysroot_result=$lt_sysroot$func_stripname_result 13481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 13491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 13501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 13511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 13521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_replace_sysroot PATH 13531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# If PATH begins with the sysroot, replace it with = and 13541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# store the result into func_replace_sysroot_result. 13551176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_replace_sysroot () 13561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 13571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case "$lt_sysroot:$1" in 13581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ?*:"$lt_sysroot"*) 13591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_stripname "$lt_sysroot" '' "$1" 13601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_replace_sysroot_result="=$func_stripname_result" 13611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 13621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 13631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Including no sysroot. 13641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_replace_sysroot_result=$1 13651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 13661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 13671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 13681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 13691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_infer_tag arg 13701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Infer tagged configuration to use if any are available and 13711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# if one wasn't chosen via the "--tag" command line option. 13721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Only attempt this if the compiler in the base compile 13731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# command doesn't match the default compiler. 13741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# arg is usually of the form 'gcc ...' 13751176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_infer_tag () 13761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 13771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_debug 13781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$available_tags" && test -z "$tagname"; then 13791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck CC_quoted= 13801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for arg in $CC; do 13811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append_quoted CC_quoted "$arg" 13821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 13831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck CC_expanded=`func_echo_all $CC` 13841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck CC_quoted_expanded=`func_echo_all $CC_quoted` 13851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $@ in 13861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Blanks in the command may have been stripped by the calling shell, 13871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # but not from the CC environment variable when configure was run. 13881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ 13891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; 13901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Blanks at the start of $base_compile will cause this to fail 13911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # if we don't check for them as well. 13921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 13931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for z in $available_tags; do 13941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then 13951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Evaluate the configuration. 13961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" 13971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck CC_quoted= 13981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for arg in $CC; do 13991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Double-quote args containing other shell metacharacters. 14001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append_quoted CC_quoted "$arg" 14011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 14021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck CC_expanded=`func_echo_all $CC` 14031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck CC_quoted_expanded=`func_echo_all $CC_quoted` 14041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case "$@ " in 14051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ 14061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) 14071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # The compiler in the base compile command matches 14081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # the one in the tagged configuration. 14091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Assume this is the tagged configuration we want. 14101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck tagname=$z 14111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck break 14121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 14131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 14141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 14151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 14161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # If $tagname still isn't set, then no tagged configuration 14171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # was found and let the user know that the "--tag" command 14181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # line option must be used. 14191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -z "$tagname"; then 14201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_echo "unable to infer tagged configuration" 14211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_fatal_error "specify a tag with \`--tag'" 14221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# else 14231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_verbose "using $tagname tagged configuration" 14241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 14251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 14261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 14271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 14281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 14291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 14301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 14311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 14321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_write_libtool_object output_name pic_name nonpic_name 14331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Create a libtool object file (analogous to a ".la" file), 14341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# but don't create it if we're doing a dry run. 14351176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_write_libtool_object () 14361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 14371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck write_libobj=${1} 14381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$build_libtool_libs" = yes; then 14391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck write_lobj=\'${2}\' 14401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 14411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck write_lobj=none 14421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 14431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 14441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$build_old_libs" = yes; then 14451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck write_oldobj=\'${3}\' 14461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 14471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck write_oldobj=none 14481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 14491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 14501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_dry_run || { 14511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck cat >${write_libobj}T <<EOF 14521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# $write_libobj - a libtool object file 14531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 14541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# 14551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Please DO NOT delete this file! 14561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# It is necessary for linking the library. 14571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 14581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Name of the PIC object. 14591176bdada62cabc6ec4b0308a930e83b679d5d36John Reckpic_object=$write_lobj 14601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 14611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Name of the non-PIC object 14621176bdada62cabc6ec4b0308a930e83b679d5d36John Recknon_pic_object=$write_oldobj 14631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 14641176bdada62cabc6ec4b0308a930e83b679d5d36John ReckEOF 14651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $MV "${write_libobj}T" "${write_libobj}" 14661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } 14671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 14681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 14691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 14701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck################################################## 14711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# FILE NAME AND PATH CONVERSION HELPER FUNCTIONS # 14721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck################################################## 14731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 14741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_convert_core_file_wine_to_w32 ARG 14751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Helper function used by file name conversion functions when $build is *nix, 14761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# and $host is mingw, cygwin, or some other w32 environment. Relies on a 14771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# correctly configured wine environment available, with the winepath program 14781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# in $build's $PATH. 14791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# 14801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# ARG is the $build file name to be converted to w32 format. 14811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Result is available in $func_convert_core_file_wine_to_w32_result, and will 14821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# be empty on error (or when ARG is empty) 14831176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_convert_core_file_wine_to_w32 () 14841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 14851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_debug 14861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_convert_core_file_wine_to_w32_result="$1" 14871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$1"; then 14881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Unfortunately, winepath does not exit with a non-zero error code, so we 14891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # are forced to check the contents of stdout. On the other hand, if the 14901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # command is not found, the shell will set an exit code of 127 and print 14911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # *an error message* to stdout. So we must check for both error code of 14921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # zero AND non-empty stdout, which explains the odd construction: 14931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null` 14941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then 14951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | 14961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $SED -e "$lt_sed_naive_backslashify"` 14971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 14981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_convert_core_file_wine_to_w32_result= 14991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 15001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 15011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 15021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# end: func_convert_core_file_wine_to_w32 15031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 15041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 15051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_convert_core_path_wine_to_w32 ARG 15061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Helper function used by path conversion functions when $build is *nix, and 15071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly 15081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# configured wine environment available, with the winepath program in $build's 15091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# $PATH. Assumes ARG has no leading or trailing path separator characters. 15101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# 15111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# ARG is path to be converted from $build format to win32. 15121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Result is available in $func_convert_core_path_wine_to_w32_result. 15131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Unconvertible file (directory) names in ARG are skipped; if no directory names 15141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# are convertible, then the result may be empty. 15151176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_convert_core_path_wine_to_w32 () 15161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 15171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_debug 15181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # unfortunately, winepath doesn't convert paths, only file names 15191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_convert_core_path_wine_to_w32_result="" 15201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$1"; then 15211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck oldIFS=$IFS 15221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck IFS=: 15231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for func_convert_core_path_wine_to_w32_f in $1; do 15241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck IFS=$oldIFS 15251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" 15261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$func_convert_core_file_wine_to_w32_result" ; then 15271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -z "$func_convert_core_path_wine_to_w32_result"; then 15281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result" 15291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 15301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" 15311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 15321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 15331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 15341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck IFS=$oldIFS 15351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 15361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 15371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# end: func_convert_core_path_wine_to_w32 15381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 15391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 15401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_cygpath ARGS... 15411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when 15421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) 15431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or 15441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# (2), returns the Cygwin file name or path in func_cygpath_result (input 15451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# file name or path is assumed to be in w32 format, as previously converted 15461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# from $build's *nix or MSYS format). In case (3), returns the w32 file name 15471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# or path in func_cygpath_result (input file name or path is assumed to be in 15481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Cygwin format). Returns an empty string on error. 15491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# 15501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# ARGS are passed to cygpath, with the last one being the file name or path to 15511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# be converted. 15521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# 15531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH 15541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# environment variable; do not put it in $PATH. 15551176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_cygpath () 15561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 15571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_debug 15581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then 15591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` 15601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$?" -ne 0; then 15611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # on failure, ensure result is empty 15621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_cygpath_result= 15631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 15641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 15651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_cygpath_result= 15661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'" 15671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 15681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 15691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#end: func_cygpath 15701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 15711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 15721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_convert_core_msys_to_w32 ARG 15731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Convert file name or path ARG from MSYS format to w32 format. Return 15741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# result in func_convert_core_msys_to_w32_result. 15751176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_convert_core_msys_to_w32 () 15761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 15771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_debug 15781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # awkward: cmd appends spaces to result 15791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | 15801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` 15811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 15821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#end: func_convert_core_msys_to_w32 15831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 15841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 15851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_convert_file_check ARG1 ARG2 15861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Verify that ARG1 (a file name in $build format) was converted to $host 15871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# format in ARG2. Otherwise, emit an error message, but continue (resetting 15881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_to_host_file_result to ARG1). 15891176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_convert_file_check () 15901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 15911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_debug 15921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -z "$2" && test -n "$1" ; then 15931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_error "Could not determine host file name corresponding to" 15941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_error " \`$1'" 15951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_error "Continuing, but uninstalled executables may not work." 15961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Fallback: 15971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_to_host_file_result="$1" 15981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 15991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 16001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# end func_convert_file_check 16011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 16021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 16031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH 16041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Verify that FROM_PATH (a path in $build format) was converted to $host 16051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# format in TO_PATH. Otherwise, emit an error message, but continue, resetting 16061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_to_host_file_result to a simplistic fallback value (see below). 16071176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_convert_path_check () 16081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 16091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_debug 16101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -z "$4" && test -n "$3"; then 16111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_error "Could not determine the host path corresponding to" 16121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_error " \`$3'" 16131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_error "Continuing, but uninstalled executables may not work." 16141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Fallback. This is a deliberately simplistic "conversion" and 16151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # should not be "improved". See libtool.info. 16161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "x$1" != "x$2"; then 16171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck lt_replace_pathsep_chars="s|$1|$2|g" 16181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_to_host_path_result=`echo "$3" | 16191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $SED -e "$lt_replace_pathsep_chars"` 16201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 16211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_to_host_path_result="$3" 16221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 16231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 16241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 16251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# end func_convert_path_check 16261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 16271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 16281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG 16291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT 16301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# and appending REPL if ORIG matches BACKPAT. 16311176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_convert_path_front_back_pathsep () 16321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 16331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_debug 16341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $4 in 16351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $1 ) func_to_host_path_result="$3$func_to_host_path_result" 16361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 16371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 16381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $4 in 16391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $2 ) func_append func_to_host_path_result "$3" 16401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 16411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 16421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 16431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# end func_convert_path_front_back_pathsep 16441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 16451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 16461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck################################################## 16471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# $build to $host FILE NAME CONVERSION FUNCTIONS # 16481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck################################################## 16491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# invoked via `$to_host_file_cmd ARG' 16501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# 16511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# In each case, ARG is the path to be converted from $build to $host format. 16521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Result will be available in $func_to_host_file_result. 16531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 16541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 16551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_to_host_file ARG 16561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Converts the file name ARG from $build format to $host format. Return result 16571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# in func_to_host_file_result. 16581176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_to_host_file () 16591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 16601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_debug 16611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $to_host_file_cmd "$1" 16621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 16631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# end func_to_host_file 16641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 16651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 16661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_to_tool_file ARG LAZY 16671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# converts the file name ARG from $build format to toolchain format. Return 16681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# result in func_to_tool_file_result. If the conversion in use is listed 16691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# in (the comma separated) LAZY, no conversion takes place. 16701176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_to_tool_file () 16711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 16721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_debug 16731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case ,$2, in 16741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *,"$to_tool_file_cmd",*) 16751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_to_tool_file_result=$1 16761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 16771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 16781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $to_tool_file_cmd "$1" 16791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_to_tool_file_result=$func_to_host_file_result 16801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 16811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 16821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 16831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# end func_to_tool_file 16841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 16851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 16861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_convert_file_noop ARG 16871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Copy ARG to func_to_host_file_result. 16881176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_convert_file_noop () 16891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 16901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_to_host_file_result="$1" 16911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 16921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# end func_convert_file_noop 16931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 16941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 16951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_convert_file_msys_to_w32 ARG 16961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic 16971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# conversion to w32 is not available inside the cwrapper. Returns result in 16981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_to_host_file_result. 16991176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_convert_file_msys_to_w32 () 17001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 17011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_debug 17021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_to_host_file_result="$1" 17031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$1"; then 17041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_convert_core_msys_to_w32 "$1" 17051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_to_host_file_result="$func_convert_core_msys_to_w32_result" 17061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 17071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_convert_file_check "$1" "$func_to_host_file_result" 17081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 17091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# end func_convert_file_msys_to_w32 17101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 17111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 17121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_convert_file_cygwin_to_w32 ARG 17131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Convert file name ARG from Cygwin to w32 format. Returns result in 17141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_to_host_file_result. 17151176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_convert_file_cygwin_to_w32 () 17161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 17171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_debug 17181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_to_host_file_result="$1" 17191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$1"; then 17201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # because $build is cygwin, we call "the" cygpath in $PATH; no need to use 17211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # LT_CYGPATH in this case. 17221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_to_host_file_result=`cygpath -m "$1"` 17231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 17241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_convert_file_check "$1" "$func_to_host_file_result" 17251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 17261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# end func_convert_file_cygwin_to_w32 17271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 17281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 17291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_convert_file_nix_to_w32 ARG 17301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Convert file name ARG from *nix to w32 format. Requires a wine environment 17311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# and a working winepath. Returns result in func_to_host_file_result. 17321176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_convert_file_nix_to_w32 () 17331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 17341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_debug 17351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_to_host_file_result="$1" 17361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$1"; then 17371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_convert_core_file_wine_to_w32 "$1" 17381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_to_host_file_result="$func_convert_core_file_wine_to_w32_result" 17391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 17401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_convert_file_check "$1" "$func_to_host_file_result" 17411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 17421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# end func_convert_file_nix_to_w32 17431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 17441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 17451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_convert_file_msys_to_cygwin ARG 17461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. 17471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Returns result in func_to_host_file_result. 17481176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_convert_file_msys_to_cygwin () 17491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 17501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_debug 17511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_to_host_file_result="$1" 17521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$1"; then 17531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_convert_core_msys_to_w32 "$1" 17541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_cygpath -u "$func_convert_core_msys_to_w32_result" 17551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_to_host_file_result="$func_cygpath_result" 17561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 17571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_convert_file_check "$1" "$func_to_host_file_result" 17581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 17591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# end func_convert_file_msys_to_cygwin 17601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 17611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 17621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_convert_file_nix_to_cygwin ARG 17631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed 17641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# in a wine environment, working winepath, and LT_CYGPATH set. Returns result 17651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# in func_to_host_file_result. 17661176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_convert_file_nix_to_cygwin () 17671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 17681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_debug 17691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_to_host_file_result="$1" 17701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$1"; then 17711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. 17721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_convert_core_file_wine_to_w32 "$1" 17731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_cygpath -u "$func_convert_core_file_wine_to_w32_result" 17741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_to_host_file_result="$func_cygpath_result" 17751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 17761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_convert_file_check "$1" "$func_to_host_file_result" 17771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 17781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# end func_convert_file_nix_to_cygwin 17791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 17801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 17811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck############################################# 17821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# $build to $host PATH CONVERSION FUNCTIONS # 17831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck############################################# 17841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# invoked via `$to_host_path_cmd ARG' 17851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# 17861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# In each case, ARG is the path to be converted from $build to $host format. 17871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# The result will be available in $func_to_host_path_result. 17881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# 17891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Path separators are also converted from $build format to $host format. If 17901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# ARG begins or ends with a path separator character, it is preserved (but 17911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# converted to $host format) on output. 17921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# 17931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# All path conversion functions are named using the following convention: 17941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# file name conversion function : func_convert_file_X_to_Y () 17951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# path conversion function : func_convert_path_X_to_Y () 17961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# where, for any given $build/$host combination the 'X_to_Y' value is the 17971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# same. If conversion functions are added for new $build/$host combinations, 17981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# the two new functions must follow this pattern, or func_init_to_host_path_cmd 17991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# will break. 18001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 18011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 18021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_init_to_host_path_cmd 18031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Ensures that function "pointer" variable $to_host_path_cmd is set to the 18041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# appropriate value, based on the value of $to_host_file_cmd. 18051176bdada62cabc6ec4b0308a930e83b679d5d36John Reckto_host_path_cmd= 18061176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_init_to_host_path_cmd () 18071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 18081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_debug 18091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -z "$to_host_path_cmd"; then 18101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_stripname 'func_convert_file_' '' "$to_host_file_cmd" 18111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck to_host_path_cmd="func_convert_path_${func_stripname_result}" 18121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 18131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 18141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 18151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 18161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_to_host_path ARG 18171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Converts the path ARG from $build format to $host format. Return result 18181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# in func_to_host_path_result. 18191176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_to_host_path () 18201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 18211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_debug 18221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_init_to_host_path_cmd 18231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $to_host_path_cmd "$1" 18241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 18251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# end func_to_host_path 18261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 18271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 18281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_convert_path_noop ARG 18291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Copy ARG to func_to_host_path_result. 18301176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_convert_path_noop () 18311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 18321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_to_host_path_result="$1" 18331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 18341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# end func_convert_path_noop 18351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 18361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 18371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_convert_path_msys_to_w32 ARG 18381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic 18391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# conversion to w32 is not available inside the cwrapper. Returns result in 18401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_to_host_path_result. 18411176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_convert_path_msys_to_w32 () 18421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 18431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_debug 18441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_to_host_path_result="$1" 18451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$1"; then 18461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Remove leading and trailing path separator characters from ARG. MSYS 18471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; 18481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # and winepath ignores them completely. 18491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_stripname : : "$1" 18501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_to_host_path_tmp1=$func_stripname_result 18511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" 18521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_to_host_path_result="$func_convert_core_msys_to_w32_result" 18531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_convert_path_check : ";" \ 18541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck "$func_to_host_path_tmp1" "$func_to_host_path_result" 18551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" 18561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 18571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 18581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# end func_convert_path_msys_to_w32 18591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 18601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 18611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_convert_path_cygwin_to_w32 ARG 18621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Convert path ARG from Cygwin to w32 format. Returns result in 18631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_to_host_file_result. 18641176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_convert_path_cygwin_to_w32 () 18651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 18661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_debug 18671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_to_host_path_result="$1" 18681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$1"; then 18691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # See func_convert_path_msys_to_w32: 18701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_stripname : : "$1" 18711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_to_host_path_tmp1=$func_stripname_result 18721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` 18731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_convert_path_check : ";" \ 18741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck "$func_to_host_path_tmp1" "$func_to_host_path_result" 18751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" 18761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 18771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 18781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# end func_convert_path_cygwin_to_w32 18791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 18801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 18811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_convert_path_nix_to_w32 ARG 18821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Convert path ARG from *nix to w32 format. Requires a wine environment and 18831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# a working winepath. Returns result in func_to_host_file_result. 18841176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_convert_path_nix_to_w32 () 18851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 18861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_debug 18871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_to_host_path_result="$1" 18881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$1"; then 18891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # See func_convert_path_msys_to_w32: 18901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_stripname : : "$1" 18911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_to_host_path_tmp1=$func_stripname_result 18921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" 18931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_to_host_path_result="$func_convert_core_path_wine_to_w32_result" 18941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_convert_path_check : ";" \ 18951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck "$func_to_host_path_tmp1" "$func_to_host_path_result" 18961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" 18971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 18981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 18991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# end func_convert_path_nix_to_w32 19001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 19011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 19021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_convert_path_msys_to_cygwin ARG 19031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. 19041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Returns result in func_to_host_file_result. 19051176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_convert_path_msys_to_cygwin () 19061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 19071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_debug 19081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_to_host_path_result="$1" 19091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$1"; then 19101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # See func_convert_path_msys_to_w32: 19111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_stripname : : "$1" 19121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_to_host_path_tmp1=$func_stripname_result 19131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" 19141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_cygpath -u -p "$func_convert_core_msys_to_w32_result" 19151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_to_host_path_result="$func_cygpath_result" 19161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_convert_path_check : : \ 19171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck "$func_to_host_path_tmp1" "$func_to_host_path_result" 19181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_convert_path_front_back_pathsep ":*" "*:" : "$1" 19191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 19201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 19211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# end func_convert_path_msys_to_cygwin 19221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 19231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 19241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_convert_path_nix_to_cygwin ARG 19251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a 19261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# a wine environment, working winepath, and LT_CYGPATH set. Returns result in 19271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_to_host_file_result. 19281176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_convert_path_nix_to_cygwin () 19291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 19301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_debug 19311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_to_host_path_result="$1" 19321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$1"; then 19331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Remove leading and trailing path separator characters from 19341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # ARG. msys behavior is inconsistent here, cygpath turns them 19351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # into '.;' and ';.', and winepath ignores them completely. 19361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_stripname : : "$1" 19371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_to_host_path_tmp1=$func_stripname_result 19381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" 19391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" 19401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_to_host_path_result="$func_cygpath_result" 19411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_convert_path_check : : \ 19421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck "$func_to_host_path_tmp1" "$func_to_host_path_result" 19431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_convert_path_front_back_pathsep ":*" "*:" : "$1" 19441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 19451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 19461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# end func_convert_path_nix_to_cygwin 19471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 19481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 19491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_mode_compile arg... 19501176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_mode_compile () 19511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 19521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_debug 19531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Get the compilation command and the source file. 19541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck base_compile= 19551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck srcfile="$nonopt" # always keep a non-empty value in "srcfile" 19561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck suppress_opt=yes 19571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck suppress_output= 19581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck arg_mode=normal 19591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck libobj= 19601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck later= 19611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck pie_flag= 19621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 19631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for arg 19641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck do 19651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $arg_mode in 19661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck arg ) 19671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # do not "continue". Instead, add this to base_compile 19681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck lastarg="$arg" 19691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck arg_mode=normal 19701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 19711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 19721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck target ) 19731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck libobj="$arg" 19741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck arg_mode=normal 19751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 19761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 19771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 19781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck normal ) 19791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Accept any command-line options. 19801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $arg in 19811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -o) 19821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -n "$libobj" && \ 19831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_fatal_error "you cannot specify \`-o' more than once" 19841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck arg_mode=target 19851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 19861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 19871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 19881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -pie | -fpie | -fPIE) 19891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append pie_flag " $arg" 19901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 19911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 19921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 19931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -shared | -static | -prefer-pic | -prefer-non-pic) 19941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append later " $arg" 19951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 19961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 19971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 19981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -no-suppress) 19991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck suppress_opt=no 20001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 20011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 20021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 20031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -Xcompiler) 20041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck arg_mode=arg # the next one goes into the "base_compile" arg list 20051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue # The current "srcfile" will either be retained or 20061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; # replaced later. I would guess that would be a bug. 20071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 20081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -Wc,*) 20091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_stripname '-Wc,' '' "$arg" 20101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck args=$func_stripname_result 20111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck lastarg= 20121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck save_ifs="$IFS"; IFS=',' 20131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for arg in $args; do 20141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck IFS="$save_ifs" 20151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append_quoted lastarg "$arg" 20161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 20171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck IFS="$save_ifs" 20181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_stripname ' ' '' "$lastarg" 20191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck lastarg=$func_stripname_result 20201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 20211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Add the arguments to base_compile. 20221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append base_compile " $lastarg" 20231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 20241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 20251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 20261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 20271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Accept the current argument as the source file. 20281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # The previous "srcfile" becomes the current argument. 20291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # 20301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck lastarg="$srcfile" 20311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck srcfile="$arg" 20321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 20331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac # case $arg 20341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 20351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac # case $arg_mode 20361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 20371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Aesthetically quote the previous argument. 20381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append_quoted base_compile "$lastarg" 20391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done # for arg 20401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 20411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $arg_mode in 20421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck arg) 20431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_fatal_error "you must specify an argument for -Xcompile" 20441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 20451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck target) 20461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_fatal_error "you must specify a target with \`-o'" 20471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 20481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 20491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Get the name of the library object. 20501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -z "$libobj" && { 20511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_basename "$srcfile" 20521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck libobj="$func_basename_result" 20531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } 20541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 20551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 20561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 20571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Recognize several different file suffixes. 20581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # If the user specifies -o file.o, it is replaced with file.lo 20591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $libobj in 20601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *.[cCFSifmso] | \ 20611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *.ada | *.adb | *.ads | *.asm | \ 20621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ 20631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) 20641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_xform "$libobj" 20651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck libobj=$func_xform_result 20661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 20671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 20681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 20691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $libobj in 20701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; 20711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 20721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_fatal_error "cannot determine name of library object from \`$libobj'" 20731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 20741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 20751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 20761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_infer_tag $base_compile 20771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 20781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for arg in $later; do 20791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $arg in 20801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -shared) 20811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test "$build_libtool_libs" != yes && \ 20821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_fatal_configuration "can not build a shared library" 20831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck build_old_libs=no 20841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 20851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 20861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 20871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -static) 20881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck build_libtool_libs=no 20891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck build_old_libs=yes 20901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 20911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 20921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 20931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -prefer-pic) 20941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck pic_mode=yes 20951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 20961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 20971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 20981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -prefer-non-pic) 20991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck pic_mode=no 21001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 21011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 21021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 21031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 21041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 21051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_quote_for_eval "$libobj" 21061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test "X$libobj" != "X$func_quote_for_eval_result" \ 21071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ 21081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck && func_warning "libobj name \`$libobj' may not contain shell special characters." 21091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_dirname_and_basename "$obj" "/" "" 21101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck objname="$func_basename_result" 21111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck xdir="$func_dirname_result" 21121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck lobj=${xdir}$objdir/$objname 21131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 21141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -z "$base_compile" && \ 21151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_fatal_help "you must specify a compilation command" 21161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 21171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Delete any leftover library objects. 21181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$build_old_libs" = yes; then 21191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck removelist="$obj $lobj $libobj ${libobj}T" 21201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 21211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck removelist="$lobj $libobj ${libobj}T" 21221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 21231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 21241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # On Cygwin there's no "real" PIC flag so we must build both object types 21251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $host_os in 21261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck cygwin* | mingw* | pw32* | os2* | cegcc*) 21271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck pic_mode=default 21281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 21291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 21301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then 21311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # non-PIC code in shared libraries is not supported 21321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck pic_mode=default 21331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 21341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 21351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Calculate the filename of the output object if compiler does 21361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # not support -o with -c 21371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$compiler_c_o" = no; then 21381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext} 21391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck lockfile="$output_obj.lock" 21401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 21411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck output_obj= 21421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck need_locks=no 21431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck lockfile= 21441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 21451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 21461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Lock this critical section if it is needed 21471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # We use this script file to make the link, it avoids creating a new file 21481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$need_locks" = yes; then 21491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do 21501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_echo "Waiting for $lockfile to be removed" 21511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck sleep 2 21521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 21531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck elif test "$need_locks" = warn; then 21541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -f "$lockfile"; then 21551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $ECHO "\ 21561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck*** ERROR, $lockfile exists and contains: 21571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck`cat $lockfile 2>/dev/null` 21581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 21591176bdada62cabc6ec4b0308a930e83b679d5d36John ReckThis indicates that another process is trying to use the same 21601176bdada62cabc6ec4b0308a930e83b679d5d36John Recktemporary object file, and libtool could not work around it because 21611176bdada62cabc6ec4b0308a930e83b679d5d36John Reckyour compiler does not support \`-c' and \`-o' together. If you 21621176bdada62cabc6ec4b0308a930e83b679d5d36John Reckrepeat this compilation, it may succeed, by chance, but you had better 21631176bdada62cabc6ec4b0308a930e83b679d5d36John Reckavoid parallel builds (make -j) in this platform, or get a better 21641176bdada62cabc6ec4b0308a930e83b679d5d36John Reckcompiler." 21651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 21661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_dry_run || $RM $removelist 21671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck exit $EXIT_FAILURE 21681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 21691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append removelist " $output_obj" 21701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $ECHO "$srcfile" > "$lockfile" 21711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 21721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 21731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_dry_run || $RM $removelist 21741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append removelist " $lockfile" 21751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 21761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 21771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 21781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck srcfile=$func_to_tool_file_result 21791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_quote_for_eval "$srcfile" 21801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck qsrcfile=$func_quote_for_eval_result 21811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 21821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Only build a PIC object if we are building libtool libraries. 21831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$build_libtool_libs" = yes; then 21841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Without this assignment, base_compile gets emptied. 21851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fbsd_hideous_sh_bug=$base_compile 21861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 21871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$pic_mode" != no; then 21881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck command="$base_compile $qsrcfile $pic_flag" 21891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 21901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Don't build PIC code 21911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck command="$base_compile $qsrcfile" 21921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 21931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 21941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_mkdir_p "$xdir$objdir" 21951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 21961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -z "$output_obj"; then 21971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Place PIC objects in $objdir 21981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append command " -o $lobj" 21991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 22001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 22011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_show_eval_locale "$command" \ 22021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' 22031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 22041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$need_locks" = warn && 22051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 22061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $ECHO "\ 22071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck*** ERROR, $lockfile contains: 22081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck`cat $lockfile 2>/dev/null` 22091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 22101176bdada62cabc6ec4b0308a930e83b679d5d36John Reckbut it should contain: 22111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck$srcfile 22121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 22131176bdada62cabc6ec4b0308a930e83b679d5d36John ReckThis indicates that another process is trying to use the same 22141176bdada62cabc6ec4b0308a930e83b679d5d36John Recktemporary object file, and libtool could not work around it because 22151176bdada62cabc6ec4b0308a930e83b679d5d36John Reckyour compiler does not support \`-c' and \`-o' together. If you 22161176bdada62cabc6ec4b0308a930e83b679d5d36John Reckrepeat this compilation, it may succeed, by chance, but you had better 22171176bdada62cabc6ec4b0308a930e83b679d5d36John Reckavoid parallel builds (make -j) in this platform, or get a better 22181176bdada62cabc6ec4b0308a930e83b679d5d36John Reckcompiler." 22191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 22201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_dry_run || $RM $removelist 22211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck exit $EXIT_FAILURE 22221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 22231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 22241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Just move the object if needed, then go on to compile the next one 22251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then 22261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_show_eval '$MV "$output_obj" "$lobj"' \ 22271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 'error=$?; $opt_dry_run || $RM $removelist; exit $error' 22281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 22291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 22301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Allow error messages only from the first compilation. 22311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$suppress_opt" = yes; then 22321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck suppress_output=' >/dev/null 2>&1' 22331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 22341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 22351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 22361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Only build a position-dependent object if we build old libraries. 22371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$build_old_libs" = yes; then 22381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$pic_mode" != yes; then 22391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Don't build PIC code 22401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck command="$base_compile $qsrcfile$pie_flag" 22411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 22421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck command="$base_compile $qsrcfile $pic_flag" 22431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 22441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$compiler_c_o" = yes; then 22451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append command " -o $obj" 22461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 22471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 22481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Suppress compiler output if we already did a PIC compilation. 22491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append command "$suppress_output" 22501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_show_eval_locale "$command" \ 22511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 22521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 22531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$need_locks" = warn && 22541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 22551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $ECHO "\ 22561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck*** ERROR, $lockfile contains: 22571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck`cat $lockfile 2>/dev/null` 22581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 22591176bdada62cabc6ec4b0308a930e83b679d5d36John Reckbut it should contain: 22601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck$srcfile 22611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 22621176bdada62cabc6ec4b0308a930e83b679d5d36John ReckThis indicates that another process is trying to use the same 22631176bdada62cabc6ec4b0308a930e83b679d5d36John Recktemporary object file, and libtool could not work around it because 22641176bdada62cabc6ec4b0308a930e83b679d5d36John Reckyour compiler does not support \`-c' and \`-o' together. If you 22651176bdada62cabc6ec4b0308a930e83b679d5d36John Reckrepeat this compilation, it may succeed, by chance, but you had better 22661176bdada62cabc6ec4b0308a930e83b679d5d36John Reckavoid parallel builds (make -j) in this platform, or get a better 22671176bdada62cabc6ec4b0308a930e83b679d5d36John Reckcompiler." 22681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 22691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_dry_run || $RM $removelist 22701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck exit $EXIT_FAILURE 22711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 22721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 22731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Just move the object if needed 22741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then 22751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_show_eval '$MV "$output_obj" "$obj"' \ 22761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 'error=$?; $opt_dry_run || $RM $removelist; exit $error' 22771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 22781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 22791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 22801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_dry_run || { 22811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" 22821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 22831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Unlock the critical section if it was locked 22841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$need_locks" != no; then 22851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck removelist=$lockfile 22861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $RM "$lockfile" 22871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 22881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } 22891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 22901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck exit $EXIT_SUCCESS 22911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 22921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 22931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck$opt_help || { 22941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test "$opt_mode" = compile && func_mode_compile ${1+"$@"} 22951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 22961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 22971176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_mode_help () 22981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 22991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # We need to display help for each of the modes. 23001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $opt_mode in 23011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck "") 23021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Generic help is extracted from the usage comments 23031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # at the start of this file. 23041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_help 23051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 23061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 23071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck clean) 23081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $ECHO \ 23091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... 23101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 23111176bdada62cabc6ec4b0308a930e83b679d5d36John ReckRemove files from the build directory. 23121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 23131176bdada62cabc6ec4b0308a930e83b679d5d36John ReckRM is the name of the program to use to delete files associated with each FILE 23141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 23151176bdada62cabc6ec4b0308a930e83b679d5d36John Reckto RM. 23161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 23171176bdada62cabc6ec4b0308a930e83b679d5d36John ReckIf FILE is a libtool library, object or program, all the files associated 23181176bdada62cabc6ec4b0308a930e83b679d5d36John Reckwith it are deleted. Otherwise, only FILE itself is deleted using RM." 23191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 23201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 23211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck compile) 23221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $ECHO \ 23231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE 23241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 23251176bdada62cabc6ec4b0308a930e83b679d5d36John ReckCompile a source file into a libtool library object. 23261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 23271176bdada62cabc6ec4b0308a930e83b679d5d36John ReckThis mode accepts the following additional options: 23281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 23291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -o OUTPUT-FILE set the output file name to OUTPUT-FILE 23301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -no-suppress do not suppress compiler output for multiple passes 23311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -prefer-pic try to build PIC objects only 23321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -prefer-non-pic try to build non-PIC objects only 23331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -shared do not build a \`.o' file suitable for static linking 23341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -static only build a \`.o' file suitable for static linking 23351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -Wc,FLAG pass FLAG directly to the compiler 23361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 23371176bdada62cabc6ec4b0308a930e83b679d5d36John ReckCOMPILE-COMMAND is a command to be used in creating a \`standard' object file 23381176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfrom the given SOURCEFILE. 23391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 23401176bdada62cabc6ec4b0308a930e83b679d5d36John ReckThe output file name is determined by removing the directory component from 23411176bdada62cabc6ec4b0308a930e83b679d5d36John ReckSOURCEFILE, then substituting the C source code suffix \`.c' with the 23421176bdada62cabc6ec4b0308a930e83b679d5d36John Recklibrary object suffix, \`.lo'." 23431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 23441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 23451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck execute) 23461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $ECHO \ 23471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... 23481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 23491176bdada62cabc6ec4b0308a930e83b679d5d36John ReckAutomatically set library path, then run a program. 23501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 23511176bdada62cabc6ec4b0308a930e83b679d5d36John ReckThis mode accepts the following additional options: 23521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 23531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -dlopen FILE add the directory containing FILE to the library path 23541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 23551176bdada62cabc6ec4b0308a930e83b679d5d36John ReckThis mode sets the library path environment variable according to \`-dlopen' 23561176bdada62cabc6ec4b0308a930e83b679d5d36John Reckflags. 23571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 23581176bdada62cabc6ec4b0308a930e83b679d5d36John ReckIf any of the ARGS are libtool executable wrappers, then they are translated 23591176bdada62cabc6ec4b0308a930e83b679d5d36John Reckinto their corresponding uninstalled binary, and any of their required library 23601176bdada62cabc6ec4b0308a930e83b679d5d36John Reckdirectories are added to the library path. 23611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 23621176bdada62cabc6ec4b0308a930e83b679d5d36John ReckThen, COMMAND is executed, with ARGS as arguments." 23631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 23641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 23651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck finish) 23661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $ECHO \ 23671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... 23681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 23691176bdada62cabc6ec4b0308a930e83b679d5d36John ReckComplete the installation of libtool libraries. 23701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 23711176bdada62cabc6ec4b0308a930e83b679d5d36John ReckEach LIBDIR is a directory that contains libtool libraries. 23721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 23731176bdada62cabc6ec4b0308a930e83b679d5d36John ReckThe commands that this mode executes may require superuser privileges. Use 23741176bdada62cabc6ec4b0308a930e83b679d5d36John Reckthe \`--dry-run' option if you just want to see what would be executed." 23751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 23761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 23771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck install) 23781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $ECHO \ 23791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... 23801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 23811176bdada62cabc6ec4b0308a930e83b679d5d36John ReckInstall executables or libraries. 23821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 23831176bdada62cabc6ec4b0308a930e83b679d5d36John ReckINSTALL-COMMAND is the installation command. The first component should be 23841176bdada62cabc6ec4b0308a930e83b679d5d36John Reckeither the \`install' or \`cp' program. 23851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 23861176bdada62cabc6ec4b0308a930e83b679d5d36John ReckThe following components of INSTALL-COMMAND are treated specially: 23871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 23881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation 23891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 23901176bdada62cabc6ec4b0308a930e83b679d5d36John ReckThe rest of the components are interpreted as arguments to that command (only 23911176bdada62cabc6ec4b0308a930e83b679d5d36John ReckBSD-compatible install options are recognized)." 23921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 23931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 23941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck link) 23951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $ECHO \ 23961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... 23971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 23981176bdada62cabc6ec4b0308a930e83b679d5d36John ReckLink object files or libraries together to form another library, or to 23991176bdada62cabc6ec4b0308a930e83b679d5d36John Reckcreate an executable program. 24001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 24011176bdada62cabc6ec4b0308a930e83b679d5d36John ReckLINK-COMMAND is a command using the C compiler that you would use to create 24021176bdada62cabc6ec4b0308a930e83b679d5d36John Recka program from several object files. 24031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 24041176bdada62cabc6ec4b0308a930e83b679d5d36John ReckThe following components of LINK-COMMAND are treated specially: 24051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 24061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -all-static do not do any dynamic linking at all 24071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -avoid-version do not add a version suffix if possible 24081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -bindir BINDIR specify path to binaries directory (for systems where 24091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck libraries must be found in the PATH setting at runtime) 24101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime 24111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols 24121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) 24131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -export-symbols SYMFILE 24141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck try to export only the symbols listed in SYMFILE 24151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -export-symbols-regex REGEX 24161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck try to export only the symbols matching REGEX 24171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -LLIBDIR search LIBDIR for required installed libraries 24181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -lNAME OUTPUT-FILE requires the installed library libNAME 24191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -module build a library that can dlopened 24201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -no-fast-install disable the fast-install mode 24211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -no-install link a not-installable executable 24221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -no-undefined declare that a library does not refer to external symbols 24231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -o OUTPUT-FILE create OUTPUT-FILE from the specified objects 24241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -objectlist FILE Use a list of object files found in FILE to specify objects 24251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -precious-files-regex REGEX 24261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck don't remove output files matching REGEX 24271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -release RELEASE specify package release information 24281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -rpath LIBDIR the created library will eventually be installed in LIBDIR 24291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries 24301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -shared only do dynamic linking of libtool libraries 24311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -shrext SUFFIX override the standard shared library file extension 24321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -static do not do any dynamic linking of uninstalled libtool libraries 24331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -static-libtool-libs 24341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck do not do any dynamic linking of libtool libraries 24351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -version-info CURRENT[:REVISION[:AGE]] 24361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck specify library version info [each variable defaults to 0] 24371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -weak LIBNAME declare that the target provides the LIBNAME interface 24381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -Wc,FLAG 24391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -Xcompiler FLAG pass linker-specific FLAG directly to the compiler 24401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -Wl,FLAG 24411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -Xlinker FLAG pass linker-specific FLAG directly to the linker 24421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) 24431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 24441176bdada62cabc6ec4b0308a930e83b679d5d36John ReckAll other options (arguments beginning with \`-') are ignored. 24451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 24461176bdada62cabc6ec4b0308a930e83b679d5d36John ReckEvery other argument is treated as a filename. Files ending in \`.la' are 24471176bdada62cabc6ec4b0308a930e83b679d5d36John Recktreated as uninstalled libtool libraries, other files are standard or library 24481176bdada62cabc6ec4b0308a930e83b679d5d36John Reckobject files. 24491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 24501176bdada62cabc6ec4b0308a930e83b679d5d36John ReckIf the OUTPUT-FILE ends in \`.la', then a libtool library is created, 24511176bdada62cabc6ec4b0308a930e83b679d5d36John Reckonly library objects (\`.lo' files) may be specified, and \`-rpath' is 24521176bdada62cabc6ec4b0308a930e83b679d5d36John Reckrequired, except when creating a convenience library. 24531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 24541176bdada62cabc6ec4b0308a930e83b679d5d36John ReckIf OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created 24551176bdada62cabc6ec4b0308a930e83b679d5d36John Reckusing \`ar' and \`ranlib', or on Windows using \`lib'. 24561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 24571176bdada62cabc6ec4b0308a930e83b679d5d36John ReckIf OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file 24581176bdada62cabc6ec4b0308a930e83b679d5d36John Reckis created, otherwise an executable program is created." 24591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 24601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 24611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck uninstall) 24621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $ECHO \ 24631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... 24641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 24651176bdada62cabc6ec4b0308a930e83b679d5d36John ReckRemove libraries from an installation directory. 24661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 24671176bdada62cabc6ec4b0308a930e83b679d5d36John ReckRM is the name of the program to use to delete files associated with each FILE 24681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 24691176bdada62cabc6ec4b0308a930e83b679d5d36John Reckto RM. 24701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 24711176bdada62cabc6ec4b0308a930e83b679d5d36John ReckIf FILE is a libtool library, all the files associated with it are deleted. 24721176bdada62cabc6ec4b0308a930e83b679d5d36John ReckOtherwise, only FILE itself is deleted using RM." 24731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 24741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 24751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 24761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_fatal_help "invalid operation mode \`$opt_mode'" 24771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 24781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 24791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 24801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo 24811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $ECHO "Try \`$progname --help' for more information about other modes." 24821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 24831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 24841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Now that we've collected a possible --mode arg, show help if necessary 24851176bdada62cabc6ec4b0308a930e83b679d5d36John Reckif $opt_help; then 24861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$opt_help" = :; then 24871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_mode_help 24881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 24891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck { 24901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_help noexit 24911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for opt_mode in compile link execute install finish uninstall clean; do 24921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_mode_help 24931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 24941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } | sed -n '1p; 2,$s/^Usage:/ or: /p' 24951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck { 24961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_help noexit 24971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for opt_mode in compile link execute install finish uninstall clean; do 24981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo 24991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_mode_help 25001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 25011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } | 25021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck sed '1d 25031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck /^When reporting/,/^Report/{ 25041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck H 25051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck d 25061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } 25071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $x 25081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck /information about other modes/d 25091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck /more detailed .*MODE/d 25101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' 25111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 25121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck exit $? 25131176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfi 25141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 25151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 25161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_mode_execute arg... 25171176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_mode_execute () 25181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 25191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_debug 25201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # The first argument is the command name. 25211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck cmd="$nonopt" 25221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -z "$cmd" && \ 25231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_fatal_help "you must specify a COMMAND" 25241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 25251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Handle -dlopen flags immediately. 25261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for file in $opt_dlopen; do 25271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -f "$file" \ 25281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck || func_fatal_help "\`$file' is not a file" 25291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 25301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck dir= 25311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $file in 25321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *.la) 25331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_resolve_sysroot "$file" 25341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck file=$func_resolve_sysroot_result 25351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 25361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Check to see that this really is a libtool archive. 25371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_lalib_unsafe_p "$file" \ 25381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck || func_fatal_help "\`$lib' is not a valid libtool archive" 25391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 25401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Read the libtool library. 25411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck dlname= 25421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck library_names= 25431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_source "$file" 25441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 25451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Skip this library if it cannot be dlopened. 25461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -z "$dlname"; then 25471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Warn if it was a shared library. 25481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -n "$library_names" && \ 25491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_warning "\`$file' was not linked with \`-export-dynamic'" 25501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 25511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 25521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 25531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_dirname "$file" "" "." 25541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck dir="$func_dirname_result" 25551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 25561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -f "$dir/$objdir/$dlname"; then 25571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append dir "/$objdir" 25581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 25591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test ! -f "$dir/$dlname"; then 25601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 25611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 25621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 25631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 25641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 25651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *.lo) 25661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Just add the directory containing the .lo file. 25671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_dirname "$file" "" "." 25681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck dir="$func_dirname_result" 25691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 25701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 25711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 25721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" 25731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 25741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 25751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 25761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 25771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Get the absolute pathname. 25781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck absdir=`cd "$dir" && pwd` 25791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -n "$absdir" && dir="$absdir" 25801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 25811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Now add the directory to shlibpath_var. 25821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if eval "test -z \"\$$shlibpath_var\""; then 25831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval "$shlibpath_var=\"\$dir\"" 25841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 25851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" 25861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 25871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 25881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 25891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # This variable tells wrapper scripts just to set shlibpath_var 25901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # rather than running their programs. 25911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck libtool_execute_magic="$magic" 25921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 25931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Check if any of the arguments is a wrapper script. 25941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck args= 25951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for file 25961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck do 25971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $file in 25981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -* | *.la | *.lo ) ;; 25991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 26001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Do a test to see if this is really a libtool program. 26011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if func_ltwrapper_script_p "$file"; then 26021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_source "$file" 26031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Transform arg to wrapped name. 26041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck file="$progdir/$program" 26051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck elif func_ltwrapper_executable_p "$file"; then 26061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_ltwrapper_scriptname "$file" 26071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_source "$func_ltwrapper_scriptname_result" 26081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Transform arg to wrapped name. 26091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck file="$progdir/$program" 26101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 26111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 26121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 26131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Quote arguments (to preserve shell metacharacters). 26141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append_quoted args "$file" 26151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 26161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 26171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "X$opt_dry_run" = Xfalse; then 26181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$shlibpath_var"; then 26191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Export the shlibpath_var. 26201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval "export $shlibpath_var" 26211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 26221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 26231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Restore saved environment variables 26241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 26251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck do 26261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval "if test \"\${save_$lt_var+set}\" = set; then 26271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $lt_var=\$save_$lt_var; export $lt_var 26281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 26291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $lt_unset $lt_var 26301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi" 26311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 26321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 26331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Now prepare to actually exec the command. 26341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck exec_cmd="\$cmd$args" 26351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 26361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Display what would be done. 26371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$shlibpath_var"; then 26381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" 26391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo "export $shlibpath_var" 26401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 26411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $ECHO "$cmd$args" 26421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck exit $EXIT_SUCCESS 26431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 26441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 26451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 26461176bdada62cabc6ec4b0308a930e83b679d5d36John Recktest "$opt_mode" = execute && func_mode_execute ${1+"$@"} 26471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 26481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 26491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_mode_finish arg... 26501176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_mode_finish () 26511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 26521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_debug 26531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck libs= 26541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck libdirs= 26551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck admincmds= 26561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 26571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for opt in "$nonopt" ${1+"$@"} 26581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck do 26591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -d "$opt"; then 26601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append libdirs " $opt" 26611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 26621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck elif test -f "$opt"; then 26631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if func_lalib_unsafe_p "$opt"; then 26641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append libs " $opt" 26651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 26661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_warning "\`$opt' is not a valid libtool archive" 26671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 26681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 26691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 26701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_fatal_error "invalid argument \`$opt'" 26711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 26721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 26731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 26741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$libs"; then 26751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$lt_sysroot"; then 26761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` 26771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" 26781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 26791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck sysroot_cmd= 26801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 26811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 26821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Remove sysroot references 26831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if $opt_dry_run; then 26841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for lib in $libs; do 26851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo "removing references to $lt_sysroot and \`=' prefixes from $lib" 26861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 26871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 26881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck tmpdir=`func_mktempdir` 26891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for lib in $libs; do 26901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ 26911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck > $tmpdir/tmp-la 26921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck mv -f $tmpdir/tmp-la $lib 26931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 26941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ${RM}r "$tmpdir" 26951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 26961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 26971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 26981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then 26991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for libdir in $libdirs; do 27001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$finish_cmds"; then 27011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Do each command in the finish commands. 27021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_execute_cmds "$finish_cmds" 'admincmds="$admincmds 27031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck'"$cmd"'"' 27041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 27051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$finish_eval"; then 27061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Do the single finish_eval. 27071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval cmds=\"$finish_eval\" 27081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_dry_run || eval "$cmds" || func_append admincmds " 27091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $cmds" 27101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 27111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 27121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 27131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 27141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Exit here if they wanted silent mode. 27151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_silent && exit $EXIT_SUCCESS 27161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 27171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then 27181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo "----------------------------------------------------------------------" 27191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo "Libraries have been installed in:" 27201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for libdir in $libdirs; do 27211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $ECHO " $libdir" 27221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 27231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo 27241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo "If you ever happen to want to link against installed libraries" 27251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo "in a given directory, LIBDIR, you must either use libtool, and" 27261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo "specify the full pathname of the library, or use the \`-LLIBDIR'" 27271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo "flag during linking and do at least one of the following:" 27281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$shlibpath_var"; then 27291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo " - add LIBDIR to the \`$shlibpath_var' environment variable" 27301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo " during execution" 27311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 27321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$runpath_var"; then 27331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo " - add LIBDIR to the \`$runpath_var' environment variable" 27341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo " during linking" 27351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 27361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$hardcode_libdir_flag_spec"; then 27371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck libdir=LIBDIR 27381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval flag=\"$hardcode_libdir_flag_spec\" 27391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 27401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $ECHO " - use the \`$flag' linker flag" 27411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 27421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$admincmds"; then 27431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $ECHO " - have your system administrator run these commands:$admincmds" 27441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 27451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -f /etc/ld.so.conf; then 27461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" 27471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 27481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo 27491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 27501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo "See any operating system documentation about shared libraries for" 27511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $host in 27521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck solaris2.[6789]|solaris2.1[0-9]) 27531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" 27541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo "pages." 27551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 27561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 27571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo "more information, such as the ld(1) and ld.so(8) manual pages." 27581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 27591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 27601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo "----------------------------------------------------------------------" 27611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 27621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck exit $EXIT_SUCCESS 27631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 27641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 27651176bdada62cabc6ec4b0308a930e83b679d5d36John Recktest "$opt_mode" = finish && func_mode_finish ${1+"$@"} 27661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 27671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 27681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_mode_install arg... 27691176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_mode_install () 27701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 27711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_debug 27721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # There may be an optional sh(1) argument at the beginning of 27731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # install_prog (especially on Windows NT). 27741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || 27751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Allow the use of GNU shtool's install command. 27761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $nonopt in *shtool*) :;; *) false;; esac; then 27771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Aesthetically quote it. 27781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_quote_for_eval "$nonopt" 27791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck install_prog="$func_quote_for_eval_result " 27801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck arg=$1 27811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck shift 27821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 27831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck install_prog= 27841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck arg=$nonopt 27851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 27861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 27871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # The real first argument should be the name of the installation program. 27881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Aesthetically quote it. 27891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_quote_for_eval "$arg" 27901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append install_prog "$func_quote_for_eval_result" 27911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck install_shared_prog=$install_prog 27921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case " $install_prog " in 27931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *[\\\ /]cp\ *) install_cp=: ;; 27941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) install_cp=false ;; 27951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 27961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 27971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # We need to accept at least all the BSD install flags. 27981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck dest= 27991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck files= 28001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck opts= 28011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck prev= 28021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck install_type= 28031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck isdir=no 28041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck stripme= 28051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck no_mode=: 28061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for arg 28071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck do 28081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck arg2= 28091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$dest"; then 28101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append files " $dest" 28111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck dest=$arg 28121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 28131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 28141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 28151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $arg in 28161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -d) isdir=yes ;; 28171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -f) 28181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if $install_cp; then :; else 28191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck prev=$arg 28201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 28211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 28221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -g | -m | -o) 28231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck prev=$arg 28241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 28251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -s) 28261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck stripme=" -s" 28271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 28281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 28291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -*) 28301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 28311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 28321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # If the previous option needed an argument, then skip it. 28331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$prev"; then 28341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "x$prev" = x-m && test -n "$install_override_mode"; then 28351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck arg2=$install_override_mode 28361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck no_mode=false 28371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 28381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck prev= 28391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 28401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck dest=$arg 28411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 28421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 28431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 28441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 28451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 28461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Aesthetically quote the argument. 28471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_quote_for_eval "$arg" 28481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append install_prog " $func_quote_for_eval_result" 28491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$arg2"; then 28501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_quote_for_eval "$arg2" 28511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 28521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append install_shared_prog " $func_quote_for_eval_result" 28531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 28541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 28551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -z "$install_prog" && \ 28561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_fatal_help "you must specify an install program" 28571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 28581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -n "$prev" && \ 28591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_fatal_help "the \`$prev' option requires an argument" 28601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 28611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$install_override_mode" && $no_mode; then 28621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if $install_cp; then :; else 28631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_quote_for_eval "$install_override_mode" 28641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append install_shared_prog " -m $func_quote_for_eval_result" 28651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 28661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 28671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 28681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -z "$files"; then 28691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -z "$dest"; then 28701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_fatal_help "no file or destination specified" 28711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 28721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_fatal_help "you must specify a destination" 28731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 28741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 28751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 28761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Strip any trailing slash from the destination. 28771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_stripname '' '/' "$dest" 28781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck dest=$func_stripname_result 28791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 28801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Check to see that the destination is a directory. 28811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -d "$dest" && isdir=yes 28821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$isdir" = yes; then 28831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck destdir="$dest" 28841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck destname= 28851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 28861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_dirname_and_basename "$dest" "" "." 28871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck destdir="$func_dirname_result" 28881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck destname="$func_basename_result" 28891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 28901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Not a directory, so check to see that there is only one file specified. 28911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck set dummy $files; shift 28921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test "$#" -gt 1 && \ 28931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_fatal_help "\`$dest' is not a directory" 28941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 28951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $destdir in 28961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck [\\/]* | [A-Za-z]:[\\/]*) ;; 28971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 28981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for file in $files; do 28991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $file in 29001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *.lo) ;; 29011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 29021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_fatal_help "\`$destdir' must be an absolute directory name" 29031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 29041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 29051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 29061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 29071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 29081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 29091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # This variable tells wrapper scripts just to set variables rather 29101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # than running their programs. 29111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck libtool_install_magic="$magic" 29121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 29131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck staticlibs= 29141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck future_libdirs= 29151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck current_libdirs= 29161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for file in $files; do 29171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 29181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Do each installation. 29191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $file in 29201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *.$libext) 29211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Do the static libraries later. 29221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append staticlibs " $file" 29231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 29241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 29251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *.la) 29261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_resolve_sysroot "$file" 29271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck file=$func_resolve_sysroot_result 29281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 29291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Check to see that this really is a libtool archive. 29301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_lalib_unsafe_p "$file" \ 29311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck || func_fatal_help "\`$file' is not a valid libtool archive" 29321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 29331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck library_names= 29341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck old_library= 29351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck relink_command= 29361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_source "$file" 29371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 29381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Add the libdir to current_libdirs if it is the destination. 29391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "X$destdir" = "X$libdir"; then 29401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case "$current_libdirs " in 29411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *" $libdir "*) ;; 29421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) func_append current_libdirs " $libdir" ;; 29431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 29441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 29451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Note the libdir as a future libdir. 29461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case "$future_libdirs " in 29471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *" $libdir "*) ;; 29481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) func_append future_libdirs " $libdir" ;; 29491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 29501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 29511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 29521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_dirname "$file" "/" "" 29531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck dir="$func_dirname_result" 29541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append dir "$objdir" 29551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 29561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$relink_command"; then 29571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Determine the prefix the user has applied to our future dir. 29581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` 29591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 29601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Don't allow the user to place us outside of our expected 29611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # location b/c this prevents finding dependent libraries that 29621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # are installed to the same prefix. 29631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # At present, this check doesn't affect windows .dll's that 29641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # are installed into $libdir/../bin (currently, that works fine) 29651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # but it's something to keep an eye on. 29661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test "$inst_prefix_dir" = "$destdir" && \ 29671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" 29681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 29691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$inst_prefix_dir"; then 29701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Stick the inst_prefix_dir data into the link command. 29711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` 29721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 29731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` 29741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 29751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 29761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_warning "relinking \`$file'" 29771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_show_eval "$relink_command" \ 29781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' 29791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 29801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 29811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # See the names of the shared library. 29821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck set dummy $library_names; shift 29831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$1"; then 29841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck realname="$1" 29851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck shift 29861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 29871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck srcname="$realname" 29881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -n "$relink_command" && srcname="$realname"T 29891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 29901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Install the shared library and build the symlinks. 29911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ 29921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 'exit $?' 29931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck tstripme="$stripme" 29941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $host_os in 29951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck cygwin* | mingw* | pw32* | cegcc*) 29961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $realname in 29971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *.dll.a) 29981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck tstripme="" 29991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 30001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 30011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 30021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 30031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$tstripme" && test -n "$striplib"; then 30041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_show_eval "$striplib $destdir/$realname" 'exit $?' 30051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 30061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 30071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$#" -gt 0; then 30081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Delete the old symlinks, and create new ones. 30091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Try `ln -sf' first, because the `ln' binary might depend on 30101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # the symlink we replace! Solaris /bin/ln does not understand -f, 30111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # so we also need to try rm && ln -s. 30121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for linkname 30131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck do 30141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test "$linkname" != "$realname" \ 30151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" 30161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 30171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 30181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 30191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Do each command in the postinstall commands. 30201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck lib="$destdir/$realname" 30211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_execute_cmds "$postinstall_cmds" 'exit $?' 30221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 30231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 30241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Install the pseudo-library for information purposes. 30251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_basename "$file" 30261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck name="$func_basename_result" 30271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck instname="$dir/$name"i 30281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' 30291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 30301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Maybe install the static library, too. 30311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -n "$old_library" && func_append staticlibs " $dir/$old_library" 30321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 30331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 30341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *.lo) 30351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Install (i.e. copy) a libtool object. 30361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 30371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Figure out destination file name, if it wasn't already specified. 30381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$destname"; then 30391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck destfile="$destdir/$destname" 30401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 30411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_basename "$file" 30421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck destfile="$func_basename_result" 30431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck destfile="$destdir/$destfile" 30441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 30451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 30461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Deduce the name of the destination old-style object file. 30471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $destfile in 30481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *.lo) 30491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_lo2o "$destfile" 30501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck staticdest=$func_lo2o_result 30511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 30521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *.$objext) 30531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck staticdest="$destfile" 30541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck destfile= 30551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 30561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 30571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_fatal_help "cannot copy a libtool object to \`$destfile'" 30581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 30591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 30601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 30611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Install the libtool object if requested. 30621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -n "$destfile" && \ 30631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_show_eval "$install_prog $file $destfile" 'exit $?' 30641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 30651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Install the old object if enabled. 30661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$build_old_libs" = yes; then 30671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Deduce the name of the old-style object file. 30681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_lo2o "$file" 30691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck staticobj=$func_lo2o_result 30701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' 30711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 30721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck exit $EXIT_SUCCESS 30731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 30741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 30751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 30761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Figure out destination file name, if it wasn't already specified. 30771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$destname"; then 30781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck destfile="$destdir/$destname" 30791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 30801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_basename "$file" 30811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck destfile="$func_basename_result" 30821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck destfile="$destdir/$destfile" 30831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 30841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 30851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # If the file is missing, and there is a .exe on the end, strip it 30861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # because it is most likely a libtool script we actually want to 30871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # install 30881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck stripped_ext="" 30891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $file in 30901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *.exe) 30911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test ! -f "$file"; then 30921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_stripname '' '.exe' "$file" 30931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck file=$func_stripname_result 30941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck stripped_ext=".exe" 30951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 30961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 30971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 30981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 30991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Do a test to see if this is really a libtool program. 31001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $host in 31011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *cygwin* | *mingw*) 31021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if func_ltwrapper_executable_p "$file"; then 31031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_ltwrapper_scriptname "$file" 31041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck wrapper=$func_ltwrapper_scriptname_result 31051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 31061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_stripname '' '.exe' "$file" 31071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck wrapper=$func_stripname_result 31081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 31091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 31101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 31111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck wrapper=$file 31121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 31131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 31141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if func_ltwrapper_script_p "$wrapper"; then 31151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck notinst_deplibs= 31161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck relink_command= 31171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 31181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_source "$wrapper" 31191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 31201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Check the variables that should have been set. 31211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -z "$generated_by_libtool_version" && \ 31221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_fatal_error "invalid libtool wrapper script \`$wrapper'" 31231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 31241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck finalize=yes 31251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for lib in $notinst_deplibs; do 31261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Check to see that each library is installed. 31271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck libdir= 31281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -f "$lib"; then 31291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_source "$lib" 31301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 31311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test 31321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$libdir" && test ! -f "$libfile"; then 31331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_warning "\`$lib' has not been installed in \`$libdir'" 31341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck finalize=no 31351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 31361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 31371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 31381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck relink_command= 31391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_source "$wrapper" 31401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 31411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck outputname= 31421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$fast_install" = no && test -n "$relink_command"; then 31431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_dry_run || { 31441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$finalize" = yes; then 31451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck tmpdir=`func_mktempdir` 31461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_basename "$file$stripped_ext" 31471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck file="$func_basename_result" 31481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck outputname="$tmpdir/$file" 31491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Replace the output file specification. 31501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` 31511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 31521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_silent || { 31531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_quote_for_expand "$relink_command" 31541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval "func_echo $func_quote_for_expand_result" 31551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } 31561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if eval "$relink_command"; then : 31571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 31581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_error "error: relink \`$file' with the above command before installing it" 31591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_dry_run || ${RM}r "$tmpdir" 31601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 31611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 31621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck file="$outputname" 31631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 31641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_warning "cannot relink \`$file'" 31651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 31661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } 31671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 31681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Install the binary that we compiled earlier. 31691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` 31701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 31711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 31721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 31731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # remove .exe since cygwin /usr/bin/install will append another 31741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # one anyway 31751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $install_prog,$host in 31761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck */usr/bin/install*,*cygwin*) 31771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $file:$destfile in 31781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *.exe:*.exe) 31791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # this is ok 31801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 31811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *.exe:*) 31821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck destfile=$destfile.exe 31831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 31841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *:*.exe) 31851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_stripname '' '.exe' "$destfile" 31861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck destfile=$func_stripname_result 31871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 31881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 31891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 31901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 31911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' 31921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_dry_run || if test -n "$outputname"; then 31931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ${RM}r "$tmpdir" 31941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 31951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 31961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 31971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 31981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 31991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for file in $staticlibs; do 32001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_basename "$file" 32011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck name="$func_basename_result" 32021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 32031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Set up the ranlib parameters. 32041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck oldlib="$destdir/$name" 32051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 32061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck tool_oldlib=$func_to_tool_file_result 32071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 32081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_show_eval "$install_prog \$file \$oldlib" 'exit $?' 32091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 32101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$stripme" && test -n "$old_striplib"; then 32111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_show_eval "$old_striplib $tool_oldlib" 'exit $?' 32121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 32131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 32141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Do each command in the postinstall commands. 32151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_execute_cmds "$old_postinstall_cmds" 'exit $?' 32161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 32171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 32181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -n "$future_libdirs" && \ 32191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_warning "remember to run \`$progname --finish$future_libdirs'" 32201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 32211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$current_libdirs"; then 32221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Maybe just do a dry run. 32231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_dry_run && current_libdirs=" -n$current_libdirs" 32241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' 32251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 32261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck exit $EXIT_SUCCESS 32271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 32281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 32291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 32301176bdada62cabc6ec4b0308a930e83b679d5d36John Recktest "$opt_mode" = install && func_mode_install ${1+"$@"} 32311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 32321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 32331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_generate_dlsyms outputname originator pic_p 32341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Extract symbols from dlprefiles and create ${outputname}S.o with 32351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# a dlpreopen symbol table. 32361176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_generate_dlsyms () 32371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 32381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_debug 32391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck my_outputname="$1" 32401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck my_originator="$2" 32411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck my_pic_p="${3-no}" 32421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` 32431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck my_dlsyms= 32441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 32451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 32461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$NM" && test -n "$global_symbol_pipe"; then 32471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck my_dlsyms="${my_outputname}S.c" 32481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 32491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_error "not configured to extract global symbols from dlpreopened files" 32501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 32511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 32521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 32531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$my_dlsyms"; then 32541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $my_dlsyms in 32551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck "") ;; 32561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *.c) 32571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Discover the nlist of each of the dlfiles. 32581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck nlist="$output_objdir/${my_outputname}.nm" 32591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 32601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_show_eval "$RM $nlist ${nlist}S ${nlist}T" 32611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 32621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Parse the name list into a source file. 32631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_verbose "creating $output_objdir/$my_dlsyms" 32641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 32651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ 32661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ 32671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ 32681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 32691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#ifdef __cplusplus 32701176bdada62cabc6ec4b0308a930e83b679d5d36John Reckextern \"C\" { 32711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#endif 32721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 32731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) 32741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#pragma GCC diagnostic ignored \"-Wstrict-prototypes\" 32751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#endif 32761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 32771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ 32781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) 32791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck/* DATA imports from DLLs on WIN32 con't be const, because runtime 32801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck relocations are performed -- see ld's documentation on pseudo-relocs. */ 32811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# define LT_DLSYM_CONST 32821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#elif defined(__osf__) 32831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck/* This system does not cope well with relocations in const data. */ 32841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# define LT_DLSYM_CONST 32851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#else 32861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# define LT_DLSYM_CONST const 32871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#endif 32881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 32891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck/* External symbol declarations for the compiler. */\ 32901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck" 32911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 32921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$dlself" = yes; then 32931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_verbose "generating symbol list for \`$output'" 32941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 32951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" 32961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 32971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Add our own program objects to the symbol list. 32981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` 32991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for progfile in $progfiles; do 33001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_to_tool_file "$progfile" func_convert_file_msys_to_w32 33011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_verbose "extracting global C symbols from \`$func_to_tool_file_result'" 33021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" 33031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 33041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 33051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$exclude_expsyms"; then 33061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_dry_run || { 33071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' 33081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval '$MV "$nlist"T "$nlist"' 33091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } 33101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 33111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 33121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$export_symbols_regex"; then 33131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_dry_run || { 33141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' 33151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval '$MV "$nlist"T "$nlist"' 33161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } 33171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 33181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 33191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Prepare the list of exported symbols 33201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -z "$export_symbols"; then 33211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck export_symbols="$output_objdir/$outputname.exp" 33221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_dry_run || { 33231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $RM $export_symbols 33241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' 33251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $host in 33261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *cygwin* | *mingw* | *cegcc* ) 33271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 33281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' 33291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 33301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 33311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } 33321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 33331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_dry_run || { 33341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' 33351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' 33361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval '$MV "$nlist"T "$nlist"' 33371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $host in 33381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *cygwin* | *mingw* | *cegcc* ) 33391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 33401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' 33411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 33421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 33431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } 33441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 33451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 33461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 33471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for dlprefile in $dlprefiles; do 33481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_verbose "extracting global C symbols from \`$dlprefile'" 33491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_basename "$dlprefile" 33501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck name="$func_basename_result" 33511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $host in 33521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *cygwin* | *mingw* | *cegcc* ) 33531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # if an import library, we need to obtain dlname 33541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if func_win32_import_lib_p "$dlprefile"; then 33551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_tr_sh "$dlprefile" 33561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval "curr_lafile=\$libfile_$func_tr_sh_result" 33571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck dlprefile_dlbasename="" 33581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then 33591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Use subshell, to avoid clobbering current variable values 33601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` 33611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$dlprefile_dlname" ; then 33621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_basename "$dlprefile_dlname" 33631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck dlprefile_dlbasename="$func_basename_result" 33641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 33651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # no lafile. user explicitly requested -dlpreopen <import library>. 33661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $sharedlib_from_linklib_cmd "$dlprefile" 33671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck dlprefile_dlbasename=$sharedlib_from_linklib_result 33681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 33691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 33701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_dry_run || { 33711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$dlprefile_dlbasename" ; then 33721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' 33731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 33741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_warning "Could not compute DLL name from $name" 33751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval '$ECHO ": $name " >> "$nlist"' 33761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 33771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 33781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | 33791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" 33801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } 33811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else # not an import lib 33821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_dry_run || { 33831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval '$ECHO ": $name " >> "$nlist"' 33841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 33851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" 33861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } 33871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 33881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 33891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 33901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_dry_run || { 33911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval '$ECHO ": $name " >> "$nlist"' 33921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 33931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" 33941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } 33951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 33961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 33971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 33981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 33991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_dry_run || { 34001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Make sure we have at least an empty file. 34011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -f "$nlist" || : > "$nlist" 34021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 34031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$exclude_expsyms"; then 34041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T 34051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $MV "$nlist"T "$nlist" 34061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 34071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 34081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Try sorting and uniquifying the output. 34091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if $GREP -v "^: " < "$nlist" | 34101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if sort -k 3 </dev/null >/dev/null 2>&1; then 34111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck sort -k 3 34121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 34131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck sort +2 34141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi | 34151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck uniq > "$nlist"S; then 34161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck : 34171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 34181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $GREP -v "^: " < "$nlist" > "$nlist"S 34191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 34201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 34211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -f "$nlist"S; then 34221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' 34231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 34241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo '/* NONE */' >> "$output_objdir/$my_dlsyms" 34251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 34261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 34271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo >> "$output_objdir/$my_dlsyms" "\ 34281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 34291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck/* The mapping between symbol names and symbols. */ 34301176bdada62cabc6ec4b0308a930e83b679d5d36John Recktypedef struct { 34311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck const char *name; 34321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck void *address; 34331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} lt_dlsymlist; 34341176bdada62cabc6ec4b0308a930e83b679d5d36John Reckextern LT_DLSYM_CONST lt_dlsymlist 34351176bdada62cabc6ec4b0308a930e83b679d5d36John Recklt_${my_prefix}_LTX_preloaded_symbols[]; 34361176bdada62cabc6ec4b0308a930e83b679d5d36John ReckLT_DLSYM_CONST lt_dlsymlist 34371176bdada62cabc6ec4b0308a930e83b679d5d36John Recklt_${my_prefix}_LTX_preloaded_symbols[] = 34381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{\ 34391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck { \"$my_originator\", (void *) 0 }," 34401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 34411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $need_lib_prefix in 34421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck no) 34431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" 34441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 34451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 34461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" 34471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 34481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 34491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo >> "$output_objdir/$my_dlsyms" "\ 34501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck {0, (void *) 0} 34511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}; 34521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 34531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck/* This works around a problem in FreeBSD linker */ 34541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#ifdef FREEBSD_WORKAROUND 34551176bdada62cabc6ec4b0308a930e83b679d5d36John Reckstatic const void *lt_preloaded_setup() { 34561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck return lt_${my_prefix}_LTX_preloaded_symbols; 34571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 34581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#endif 34591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 34601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#ifdef __cplusplus 34611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 34621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#endif\ 34631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck" 34641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } # !$opt_dry_run 34651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 34661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck pic_flag_for_symtable= 34671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case "$compile_command " in 34681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *" -static "*) ;; 34691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 34701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $host in 34711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # compiling the symbol table file with pic_flag works around 34721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # a FreeBSD bug that causes programs to crash when -lm is 34731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # linked before any other PIC object. But we must not use 34741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # pic_flag when linking with -static. The problem exists in 34751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. 34761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) 34771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; 34781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *-*-hpux*) 34791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck pic_flag_for_symtable=" $pic_flag" ;; 34801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 34811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "X$my_pic_p" != Xno; then 34821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck pic_flag_for_symtable=" $pic_flag" 34831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 34841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 34851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 34861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 34871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 34881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck symtab_cflags= 34891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for arg in $LTCFLAGS; do 34901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $arg in 34911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -pie | -fpie | -fPIE) ;; 34921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) func_append symtab_cflags " $arg" ;; 34931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 34941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 34951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 34961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Now compile the dynamic symbol file. 34971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' 34981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 34991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Clean up the generated files. 35001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' 35011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 35021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Transform the symbol file into the correct name. 35031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck symfileobj="$output_objdir/${my_outputname}S.$objext" 35041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $host in 35051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *cygwin* | *mingw* | *cegcc* ) 35061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -f "$output_objdir/$my_outputname.def"; then 35071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` 35081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` 35091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 35101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` 35111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` 35121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 35131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 35141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 35151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` 35161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` 35171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 35181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 35191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 35201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 35211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_fatal_error "unknown suffix for \`$my_dlsyms'" 35221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 35231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 35241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 35251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # We keep going just in case the user didn't refer to 35261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # lt_preloaded_symbols. The linker will fail if global_symbol_pipe 35271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # really was required. 35281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 35291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Nullify the symbol file. 35301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` 35311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` 35321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 35331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 35341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 35351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_win32_libid arg 35361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# return the library type of file 'arg' 35371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# 35381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Need a lot of goo to handle *both* DLLs and import libs 35391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Has to be a shell function in order to 'eat' the argument 35401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# that is supplied when $file_magic_command is called. 35411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Despite the name, also deal with 64 bit binaries. 35421176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_win32_libid () 35431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 35441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_debug 35451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck win32_libid_type="unknown" 35461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck win32_fileres=`file -L $1 2>/dev/null` 35471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $win32_fileres in 35481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *ar\ archive\ import\ library*) # definitely import 35491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck win32_libid_type="x86 archive import" 35501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 35511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *ar\ archive*) # could be an import, or static 35521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. 35531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | 35541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then 35551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_to_tool_file "$1" func_convert_file_msys_to_w32 35561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | 35571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $SED -n -e ' 35581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 1,100{ 35591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck / I /{ 35601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck s,.*,import, 35611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck p 35621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck q 35631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } 35641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck }'` 35651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $win32_nmres in 35661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck import*) win32_libid_type="x86 archive import";; 35671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) win32_libid_type="x86 archive static";; 35681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 35691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 35701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 35711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *DLL*) 35721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck win32_libid_type="x86 DLL" 35731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 35741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *executable*) # but shell scripts are "executable" too... 35751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $win32_fileres in 35761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *MS\ Windows\ PE\ Intel*) 35771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck win32_libid_type="x86 DLL" 35781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 35791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 35801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 35811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 35821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $ECHO "$win32_libid_type" 35831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 35841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 35851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_cygming_dll_for_implib ARG 35861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# 35871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Platform-specific function to extract the 35881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# name of the DLL associated with the specified 35891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# import library ARG. 35901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Invoked by eval'ing the libtool variable 35911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# $sharedlib_from_linklib_cmd 35921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Result is available in the variable 35931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# $sharedlib_from_linklib_result 35941176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_cygming_dll_for_implib () 35951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 35961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_debug 35971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` 35981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 35991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 36001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs 36011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# 36021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# The is the core of a fallback implementation of a 36031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# platform-specific function to extract the name of the 36041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# DLL associated with the specified import library LIBNAME. 36051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# 36061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# SECTION_NAME is either .idata$6 or .idata$7, depending 36071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# on the platform and compiler that created the implib. 36081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# 36091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Echos the name of the DLL associated with the 36101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# specified import library. 36111176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_cygming_dll_for_implib_fallback_core () 36121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 36131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_debug 36141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` 36151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $OBJDUMP -s --section "$1" "$2" 2>/dev/null | 36161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $SED '/^Contents of section '"$match_literal"':/{ 36171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Place marker at beginning of archive member dllname section 36181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck s/.*/====MARK====/ 36191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck p 36201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck d 36211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } 36221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # These lines can sometimes be longer than 43 characters, but 36231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # are always uninteresting 36241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck /:[ ]*file format pe[i]\{,1\}-/d 36251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck /^In archive [^:]*:/d 36261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Ensure marker is printed 36271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck /^====MARK====/p 36281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Remove all lines with less than 43 characters 36291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck /^.\{43\}/!d 36301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # From remaining lines, remove first 43 characters 36311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck s/^.\{43\}//' | 36321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $SED -n ' 36331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Join marker and all lines until next marker into a single line 36341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck /^====MARK====/ b para 36351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck H 36361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $ b para 36371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck b 36381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck :para 36391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck x 36401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck s/\n//g 36411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Remove the marker 36421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck s/^====MARK====// 36431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Remove trailing dots and whitespace 36441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck s/[\. \t]*$// 36451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Print 36461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck /./p' | 36471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # we now have a list, one entry per line, of the stringified 36481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # contents of the appropriate section of all members of the 36491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # archive which possess that section. Heuristic: eliminate 36501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # all those which have a first or second character that is 36511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # a '.' (that is, objdump's representation of an unprintable 36521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # character.) This should work for all archives with less than 36531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # 0x302f exports -- but will fail for DLLs whose name actually 36541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # begins with a literal '.' or a single character followed by 36551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # a '.'. 36561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # 36571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Of those that remain, print the first one. 36581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $SED -e '/^\./d;/^.\./d;q' 36591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 36601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 36611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_cygming_gnu_implib_p ARG 36621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# This predicate returns with zero status (TRUE) if 36631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# ARG is a GNU/binutils-style import library. Returns 36641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# with nonzero status (FALSE) otherwise. 36651176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_cygming_gnu_implib_p () 36661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 36671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_debug 36681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_to_tool_file "$1" func_convert_file_msys_to_w32 36691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 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)$'` 36701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -n "$func_cygming_gnu_implib_tmp" 36711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 36721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 36731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_cygming_ms_implib_p ARG 36741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# This predicate returns with zero status (TRUE) if 36751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# ARG is an MS-style import library. Returns 36761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# with nonzero status (FALSE) otherwise. 36771176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_cygming_ms_implib_p () 36781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 36791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_debug 36801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_to_tool_file "$1" func_convert_file_msys_to_w32 36811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` 36821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -n "$func_cygming_ms_implib_tmp" 36831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 36841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 36851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_cygming_dll_for_implib_fallback ARG 36861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Platform-specific function to extract the 36871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# name of the DLL associated with the specified 36881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# import library ARG. 36891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# 36901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# This fallback implementation is for use when $DLLTOOL 36911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# does not support the --identify-strict option. 36921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Invoked by eval'ing the libtool variable 36931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# $sharedlib_from_linklib_cmd 36941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Result is available in the variable 36951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# $sharedlib_from_linklib_result 36961176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_cygming_dll_for_implib_fallback () 36971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 36981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_debug 36991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if func_cygming_gnu_implib_p "$1" ; then 37001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # binutils import library 37011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` 37021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck elif func_cygming_ms_implib_p "$1" ; then 37031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # ms-generated import library 37041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` 37051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 37061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # unknown 37071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck sharedlib_from_linklib_result="" 37081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 37091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 37101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 37111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 37121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_extract_an_archive dir oldlib 37131176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_extract_an_archive () 37141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 37151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_debug 37161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck f_ex_an_ar_dir="$1"; shift 37171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck f_ex_an_ar_oldlib="$1" 37181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$lock_old_archive_extraction" = yes; then 37191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck lockfile=$f_ex_an_ar_oldlib.lock 37201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do 37211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_echo "Waiting for $lockfile to be removed" 37221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck sleep 2 37231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 37241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 37251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ 37261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 'stat=$?; rm -f "$lockfile"; exit $stat' 37271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$lock_old_archive_extraction" = yes; then 37281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_dry_run || rm -f "$lockfile" 37291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 37301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then 37311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck : 37321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 37331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 37341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 37351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 37361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 37371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 37381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_extract_archives gentop oldlib ... 37391176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_extract_archives () 37401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 37411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_debug 37421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck my_gentop="$1"; shift 37431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck my_oldlibs=${1+"$@"} 37441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck my_oldobjs="" 37451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck my_xlib="" 37461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck my_xabs="" 37471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck my_xdir="" 37481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 37491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for my_xlib in $my_oldlibs; do 37501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Extract the objects. 37511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $my_xlib in 37521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; 37531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) my_xabs=`pwd`"/$my_xlib" ;; 37541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 37551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_basename "$my_xlib" 37561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck my_xlib="$func_basename_result" 37571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck my_xlib_u=$my_xlib 37581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck while :; do 37591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case " $extracted_archives " in 37601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *" $my_xlib_u "*) 37611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_arith $extracted_serial + 1 37621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck extracted_serial=$func_arith_result 37631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck my_xlib_u=lt$extracted_serial-$my_xlib ;; 37641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) break ;; 37651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 37661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 37671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck extracted_archives="$extracted_archives $my_xlib_u" 37681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck my_xdir="$my_gentop/$my_xlib_u" 37691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 37701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_mkdir_p "$my_xdir" 37711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 37721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $host in 37731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *-darwin*) 37741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_verbose "Extracting $my_xabs" 37751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Do not bother doing anything if just a dry run 37761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_dry_run || { 37771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck darwin_orig_dir=`pwd` 37781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck cd $my_xdir || exit $? 37791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck darwin_archive=$my_xabs 37801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck darwin_curdir=`pwd` 37811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck darwin_base_archive=`basename "$darwin_archive"` 37821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` 37831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$darwin_arches"; then 37841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` 37851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck darwin_arch= 37861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" 37871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for darwin_arch in $darwin_arches ; do 37881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" 37891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" 37901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" 37911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_extract_an_archive "`pwd`" "${darwin_base_archive}" 37921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck cd "$darwin_curdir" 37931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" 37941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done # $darwin_arches 37951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ## Okay now we've a bunch of thin objects, gotta fatten them up :) 37961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` 37971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck darwin_file= 37981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck darwin_files= 37991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for darwin_file in $darwin_filelist; do 38001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` 38011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $LIPO -create -output "$darwin_file" $darwin_files 38021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done # $darwin_filelist 38031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $RM -rf unfat-$$ 38041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck cd "$darwin_orig_dir" 38051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 38061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck cd $darwin_orig_dir 38071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_extract_an_archive "$my_xdir" "$my_xabs" 38081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi # $darwin_arches 38091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } # !$opt_dry_run 38101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 38111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 38121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_extract_an_archive "$my_xdir" "$my_xabs" 38131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 38141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 38151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` 38161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 38171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 38181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_extract_archives_result="$my_oldobjs" 38191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 38201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 38211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 38221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_emit_wrapper [arg=no] 38231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# 38241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Emit a libtool wrapper script on stdout. 38251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Don't directly open a file because we may want to 38261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# incorporate the script contents within a cygwin/mingw 38271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# wrapper executable. Must ONLY be called from within 38281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_mode_link because it depends on a number of variables 38291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# set therein. 38301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# 38311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR 38321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# variable will take. If 'yes', then the emitted script 38331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# will assume that the directory in which it is stored is 38341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# the $objdir directory. This is a cygwin/mingw-specific 38351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# behavior. 38361176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_emit_wrapper () 38371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 38381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_emit_wrapper_arg1=${1-no} 38391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 38401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $ECHO "\ 38411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#! $SHELL 38421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 38431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# $output - temporary wrapper script for $objdir/$outputname 38441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 38451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# 38461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# The $output program cannot be directly executed until all the libtool 38471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# libraries that it depends on are installed. 38481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# 38491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# This wrapper script should never be moved out of the build directory. 38501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# If it is, it will not operate correctly. 38511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 38521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Sed substitution that helps us do robust quoting. It backslashifies 38531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# metacharacters that are still active within double-quoted strings. 38541176bdada62cabc6ec4b0308a930e83b679d5d36John Recksed_quote_subst='$sed_quote_subst' 38551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 38561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Be Bourne compatible 38571176bdada62cabc6ec4b0308a930e83b679d5d36John Reckif test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then 38581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck emulate sh 38591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck NULLCMD=: 38601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which 38611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # is contrary to our usage. Disable this feature. 38621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck alias -g '\${1+\"\$@\"}'='\"\$@\"' 38631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck setopt NO_GLOB_SUBST 38641176bdada62cabc6ec4b0308a930e83b679d5d36John Reckelse 38651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac 38661176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfi 38671176bdada62cabc6ec4b0308a930e83b679d5d36John ReckBIN_SH=xpg4; export BIN_SH # for Tru64 38681176bdada62cabc6ec4b0308a930e83b679d5d36John ReckDUALCASE=1; export DUALCASE # for MKS sh 38691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 38701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# The HP-UX ksh and POSIX shell print the target directory to stdout 38711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# if CDPATH is set. 38721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck(unset CDPATH) >/dev/null 2>&1 && unset CDPATH 38731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 38741176bdada62cabc6ec4b0308a930e83b679d5d36John Reckrelink_command=\"$relink_command\" 38751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 38761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# This environment variable determines our operation mode. 38771176bdada62cabc6ec4b0308a930e83b679d5d36John Reckif test \"\$libtool_install_magic\" = \"$magic\"; then 38781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # install mode needs the following variables: 38791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck generated_by_libtool_version='$macro_version' 38801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck notinst_deplibs='$notinst_deplibs' 38811176bdada62cabc6ec4b0308a930e83b679d5d36John Reckelse 38821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # When we are sourced in execute mode, \$file and \$ECHO are already set. 38831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test \"\$libtool_execute_magic\" != \"$magic\"; then 38841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck file=\"\$0\"" 38851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 38861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` 38871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $ECHO "\ 38881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 38891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# A function that is used when there is no print builtin or printf. 38901176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_fallback_echo () 38911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 38921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval 'cat <<_LTECHO_EOF 38931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck\$1 38941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck_LTECHO_EOF' 38951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 38961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ECHO=\"$qECHO\" 38971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 38981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 38991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Very basic option parsing. These options are (a) specific to 39001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# the libtool wrapper, (b) are identical between the wrapper 39011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# /script/ and the wrapper /executable/ which is used only on 39021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# windows platforms, and (c) all begin with the string "--lt-" 39031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# (application programs are unlikely to have options which match 39041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# this pattern). 39051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# 39061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# There are only two supported options: --lt-debug and 39071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# --lt-dump-script. There is, deliberately, no --lt-help. 39081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# 39091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# The first argument to this parsing function should be the 39101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# script's $0 value, followed by "$@". 39111176bdada62cabc6ec4b0308a930e83b679d5d36John Recklt_option_debug= 39121176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_parse_lt_options () 39131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 39141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck lt_script_arg0=\$0 39151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck shift 39161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for lt_opt 39171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck do 39181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case \"\$lt_opt\" in 39191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck --lt-debug) lt_option_debug=1 ;; 39201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck --lt-dump-script) 39211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` 39221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. 39231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` 39241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck cat \"\$lt_dump_D/\$lt_dump_F\" 39251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck exit 0 39261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 39271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck --lt-*) 39281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 39291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck exit 1 39301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 39311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 39321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 39331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 39341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Print the debug banner immediately: 39351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n \"\$lt_option_debug\"; then 39361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2 39371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 39381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 39391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 39401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Used when --lt-debug. Prints its arguments to stdout 39411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# (redirection is the responsibility of the caller) 39421176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_lt_dump_args () 39431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 39441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck lt_dump_args_N=1; 39451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for lt_arg 39461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck do 39471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\" 39481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` 39491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 39501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 39511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 39521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Core function for launching the target application 39531176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_exec_program_core () 39541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 39551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck" 39561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $host in 39571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Backslashes separate directories on plain windows 39581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *-*-mingw | *-*-os2* | *-cegcc*) 39591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $ECHO "\ 39601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n \"\$lt_option_debug\"; then 39611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2 39621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_lt_dump_args \${1+\"\$@\"} 1>&2 39631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 39641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} 39651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck" 39661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 39671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 39681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 39691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $ECHO "\ 39701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n \"\$lt_option_debug\"; then 39711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2 39721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_lt_dump_args \${1+\"\$@\"} 1>&2 39731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 39741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck exec \"\$progdir/\$program\" \${1+\"\$@\"} 39751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck" 39761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 39771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 39781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $ECHO "\ 39791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 39801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck exit 1 39811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 39821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 39831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# A function to encapsulate launching the target application 39841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Strips options in the --lt-* namespace from \$@ and 39851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# launches target application with the remaining arguments. 39861176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_exec_program () 39871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 39881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case \" \$* \" in 39891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *\\ --lt-*) 39901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for lt_wr_arg 39911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck do 39921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case \$lt_wr_arg in 39931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck --lt-*) ;; 39941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; 39951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 39961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck shift 39971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done ;; 39981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 39991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_exec_program_core \${1+\"\$@\"} 40001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 40011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 40021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Parse options 40031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_parse_lt_options \"\$0\" \${1+\"\$@\"} 40041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 40051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Find the directory that this script lives in. 40061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` 40071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test \"x\$thisdir\" = \"x\$file\" && thisdir=. 40081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 40091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Follow symbolic links until we get to the real thisdir. 40101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` 40111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck while test -n \"\$file\"; do 40121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` 40131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 40141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # If there was a directory component, then change thisdir. 40151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test \"x\$destdir\" != \"x\$file\"; then 40161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case \"\$destdir\" in 40171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; 40181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) thisdir=\"\$thisdir/\$destdir\" ;; 40191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 40201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 40211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 40221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` 40231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` 40241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 40251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 40261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Usually 'no', except on cygwin/mingw when embedded into 40271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # the cwrapper. 40281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 40291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then 40301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # special case for '.' 40311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test \"\$thisdir\" = \".\"; then 40321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck thisdir=\`pwd\` 40331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 40341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # remove .libs from thisdir 40351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case \"\$thisdir\" in 40361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; 40371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $objdir ) thisdir=. ;; 40381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 40391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 40401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 40411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Try to get the absolute directory name. 40421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck absdir=\`cd \"\$thisdir\" && pwd\` 40431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -n \"\$absdir\" && thisdir=\"\$absdir\" 40441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck" 40451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 40461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$fast_install" = yes; then 40471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $ECHO "\ 40481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck program=lt-'$outputname'$exeext 40491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck progdir=\"\$thisdir/$objdir\" 40501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 40511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test ! -f \"\$progdir/\$program\" || 40521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ 40531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test \"X\$file\" != \"X\$progdir/\$program\"; }; then 40541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 40551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck file=\"\$\$-\$program\" 40561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 40571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test ! -d \"\$progdir\"; then 40581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $MKDIR \"\$progdir\" 40591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 40601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $RM \"\$progdir/\$file\" 40611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi" 40621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 40631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $ECHO "\ 40641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 40651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # relink executable if necessary 40661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n \"\$relink_command\"; then 40671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if relink_command_output=\`eval \$relink_command 2>&1\`; then : 40681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 40691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $ECHO \"\$relink_command_output\" >&2 40701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $RM \"\$progdir/\$file\" 40711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck exit 1 40721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 40731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 40741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 40751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || 40761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck { $RM \"\$progdir/\$program\"; 40771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } 40781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $RM \"\$progdir/\$file\" 40791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi" 40801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 40811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $ECHO "\ 40821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck program='$outputname' 40831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck progdir=\"\$thisdir/$objdir\" 40841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck" 40851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 40861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 40871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $ECHO "\ 40881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 40891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -f \"\$progdir/\$program\"; then" 40901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 40911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # fixup the dll searchpath if we need to. 40921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # 40931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Fix the DLL searchpath if we need to. Do this before prepending 40941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # to shlibpath, because on Windows, both are PATH and uninstalled 40951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # libraries must come first. 40961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$dllsearchpath"; then 40971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $ECHO "\ 40981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Add the dll search path components to the executable PATH 40991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck PATH=$dllsearchpath:\$PATH 41001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck" 41011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 41021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 41031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Export our shlibpath_var if we have one. 41041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 41051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $ECHO "\ 41061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Add our own library path to $shlibpath_var 41071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" 41081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 41091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Some systems cannot cope with colon-terminated $shlibpath_var 41101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # The second colon is a workaround for a bug in BeOS R4 sed 41111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` 41121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 41131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck export $shlibpath_var 41141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck" 41151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 41161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 41171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $ECHO "\ 41181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test \"\$libtool_execute_magic\" != \"$magic\"; then 41191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Run the actual program with our arguments. 41201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_exec_program \${1+\"\$@\"} 41211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 41221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 41231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # The program doesn't exist. 41241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 41251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 41261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 41271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck exit 1 41281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 41291176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfi\ 41301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck" 41311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 41321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 41331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 41341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_emit_cwrapperexe_src 41351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# emit the source code for a wrapper executable on stdout 41361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Must ONLY be called from within func_mode_link because 41371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# it depends on a number of variable set therein. 41381176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_emit_cwrapperexe_src () 41391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 41401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck cat <<EOF 41411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 41421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck/* $cwrappersource - temporary wrapper executable for $objdir/$outputname 41431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 41441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 41451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck The $output program cannot be directly executed until all the libtool 41461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck libraries that it depends on are installed. 41471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 41481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck This wrapper executable should never be moved out of the build directory. 41491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck If it is, it will not operate correctly. 41501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck*/ 41511176bdada62cabc6ec4b0308a930e83b679d5d36John ReckEOF 41521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck cat <<"EOF" 41531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#ifdef _MSC_VER 41541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# define _CRT_SECURE_NO_DEPRECATE 1 41551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#endif 41561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#include <stdio.h> 41571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#include <stdlib.h> 41581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#ifdef _MSC_VER 41591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# include <direct.h> 41601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# include <process.h> 41611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# include <io.h> 41621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#else 41631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# include <unistd.h> 41641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# include <stdint.h> 41651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# ifdef __CYGWIN__ 41661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# include <io.h> 41671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# endif 41681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#endif 41691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#include <malloc.h> 41701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#include <stdarg.h> 41711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#include <assert.h> 41721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#include <string.h> 41731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#include <ctype.h> 41741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#include <errno.h> 41751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#include <fcntl.h> 41761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#include <sys/stat.h> 41771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 41781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck/* declarations of non-ANSI functions */ 41791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#if defined(__MINGW32__) 41801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# ifdef __STRICT_ANSI__ 41811176bdada62cabc6ec4b0308a930e83b679d5d36John Reckint _putenv (const char *); 41821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# endif 41831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#elif defined(__CYGWIN__) 41841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# ifdef __STRICT_ANSI__ 41851176bdada62cabc6ec4b0308a930e83b679d5d36John Reckchar *realpath (const char *, char *); 41861176bdada62cabc6ec4b0308a930e83b679d5d36John Reckint putenv (char *); 41871176bdada62cabc6ec4b0308a930e83b679d5d36John Reckint setenv (const char *, const char *, int); 41881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# endif 41891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck/* #elif defined (other platforms) ... */ 41901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#endif 41911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 41921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck/* portability defines, excluding path handling macros */ 41931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#if defined(_MSC_VER) 41941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# define setmode _setmode 41951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# define stat _stat 41961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# define chmod _chmod 41971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# define getcwd _getcwd 41981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# define putenv _putenv 41991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# define S_IXUSR _S_IEXEC 42001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# ifndef _INTPTR_T_DEFINED 42011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# define _INTPTR_T_DEFINED 42021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# define intptr_t int 42031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# endif 42041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#elif defined(__MINGW32__) 42051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# define setmode _setmode 42061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# define stat _stat 42071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# define chmod _chmod 42081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# define getcwd _getcwd 42091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# define putenv _putenv 42101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#elif defined(__CYGWIN__) 42111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# define HAVE_SETENV 42121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# define FOPEN_WB "wb" 42131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck/* #elif defined (other platforms) ... */ 42141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#endif 42151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 42161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#if defined(PATH_MAX) 42171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# define LT_PATHMAX PATH_MAX 42181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#elif defined(MAXPATHLEN) 42191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# define LT_PATHMAX MAXPATHLEN 42201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#else 42211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# define LT_PATHMAX 1024 42221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#endif 42231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 42241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#ifndef S_IXOTH 42251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# define S_IXOTH 0 42261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#endif 42271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#ifndef S_IXGRP 42281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# define S_IXGRP 0 42291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#endif 42301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 42311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck/* path handling portability macros */ 42321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#ifndef DIR_SEPARATOR 42331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# define DIR_SEPARATOR '/' 42341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# define PATH_SEPARATOR ':' 42351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#endif 42361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 42371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ 42381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck defined (__OS2__) 42391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# define HAVE_DOS_BASED_FILE_SYSTEM 42401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# define FOPEN_WB "wb" 42411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# ifndef DIR_SEPARATOR_2 42421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# define DIR_SEPARATOR_2 '\\' 42431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# endif 42441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# ifndef PATH_SEPARATOR_2 42451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# define PATH_SEPARATOR_2 ';' 42461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# endif 42471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#endif 42481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 42491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#ifndef DIR_SEPARATOR_2 42501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) 42511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#else /* DIR_SEPARATOR_2 */ 42521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# define IS_DIR_SEPARATOR(ch) \ 42531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) 42541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#endif /* DIR_SEPARATOR_2 */ 42551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 42561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#ifndef PATH_SEPARATOR_2 42571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) 42581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#else /* PATH_SEPARATOR_2 */ 42591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) 42601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#endif /* PATH_SEPARATOR_2 */ 42611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 42621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#ifndef FOPEN_WB 42631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# define FOPEN_WB "w" 42641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#endif 42651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#ifndef _O_BINARY 42661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# define _O_BINARY 0 42671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#endif 42681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 42691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) 42701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#define XFREE(stale) do { \ 42711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if (stale) { free ((void *) stale); stale = 0; } \ 42721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} while (0) 42731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 42741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#if defined(LT_DEBUGWRAPPER) 42751176bdada62cabc6ec4b0308a930e83b679d5d36John Reckstatic int lt_debug = 1; 42761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#else 42771176bdada62cabc6ec4b0308a930e83b679d5d36John Reckstatic int lt_debug = 0; 42781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#endif 42791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 42801176bdada62cabc6ec4b0308a930e83b679d5d36John Reckconst char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ 42811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 42821176bdada62cabc6ec4b0308a930e83b679d5d36John Reckvoid *xmalloc (size_t num); 42831176bdada62cabc6ec4b0308a930e83b679d5d36John Reckchar *xstrdup (const char *string); 42841176bdada62cabc6ec4b0308a930e83b679d5d36John Reckconst char *base_name (const char *name); 42851176bdada62cabc6ec4b0308a930e83b679d5d36John Reckchar *find_executable (const char *wrapper); 42861176bdada62cabc6ec4b0308a930e83b679d5d36John Reckchar *chase_symlinks (const char *pathspec); 42871176bdada62cabc6ec4b0308a930e83b679d5d36John Reckint make_executable (const char *path); 42881176bdada62cabc6ec4b0308a930e83b679d5d36John Reckint check_executable (const char *path); 42891176bdada62cabc6ec4b0308a930e83b679d5d36John Reckchar *strendzap (char *str, const char *pat); 42901176bdada62cabc6ec4b0308a930e83b679d5d36John Reckvoid lt_debugprintf (const char *file, int line, const char *fmt, ...); 42911176bdada62cabc6ec4b0308a930e83b679d5d36John Reckvoid lt_fatal (const char *file, int line, const char *message, ...); 42921176bdada62cabc6ec4b0308a930e83b679d5d36John Reckstatic const char *nonnull (const char *s); 42931176bdada62cabc6ec4b0308a930e83b679d5d36John Reckstatic const char *nonempty (const char *s); 42941176bdada62cabc6ec4b0308a930e83b679d5d36John Reckvoid lt_setenv (const char *name, const char *value); 42951176bdada62cabc6ec4b0308a930e83b679d5d36John Reckchar *lt_extend_str (const char *orig_value, const char *add, int to_end); 42961176bdada62cabc6ec4b0308a930e83b679d5d36John Reckvoid lt_update_exe_path (const char *name, const char *value); 42971176bdada62cabc6ec4b0308a930e83b679d5d36John Reckvoid lt_update_lib_path (const char *name, const char *value); 42981176bdada62cabc6ec4b0308a930e83b679d5d36John Reckchar **prepare_spawn (char **argv); 42991176bdada62cabc6ec4b0308a930e83b679d5d36John Reckvoid lt_dump_script (FILE *f); 43001176bdada62cabc6ec4b0308a930e83b679d5d36John ReckEOF 43011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 43021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck cat <<EOF 43031176bdada62cabc6ec4b0308a930e83b679d5d36John Reckvolatile const char * MAGIC_EXE = "$magic_exe"; 43041176bdada62cabc6ec4b0308a930e83b679d5d36John Reckconst char * LIB_PATH_VARNAME = "$shlibpath_var"; 43051176bdada62cabc6ec4b0308a930e83b679d5d36John ReckEOF 43061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 43071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 43081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_to_host_path "$temp_rpath" 43091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck cat <<EOF 43101176bdada62cabc6ec4b0308a930e83b679d5d36John Reckconst char * LIB_PATH_VALUE = "$func_to_host_path_result"; 43111176bdada62cabc6ec4b0308a930e83b679d5d36John ReckEOF 43121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 43131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck cat <<"EOF" 43141176bdada62cabc6ec4b0308a930e83b679d5d36John Reckconst char * LIB_PATH_VALUE = ""; 43151176bdada62cabc6ec4b0308a930e83b679d5d36John ReckEOF 43161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 43171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 43181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$dllsearchpath"; then 43191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_to_host_path "$dllsearchpath:" 43201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck cat <<EOF 43211176bdada62cabc6ec4b0308a930e83b679d5d36John Reckconst char * EXE_PATH_VARNAME = "PATH"; 43221176bdada62cabc6ec4b0308a930e83b679d5d36John Reckconst char * EXE_PATH_VALUE = "$func_to_host_path_result"; 43231176bdada62cabc6ec4b0308a930e83b679d5d36John ReckEOF 43241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 43251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck cat <<"EOF" 43261176bdada62cabc6ec4b0308a930e83b679d5d36John Reckconst char * EXE_PATH_VARNAME = ""; 43271176bdada62cabc6ec4b0308a930e83b679d5d36John Reckconst char * EXE_PATH_VALUE = ""; 43281176bdada62cabc6ec4b0308a930e83b679d5d36John ReckEOF 43291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 43301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 43311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$fast_install" = yes; then 43321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck cat <<EOF 43331176bdada62cabc6ec4b0308a930e83b679d5d36John Reckconst char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */ 43341176bdada62cabc6ec4b0308a930e83b679d5d36John ReckEOF 43351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 43361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck cat <<EOF 43371176bdada62cabc6ec4b0308a930e83b679d5d36John Reckconst char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */ 43381176bdada62cabc6ec4b0308a930e83b679d5d36John ReckEOF 43391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 43401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 43411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 43421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck cat <<"EOF" 43431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 43441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#define LTWRAPPER_OPTION_PREFIX "--lt-" 43451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 43461176bdada62cabc6ec4b0308a930e83b679d5d36John Reckstatic const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX; 43471176bdada62cabc6ec4b0308a930e83b679d5d36John Reckstatic const char *dumpscript_opt = LTWRAPPER_OPTION_PREFIX "dump-script"; 43481176bdada62cabc6ec4b0308a930e83b679d5d36John Reckstatic const char *debug_opt = LTWRAPPER_OPTION_PREFIX "debug"; 43491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 43501176bdada62cabc6ec4b0308a930e83b679d5d36John Reckint 43511176bdada62cabc6ec4b0308a930e83b679d5d36John Reckmain (int argc, char *argv[]) 43521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 43531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck char **newargz; 43541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck int newargc; 43551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck char *tmp_pathspec; 43561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck char *actual_cwrapper_path; 43571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck char *actual_cwrapper_name; 43581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck char *target_name; 43591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck char *lt_argv_zero; 43601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck intptr_t rval = 127; 43611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 43621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck int i; 43631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 43641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck program_name = (char *) xstrdup (base_name (argv[0])); 43651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck newargz = XMALLOC (char *, argc + 1); 43661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 43671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck /* very simple arg parsing; don't want to rely on getopt 43681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * also, copy all non cwrapper options to newargz, except 43691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * argz[0], which is handled differently 43701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck */ 43711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck newargc=0; 43721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for (i = 1; i < argc; i++) 43731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck { 43741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if (strcmp (argv[i], dumpscript_opt) == 0) 43751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck { 43761176bdada62cabc6ec4b0308a930e83b679d5d36John ReckEOF 43771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case "$host" in 43781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *mingw* | *cygwin* ) 43791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # make stdout use "unix" line endings 43801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo " setmode(1,_O_BINARY);" 43811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 43821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 43831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 43841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck cat <<"EOF" 43851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck lt_dump_script (stdout); 43861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck return 0; 43871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } 43881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if (strcmp (argv[i], debug_opt) == 0) 43891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck { 43901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck lt_debug = 1; 43911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue; 43921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } 43931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if (strcmp (argv[i], ltwrapper_option_prefix) == 0) 43941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck { 43951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX 43961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck namespace, but it is not one of the ones we know about and 43971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck have already dealt with, above (inluding dump-script), then 43981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck report an error. Otherwise, targets might begin to believe 43991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck they are allowed to use options in the LTWRAPPER_OPTION_PREFIX 44001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck namespace. The first time any user complains about this, we'll 44011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck need to make LTWRAPPER_OPTION_PREFIX a configure-time option 44021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck or a configure.ac-settable value. 44031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck */ 44041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck lt_fatal (__FILE__, __LINE__, 44051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck "unrecognized %s option: '%s'", 44061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ltwrapper_option_prefix, argv[i]); 44071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } 44081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck /* otherwise ... */ 44091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck newargz[++newargc] = xstrdup (argv[i]); 44101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } 44111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck newargz[++newargc] = NULL; 44121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 44131176bdada62cabc6ec4b0308a930e83b679d5d36John ReckEOF 44141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck cat <<EOF 44151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck /* The GNU banner must be the first non-error debug message */ 44161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\n"); 44171176bdada62cabc6ec4b0308a930e83b679d5d36John ReckEOF 44181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck cat <<"EOF" 44191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]); 44201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name); 44211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 44221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck tmp_pathspec = find_executable (argv[0]); 44231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if (tmp_pathspec == NULL) 44241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]); 44251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck lt_debugprintf (__FILE__, __LINE__, 44261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck "(main) found exe (before symlink chase) at: %s\n", 44271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck tmp_pathspec); 44281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 44291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck actual_cwrapper_path = chase_symlinks (tmp_pathspec); 44301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck lt_debugprintf (__FILE__, __LINE__, 44311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck "(main) found exe (after symlink chase) at: %s\n", 44321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck actual_cwrapper_path); 44331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck XFREE (tmp_pathspec); 44341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 44351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path)); 44361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck strendzap (actual_cwrapper_path, actual_cwrapper_name); 44371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 44381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck /* wrapper name transforms */ 44391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck strendzap (actual_cwrapper_name, ".exe"); 44401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1); 44411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck XFREE (actual_cwrapper_name); 44421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck actual_cwrapper_name = tmp_pathspec; 44431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck tmp_pathspec = 0; 44441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 44451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck /* target_name transforms -- use actual target program name; might have lt- prefix */ 44461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck target_name = xstrdup (base_name (TARGET_PROGRAM_NAME)); 44471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck strendzap (target_name, ".exe"); 44481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck tmp_pathspec = lt_extend_str (target_name, ".exe", 1); 44491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck XFREE (target_name); 44501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck target_name = tmp_pathspec; 44511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck tmp_pathspec = 0; 44521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 44531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck lt_debugprintf (__FILE__, __LINE__, 44541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck "(main) libtool target name: %s\n", 44551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck target_name); 44561176bdada62cabc6ec4b0308a930e83b679d5d36John ReckEOF 44571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 44581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck cat <<EOF 44591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck newargz[0] = 44601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck XMALLOC (char, (strlen (actual_cwrapper_path) + 44611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1)); 44621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck strcpy (newargz[0], actual_cwrapper_path); 44631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck strcat (newargz[0], "$objdir"); 44641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck strcat (newargz[0], "/"); 44651176bdada62cabc6ec4b0308a930e83b679d5d36John ReckEOF 44661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 44671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck cat <<"EOF" 44681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck /* stop here, and copy so we don't have to do this twice */ 44691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck tmp_pathspec = xstrdup (newargz[0]); 44701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 44711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck /* do NOT want the lt- prefix here, so use actual_cwrapper_name */ 44721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck strcat (newargz[0], actual_cwrapper_name); 44731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 44741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck /* DO want the lt- prefix here if it exists, so use target_name */ 44751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1); 44761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck XFREE (tmp_pathspec); 44771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck tmp_pathspec = NULL; 44781176bdada62cabc6ec4b0308a930e83b679d5d36John ReckEOF 44791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 44801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $host_os in 44811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck mingw*) 44821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck cat <<"EOF" 44831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck { 44841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck char* p; 44851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck while ((p = strchr (newargz[0], '\\')) != NULL) 44861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck { 44871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *p = '/'; 44881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } 44891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck while ((p = strchr (lt_argv_zero, '\\')) != NULL) 44901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck { 44911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *p = '/'; 44921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } 44931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } 44941176bdada62cabc6ec4b0308a930e83b679d5d36John ReckEOF 44951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 44961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 44971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 44981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck cat <<"EOF" 44991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck XFREE (target_name); 45001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck XFREE (actual_cwrapper_path); 45011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck XFREE (actual_cwrapper_name); 45021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 45031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */ 45041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck lt_setenv ("DUALCASE", "1"); /* for MSK sh */ 45051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck /* Update the DLL searchpath. EXE_PATH_VALUE ($dllsearchpath) must 45061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath) 45071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck because on Windows, both *_VARNAMEs are PATH but uninstalled 45081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck libraries must come first. */ 45091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE); 45101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE); 45111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 45121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n", 45131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck nonnull (lt_argv_zero)); 45141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for (i = 0; i < newargc; i++) 45151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck { 45161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n", 45171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck i, nonnull (newargz[i])); 45181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } 45191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 45201176bdada62cabc6ec4b0308a930e83b679d5d36John ReckEOF 45211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 45221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $host_os in 45231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck mingw*) 45241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck cat <<"EOF" 45251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck /* execv doesn't actually work on mingw as expected on unix */ 45261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck newargz = prepare_spawn (newargz); 45271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz); 45281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if (rval == -1) 45291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck { 45301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck /* failed to start process */ 45311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck lt_debugprintf (__FILE__, __LINE__, 45321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck "(main) failed to launch target \"%s\": %s\n", 45331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck lt_argv_zero, nonnull (strerror (errno))); 45341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck return 127; 45351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } 45361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck return rval; 45371176bdada62cabc6ec4b0308a930e83b679d5d36John ReckEOF 45381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 45391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 45401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck cat <<"EOF" 45411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck execv (lt_argv_zero, newargz); 45421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck return rval; /* =127, but avoids unused variable warning */ 45431176bdada62cabc6ec4b0308a930e83b679d5d36John ReckEOF 45441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 45451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 45461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 45471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck cat <<"EOF" 45481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 45491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 45501176bdada62cabc6ec4b0308a930e83b679d5d36John Reckvoid * 45511176bdada62cabc6ec4b0308a930e83b679d5d36John Reckxmalloc (size_t num) 45521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 45531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck void *p = (void *) malloc (num); 45541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if (!p) 45551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck lt_fatal (__FILE__, __LINE__, "memory exhausted"); 45561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 45571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck return p; 45581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 45591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 45601176bdada62cabc6ec4b0308a930e83b679d5d36John Reckchar * 45611176bdada62cabc6ec4b0308a930e83b679d5d36John Reckxstrdup (const char *string) 45621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 45631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck return string ? strcpy ((char *) xmalloc (strlen (string) + 1), 45641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck string) : NULL; 45651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 45661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 45671176bdada62cabc6ec4b0308a930e83b679d5d36John Reckconst char * 45681176bdada62cabc6ec4b0308a930e83b679d5d36John Reckbase_name (const char *name) 45691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 45701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck const char *base; 45711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 45721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 45731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck /* Skip over the disk name in MSDOS pathnames. */ 45741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if (isalpha ((unsigned char) name[0]) && name[1] == ':') 45751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck name += 2; 45761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#endif 45771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 45781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for (base = name; *name; name++) 45791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if (IS_DIR_SEPARATOR (*name)) 45801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck base = name + 1; 45811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck return base; 45821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 45831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 45841176bdada62cabc6ec4b0308a930e83b679d5d36John Reckint 45851176bdada62cabc6ec4b0308a930e83b679d5d36John Reckcheck_executable (const char *path) 45861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 45871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck struct stat st; 45881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 45891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n", 45901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck nonempty (path)); 45911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if ((!path) || (!*path)) 45921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck return 0; 45931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 45941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if ((stat (path, &st) >= 0) 45951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) 45961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck return 1; 45971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 45981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck return 0; 45991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 46001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 46011176bdada62cabc6ec4b0308a930e83b679d5d36John Reckint 46021176bdada62cabc6ec4b0308a930e83b679d5d36John Reckmake_executable (const char *path) 46031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 46041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck int rval = 0; 46051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck struct stat st; 46061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 46071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", 46081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck nonempty (path)); 46091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if ((!path) || (!*path)) 46101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck return 0; 46111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 46121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if (stat (path, &st) >= 0) 46131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck { 46141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); 46151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } 46161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck return rval; 46171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 46181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 46191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck/* Searches for the full path of the wrapper. Returns 46201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck newly allocated full path name if found, NULL otherwise 46211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck Does not chase symlinks, even on platforms that support them. 46221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck*/ 46231176bdada62cabc6ec4b0308a930e83b679d5d36John Reckchar * 46241176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfind_executable (const char *wrapper) 46251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 46261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck int has_slash = 0; 46271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck const char *p; 46281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck const char *p_next; 46291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck /* static buffer for getcwd */ 46301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck char tmp[LT_PATHMAX + 1]; 46311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck int tmp_len; 46321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck char *concat_name; 46331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 46341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", 46351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck nonempty (wrapper)); 46361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 46371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if ((wrapper == NULL) || (*wrapper == '\0')) 46381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck return NULL; 46391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 46401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck /* Absolute path? */ 46411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 46421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') 46431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck { 46441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck concat_name = xstrdup (wrapper); 46451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if (check_executable (concat_name)) 46461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck return concat_name; 46471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck XFREE (concat_name); 46481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } 46491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 46501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck { 46511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#endif 46521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if (IS_DIR_SEPARATOR (wrapper[0])) 46531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck { 46541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck concat_name = xstrdup (wrapper); 46551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if (check_executable (concat_name)) 46561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck return concat_name; 46571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck XFREE (concat_name); 46581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } 46591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 46601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } 46611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#endif 46621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 46631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for (p = wrapper; *p; p++) 46641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if (*p == '/') 46651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck { 46661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck has_slash = 1; 46671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck break; 46681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } 46691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if (!has_slash) 46701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck { 46711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck /* no slashes; search PATH */ 46721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck const char *path = getenv ("PATH"); 46731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if (path != NULL) 46741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck { 46751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for (p = path; *p; p = p_next) 46761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck { 46771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck const char *q; 46781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck size_t p_len; 46791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for (q = p; *q; q++) 46801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if (IS_PATH_SEPARATOR (*q)) 46811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck break; 46821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck p_len = q - p; 46831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck p_next = (*q == '\0' ? q : q + 1); 46841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if (p_len == 0) 46851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck { 46861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck /* empty path: current directory */ 46871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if (getcwd (tmp, LT_PATHMAX) == NULL) 46881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", 46891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck nonnull (strerror (errno))); 46901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck tmp_len = strlen (tmp); 46911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck concat_name = 46921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); 46931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck memcpy (concat_name, tmp, tmp_len); 46941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck concat_name[tmp_len] = '/'; 46951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck strcpy (concat_name + tmp_len + 1, wrapper); 46961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } 46971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 46981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck { 46991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck concat_name = 47001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); 47011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck memcpy (concat_name, p, p_len); 47021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck concat_name[p_len] = '/'; 47031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck strcpy (concat_name + p_len + 1, wrapper); 47041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } 47051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if (check_executable (concat_name)) 47061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck return concat_name; 47071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck XFREE (concat_name); 47081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } 47091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } 47101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck /* not found in PATH; assume curdir */ 47111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } 47121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck /* Relative path | not found in path: prepend cwd */ 47131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if (getcwd (tmp, LT_PATHMAX) == NULL) 47141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", 47151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck nonnull (strerror (errno))); 47161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck tmp_len = strlen (tmp); 47171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); 47181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck memcpy (concat_name, tmp, tmp_len); 47191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck concat_name[tmp_len] = '/'; 47201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck strcpy (concat_name + tmp_len + 1, wrapper); 47211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 47221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if (check_executable (concat_name)) 47231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck return concat_name; 47241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck XFREE (concat_name); 47251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck return NULL; 47261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 47271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 47281176bdada62cabc6ec4b0308a930e83b679d5d36John Reckchar * 47291176bdada62cabc6ec4b0308a930e83b679d5d36John Reckchase_symlinks (const char *pathspec) 47301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 47311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#ifndef S_ISLNK 47321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck return xstrdup (pathspec); 47331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#else 47341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck char buf[LT_PATHMAX]; 47351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck struct stat s; 47361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck char *tmp_pathspec = xstrdup (pathspec); 47371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck char *p; 47381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck int has_symlinks = 0; 47391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck while (strlen (tmp_pathspec) && !has_symlinks) 47401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck { 47411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck lt_debugprintf (__FILE__, __LINE__, 47421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck "checking path component for symlinks: %s\n", 47431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck tmp_pathspec); 47441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if (lstat (tmp_pathspec, &s) == 0) 47451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck { 47461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if (S_ISLNK (s.st_mode) != 0) 47471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck { 47481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck has_symlinks = 1; 47491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck break; 47501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } 47511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 47521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck /* search backwards for last DIR_SEPARATOR */ 47531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck p = tmp_pathspec + strlen (tmp_pathspec) - 1; 47541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) 47551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck p--; 47561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) 47571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck { 47581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck /* no more DIR_SEPARATORS left */ 47591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck break; 47601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } 47611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *p = '\0'; 47621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } 47631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 47641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck { 47651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck lt_fatal (__FILE__, __LINE__, 47661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck "error accessing file \"%s\": %s", 47671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck tmp_pathspec, nonnull (strerror (errno))); 47681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } 47691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } 47701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck XFREE (tmp_pathspec); 47711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 47721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if (!has_symlinks) 47731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck { 47741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck return xstrdup (pathspec); 47751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } 47761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 47771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck tmp_pathspec = realpath (pathspec, buf); 47781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if (tmp_pathspec == 0) 47791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck { 47801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck lt_fatal (__FILE__, __LINE__, 47811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck "could not follow symlinks for %s", pathspec); 47821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } 47831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck return xstrdup (tmp_pathspec); 47841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#endif 47851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 47861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 47871176bdada62cabc6ec4b0308a930e83b679d5d36John Reckchar * 47881176bdada62cabc6ec4b0308a930e83b679d5d36John Reckstrendzap (char *str, const char *pat) 47891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 47901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck size_t len, patlen; 47911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 47921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck assert (str != NULL); 47931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck assert (pat != NULL); 47941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 47951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck len = strlen (str); 47961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck patlen = strlen (pat); 47971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 47981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if (patlen <= len) 47991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck { 48001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck str += len - patlen; 48011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if (strcmp (str, pat) == 0) 48021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *str = '\0'; 48031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } 48041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck return str; 48051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 48061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 48071176bdada62cabc6ec4b0308a930e83b679d5d36John Reckvoid 48081176bdada62cabc6ec4b0308a930e83b679d5d36John Recklt_debugprintf (const char *file, int line, const char *fmt, ...) 48091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 48101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck va_list args; 48111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if (lt_debug) 48121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck { 48131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); 48141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck va_start (args, fmt); 48151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck (void) vfprintf (stderr, fmt, args); 48161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck va_end (args); 48171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } 48181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 48191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 48201176bdada62cabc6ec4b0308a930e83b679d5d36John Reckstatic void 48211176bdada62cabc6ec4b0308a930e83b679d5d36John Recklt_error_core (int exit_status, const char *file, 48221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck int line, const char *mode, 48231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck const char *message, va_list ap) 48241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 48251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); 48261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck vfprintf (stderr, message, ap); 48271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fprintf (stderr, ".\n"); 48281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 48291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if (exit_status >= 0) 48301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck exit (exit_status); 48311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 48321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 48331176bdada62cabc6ec4b0308a930e83b679d5d36John Reckvoid 48341176bdada62cabc6ec4b0308a930e83b679d5d36John Recklt_fatal (const char *file, int line, const char *message, ...) 48351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 48361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck va_list ap; 48371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck va_start (ap, message); 48381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); 48391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck va_end (ap); 48401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 48411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 48421176bdada62cabc6ec4b0308a930e83b679d5d36John Reckstatic const char * 48431176bdada62cabc6ec4b0308a930e83b679d5d36John Recknonnull (const char *s) 48441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 48451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck return s ? s : "(null)"; 48461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 48471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 48481176bdada62cabc6ec4b0308a930e83b679d5d36John Reckstatic const char * 48491176bdada62cabc6ec4b0308a930e83b679d5d36John Recknonempty (const char *s) 48501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 48511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck return (s && !*s) ? "(empty)" : nonnull (s); 48521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 48531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 48541176bdada62cabc6ec4b0308a930e83b679d5d36John Reckvoid 48551176bdada62cabc6ec4b0308a930e83b679d5d36John Recklt_setenv (const char *name, const char *value) 48561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 48571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck lt_debugprintf (__FILE__, __LINE__, 48581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck "(lt_setenv) setting '%s' to '%s'\n", 48591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck nonnull (name), nonnull (value)); 48601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck { 48611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#ifdef HAVE_SETENV 48621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck /* always make a copy, for consistency with !HAVE_SETENV */ 48631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck char *str = xstrdup (value); 48641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck setenv (name, str, 1); 48651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#else 48661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck int len = strlen (name) + 1 + strlen (value) + 1; 48671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck char *str = XMALLOC (char, len); 48681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck sprintf (str, "%s=%s", name, value); 48691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if (putenv (str) != EXIT_SUCCESS) 48701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck { 48711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck XFREE (str); 48721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } 48731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#endif 48741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } 48751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 48761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 48771176bdada62cabc6ec4b0308a930e83b679d5d36John Reckchar * 48781176bdada62cabc6ec4b0308a930e83b679d5d36John Recklt_extend_str (const char *orig_value, const char *add, int to_end) 48791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 48801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck char *new_value; 48811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if (orig_value && *orig_value) 48821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck { 48831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck int orig_value_len = strlen (orig_value); 48841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck int add_len = strlen (add); 48851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck new_value = XMALLOC (char, add_len + orig_value_len + 1); 48861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if (to_end) 48871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck { 48881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck strcpy (new_value, orig_value); 48891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck strcpy (new_value + orig_value_len, add); 48901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } 48911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 48921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck { 48931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck strcpy (new_value, add); 48941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck strcpy (new_value + add_len, orig_value); 48951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } 48961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } 48971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 48981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck { 48991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck new_value = xstrdup (add); 49001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } 49011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck return new_value; 49021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 49031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 49041176bdada62cabc6ec4b0308a930e83b679d5d36John Reckvoid 49051176bdada62cabc6ec4b0308a930e83b679d5d36John Recklt_update_exe_path (const char *name, const char *value) 49061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 49071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck lt_debugprintf (__FILE__, __LINE__, 49081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", 49091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck nonnull (name), nonnull (value)); 49101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 49111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if (name && *name && value && *value) 49121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck { 49131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck char *new_value = lt_extend_str (getenv (name), value, 0); 49141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck /* some systems can't cope with a ':'-terminated path #' */ 49151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck int len = strlen (new_value); 49161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) 49171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck { 49181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck new_value[len-1] = '\0'; 49191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } 49201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck lt_setenv (name, new_value); 49211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck XFREE (new_value); 49221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } 49231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 49241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 49251176bdada62cabc6ec4b0308a930e83b679d5d36John Reckvoid 49261176bdada62cabc6ec4b0308a930e83b679d5d36John Recklt_update_lib_path (const char *name, const char *value) 49271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 49281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck lt_debugprintf (__FILE__, __LINE__, 49291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", 49301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck nonnull (name), nonnull (value)); 49311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 49321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if (name && *name && value && *value) 49331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck { 49341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck char *new_value = lt_extend_str (getenv (name), value, 0); 49351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck lt_setenv (name, new_value); 49361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck XFREE (new_value); 49371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } 49381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 49391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 49401176bdada62cabc6ec4b0308a930e83b679d5d36John ReckEOF 49411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $host_os in 49421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck mingw*) 49431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck cat <<"EOF" 49441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 49451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck/* Prepares an argument vector before calling spawn(). 49461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck Note that spawn() does not by itself call the command interpreter 49471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : 49481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); 49491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck GetVersionEx(&v); 49501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck v.dwPlatformId == VER_PLATFORM_WIN32_NT; 49511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck }) ? "cmd.exe" : "command.com"). 49521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck Instead it simply concatenates the arguments, separated by ' ', and calls 49531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck CreateProcess(). We must quote the arguments since Win32 CreateProcess() 49541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a 49551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck special way: 49561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck - Space and tab are interpreted as delimiters. They are not treated as 49571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck delimiters if they are surrounded by double quotes: "...". 49581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck - Unescaped double quotes are removed from the input. Their only effect is 49591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck that within double quotes, space and tab are treated like normal 49601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck characters. 49611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck - Backslashes not followed by double quotes are not special. 49621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck - But 2*n+1 backslashes followed by a double quote become 49631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck n backslashes followed by a double quote (n >= 0): 49641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck \" -> " 49651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck \\\" -> \" 49661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck \\\\\" -> \\" 49671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck */ 49681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#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" 49691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#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" 49701176bdada62cabc6ec4b0308a930e83b679d5d36John Reckchar ** 49711176bdada62cabc6ec4b0308a930e83b679d5d36John Reckprepare_spawn (char **argv) 49721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 49731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck size_t argc; 49741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck char **new_argv; 49751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck size_t i; 49761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 49771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck /* Count number of arguments. */ 49781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for (argc = 0; argv[argc] != NULL; argc++) 49791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ; 49801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 49811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck /* Allocate new argument vector. */ 49821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck new_argv = XMALLOC (char *, argc + 1); 49831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 49841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck /* Put quoted arguments into the new argument vector. */ 49851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for (i = 0; i < argc; i++) 49861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck { 49871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck const char *string = argv[i]; 49881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 49891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if (string[0] == '\0') 49901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck new_argv[i] = xstrdup ("\"\""); 49911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) 49921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck { 49931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); 49941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck size_t length; 49951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck unsigned int backslashes; 49961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck const char *s; 49971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck char *quoted_string; 49981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck char *p; 49991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 50001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck length = 0; 50011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck backslashes = 0; 50021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if (quote_around) 50031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck length++; 50041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for (s = string; *s != '\0'; s++) 50051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck { 50061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck char c = *s; 50071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if (c == '"') 50081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck length += backslashes + 1; 50091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck length++; 50101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if (c == '\\') 50111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck backslashes++; 50121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 50131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck backslashes = 0; 50141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } 50151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if (quote_around) 50161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck length += backslashes + 1; 50171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 50181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck quoted_string = XMALLOC (char, length + 1); 50191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 50201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck p = quoted_string; 50211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck backslashes = 0; 50221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if (quote_around) 50231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *p++ = '"'; 50241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for (s = string; *s != '\0'; s++) 50251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck { 50261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck char c = *s; 50271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if (c == '"') 50281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck { 50291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck unsigned int j; 50301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for (j = backslashes + 1; j > 0; j--) 50311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *p++ = '\\'; 50321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } 50331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *p++ = c; 50341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if (c == '\\') 50351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck backslashes++; 50361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 50371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck backslashes = 0; 50381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } 50391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if (quote_around) 50401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck { 50411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck unsigned int j; 50421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for (j = backslashes; j > 0; j--) 50431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *p++ = '\\'; 50441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *p++ = '"'; 50451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } 50461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *p = '\0'; 50471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 50481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck new_argv[i] = quoted_string; 50491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } 50501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 50511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck new_argv[i] = (char *) string; 50521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } 50531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck new_argv[argc] = NULL; 50541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 50551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck return new_argv; 50561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 50571176bdada62cabc6ec4b0308a930e83b679d5d36John ReckEOF 50581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 50591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 50601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 50611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck cat <<"EOF" 50621176bdada62cabc6ec4b0308a930e83b679d5d36John Reckvoid lt_dump_script (FILE* f) 50631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 50641176bdada62cabc6ec4b0308a930e83b679d5d36John ReckEOF 50651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_emit_wrapper yes | 50661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $SED -n -e ' 50671176bdada62cabc6ec4b0308a930e83b679d5d36John Recks/^\(.\{79\}\)\(..*\)/\1\ 50681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck\2/ 50691176bdada62cabc6ec4b0308a930e83b679d5d36John Reckh 50701176bdada62cabc6ec4b0308a930e83b679d5d36John Recks/\([\\"]\)/\\\1/g 50711176bdada62cabc6ec4b0308a930e83b679d5d36John Recks/$/\\n/ 50721176bdada62cabc6ec4b0308a930e83b679d5d36John Recks/\([^\n]*\).*/ fputs ("\1", f);/p 50731176bdada62cabc6ec4b0308a930e83b679d5d36John Reckg 50741176bdada62cabc6ec4b0308a930e83b679d5d36John ReckD' 50751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck cat <<"EOF" 50761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 50771176bdada62cabc6ec4b0308a930e83b679d5d36John ReckEOF 50781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 50791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# end: func_emit_cwrapperexe_src 50801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 50811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_win32_import_lib_p ARG 50821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# True if ARG is an import lib, as indicated by $file_magic_cmd 50831176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_win32_import_lib_p () 50841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 50851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_debug 50861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in 50871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *import*) : ;; 50881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) false ;; 50891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 50901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 50911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 50921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_mode_link arg... 50931176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_mode_link () 50941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 50951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_debug 50961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $host in 50971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 50981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # It is impossible to link a dll without this setting, and 50991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # we shouldn't force the makefile maintainer to figure out 51001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # which system we are compiling for in order to pass an extra 51011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # flag for every libtool invocation. 51021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # allow_undefined=no 51031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 51041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # FIXME: Unfortunately, there are problems with the above when trying 51051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # to make a dll which has undefined symbols, in which case not 51061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # even a static library is built. For now, we need to specify 51071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # -no-undefined on the libtool link line when we can be certain 51081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # that all symbols are satisfied, otherwise we get a static library. 51091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck allow_undefined=yes 51101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 51111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 51121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck allow_undefined=yes 51131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 51141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 51151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck libtool_args=$nonopt 51161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck base_compile="$nonopt $@" 51171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck compile_command=$nonopt 51181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck finalize_command=$nonopt 51191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 51201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck compile_rpath= 51211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck finalize_rpath= 51221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck compile_shlibpath= 51231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck finalize_shlibpath= 51241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck convenience= 51251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck old_convenience= 51261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck deplibs= 51271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck old_deplibs= 51281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck compiler_flags= 51291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck linker_flags= 51301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck dllsearchpath= 51311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck lib_search_path=`pwd` 51321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck inst_prefix_dir= 51331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck new_inherited_linker_flags= 51341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 51351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck avoid_version=no 51361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck bindir= 51371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck dlfiles= 51381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck dlprefiles= 51391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck dlself=no 51401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck export_dynamic=no 51411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck export_symbols= 51421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck export_symbols_regex= 51431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck generated= 51441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck libobjs= 51451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ltlibs= 51461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck module=no 51471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck no_install=no 51481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck objs= 51491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck non_pic_objects= 51501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck precious_files_regex= 51511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck prefer_static_libs=no 51521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck preload=no 51531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck prev= 51541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck prevarg= 51551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck release= 51561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck rpath= 51571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck xrpath= 51581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck perm_rpath= 51591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck temp_rpath= 51601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck thread_safe=no 51611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck vinfo= 51621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck vinfo_number=no 51631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck weak_libs= 51641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck single_module="${wl}-single_module" 51651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_infer_tag $base_compile 51661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 51671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # We need to know -static, to get the right output filenames. 51681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for arg 51691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck do 51701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $arg in 51711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -shared) 51721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test "$build_libtool_libs" != yes && \ 51731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_fatal_configuration "can not build a shared library" 51741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck build_old_libs=no 51751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck break 51761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 51771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -all-static | -static | -static-libtool-libs) 51781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $arg in 51791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -all-static) 51801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then 51811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_warning "complete static linking is impossible in this configuration" 51821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 51831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$link_static_flag"; then 51841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck dlopen_self=$dlopen_self_static 51851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 51861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck prefer_static_libs=yes 51871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 51881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -static) 51891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -z "$pic_flag" && test -n "$link_static_flag"; then 51901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck dlopen_self=$dlopen_self_static 51911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 51921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck prefer_static_libs=built 51931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 51941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -static-libtool-libs) 51951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -z "$pic_flag" && test -n "$link_static_flag"; then 51961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck dlopen_self=$dlopen_self_static 51971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 51981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck prefer_static_libs=yes 51991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 52001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 52011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck build_libtool_libs=no 52021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck build_old_libs=yes 52031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck break 52041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 52051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 52061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 52071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 52081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # See if our shared archives depend on static archives. 52091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -n "$old_archive_from_new_cmds" && build_old_libs=yes 52101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 52111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Go through the arguments, transforming them on the way. 52121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck while test "$#" -gt 0; do 52131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck arg="$1" 52141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck shift 52151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_quote_for_eval "$arg" 52161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck qarg=$func_quote_for_eval_unquoted_result 52171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append libtool_args " $func_quote_for_eval_result" 52181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 52191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # If the previous option needs an argument, assign it. 52201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$prev"; then 52211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $prev in 52221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck output) 52231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append compile_command " @OUTPUT@" 52241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append finalize_command " @OUTPUT@" 52251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 52261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 52271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 52281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $prev in 52291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck bindir) 52301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck bindir="$arg" 52311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck prev= 52321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 52331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 52341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck dlfiles|dlprefiles) 52351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$preload" = no; then 52361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Add the symbol object into the linking commands. 52371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append compile_command " @SYMFILE@" 52381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append finalize_command " @SYMFILE@" 52391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck preload=yes 52401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 52411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $arg in 52421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *.la | *.lo) ;; # We handle these cases below. 52431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck force) 52441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$dlself" = no; then 52451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck dlself=needless 52461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck export_dynamic=yes 52471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 52481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck prev= 52491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 52501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 52511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck self) 52521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$prev" = dlprefiles; then 52531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck dlself=yes 52541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then 52551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck dlself=yes 52561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 52571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck dlself=needless 52581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck export_dynamic=yes 52591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 52601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck prev= 52611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 52621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 52631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 52641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$prev" = dlfiles; then 52651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append dlfiles " $arg" 52661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 52671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append dlprefiles " $arg" 52681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 52691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck prev= 52701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 52711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 52721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 52731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 52741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck expsyms) 52751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck export_symbols="$arg" 52761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -f "$arg" \ 52771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck || func_fatal_error "symbol file \`$arg' does not exist" 52781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck prev= 52791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 52801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 52811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck expsyms_regex) 52821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck export_symbols_regex="$arg" 52831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck prev= 52841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 52851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 52861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck framework) 52871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $host in 52881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *-*-darwin*) 52891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case "$deplibs " in 52901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *" $qarg.ltframework "*) ;; 52911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) func_append deplibs " $qarg.ltframework" # this is fixed later 52921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 52931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 52941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 52951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 52961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck prev= 52971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 52981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 52991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck inst_prefix) 53001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck inst_prefix_dir="$arg" 53011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck prev= 53021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 53031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 53041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck objectlist) 53051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -f "$arg"; then 53061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck save_arg=$arg 53071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck moreargs= 53081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for fil in `cat "$save_arg"` 53091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck do 53101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_append moreargs " $fil" 53111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck arg=$fil 53121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # A libtool-controlled object. 53131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 53141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Check to see that this really is a libtool object. 53151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if func_lalib_unsafe_p "$arg"; then 53161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck pic_object= 53171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck non_pic_object= 53181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 53191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Read the .lo file 53201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_source "$arg" 53211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 53221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -z "$pic_object" || 53231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -z "$non_pic_object" || 53241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test "$pic_object" = none && 53251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test "$non_pic_object" = none; then 53261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_fatal_error "cannot find name of object for \`$arg'" 53271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 53281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 53291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Extract subdirectory from the argument. 53301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_dirname "$arg" "/" "" 53311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck xdir="$func_dirname_result" 53321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 53331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$pic_object" != none; then 53341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Prepend the subdirectory the object is found in. 53351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck pic_object="$xdir$pic_object" 53361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 53371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$prev" = dlfiles; then 53381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 53391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append dlfiles " $pic_object" 53401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck prev= 53411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 53421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 53431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # If libtool objects are unsupported, then we need to preload. 53441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck prev=dlprefiles 53451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 53461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 53471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 53481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # CHECK ME: I think I busted this. -Ossama 53491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$prev" = dlprefiles; then 53501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Preload the old-style object. 53511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append dlprefiles " $pic_object" 53521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck prev= 53531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 53541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 53551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # A PIC object. 53561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append libobjs " $pic_object" 53571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck arg="$pic_object" 53581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 53591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 53601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Non-PIC object. 53611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$non_pic_object" != none; then 53621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Prepend the subdirectory the object is found in. 53631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck non_pic_object="$xdir$non_pic_object" 53641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 53651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # A standard non-PIC object 53661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append non_pic_objects " $non_pic_object" 53671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -z "$pic_object" || test "$pic_object" = none ; then 53681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck arg="$non_pic_object" 53691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 53701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 53711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # If the PIC object exists, use it instead. 53721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # $xdir was prepended to $pic_object above. 53731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck non_pic_object="$pic_object" 53741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append non_pic_objects " $non_pic_object" 53751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 53761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 53771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Only an error if not doing a dry-run. 53781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if $opt_dry_run; then 53791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Extract subdirectory from the argument. 53801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_dirname "$arg" "/" "" 53811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck xdir="$func_dirname_result" 53821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 53831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_lo2o "$arg" 53841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck pic_object=$xdir$objdir/$func_lo2o_result 53851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck non_pic_object=$xdir$func_lo2o_result 53861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append libobjs " $pic_object" 53871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append non_pic_objects " $non_pic_object" 53881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 53891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_fatal_error "\`$arg' is not a valid libtool object" 53901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 53911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 53921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 53931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 53941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_fatal_error "link input file \`$arg' does not exist" 53951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 53961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck arg=$save_arg 53971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck prev= 53981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 53991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 54001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck precious_regex) 54011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck precious_files_regex="$arg" 54021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck prev= 54031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 54041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 54051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck release) 54061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck release="-$arg" 54071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck prev= 54081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 54091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 54101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck rpath | xrpath) 54111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # We need an absolute path. 54121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $arg in 54131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck [\\/]* | [A-Za-z]:[\\/]*) ;; 54141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 54151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_fatal_error "only absolute run-paths are allowed" 54161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 54171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 54181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$prev" = rpath; then 54191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case "$rpath " in 54201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *" $arg "*) ;; 54211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) func_append rpath " $arg" ;; 54221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 54231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 54241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case "$xrpath " in 54251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *" $arg "*) ;; 54261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) func_append xrpath " $arg" ;; 54271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 54281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 54291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck prev= 54301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 54311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 54321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck shrext) 54331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck shrext_cmds="$arg" 54341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck prev= 54351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 54361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 54371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck weak) 54381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append weak_libs " $arg" 54391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck prev= 54401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 54411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 54421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck xcclinker) 54431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append linker_flags " $qarg" 54441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append compiler_flags " $qarg" 54451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck prev= 54461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append compile_command " $qarg" 54471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append finalize_command " $qarg" 54481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 54491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 54501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck xcompiler) 54511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append compiler_flags " $qarg" 54521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck prev= 54531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append compile_command " $qarg" 54541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append finalize_command " $qarg" 54551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 54561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 54571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck xlinker) 54581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append linker_flags " $qarg" 54591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append compiler_flags " $wl$qarg" 54601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck prev= 54611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append compile_command " $wl$qarg" 54621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append finalize_command " $wl$qarg" 54631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 54641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 54651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 54661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval "$prev=\"\$arg\"" 54671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck prev= 54681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 54691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 54701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 54711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi # test -n "$prev" 54721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 54731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck prevarg="$arg" 54741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 54751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $arg in 54761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -all-static) 54771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$link_static_flag"; then 54781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # See comment for -static flag below, for more details. 54791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append compile_command " $link_static_flag" 54801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append finalize_command " $link_static_flag" 54811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 54821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 54831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 54841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 54851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -allow-undefined) 54861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # FIXME: remove this flag sometime in the future. 54871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_fatal_error "\`-allow-undefined' must not be used because it is the default" 54881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 54891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 54901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -avoid-version) 54911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck avoid_version=yes 54921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 54931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 54941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 54951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -bindir) 54961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck prev=bindir 54971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 54981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 54991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 55001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -dlopen) 55011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck prev=dlfiles 55021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 55031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 55041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 55051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -dlpreopen) 55061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck prev=dlprefiles 55071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 55081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 55091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 55101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -export-dynamic) 55111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck export_dynamic=yes 55121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 55131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 55141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 55151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -export-symbols | -export-symbols-regex) 55161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$export_symbols" || test -n "$export_symbols_regex"; then 55171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_fatal_error "more than one -exported-symbols argument is not allowed" 55181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 55191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "X$arg" = "X-export-symbols"; then 55201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck prev=expsyms 55211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 55221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck prev=expsyms_regex 55231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 55241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 55251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 55261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 55271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -framework) 55281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck prev=framework 55291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 55301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 55311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 55321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -inst-prefix-dir) 55331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck prev=inst_prefix 55341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 55351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 55361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 55371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* 55381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # so, if we see these flags be careful not to treat them like -L 55391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -L[A-Z][A-Z]*:*) 55401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $with_gcc/$host in 55411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck no/*-*-irix* | /*-*-irix*) 55421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append compile_command " $arg" 55431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append finalize_command " $arg" 55441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 55451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 55461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 55471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 55481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 55491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -L*) 55501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_stripname "-L" '' "$arg" 55511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -z "$func_stripname_result"; then 55521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$#" -gt 0; then 55531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_fatal_error "require no space between \`-L' and \`$1'" 55541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 55551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_fatal_error "need path for \`-L' option" 55561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 55571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 55581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_resolve_sysroot "$func_stripname_result" 55591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck dir=$func_resolve_sysroot_result 55601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # We need an absolute path. 55611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $dir in 55621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck [\\/]* | [A-Za-z]:[\\/]*) ;; 55631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 55641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck absdir=`cd "$dir" && pwd` 55651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -z "$absdir" && \ 55661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_fatal_error "cannot determine absolute directory name of \`$dir'" 55671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck dir="$absdir" 55681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 55691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 55701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case "$deplibs " in 55711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *" -L$dir "* | *" $arg "*) 55721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Will only happen for absolute or sysroot arguments 55731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 55741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 55751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Preserve sysroot, but never include relative directories 55761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $dir in 55771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; 55781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) func_append deplibs " -L$dir" ;; 55791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 55801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append lib_search_path " $dir" 55811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 55821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 55831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $host in 55841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 55851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` 55861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case :$dllsearchpath: in 55871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *":$dir:"*) ;; 55881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ::) dllsearchpath=$dir;; 55891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) func_append dllsearchpath ":$dir";; 55901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 55911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case :$dllsearchpath: in 55921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *":$testbindir:"*) ;; 55931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ::) dllsearchpath=$testbindir;; 55941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) func_append dllsearchpath ":$testbindir";; 55951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 55961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 55971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 55981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 55991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 56001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 56011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -l*) 56021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then 56031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $host in 56041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) 56051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # These systems don't actually have a C or math library (as such) 56061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 56071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 56081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *-*-os2*) 56091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # These systems don't actually have a C library (as such) 56101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test "X$arg" = "X-lc" && continue 56111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 56121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 56131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Do not include libc due to us having libc/libc_r. 56141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test "X$arg" = "X-lc" && continue 56151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 56161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *-*-rhapsody* | *-*-darwin1.[012]) 56171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Rhapsody C and math libraries are in the System framework 56181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append deplibs " System.ltframework" 56191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 56201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 56211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *-*-sco3.2v5* | *-*-sco5v6*) 56221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Causes problems with __ctype 56231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test "X$arg" = "X-lc" && continue 56241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 56251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 56261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Compiler inserts libc in the correct place for threads to work 56271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test "X$arg" = "X-lc" && continue 56281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 56291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 56301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck elif test "X$arg" = "X-lc_r"; then 56311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $host in 56321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 56331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Do not include libc_r directly, use -pthread flag. 56341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 56351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 56361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 56371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 56381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append deplibs " $arg" 56391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 56401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 56411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 56421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -module) 56431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck module=yes 56441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 56451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 56461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 56471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Tru64 UNIX uses -model [arg] to determine the layout of C++ 56481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # classes, name mangling, and exception handling. 56491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Darwin uses the -arch flag to determine output architecture. 56501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -model|-arch|-isysroot|--sysroot) 56511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append compiler_flags " $arg" 56521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append compile_command " $arg" 56531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append finalize_command " $arg" 56541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck prev=xcompiler 56551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 56561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 56571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 56581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ 56591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) 56601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append compiler_flags " $arg" 56611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append compile_command " $arg" 56621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append finalize_command " $arg" 56631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case "$new_inherited_linker_flags " in 56641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *" $arg "*) ;; 56651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * ) func_append new_inherited_linker_flags " $arg" ;; 56661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 56671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 56681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 56691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 56701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -multi_module) 56711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck single_module="${wl}-multi_module" 56721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 56731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 56741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 56751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -no-fast-install) 56761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fast_install=no 56771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 56781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 56791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 56801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -no-install) 56811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $host in 56821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) 56831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # The PATH hackery in wrapper scripts is required on Windows 56841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # and Darwin in order for the loader to find any dlls it needs. 56851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_warning "\`-no-install' is ignored for $host" 56861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_warning "assuming \`-no-fast-install' instead" 56871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fast_install=no 56881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 56891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) no_install=yes ;; 56901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 56911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 56921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 56931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 56941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -no-undefined) 56951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck allow_undefined=no 56961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 56971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 56981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 56991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -objectlist) 57001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck prev=objectlist 57011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 57021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 57031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 57041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -o) prev=output ;; 57051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 57061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -precious-files-regex) 57071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck prev=precious_regex 57081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 57091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 57101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 57111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -release) 57121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck prev=release 57131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 57141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 57151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 57161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -rpath) 57171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck prev=rpath 57181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 57191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 57201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 57211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -R) 57221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck prev=xrpath 57231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 57241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 57251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 57261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -R*) 57271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_stripname '-R' '' "$arg" 57281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck dir=$func_stripname_result 57291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # We need an absolute path. 57301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $dir in 57311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck [\\/]* | [A-Za-z]:[\\/]*) ;; 57321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck =*) 57331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_stripname '=' '' "$dir" 57341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck dir=$lt_sysroot$func_stripname_result 57351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 57361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 57371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_fatal_error "only absolute run-paths are allowed" 57381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 57391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 57401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case "$xrpath " in 57411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *" $dir "*) ;; 57421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) func_append xrpath " $dir" ;; 57431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 57441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 57451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 57461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 57471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -shared) 57481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # The effects of -shared are defined in a previous loop. 57491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 57501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 57511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 57521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -shrext) 57531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck prev=shrext 57541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 57551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 57561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 57571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -static | -static-libtool-libs) 57581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # The effects of -static are defined in a previous loop. 57591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # We used to do the same as -all-static on platforms that 57601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # didn't have a PIC flag, but the assumption that the effects 57611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # would be equivalent was wrong. It would break on at least 57621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Digital Unix and AIX. 57631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 57641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 57651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 57661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -thread-safe) 57671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck thread_safe=yes 57681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 57691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 57701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 57711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -version-info) 57721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck prev=vinfo 57731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 57741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 57751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 57761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -version-number) 57771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck prev=vinfo 57781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck vinfo_number=yes 57791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 57801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 57811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 57821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -weak) 57831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck prev=weak 57841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 57851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 57861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 57871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -Wc,*) 57881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_stripname '-Wc,' '' "$arg" 57891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck args=$func_stripname_result 57901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck arg= 57911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck save_ifs="$IFS"; IFS=',' 57921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for flag in $args; do 57931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck IFS="$save_ifs" 57941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_quote_for_eval "$flag" 57951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append arg " $func_quote_for_eval_result" 57961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append compiler_flags " $func_quote_for_eval_result" 57971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 57981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck IFS="$save_ifs" 57991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_stripname ' ' '' "$arg" 58001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck arg=$func_stripname_result 58011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 58021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 58031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -Wl,*) 58041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_stripname '-Wl,' '' "$arg" 58051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck args=$func_stripname_result 58061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck arg= 58071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck save_ifs="$IFS"; IFS=',' 58081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for flag in $args; do 58091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck IFS="$save_ifs" 58101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_quote_for_eval "$flag" 58111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append arg " $wl$func_quote_for_eval_result" 58121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append compiler_flags " $wl$func_quote_for_eval_result" 58131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append linker_flags " $func_quote_for_eval_result" 58141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 58151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck IFS="$save_ifs" 58161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_stripname ' ' '' "$arg" 58171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck arg=$func_stripname_result 58181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 58191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 58201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -Xcompiler) 58211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck prev=xcompiler 58221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 58231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 58241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 58251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -Xlinker) 58261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck prev=xlinker 58271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 58281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 58291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 58301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -XCClinker) 58311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck prev=xcclinker 58321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 58331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 58341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 58351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # -msg_* for osf cc 58361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -msg_*) 58371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_quote_for_eval "$arg" 58381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck arg="$func_quote_for_eval_result" 58391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 58401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 58411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Flags to be passed through unchanged, with rationale: 58421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # -64, -mips[0-9] enable 64-bit mode for the SGI compiler 58431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # -r[0-9][0-9]* specify processor for the SGI compiler 58441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler 58451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # +DA*, +DD* enable 64-bit mode for the HP compiler 58461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # -q* compiler args for the IBM compiler 58471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # -m*, -t[45]*, -txscale* architecture-specific flags for GCC 58481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # -F/path path to uninstalled frameworks, gcc on darwin 58491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # -p, -pg, --coverage, -fprofile-* profiling flags for GCC 58501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # @file GCC response files 58511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # -tp=* Portland pgcc target processor selection 58521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # --sysroot=* for sysroot support 58531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization 58541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ 58551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ 58561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -O*|-flto*|-fwhopr*|-fuse-linker-plugin) 58571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_quote_for_eval "$arg" 58581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck arg="$func_quote_for_eval_result" 58591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append compile_command " $arg" 58601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append finalize_command " $arg" 58611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append compiler_flags " $arg" 58621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 58631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 58641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 58651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Some other compiler flag. 58661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -* | +*) 58671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_quote_for_eval "$arg" 58681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck arg="$func_quote_for_eval_result" 58691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 58701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 58711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *.$objext) 58721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # A standard object. 58731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append objs " $arg" 58741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 58751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 58761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *.lo) 58771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # A libtool-controlled object. 58781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 58791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Check to see that this really is a libtool object. 58801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if func_lalib_unsafe_p "$arg"; then 58811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck pic_object= 58821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck non_pic_object= 58831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 58841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Read the .lo file 58851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_source "$arg" 58861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 58871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -z "$pic_object" || 58881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -z "$non_pic_object" || 58891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test "$pic_object" = none && 58901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test "$non_pic_object" = none; then 58911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_fatal_error "cannot find name of object for \`$arg'" 58921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 58931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 58941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Extract subdirectory from the argument. 58951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_dirname "$arg" "/" "" 58961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck xdir="$func_dirname_result" 58971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 58981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$pic_object" != none; then 58991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Prepend the subdirectory the object is found in. 59001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck pic_object="$xdir$pic_object" 59011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 59021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$prev" = dlfiles; then 59031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 59041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append dlfiles " $pic_object" 59051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck prev= 59061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 59071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 59081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # If libtool objects are unsupported, then we need to preload. 59091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck prev=dlprefiles 59101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 59111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 59121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 59131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # CHECK ME: I think I busted this. -Ossama 59141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$prev" = dlprefiles; then 59151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Preload the old-style object. 59161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append dlprefiles " $pic_object" 59171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck prev= 59181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 59191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 59201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # A PIC object. 59211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append libobjs " $pic_object" 59221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck arg="$pic_object" 59231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 59241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 59251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Non-PIC object. 59261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$non_pic_object" != none; then 59271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Prepend the subdirectory the object is found in. 59281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck non_pic_object="$xdir$non_pic_object" 59291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 59301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # A standard non-PIC object 59311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append non_pic_objects " $non_pic_object" 59321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -z "$pic_object" || test "$pic_object" = none ; then 59331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck arg="$non_pic_object" 59341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 59351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 59361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # If the PIC object exists, use it instead. 59371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # $xdir was prepended to $pic_object above. 59381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck non_pic_object="$pic_object" 59391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append non_pic_objects " $non_pic_object" 59401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 59411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 59421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Only an error if not doing a dry-run. 59431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if $opt_dry_run; then 59441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Extract subdirectory from the argument. 59451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_dirname "$arg" "/" "" 59461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck xdir="$func_dirname_result" 59471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 59481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_lo2o "$arg" 59491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck pic_object=$xdir$objdir/$func_lo2o_result 59501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck non_pic_object=$xdir$func_lo2o_result 59511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append libobjs " $pic_object" 59521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append non_pic_objects " $non_pic_object" 59531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 59541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_fatal_error "\`$arg' is not a valid libtool object" 59551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 59561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 59571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 59581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 59591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *.$libext) 59601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # An archive. 59611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append deplibs " $arg" 59621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append old_deplibs " $arg" 59631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 59641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 59651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 59661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *.la) 59671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # A libtool-controlled library. 59681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 59691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_resolve_sysroot "$arg" 59701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$prev" = dlfiles; then 59711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # This library was specified with -dlopen. 59721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append dlfiles " $func_resolve_sysroot_result" 59731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck prev= 59741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck elif test "$prev" = dlprefiles; then 59751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # The library was specified with -dlpreopen. 59761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append dlprefiles " $func_resolve_sysroot_result" 59771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck prev= 59781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 59791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append deplibs " $func_resolve_sysroot_result" 59801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 59811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 59821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 59831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 59841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Some other compiler argument. 59851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 59861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Unknown arguments in both finalize_command and compile_command need 59871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # to be aesthetically quoted because they are evaled later. 59881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_quote_for_eval "$arg" 59891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck arg="$func_quote_for_eval_result" 59901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 59911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac # arg 59921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 59931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Now actually substitute the argument into the commands. 59941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$arg"; then 59951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append compile_command " $arg" 59961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append finalize_command " $arg" 59971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 59981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done # argument parsing loop 59991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 60001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -n "$prev" && \ 60011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_fatal_help "the \`$prevarg' option requires an argument" 60021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 60031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then 60041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval arg=\"$export_dynamic_flag_spec\" 60051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append compile_command " $arg" 60061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append finalize_command " $arg" 60071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 60081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 60091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck oldlibs= 60101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # calculate the name of the file, without its directory 60111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_basename "$output" 60121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck outputname="$func_basename_result" 60131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck libobjs_save="$libobjs" 60141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 60151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$shlibpath_var"; then 60161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # get the directories listed in $shlibpath_var 60171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\` 60181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 60191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck shlib_search_path= 60201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 60211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval sys_lib_search_path=\"$sys_lib_search_path_spec\" 60221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" 60231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 60241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_dirname "$output" "/" "" 60251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck output_objdir="$func_dirname_result$objdir" 60261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_to_tool_file "$output_objdir/" 60271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck tool_output_objdir=$func_to_tool_file_result 60281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Create the object directory. 60291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_mkdir_p "$output_objdir" 60301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 60311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Determine the type of output 60321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $output in 60331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck "") 60341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_fatal_help "you must specify an output file" 60351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 60361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *.$libext) linkmode=oldlib ;; 60371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *.lo | *.$objext) linkmode=obj ;; 60381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *.la) linkmode=lib ;; 60391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) linkmode=prog ;; # Anything else should be a program. 60401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 60411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 60421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck specialdeplibs= 60431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 60441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck libs= 60451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Find all interdependent deplibs by searching for libraries 60461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # that are linked more than once (e.g. -la -lb -la) 60471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for deplib in $deplibs; do 60481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if $opt_preserve_dup_deps ; then 60491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case "$libs " in 60501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *" $deplib "*) func_append specialdeplibs " $deplib" ;; 60511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 60521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 60531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append libs " $deplib" 60541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 60551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 60561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$linkmode" = lib; then 60571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck libs="$predeps $libs $compiler_lib_search_path $postdeps" 60581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 60591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Compute libraries that are listed more than once in $predeps 60601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # $postdeps and mark them as special (i.e., whose duplicates are 60611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # not to be eliminated). 60621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck pre_post_deps= 60631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if $opt_duplicate_compiler_generated_deps; then 60641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for pre_post_dep in $predeps $postdeps; do 60651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case "$pre_post_deps " in 60661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; 60671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 60681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append pre_post_deps " $pre_post_dep" 60691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 60701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 60711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck pre_post_deps= 60721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 60731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 60741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck deplibs= 60751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck newdependency_libs= 60761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck newlib_search_path= 60771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck need_relink=no # whether we're linking any uninstalled libtool libraries 60781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck notinst_deplibs= # not-installed libtool libraries 60791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck notinst_path= # paths that contain not-installed libtool libraries 60801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 60811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $linkmode in 60821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck lib) 60831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck passes="conv dlpreopen link" 60841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for file in $dlfiles $dlprefiles; do 60851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $file in 60861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *.la) ;; 60871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 60881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" 60891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 60901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 60911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 60921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 60931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck prog) 60941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck compile_deplibs= 60951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck finalize_deplibs= 60961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck alldeplibs=no 60971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck newdlfiles= 60981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck newdlprefiles= 60991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck passes="conv scan dlopen dlpreopen link" 61001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 61011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) passes="conv" 61021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 61031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 61041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 61051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for pass in $passes; do 61061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # The preopen pass in lib mode reverses $deplibs; put it back here 61071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # so that -L comes before libs that need it for instance... 61081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$linkmode,$pass" = "lib,link"; then 61091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ## FIXME: Find the place where the list is rebuilt in the wrong 61101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ## order, and fix it there properly 61111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck tmp_deplibs= 61121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for deplib in $deplibs; do 61131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck tmp_deplibs="$deplib $tmp_deplibs" 61141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 61151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck deplibs="$tmp_deplibs" 61161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 61171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 61181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$linkmode,$pass" = "lib,link" || 61191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test "$linkmode,$pass" = "prog,scan"; then 61201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck libs="$deplibs" 61211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck deplibs= 61221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 61231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$linkmode" = prog; then 61241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $pass in 61251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck dlopen) libs="$dlfiles" ;; 61261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck dlpreopen) libs="$dlprefiles" ;; 61271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; 61281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 61291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 61301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$linkmode,$pass" = "lib,dlpreopen"; then 61311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Collect and forward deplibs of preopened libtool libs 61321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for lib in $dlprefiles; do 61331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Ignore non-libtool-libs 61341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck dependency_libs= 61351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_resolve_sysroot "$lib" 61361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $lib in 61371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *.la) func_source "$func_resolve_sysroot_result" ;; 61381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 61391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 61401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Collect preopened libtool deplibs, except any this library 61411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # has declared as weak libs 61421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for deplib in $dependency_libs; do 61431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_basename "$deplib" 61441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck deplib_base=$func_basename_result 61451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case " $weak_libs " in 61461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *" $deplib_base "*) ;; 61471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) func_append deplibs " $deplib" ;; 61481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 61491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 61501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 61511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck libs="$dlprefiles" 61521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 61531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$pass" = dlopen; then 61541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Collect dlpreopened libraries 61551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck save_deplibs="$deplibs" 61561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck deplibs= 61571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 61581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 61591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for deplib in $libs; do 61601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck lib= 61611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck found=no 61621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $deplib in 61631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ 61641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) 61651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$linkmode,$pass" = "prog,link"; then 61661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck compile_deplibs="$deplib $compile_deplibs" 61671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck finalize_deplibs="$deplib $finalize_deplibs" 61681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 61691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append compiler_flags " $deplib" 61701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$linkmode" = lib ; then 61711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case "$new_inherited_linker_flags " in 61721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *" $deplib "*) ;; 61731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * ) func_append new_inherited_linker_flags " $deplib" ;; 61741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 61751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 61761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 61771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 61781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 61791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -l*) 61801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$linkmode" != lib && test "$linkmode" != prog; then 61811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_warning "\`-l' is ignored for archives/objects" 61821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 61831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 61841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_stripname '-l' '' "$deplib" 61851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck name=$func_stripname_result 61861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$linkmode" = lib; then 61871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" 61881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 61891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" 61901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 61911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for searchdir in $searchdirs; do 61921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for search_ext in .la $std_shrext .so .a; do 61931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Search the libtool library 61941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck lib="$searchdir/lib${name}${search_ext}" 61951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -f "$lib"; then 61961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$search_ext" = ".la"; then 61971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck found=yes 61981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 61991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck found=no 62001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 62011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck break 2 62021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 62031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 62041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 62051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$found" != yes; then 62061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # deplib doesn't seem to be a libtool library 62071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$linkmode,$pass" = "prog,link"; then 62081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck compile_deplibs="$deplib $compile_deplibs" 62091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck finalize_deplibs="$deplib $finalize_deplibs" 62101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 62111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck deplibs="$deplib $deplibs" 62121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 62131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 62141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 62151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else # deplib is a libtool library 62161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, 62171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # We need to do some special things here, and not later. 62181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 62191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case " $predeps $postdeps " in 62201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *" $deplib "*) 62211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if func_lalib_p "$lib"; then 62221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck library_names= 62231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck old_library= 62241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_source "$lib" 62251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for l in $old_library $library_names; do 62261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ll="$l" 62271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 62281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "X$ll" = "X$old_library" ; then # only static version available 62291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck found=no 62301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_dirname "$lib" "" "." 62311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ladir="$func_dirname_result" 62321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck lib=$ladir/$old_library 62331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$linkmode,$pass" = "prog,link"; then 62341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck compile_deplibs="$deplib $compile_deplibs" 62351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck finalize_deplibs="$deplib $finalize_deplibs" 62361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 62371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck deplibs="$deplib $deplibs" 62381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 62391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 62401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 62411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 62421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 62431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 62441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) ;; 62451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 62461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 62471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 62481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; # -l 62491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *.ltframework) 62501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$linkmode,$pass" = "prog,link"; then 62511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck compile_deplibs="$deplib $compile_deplibs" 62521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck finalize_deplibs="$deplib $finalize_deplibs" 62531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 62541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck deplibs="$deplib $deplibs" 62551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$linkmode" = lib ; then 62561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case "$new_inherited_linker_flags " in 62571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *" $deplib "*) ;; 62581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * ) func_append new_inherited_linker_flags " $deplib" ;; 62591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 62601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 62611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 62621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 62631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 62641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -L*) 62651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $linkmode in 62661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck lib) 62671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck deplibs="$deplib $deplibs" 62681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test "$pass" = conv && continue 62691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck newdependency_libs="$deplib $newdependency_libs" 62701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_stripname '-L' '' "$deplib" 62711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_resolve_sysroot "$func_stripname_result" 62721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append newlib_search_path " $func_resolve_sysroot_result" 62731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 62741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck prog) 62751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$pass" = conv; then 62761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck deplibs="$deplib $deplibs" 62771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 62781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 62791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$pass" = scan; then 62801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck deplibs="$deplib $deplibs" 62811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 62821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck compile_deplibs="$deplib $compile_deplibs" 62831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck finalize_deplibs="$deplib $finalize_deplibs" 62841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 62851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_stripname '-L' '' "$deplib" 62861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_resolve_sysroot "$func_stripname_result" 62871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append newlib_search_path " $func_resolve_sysroot_result" 62881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 62891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 62901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_warning "\`-L' is ignored for archives/objects" 62911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 62921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac # linkmode 62931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 62941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; # -L 62951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -R*) 62961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$pass" = link; then 62971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_stripname '-R' '' "$deplib" 62981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_resolve_sysroot "$func_stripname_result" 62991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck dir=$func_resolve_sysroot_result 63001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Make sure the xrpath contains only unique directories. 63011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case "$xrpath " in 63021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *" $dir "*) ;; 63031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) func_append xrpath " $dir" ;; 63041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 63051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 63061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck deplibs="$deplib $deplibs" 63071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 63081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 63091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *.la) 63101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_resolve_sysroot "$deplib" 63111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck lib=$func_resolve_sysroot_result 63121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 63131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *.$libext) 63141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$pass" = conv; then 63151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck deplibs="$deplib $deplibs" 63161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 63171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 63181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $linkmode in 63191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck lib) 63201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Linking convenience modules into shared libraries is allowed, 63211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # but linking other static libraries is non-portable. 63221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case " $dlpreconveniencelibs " in 63231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *" $deplib "*) ;; 63241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 63251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck valid_a_lib=no 63261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $deplibs_check_method in 63271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck match_pattern*) 63281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck set dummy $deplibs_check_method; shift 63291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 63301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ 63311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck | $EGREP "$match_pattern_regex" > /dev/null; then 63321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck valid_a_lib=yes 63331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 63341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 63351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck pass_all) 63361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck valid_a_lib=yes 63371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 63381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 63391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$valid_a_lib" != yes; then 63401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo 63411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $ECHO "*** Warning: Trying to link with static lib archive $deplib." 63421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo "*** I have the capability to make that library automatically link in when" 63431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo "*** you link to this library. But I can only do this if you have a" 63441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo "*** shared version of the library, which you do not appear to have" 63451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo "*** because the file extensions .$libext of this argument makes me believe" 63461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo "*** that it is just a static archive that I should not use here." 63471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 63481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo 63491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $ECHO "*** Warning: Linking the shared library $output against the" 63501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $ECHO "*** static library $deplib is not portable!" 63511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck deplibs="$deplib $deplibs" 63521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 63531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 63541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 63551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 63561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 63571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck prog) 63581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$pass" != link; then 63591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck deplibs="$deplib $deplibs" 63601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 63611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck compile_deplibs="$deplib $compile_deplibs" 63621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck finalize_deplibs="$deplib $finalize_deplibs" 63631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 63641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 63651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 63661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac # linkmode 63671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; # *.$libext 63681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *.lo | *.$objext) 63691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$pass" = conv; then 63701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck deplibs="$deplib $deplibs" 63711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck elif test "$linkmode" = prog; then 63721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then 63731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # If there is no dlopen support or we're linking statically, 63741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # we need to preload. 63751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append newdlprefiles " $deplib" 63761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck compile_deplibs="$deplib $compile_deplibs" 63771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck finalize_deplibs="$deplib $finalize_deplibs" 63781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 63791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append newdlfiles " $deplib" 63801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 63811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 63821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 63831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 63841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck %DEPLIBS%) 63851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck alldeplibs=yes 63861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 63871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 63881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac # case $deplib 63891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 63901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$found" = yes || test -f "$lib"; then : 63911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 63921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" 63931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 63941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 63951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Check to see that this really is a libtool archive. 63961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_lalib_unsafe_p "$lib" \ 63971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck || func_fatal_error "\`$lib' is not a valid libtool archive" 63981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 63991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_dirname "$lib" "" "." 64001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ladir="$func_dirname_result" 64011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 64021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck dlname= 64031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck dlopen= 64041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck dlpreopen= 64051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck libdir= 64061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck library_names= 64071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck old_library= 64081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck inherited_linker_flags= 64091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # If the library was installed with an old release of libtool, 64101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # it will not redefine variables installed, or shouldnotlink 64111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck installed=yes 64121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck shouldnotlink=no 64131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck avoidtemprpath= 64141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 64151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 64161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Read the .la file 64171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_source "$lib" 64181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 64191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Convert "-framework foo" to "foo.ltframework" 64201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$inherited_linker_flags"; then 64211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` 64221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do 64231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case " $new_inherited_linker_flags " in 64241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *" $tmp_inherited_linker_flag "*) ;; 64251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; 64261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 64271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 64281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 64291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 64301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$linkmode,$pass" = "lib,link" || 64311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test "$linkmode,$pass" = "prog,scan" || 64321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck { test "$linkmode" != prog && test "$linkmode" != lib; }; then 64331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -n "$dlopen" && func_append dlfiles " $dlopen" 64341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" 64351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 64361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 64371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$pass" = conv; then 64381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Only check for convenience libraries 64391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck deplibs="$lib $deplibs" 64401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -z "$libdir"; then 64411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -z "$old_library"; then 64421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_fatal_error "cannot find name of link library for \`$lib'" 64431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 64441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # It is a libtool convenience library, so add in its objects. 64451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append convenience " $ladir/$objdir/$old_library" 64461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append old_convenience " $ladir/$objdir/$old_library" 64471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck elif test "$linkmode" != prog && test "$linkmode" != lib; then 64481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_fatal_error "\`$lib' is not a convenience library" 64491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 64501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck tmp_libs= 64511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for deplib in $dependency_libs; do 64521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck deplibs="$deplib $deplibs" 64531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if $opt_preserve_dup_deps ; then 64541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case "$tmp_libs " in 64551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *" $deplib "*) func_append specialdeplibs " $deplib" ;; 64561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 64571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 64581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append tmp_libs " $deplib" 64591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 64601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 64611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi # $pass = conv 64621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 64631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 64641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Get the name of the library we link against. 64651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck linklib= 64661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$old_library" && 64671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck { test "$prefer_static_libs" = yes || 64681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test "$prefer_static_libs,$installed" = "built,no"; }; then 64691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck linklib=$old_library 64701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 64711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for l in $old_library $library_names; do 64721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck linklib="$l" 64731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 64741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 64751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -z "$linklib"; then 64761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_fatal_error "cannot find name of link library for \`$lib'" 64771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 64781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 64791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # This library was specified with -dlopen. 64801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$pass" = dlopen; then 64811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -z "$libdir"; then 64821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_fatal_error "cannot -dlopen a convenience library: \`$lib'" 64831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 64841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -z "$dlname" || 64851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test "$dlopen_support" != yes || 64861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test "$build_libtool_libs" = no; then 64871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # If there is no dlname, no dlopen support or we're linking 64881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # statically, we need to preload. We also need to preload any 64891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # dependent libraries so libltdl's deplib preloader doesn't 64901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # bomb out in the load deplibs phase. 64911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append dlprefiles " $lib $dependency_libs" 64921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 64931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append newdlfiles " $lib" 64941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 64951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 64961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi # $pass = dlopen 64971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 64981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # We need an absolute path. 64991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $ladir in 65001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; 65011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 65021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck abs_ladir=`cd "$ladir" && pwd` 65031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -z "$abs_ladir"; then 65041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_warning "cannot determine absolute directory name of \`$ladir'" 65051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_warning "passing it literally to the linker, although it might fail" 65061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck abs_ladir="$ladir" 65071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 65081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 65091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 65101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_basename "$lib" 65111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck laname="$func_basename_result" 65121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 65131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Find the relevant object directory and library name. 65141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "X$installed" = Xyes; then 65151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then 65161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_warning "library \`$lib' was moved." 65171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck dir="$ladir" 65181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck absdir="$abs_ladir" 65191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck libdir="$abs_ladir" 65201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 65211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck dir="$lt_sysroot$libdir" 65221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck absdir="$lt_sysroot$libdir" 65231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 65241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes 65251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 65261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then 65271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck dir="$ladir" 65281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck absdir="$abs_ladir" 65291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Remove this search path later 65301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append notinst_path " $abs_ladir" 65311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 65321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck dir="$ladir/$objdir" 65331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck absdir="$abs_ladir/$objdir" 65341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Remove this search path later 65351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append notinst_path " $abs_ladir" 65361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 65371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi # $installed = yes 65381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_stripname 'lib' '.la' "$laname" 65391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck name=$func_stripname_result 65401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 65411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # This library was specified with -dlpreopen. 65421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$pass" = dlpreopen; then 65431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -z "$libdir" && test "$linkmode" = prog; then 65441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" 65451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 65461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case "$host" in 65471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # special handling for platforms with PE-DLLs. 65481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *cygwin* | *mingw* | *cegcc* ) 65491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Linker will automatically link against shared library if both 65501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # static and shared are present. Therefore, ensure we extract 65511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # symbols from the import library if a shared library is present 65521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # (otherwise, the dlopen module name will be incorrect). We do 65531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # this by putting the import library name into $newdlprefiles. 65541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # We recover the dlopen module name by 'saving' the la file 65551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # name in a special purpose variable, and (later) extracting the 65561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # dlname from the la file. 65571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$dlname"; then 65581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_tr_sh "$dir/$linklib" 65591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" 65601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append newdlprefiles " $dir/$linklib" 65611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 65621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append newdlprefiles " $dir/$old_library" 65631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Keep a list of preopened convenience libraries to check 65641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # that they are being used correctly in the link pass. 65651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -z "$libdir" && \ 65661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append dlpreconveniencelibs " $dir/$old_library" 65671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 65681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 65691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * ) 65701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Prefer using a static library (so that no silly _DYNAMIC symbols 65711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # are required to link). 65721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$old_library"; then 65731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append newdlprefiles " $dir/$old_library" 65741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Keep a list of preopened convenience libraries to check 65751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # that they are being used correctly in the link pass. 65761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -z "$libdir" && \ 65771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append dlpreconveniencelibs " $dir/$old_library" 65781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Otherwise, use the dlname, so that lt_dlopen finds it. 65791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck elif test -n "$dlname"; then 65801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append newdlprefiles " $dir/$dlname" 65811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 65821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append newdlprefiles " $dir/$linklib" 65831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 65841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 65851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 65861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi # $pass = dlpreopen 65871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 65881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -z "$libdir"; then 65891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Link the convenience library 65901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$linkmode" = lib; then 65911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck deplibs="$dir/$old_library $deplibs" 65921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck elif test "$linkmode,$pass" = "prog,link"; then 65931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck compile_deplibs="$dir/$old_library $compile_deplibs" 65941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck finalize_deplibs="$dir/$old_library $finalize_deplibs" 65951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 65961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck deplibs="$lib $deplibs" # used for prog,scan pass 65971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 65981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 65991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 66001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 66011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 66021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$linkmode" = prog && test "$pass" != link; then 66031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append newlib_search_path " $ladir" 66041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck deplibs="$lib $deplibs" 66051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 66061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck linkalldeplibs=no 66071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$link_all_deplibs" != no || test -z "$library_names" || 66081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test "$build_libtool_libs" = no; then 66091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck linkalldeplibs=yes 66101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 66111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 66121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck tmp_libs= 66131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for deplib in $dependency_libs; do 66141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $deplib in 66151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -L*) func_stripname '-L' '' "$deplib" 66161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_resolve_sysroot "$func_stripname_result" 66171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append newlib_search_path " $func_resolve_sysroot_result" 66181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 66191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 66201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Need to link against all dependency_libs? 66211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$linkalldeplibs" = yes; then 66221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck deplibs="$deplib $deplibs" 66231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 66241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Need to hardcode shared library paths 66251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # or/and link against static libraries 66261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck newdependency_libs="$deplib $newdependency_libs" 66271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 66281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if $opt_preserve_dup_deps ; then 66291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case "$tmp_libs " in 66301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *" $deplib "*) func_append specialdeplibs " $deplib" ;; 66311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 66321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 66331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append tmp_libs " $deplib" 66341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done # for deplib 66351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 66361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi # $linkmode = prog... 66371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 66381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$linkmode,$pass" = "prog,link"; then 66391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$library_names" && 66401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck { { test "$prefer_static_libs" = no || 66411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test "$prefer_static_libs,$installed" = "built,yes"; } || 66421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -z "$old_library"; }; then 66431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # We need to hardcode the library path 66441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then 66451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Make sure the rpath contains only unique directories. 66461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case "$temp_rpath:" in 66471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *"$absdir:"*) ;; 66481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) func_append temp_rpath "$absdir:" ;; 66491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 66501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 66511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 66521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Hardcode the library path. 66531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Skip directories that are in the system default run-time 66541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # search path. 66551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case " $sys_lib_dlsearch_path " in 66561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *" $absdir "*) ;; 66571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 66581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case "$compile_rpath " in 66591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *" $absdir "*) ;; 66601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) func_append compile_rpath " $absdir" ;; 66611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 66621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 66631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 66641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case " $sys_lib_dlsearch_path " in 66651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *" $libdir "*) ;; 66661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 66671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case "$finalize_rpath " in 66681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *" $libdir "*) ;; 66691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) func_append finalize_rpath " $libdir" ;; 66701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 66711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 66721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 66731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi # $linkmode,$pass = prog,link... 66741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 66751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$alldeplibs" = yes && 66761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck { test "$deplibs_check_method" = pass_all || 66771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck { test "$build_libtool_libs" = yes && 66781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -n "$library_names"; }; }; then 66791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # We only need to search for static libraries 66801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 66811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 66821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 66831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 66841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck link_static=no # Whether the deplib will be linked statically 66851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck use_static_libs=$prefer_static_libs 66861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$use_static_libs" = built && test "$installed" = yes; then 66871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck use_static_libs=no 66881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 66891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$library_names" && 66901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck { test "$use_static_libs" = no || test -z "$old_library"; }; then 66911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $host in 66921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *cygwin* | *mingw* | *cegcc*) 66931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # No point in relinking DLLs because paths are not encoded 66941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append notinst_deplibs " $lib" 66951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck need_relink=no 66961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 66971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 66981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$installed" = no; then 66991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append notinst_deplibs " $lib" 67001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck need_relink=yes 67011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 67021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 67031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 67041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # This is a shared library 67051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 67061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Warn about portability, can't link against -module's on some 67071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # systems (darwin). Don't bleat about dlopened modules though! 67081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck dlopenmodule="" 67091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for dlpremoduletest in $dlprefiles; do 67101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "X$dlpremoduletest" = "X$lib"; then 67111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck dlopenmodule="$dlpremoduletest" 67121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck break 67131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 67141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 67151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then 67161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo 67171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$linkmode" = prog; then 67181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $ECHO "*** Warning: Linking the executable $output against the loadable module" 67191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 67201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $ECHO "*** Warning: Linking the shared library $output against the loadable module" 67211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 67221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $ECHO "*** $linklib is not portable!" 67231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 67241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$linkmode" = lib && 67251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test "$hardcode_into_libs" = yes; then 67261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Hardcode the library path. 67271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Skip directories that are in the system default run-time 67281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # search path. 67291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case " $sys_lib_dlsearch_path " in 67301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *" $absdir "*) ;; 67311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 67321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case "$compile_rpath " in 67331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *" $absdir "*) ;; 67341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) func_append compile_rpath " $absdir" ;; 67351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 67361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 67371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 67381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case " $sys_lib_dlsearch_path " in 67391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *" $libdir "*) ;; 67401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 67411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case "$finalize_rpath " in 67421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *" $libdir "*) ;; 67431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) func_append finalize_rpath " $libdir" ;; 67441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 67451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 67461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 67471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 67481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 67491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$old_archive_from_expsyms_cmds"; then 67501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # figure out the soname 67511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck set dummy $library_names 67521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck shift 67531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck realname="$1" 67541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck shift 67551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck libname=`eval "\\$ECHO \"$libname_spec\""` 67561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # use dlname if we got it. it's perfectly good, no? 67571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$dlname"; then 67581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck soname="$dlname" 67591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck elif test -n "$soname_spec"; then 67601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # bleh windows 67611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $host in 67621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *cygwin* | mingw* | *cegcc*) 67631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_arith $current - $age 67641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck major=$func_arith_result 67651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck versuffix="-$major" 67661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 67671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 67681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval soname=\"$soname_spec\" 67691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 67701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck soname="$realname" 67711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 67721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 67731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Make a new name for the extract_expsyms_cmds to use 67741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck soroot="$soname" 67751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_basename "$soroot" 67761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck soname="$func_basename_result" 67771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_stripname 'lib' '.dll' "$soname" 67781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck newlib=libimp-$func_stripname_result.a 67791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 67801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # If the library has no export list, then create one now 67811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -f "$output_objdir/$soname-def"; then : 67821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 67831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_verbose "extracting exported symbol list from \`$soname'" 67841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_execute_cmds "$extract_expsyms_cmds" 'exit $?' 67851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 67861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 67871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Create $newlib 67881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -f "$output_objdir/$newlib"; then :; else 67891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_verbose "generating import library for \`$soname'" 67901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' 67911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 67921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # make sure the library variables are pointing to the new library 67931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck dir=$output_objdir 67941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck linklib=$newlib 67951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi # test -n "$old_archive_from_expsyms_cmds" 67961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 67971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$linkmode" = prog || test "$opt_mode" != relink; then 67981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck add_shlibpath= 67991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck add_dir= 68001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck add= 68011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck lib_linked=yes 68021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $hardcode_action in 68031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck immediate | unsupported) 68041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$hardcode_direct" = no; then 68051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck add="$dir/$linklib" 68061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $host in 68071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; 68081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *-*-sysv4*uw2*) add_dir="-L$dir" ;; 68091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ 68101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *-*-unixware7*) add_dir="-L$dir" ;; 68111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *-*-darwin* ) 68121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # if the lib is a (non-dlopened) module then we can not 68131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # link against it, someone is ignoring the earlier warnings 68141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if /usr/bin/file -L $add 2> /dev/null | 68151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $GREP ": [^:]* bundle" >/dev/null ; then 68161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "X$dlopenmodule" != "X$lib"; then 68171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $ECHO "*** Warning: lib $linklib is a module, not a shared library" 68181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -z "$old_library" ; then 68191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo 68201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo "*** And there doesn't seem to be a static archive available" 68211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo "*** The link will probably fail, sorry" 68221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 68231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck add="$dir/$old_library" 68241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 68251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck elif test -n "$old_library"; then 68261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck add="$dir/$old_library" 68271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 68281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 68291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 68301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck elif test "$hardcode_minus_L" = no; then 68311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $host in 68321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *-*-sunos*) add_shlibpath="$dir" ;; 68331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 68341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck add_dir="-L$dir" 68351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck add="-l$name" 68361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck elif test "$hardcode_shlibpath_var" = no; then 68371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck add_shlibpath="$dir" 68381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck add="-l$name" 68391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 68401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck lib_linked=no 68411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 68421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 68431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck relink) 68441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$hardcode_direct" = yes && 68451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test "$hardcode_direct_absolute" = no; then 68461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck add="$dir/$linklib" 68471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck elif test "$hardcode_minus_L" = yes; then 68481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck add_dir="-L$absdir" 68491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Try looking first in the location we're being installed to. 68501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$inst_prefix_dir"; then 68511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $libdir in 68521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck [\\/]*) 68531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append add_dir " -L$inst_prefix_dir$libdir" 68541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 68551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 68561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 68571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck add="-l$name" 68581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck elif test "$hardcode_shlibpath_var" = yes; then 68591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck add_shlibpath="$dir" 68601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck add="-l$name" 68611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 68621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck lib_linked=no 68631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 68641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 68651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) lib_linked=no ;; 68661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 68671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 68681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$lib_linked" != yes; then 68691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_fatal_configuration "unsupported hardcode properties" 68701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 68711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 68721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$add_shlibpath"; then 68731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case :$compile_shlibpath: in 68741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *":$add_shlibpath:"*) ;; 68751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) func_append compile_shlibpath "$add_shlibpath:" ;; 68761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 68771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 68781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$linkmode" = prog; then 68791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" 68801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -n "$add" && compile_deplibs="$add $compile_deplibs" 68811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 68821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -n "$add_dir" && deplibs="$add_dir $deplibs" 68831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -n "$add" && deplibs="$add $deplibs" 68841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$hardcode_direct" != yes && 68851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test "$hardcode_minus_L" != yes && 68861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test "$hardcode_shlibpath_var" = yes; then 68871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case :$finalize_shlibpath: in 68881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *":$libdir:"*) ;; 68891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) func_append finalize_shlibpath "$libdir:" ;; 68901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 68911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 68921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 68931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 68941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 68951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$linkmode" = prog || test "$opt_mode" = relink; then 68961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck add_shlibpath= 68971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck add_dir= 68981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck add= 68991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Finalize command for both is simple: just hardcode it. 69001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$hardcode_direct" = yes && 69011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test "$hardcode_direct_absolute" = no; then 69021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck add="$libdir/$linklib" 69031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck elif test "$hardcode_minus_L" = yes; then 69041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck add_dir="-L$libdir" 69051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck add="-l$name" 69061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck elif test "$hardcode_shlibpath_var" = yes; then 69071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case :$finalize_shlibpath: in 69081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *":$libdir:"*) ;; 69091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) func_append finalize_shlibpath "$libdir:" ;; 69101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 69111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck add="-l$name" 69121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck elif test "$hardcode_automatic" = yes; then 69131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$inst_prefix_dir" && 69141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -f "$inst_prefix_dir$libdir/$linklib" ; then 69151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck add="$inst_prefix_dir$libdir/$linklib" 69161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 69171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck add="$libdir/$linklib" 69181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 69191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 69201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # We cannot seem to hardcode it, guess we'll fake it. 69211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck add_dir="-L$libdir" 69221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Try looking first in the location we're being installed to. 69231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$inst_prefix_dir"; then 69241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $libdir in 69251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck [\\/]*) 69261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append add_dir " -L$inst_prefix_dir$libdir" 69271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 69281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 69291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 69301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck add="-l$name" 69311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 69321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 69331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$linkmode" = prog; then 69341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" 69351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -n "$add" && finalize_deplibs="$add $finalize_deplibs" 69361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 69371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -n "$add_dir" && deplibs="$add_dir $deplibs" 69381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -n "$add" && deplibs="$add $deplibs" 69391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 69401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 69411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck elif test "$linkmode" = prog; then 69421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Here we assume that one of hardcode_direct or hardcode_minus_L 69431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # is not unsupported. This is valid on all known static and 69441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # shared platforms. 69451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$hardcode_direct" != unsupported; then 69461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -n "$old_library" && linklib="$old_library" 69471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck compile_deplibs="$dir/$linklib $compile_deplibs" 69481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck finalize_deplibs="$dir/$linklib $finalize_deplibs" 69491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 69501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck compile_deplibs="-l$name -L$dir $compile_deplibs" 69511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck finalize_deplibs="-l$name -L$dir $finalize_deplibs" 69521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 69531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck elif test "$build_libtool_libs" = yes; then 69541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Not a shared library 69551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$deplibs_check_method" != pass_all; then 69561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # We're trying link a shared library against a static one 69571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # but the system doesn't support it. 69581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 69591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Just print a warning and add the library to dependency_libs so 69601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # that the program can be linked against the static library. 69611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo 69621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $ECHO "*** Warning: This system can not link to static lib archive $lib." 69631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo "*** I have the capability to make that library automatically link in when" 69641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo "*** you link to this library. But I can only do this if you have a" 69651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo "*** shared version of the library, which you do not appear to have." 69661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$module" = yes; then 69671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo "*** But as you try to build a module library, libtool will still create " 69681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo "*** a static module, that should work as long as the dlopening application" 69691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo "*** is linked with the -dlopen flag to resolve symbols at runtime." 69701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -z "$global_symbol_pipe"; then 69711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo 69721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo "*** However, this would only work if libtool was able to extract symbol" 69731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo "*** lists from a program, using \`nm' or equivalent, but libtool could" 69741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo "*** not find such a program. So, this module is probably useless." 69751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo "*** \`nm' from GNU binutils and a full rebuild may help." 69761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 69771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$build_old_libs" = no; then 69781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck build_libtool_libs=module 69791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck build_old_libs=yes 69801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 69811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck build_libtool_libs=no 69821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 69831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 69841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 69851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck deplibs="$dir/$old_library $deplibs" 69861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck link_static=yes 69871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 69881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi # link shared/static library? 69891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 69901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$linkmode" = lib; then 69911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$dependency_libs" && 69921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck { test "$hardcode_into_libs" != yes || 69931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test "$build_old_libs" = yes || 69941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test "$link_static" = yes; }; then 69951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Extract -R from dependency_libs 69961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck temp_deplibs= 69971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for libdir in $dependency_libs; do 69981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $libdir in 69991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -R*) func_stripname '-R' '' "$libdir" 70001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck temp_xrpath=$func_stripname_result 70011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case " $xrpath " in 70021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *" $temp_xrpath "*) ;; 70031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) func_append xrpath " $temp_xrpath";; 70041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac;; 70051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) func_append temp_deplibs " $libdir";; 70061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 70071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 70081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck dependency_libs="$temp_deplibs" 70091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 70101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 70111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append newlib_search_path " $absdir" 70121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Link against this library 70131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" 70141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # ... and its dependency_libs 70151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck tmp_libs= 70161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for deplib in $dependency_libs; do 70171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck newdependency_libs="$deplib $newdependency_libs" 70181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $deplib in 70191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -L*) func_stripname '-L' '' "$deplib" 70201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_resolve_sysroot "$func_stripname_result";; 70211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) func_resolve_sysroot "$deplib" ;; 70221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 70231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if $opt_preserve_dup_deps ; then 70241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case "$tmp_libs " in 70251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *" $func_resolve_sysroot_result "*) 70261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append specialdeplibs " $func_resolve_sysroot_result" ;; 70271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 70281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 70291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append tmp_libs " $func_resolve_sysroot_result" 70301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 70311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 70321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$link_all_deplibs" != no; then 70331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Add the search paths of all dependency libraries 70341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for deplib in $dependency_libs; do 70351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck path= 70361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $deplib in 70371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -L*) path="$deplib" ;; 70381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *.la) 70391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_resolve_sysroot "$deplib" 70401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck deplib=$func_resolve_sysroot_result 70411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_dirname "$deplib" "" "." 70421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck dir=$func_dirname_result 70431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # We need an absolute path. 70441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $dir in 70451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; 70461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 70471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck absdir=`cd "$dir" && pwd` 70481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -z "$absdir"; then 70491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_warning "cannot determine absolute directory name of \`$dir'" 70501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck absdir="$dir" 70511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 70521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 70531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 70541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if $GREP "^installed=no" $deplib > /dev/null; then 70551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $host in 70561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *-*-darwin*) 70571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck depdepl= 70581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` 70591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$deplibrary_names" ; then 70601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for tmp in $deplibrary_names ; do 70611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck depdepl=$tmp 70621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 70631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -f "$absdir/$objdir/$depdepl" ; then 70641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck depdepl="$absdir/$objdir/$depdepl" 70651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` 70661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -z "$darwin_install_name"; then 70671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` 70681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 70691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" 70701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}" 70711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck path= 70721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 70731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 70741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 70751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 70761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck path="-L$absdir/$objdir" 70771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 70781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 70791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 70801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 70811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -z "$libdir" && \ 70821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_fatal_error "\`$deplib' is not a valid libtool archive" 70831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test "$absdir" != "$libdir" && \ 70841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_warning "\`$deplib' seems to be moved" 70851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 70861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck path="-L$absdir" 70871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 70881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 70891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 70901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case " $deplibs " in 70911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *" $path "*) ;; 70921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) deplibs="$path $deplibs" ;; 70931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 70941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 70951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi # link_all_deplibs != no 70961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi # linkmode = lib 70971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done # for deplib in $libs 70981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$pass" = link; then 70991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$linkmode" = "prog"; then 71001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck compile_deplibs="$new_inherited_linker_flags $compile_deplibs" 71011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" 71021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 71031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 71041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 71051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 71061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck dependency_libs="$newdependency_libs" 71071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$pass" = dlpreopen; then 71081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Link the dlpreopened libraries before other libraries 71091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for deplib in $save_deplibs; do 71101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck deplibs="$deplib $deplibs" 71111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 71121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 71131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$pass" != dlopen; then 71141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$pass" != conv; then 71151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Make sure lib_search_path contains only unique directories. 71161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck lib_search_path= 71171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for dir in $newlib_search_path; do 71181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case "$lib_search_path " in 71191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *" $dir "*) ;; 71201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) func_append lib_search_path " $dir" ;; 71211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 71221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 71231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck newlib_search_path= 71241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 71251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 71261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$linkmode,$pass" != "prog,link"; then 71271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck vars="deplibs" 71281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 71291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck vars="compile_deplibs finalize_deplibs" 71301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 71311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for var in $vars dependency_libs; do 71321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Add libraries to $var in reverse order 71331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval tmp_libs=\"\$$var\" 71341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck new_libs= 71351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for deplib in $tmp_libs; do 71361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # FIXME: Pedantically, this is the right thing to do, so 71371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # that some nasty dependency loop isn't accidentally 71381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # broken: 71391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck #new_libs="$deplib $new_libs" 71401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Pragmatically, this seems to cause very few problems in 71411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # practice: 71421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $deplib in 71431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -L*) new_libs="$deplib $new_libs" ;; 71441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -R*) ;; 71451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 71461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # And here is the reason: when a library appears more 71471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # than once as an explicit dependence of a library, or 71481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # is implicitly linked in more than once by the 71491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # compiler, it is considered special, and multiple 71501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # occurrences thereof are not removed. Compare this 71511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # with having the same library being listed as a 71521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # dependency of multiple other libraries: in this case, 71531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # we know (pedantically, we assume) the library does not 71541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # need to be listed more than once, so we keep only the 71551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # last copy. This is not always right, but it is rare 71561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # enough that we require users that really mean to play 71571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # such unportable linking tricks to link the library 71581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # using -Wl,-lname, so that libtool does not consider it 71591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # for duplicate removal. 71601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case " $specialdeplibs " in 71611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *" $deplib "*) new_libs="$deplib $new_libs" ;; 71621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 71631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case " $new_libs " in 71641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *" $deplib "*) ;; 71651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) new_libs="$deplib $new_libs" ;; 71661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 71671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 71681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 71691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 71701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 71711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 71721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck tmp_libs= 71731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for deplib in $new_libs; do 71741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $deplib in 71751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -L*) 71761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case " $tmp_libs " in 71771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *" $deplib "*) ;; 71781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) func_append tmp_libs " $deplib" ;; 71791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 71801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 71811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) func_append tmp_libs " $deplib" ;; 71821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 71831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 71841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval $var=\"$tmp_libs\" 71851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done # for var 71861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 71871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Last step: remove runtime libs from dependency_libs 71881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # (they stay in deplibs) 71891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck tmp_libs= 71901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for i in $dependency_libs ; do 71911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case " $predeps $postdeps $compiler_lib_search_path " in 71921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *" $i "*) 71931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck i="" 71941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 71951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 71961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$i" ; then 71971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append tmp_libs " $i" 71981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 71991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 72001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck dependency_libs=$tmp_libs 72011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done # for pass 72021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$linkmode" = prog; then 72031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck dlfiles="$newdlfiles" 72041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 72051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$linkmode" = prog || test "$linkmode" = lib; then 72061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck dlprefiles="$newdlprefiles" 72071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 72081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 72091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $linkmode in 72101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck oldlib) 72111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 72121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_warning "\`-dlopen' is ignored for archives" 72131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 72141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 72151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case " $deplibs" in 72161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *\ -l* | *\ -L*) 72171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_warning "\`-l' and \`-L' are ignored for archives" ;; 72181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 72191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 72201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -n "$rpath" && \ 72211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_warning "\`-rpath' is ignored for archives" 72221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 72231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -n "$xrpath" && \ 72241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_warning "\`-R' is ignored for archives" 72251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 72261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -n "$vinfo" && \ 72271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_warning "\`-version-info/-version-number' is ignored for archives" 72281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 72291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -n "$release" && \ 72301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_warning "\`-release' is ignored for archives" 72311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 72321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -n "$export_symbols$export_symbols_regex" && \ 72331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_warning "\`-export-symbols' is ignored for archives" 72341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 72351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Now set the variables for building old libraries. 72361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck build_libtool_libs=no 72371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck oldlibs="$output" 72381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append objs "$old_deplibs" 72391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 72401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 72411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck lib) 72421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Make sure we only generate libraries of the form `libNAME.la'. 72431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $outputname in 72441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck lib*) 72451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_stripname 'lib' '.la' "$outputname" 72461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck name=$func_stripname_result 72471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval shared_ext=\"$shrext_cmds\" 72481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval libname=\"$libname_spec\" 72491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 72501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 72511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test "$module" = no && \ 72521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_fatal_help "libtool library \`$output' must begin with \`lib'" 72531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 72541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$need_lib_prefix" != no; then 72551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Add the "lib" prefix for modules if required 72561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_stripname '' '.la' "$outputname" 72571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck name=$func_stripname_result 72581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval shared_ext=\"$shrext_cmds\" 72591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval libname=\"$libname_spec\" 72601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 72611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_stripname '' '.la' "$outputname" 72621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck libname=$func_stripname_result 72631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 72641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 72651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 72661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 72671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$objs"; then 72681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$deplibs_check_method" != pass_all; then 72691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 72701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 72711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo 72721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $ECHO "*** Warning: Linking the shared library $output against the non-libtool" 72731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $ECHO "*** objects $objs is not portable!" 72741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append libobjs " $objs" 72751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 72761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 72771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 72781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test "$dlself" != no && \ 72791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_warning "\`-dlopen self' is ignored for libtool libraries" 72801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 72811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck set dummy $rpath 72821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck shift 72831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test "$#" -gt 1 && \ 72841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_warning "ignoring multiple \`-rpath's for a libtool library" 72851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 72861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck install_libdir="$1" 72871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 72881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck oldlibs= 72891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -z "$rpath"; then 72901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$build_libtool_libs" = yes; then 72911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Building a libtool convenience library. 72921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Some compilers have problems with a `.al' extension so 72931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # convenience libraries should have the same extension an 72941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # archive normally would. 72951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck oldlibs="$output_objdir/$libname.$libext $oldlibs" 72961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck build_libtool_libs=convenience 72971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck build_old_libs=yes 72981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 72991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 73001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -n "$vinfo" && \ 73011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_warning "\`-version-info/-version-number' is ignored for convenience libraries" 73021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 73031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -n "$release" && \ 73041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_warning "\`-release' is ignored for convenience libraries" 73051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 73061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 73071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Parse the version information argument. 73081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck save_ifs="$IFS"; IFS=':' 73091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck set dummy $vinfo 0 0 0 73101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck shift 73111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck IFS="$save_ifs" 73121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 73131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -n "$7" && \ 73141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_fatal_help "too many parameters to \`-version-info'" 73151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 73161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # convert absolute version numbers to libtool ages 73171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # this retains compatibility with .la files and attempts 73181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # to make the code below a bit more comprehensible 73191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 73201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $vinfo_number in 73211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck yes) 73221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck number_major="$1" 73231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck number_minor="$2" 73241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck number_revision="$3" 73251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # 73261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # There are really only two kinds -- those that 73271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # use the current revision as the major version 73281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # and those that subtract age and use age as 73291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # a minor version. But, then there is irix 73301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # which has an extra 1 added just for fun 73311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # 73321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $version_type in 73331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # correct linux to gnu/linux during the next big refactor 73341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck darwin|linux|osf|windows|none) 73351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_arith $number_major + $number_minor 73361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck current=$func_arith_result 73371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck age="$number_minor" 73381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck revision="$number_revision" 73391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 73401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck freebsd-aout|freebsd-elf|qnx|sunos) 73411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck current="$number_major" 73421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck revision="$number_minor" 73431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck age="0" 73441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 73451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck irix|nonstopux) 73461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_arith $number_major + $number_minor 73471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck current=$func_arith_result 73481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck age="$number_minor" 73491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck revision="$number_minor" 73501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck lt_irix_increment=no 73511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 73521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 73531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 73541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck no) 73551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck current="$1" 73561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck revision="$2" 73571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck age="$3" 73581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 73591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 73601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 73611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Check that each of the things are valid numbers. 73621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $current in 73631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 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]) ;; 73641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 73651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_error "CURRENT \`$current' must be a nonnegative integer" 73661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_fatal_error "\`$vinfo' is not valid version information" 73671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 73681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 73691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 73701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $revision in 73711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 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]) ;; 73721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 73731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_error "REVISION \`$revision' must be a nonnegative integer" 73741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_fatal_error "\`$vinfo' is not valid version information" 73751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 73761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 73771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 73781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $age in 73791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 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]) ;; 73801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 73811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_error "AGE \`$age' must be a nonnegative integer" 73821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_fatal_error "\`$vinfo' is not valid version information" 73831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 73841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 73851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 73861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$age" -gt "$current"; then 73871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_error "AGE \`$age' is greater than the current interface number \`$current'" 73881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_fatal_error "\`$vinfo' is not valid version information" 73891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 73901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 73911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Calculate the version variables. 73921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck major= 73931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck versuffix= 73941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck verstring= 73951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $version_type in 73961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck none) ;; 73971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 73981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck darwin) 73991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Like Linux, but with the current version available in 74001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # verstring for coding it into the library header 74011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_arith $current - $age 74021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck major=.$func_arith_result 74031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck versuffix="$major.$age.$revision" 74041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Darwin ld doesn't like 0 for these options... 74051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_arith $current + 1 74061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck minor_current=$func_arith_result 74071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" 74081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" 74091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 74101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 74111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck freebsd-aout) 74121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck major=".$current" 74131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck versuffix=".$current.$revision"; 74141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 74151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 74161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck freebsd-elf) 74171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck major=".$current" 74181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck versuffix=".$current" 74191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 74201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 74211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck irix | nonstopux) 74221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "X$lt_irix_increment" = "Xno"; then 74231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_arith $current - $age 74241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 74251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_arith $current - $age + 1 74261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 74271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck major=$func_arith_result 74281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 74291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $version_type in 74301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck nonstopux) verstring_prefix=nonstopux ;; 74311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) verstring_prefix=sgi ;; 74321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 74331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck verstring="$verstring_prefix$major.$revision" 74341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 74351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Add in all the interfaces that we are compatible with. 74361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck loop=$revision 74371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck while test "$loop" -ne 0; do 74381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_arith $revision - $loop 74391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck iface=$func_arith_result 74401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_arith $loop - 1 74411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck loop=$func_arith_result 74421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck verstring="$verstring_prefix$major.$iface:$verstring" 74431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 74441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 74451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Before this point, $major must not contain `.'. 74461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck major=.$major 74471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck versuffix="$major.$revision" 74481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 74491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 74501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck linux) # correct to gnu/linux during the next big refactor 74511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_arith $current - $age 74521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck major=.$func_arith_result 74531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck versuffix="$major.$age.$revision" 74541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 74551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 74561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck osf) 74571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_arith $current - $age 74581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck major=.$func_arith_result 74591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck versuffix=".$current.$age.$revision" 74601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck verstring="$current.$age.$revision" 74611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 74621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Add in all the interfaces that we are compatible with. 74631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck loop=$age 74641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck while test "$loop" -ne 0; do 74651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_arith $current - $loop 74661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck iface=$func_arith_result 74671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_arith $loop - 1 74681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck loop=$func_arith_result 74691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck verstring="$verstring:${iface}.0" 74701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 74711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 74721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Make executables depend on our current version. 74731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append verstring ":${current}.0" 74741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 74751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 74761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck qnx) 74771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck major=".$current" 74781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck versuffix=".$current" 74791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 74801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 74811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck sunos) 74821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck major=".$current" 74831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck versuffix=".$current.$revision" 74841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 74851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 74861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck windows) 74871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Use '-' rather than '.', since we only want one 74881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # extension on DOS 8.3 filesystems. 74891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_arith $current - $age 74901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck major=$func_arith_result 74911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck versuffix="-$major" 74921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 74931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 74941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 74951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_fatal_configuration "unknown library version type \`$version_type'" 74961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 74971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 74981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 74991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Clear the version info if we defaulted, and they specified a release. 75001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -z "$vinfo" && test -n "$release"; then 75011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck major= 75021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $version_type in 75031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck darwin) 75041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # we can't check for "0.0" in archive_cmds due to quoting 75051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # problems, so we reset it completely 75061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck verstring= 75071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 75081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 75091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck verstring="0.0" 75101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 75111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 75121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$need_version" = no; then 75131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck versuffix= 75141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 75151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck versuffix=".0.0" 75161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 75171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 75181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 75191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Remove version info from name if versioning should be avoided 75201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$avoid_version" = yes && test "$need_version" = no; then 75211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck major= 75221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck versuffix= 75231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck verstring="" 75241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 75251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 75261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Check to see if the archive will have undefined symbols. 75271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$allow_undefined" = yes; then 75281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$allow_undefined_flag" = unsupported; then 75291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_warning "undefined symbols not allowed in $host shared libraries" 75301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck build_libtool_libs=no 75311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck build_old_libs=yes 75321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 75331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 75341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Don't allow undefined symbols. 75351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck allow_undefined_flag="$no_undefined_flag" 75361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 75371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 75381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 75391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 75401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_generate_dlsyms "$libname" "$libname" "yes" 75411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append libobjs " $symfileobj" 75421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test "X$libobjs" = "X " && libobjs= 75431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 75441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$opt_mode" != relink; then 75451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Remove our outputs, but don't remove object files since they 75461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # may have been created when compiling PIC objects. 75471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck removelist= 75481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck tempremovelist=`$ECHO "$output_objdir/*"` 75491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for p in $tempremovelist; do 75501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $p in 75511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *.$objext | *.gcno) 75521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 75531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) 75541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "X$precious_files_regex" != "X"; then 75551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 75561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck then 75571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 75581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 75591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 75601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append removelist " $p" 75611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 75621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) ;; 75631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 75641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 75651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -n "$removelist" && \ 75661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_show_eval "${RM}r \$removelist" 75671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 75681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 75691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Now set the variables for building old libraries. 75701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then 75711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append oldlibs " $output_objdir/$libname.$libext" 75721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 75731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Transform .lo files to .o files. 75741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP` 75751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 75761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 75771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Eliminate all temporary directories. 75781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck #for path in $notinst_path; do 75791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` 75801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` 75811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` 75821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck #done 75831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 75841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$xrpath"; then 75851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # If the user specified any rpath flags, then add them. 75861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck temp_xrpath= 75871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for libdir in $xrpath; do 75881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_replace_sysroot "$libdir" 75891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append temp_xrpath " -R$func_replace_sysroot_result" 75901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case "$finalize_rpath " in 75911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *" $libdir "*) ;; 75921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) func_append finalize_rpath " $libdir" ;; 75931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 75941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 75951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then 75961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck dependency_libs="$temp_xrpath $dependency_libs" 75971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 75981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 75991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 76001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Make sure dlfiles contains only unique files that won't be dlpreopened 76011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck old_dlfiles="$dlfiles" 76021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck dlfiles= 76031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for lib in $old_dlfiles; do 76041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case " $dlprefiles $dlfiles " in 76051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *" $lib "*) ;; 76061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) func_append dlfiles " $lib" ;; 76071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 76081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 76091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 76101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Make sure dlprefiles contains only unique files 76111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck old_dlprefiles="$dlprefiles" 76121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck dlprefiles= 76131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for lib in $old_dlprefiles; do 76141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case "$dlprefiles " in 76151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *" $lib "*) ;; 76161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) func_append dlprefiles " $lib" ;; 76171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 76181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 76191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 76201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$build_libtool_libs" = yes; then 76211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$rpath"; then 76221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $host in 76231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) 76241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # these systems don't actually have a c library (as such)! 76251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 76261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *-*-rhapsody* | *-*-darwin1.[012]) 76271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Rhapsody C library is in the System framework 76281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append deplibs " System.ltframework" 76291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 76301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *-*-netbsd*) 76311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Don't link with libc until the a.out ld.so is fixed. 76321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 76331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 76341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Do not include libc due to us having libc/libc_r. 76351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 76361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *-*-sco3.2v5* | *-*-sco5v6*) 76371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Causes problems with __ctype 76381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 76391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 76401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Compiler inserts libc in the correct place for threads to work 76411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 76421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 76431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Add libc to deplibs on all other systems if necessary. 76441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$build_libtool_need_lc" = "yes"; then 76451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append deplibs " -lc" 76461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 76471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 76481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 76491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 76501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 76511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Transform deplibs into only deplibs that can be linked in shared. 76521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck name_save=$name 76531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck libname_save=$libname 76541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck release_save=$release 76551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck versuffix_save=$versuffix 76561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck major_save=$major 76571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # I'm not sure if I'm treating the release correctly. I think 76581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # release should show up in the -l (ie -lgmp5) so we don't want to 76591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # add it in twice. Is that correct? 76601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck release="" 76611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck versuffix="" 76621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck major="" 76631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck newdeplibs= 76641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck droppeddeps=no 76651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $deplibs_check_method in 76661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck pass_all) 76671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Don't check for shared/static. Everything works. 76681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # This might be a little naive. We might want to check 76691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # whether the library exists or not. But this is on 76701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # osf3 & osf4 and I'm not really sure... Just 76711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # implementing what was already the behavior. 76721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck newdeplibs=$deplibs 76731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 76741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test_compile) 76751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # This code stresses the "libraries are programs" paradigm to its 76761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # limits. Maybe even breaks it. We compile a program, linking it 76771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # against the deplibs as a proxy for the library. Then we can check 76781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # whether they linked in statically or dynamically with ldd. 76791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_dry_run || $RM conftest.c 76801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck cat > conftest.c <<EOF 76811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck int main() { return 0; } 76821176bdada62cabc6ec4b0308a930e83b679d5d36John ReckEOF 76831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_dry_run || $RM conftest 76841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then 76851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ldd_output=`ldd conftest` 76861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for i in $deplibs; do 76871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $i in 76881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -l*) 76891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_stripname -l '' "$i" 76901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck name=$func_stripname_result 76911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 76921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case " $predeps $postdeps " in 76931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *" $i "*) 76941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append newdeplibs " $i" 76951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck i="" 76961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 76971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 76981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 76991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$i" ; then 77001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck libname=`eval "\\$ECHO \"$libname_spec\""` 77011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` 77021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck set dummy $deplib_matches; shift 77031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck deplib_match=$1 77041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 77051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append newdeplibs " $i" 77061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 77071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck droppeddeps=yes 77081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo 77091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $ECHO "*** Warning: dynamic linker does not accept needed library $i." 77101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo "*** I have the capability to make that library automatically link in when" 77111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo "*** you link to this library. But I can only do this if you have a" 77121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo "*** shared version of the library, which I believe you do not have" 77131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo "*** because a test_compile did reveal that the linker did not use it for" 77141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo "*** its dynamic dependency list that programs get resolved with at runtime." 77151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 77161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 77171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 77181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 77191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append newdeplibs " $i" 77201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 77211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 77221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 77231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 77241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Error occurred in the first compile. Let's try to salvage 77251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # the situation: Compile a separate program for each library. 77261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for i in $deplibs; do 77271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $i in 77281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -l*) 77291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_stripname -l '' "$i" 77301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck name=$func_stripname_result 77311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_dry_run || $RM conftest 77321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if $LTCC $LTCFLAGS -o conftest conftest.c $i; then 77331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ldd_output=`ldd conftest` 77341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 77351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case " $predeps $postdeps " in 77361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *" $i "*) 77371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append newdeplibs " $i" 77381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck i="" 77391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 77401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 77411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 77421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$i" ; then 77431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck libname=`eval "\\$ECHO \"$libname_spec\""` 77441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` 77451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck set dummy $deplib_matches; shift 77461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck deplib_match=$1 77471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 77481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append newdeplibs " $i" 77491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 77501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck droppeddeps=yes 77511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo 77521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $ECHO "*** Warning: dynamic linker does not accept needed library $i." 77531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo "*** I have the capability to make that library automatically link in when" 77541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo "*** you link to this library. But I can only do this if you have a" 77551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo "*** shared version of the library, which you do not appear to have" 77561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo "*** because a test_compile did reveal that the linker did not use this one" 77571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo "*** as a dynamic dependency that programs can get resolved with at runtime." 77581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 77591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 77601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 77611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck droppeddeps=yes 77621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo 77631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $ECHO "*** Warning! Library $i is needed by this library but I was not able to" 77641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo "*** make it link in! You will probably need to install it or some" 77651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo "*** library that it depends on before this library will be fully" 77661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo "*** functional. Installing it before continuing would be even better." 77671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 77681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 77691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 77701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append newdeplibs " $i" 77711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 77721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 77731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 77741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 77751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 77761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck file_magic*) 77771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck set dummy $deplibs_check_method; shift 77781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 77791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for a_deplib in $deplibs; do 77801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $a_deplib in 77811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -l*) 77821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_stripname -l '' "$a_deplib" 77831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck name=$func_stripname_result 77841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 77851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case " $predeps $postdeps " in 77861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *" $a_deplib "*) 77871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append newdeplibs " $a_deplib" 77881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck a_deplib="" 77891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 77901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 77911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 77921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$a_deplib" ; then 77931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck libname=`eval "\\$ECHO \"$libname_spec\""` 77941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$file_magic_glob"; then 77951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob` 77961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 77971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck libnameglob=$libname 77981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 77991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test "$want_nocaseglob" = yes && nocaseglob=`shopt -p nocaseglob` 78001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 78011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$want_nocaseglob" = yes; then 78021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck shopt -s nocaseglob 78031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` 78041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $nocaseglob 78051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 78061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` 78071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 78081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for potent_lib in $potential_libs; do 78091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Follow soft links. 78101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if ls -lLd "$potent_lib" 2>/dev/null | 78111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $GREP " -> " >/dev/null; then 78121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 78131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 78141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # The statement above tries to avoid entering an 78151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # endless loop below, in case of cyclic links. 78161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # We might still enter an endless loop, since a link 78171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # loop can be closed while we follow links, 78181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # but so what? 78191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck potlib="$potent_lib" 78201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck while test -h "$potlib" 2>/dev/null; do 78211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` 78221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $potliblink in 78231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; 78241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";; 78251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 78261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 78271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | 78281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $SED -e 10q | 78291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $EGREP "$file_magic_regex" > /dev/null; then 78301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append newdeplibs " $a_deplib" 78311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck a_deplib="" 78321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck break 2 78331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 78341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 78351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 78361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 78371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$a_deplib" ; then 78381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck droppeddeps=yes 78391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo 78401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $ECHO "*** Warning: linker path does not have real file for library $a_deplib." 78411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo "*** I have the capability to make that library automatically link in when" 78421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo "*** you link to this library. But I can only do this if you have a" 78431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo "*** shared version of the library, which you do not appear to have" 78441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo "*** because I did check the linker path looking for a file starting" 78451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -z "$potlib" ; then 78461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $ECHO "*** with $libname but no candidates were found. (...for file magic test)" 78471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 78481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $ECHO "*** with $libname and none of the candidates passed a file format test" 78491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $ECHO "*** using a file magic. Last file checked: $potlib" 78501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 78511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 78521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 78531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 78541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Add a -L argument. 78551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append newdeplibs " $a_deplib" 78561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 78571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 78581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done # Gone through all deplibs. 78591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 78601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck match_pattern*) 78611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck set dummy $deplibs_check_method; shift 78621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 78631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for a_deplib in $deplibs; do 78641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $a_deplib in 78651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -l*) 78661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_stripname -l '' "$a_deplib" 78671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck name=$func_stripname_result 78681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 78691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case " $predeps $postdeps " in 78701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *" $a_deplib "*) 78711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append newdeplibs " $a_deplib" 78721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck a_deplib="" 78731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 78741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 78751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 78761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$a_deplib" ; then 78771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck libname=`eval "\\$ECHO \"$libname_spec\""` 78781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 78791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck potential_libs=`ls $i/$libname[.-]* 2>/dev/null` 78801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for potent_lib in $potential_libs; do 78811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck potlib="$potent_lib" # see symlink-check above in file_magic test 78821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ 78831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $EGREP "$match_pattern_regex" > /dev/null; then 78841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append newdeplibs " $a_deplib" 78851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck a_deplib="" 78861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck break 2 78871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 78881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 78891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 78901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 78911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$a_deplib" ; then 78921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck droppeddeps=yes 78931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo 78941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $ECHO "*** Warning: linker path does not have real file for library $a_deplib." 78951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo "*** I have the capability to make that library automatically link in when" 78961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo "*** you link to this library. But I can only do this if you have a" 78971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo "*** shared version of the library, which you do not appear to have" 78981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo "*** because I did check the linker path looking for a file starting" 78991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -z "$potlib" ; then 79001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" 79011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 79021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $ECHO "*** with $libname and none of the candidates passed a file format test" 79031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $ECHO "*** using a regex pattern. Last file checked: $potlib" 79041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 79051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 79061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 79071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 79081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Add a -L argument. 79091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append newdeplibs " $a_deplib" 79101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 79111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 79121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done # Gone through all deplibs. 79131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 79141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck none | unknown | *) 79151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck newdeplibs="" 79161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` 79171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 79181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for i in $predeps $postdeps ; do 79191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # can't use Xsed below, because $i might contain '/' 79201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"` 79211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 79221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 79231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $tmp_deplibs in 79241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *[!\ \ ]*) 79251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo 79261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "X$deplibs_check_method" = "Xnone"; then 79271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo "*** Warning: inter-library dependencies are not supported in this platform." 79281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 79291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo "*** Warning: inter-library dependencies are not known to be supported." 79301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 79311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo "*** All declared inter-library dependencies are being dropped." 79321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck droppeddeps=yes 79331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 79341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 79351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 79361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 79371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck versuffix=$versuffix_save 79381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck major=$major_save 79391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck release=$release_save 79401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck libname=$libname_save 79411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck name=$name_save 79421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 79431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $host in 79441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *-*-rhapsody* | *-*-darwin1.[012]) 79451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # On Rhapsody replace the C library with the System framework 79461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` 79471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 79481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 79491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 79501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$droppeddeps" = yes; then 79511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$module" = yes; then 79521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo 79531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo "*** Warning: libtool could not satisfy all declared inter-library" 79541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $ECHO "*** dependencies of module $libname. Therefore, libtool will create" 79551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo "*** a static module, that should work as long as the dlopening" 79561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo "*** application is linked with the -dlopen flag." 79571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -z "$global_symbol_pipe"; then 79581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo 79591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo "*** However, this would only work if libtool was able to extract symbol" 79601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo "*** lists from a program, using \`nm' or equivalent, but libtool could" 79611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo "*** not find such a program. So, this module is probably useless." 79621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo "*** \`nm' from GNU binutils and a full rebuild may help." 79631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 79641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$build_old_libs" = no; then 79651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck oldlibs="$output_objdir/$libname.$libext" 79661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck build_libtool_libs=module 79671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck build_old_libs=yes 79681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 79691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck build_libtool_libs=no 79701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 79711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 79721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo "*** The inter-library dependencies that have been dropped here will be" 79731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo "*** automatically added whenever a program is linked with this library" 79741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo "*** or is declared to -dlopen it." 79751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 79761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$allow_undefined" = no; then 79771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo 79781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo "*** Since this library must not contain undefined symbols," 79791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo "*** because either the platform does not support them or" 79801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo "*** it was explicitly requested with -no-undefined," 79811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo "*** libtool will only create a static version of it." 79821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$build_old_libs" = no; then 79831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck oldlibs="$output_objdir/$libname.$libext" 79841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck build_libtool_libs=module 79851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck build_old_libs=yes 79861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 79871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck build_libtool_libs=no 79881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 79891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 79901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 79911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 79921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Done checking deplibs! 79931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck deplibs=$newdeplibs 79941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 79951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Time to change all our "foo.ltframework" stuff back to "-framework foo" 79961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $host in 79971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *-*-darwin*) 79981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 79991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 80001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 80011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 80021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 80031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 80041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # move library search paths that coincide with paths to not yet 80051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # installed libraries to the beginning of the library search list 80061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck new_libs= 80071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for path in $notinst_path; do 80081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case " $new_libs " in 80091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *" -L$path/$objdir "*) ;; 80101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 80111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case " $deplibs " in 80121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *" -L$path/$objdir "*) 80131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append new_libs " -L$path/$objdir" ;; 80141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 80151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 80161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 80171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 80181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for deplib in $deplibs; do 80191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $deplib in 80201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -L*) 80211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case " $new_libs " in 80221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *" $deplib "*) ;; 80231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) func_append new_libs " $deplib" ;; 80241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 80251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 80261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) func_append new_libs " $deplib" ;; 80271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 80281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 80291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck deplibs="$new_libs" 80301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 80311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # All the library-specific variables (install_libdir is set above). 80321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck library_names= 80331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck old_library= 80341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck dlname= 80351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 80361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Test again, we may have decided not to build it any more 80371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$build_libtool_libs" = yes; then 80381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Remove ${wl} instances when linking with ld. 80391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # FIXME: should test the right _cmds variable. 80401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $archive_cmds in 80411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *\$LD\ *) wl= ;; 80421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 80431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$hardcode_into_libs" = yes; then 80441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Hardcode the library paths 80451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck hardcode_libdirs= 80461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck dep_rpath= 80471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck rpath="$finalize_rpath" 80481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test "$opt_mode" != relink && rpath="$compile_rpath$rpath" 80491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for libdir in $rpath; do 80501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$hardcode_libdir_flag_spec"; then 80511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$hardcode_libdir_separator"; then 80521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_replace_sysroot "$libdir" 80531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck libdir=$func_replace_sysroot_result 80541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -z "$hardcode_libdirs"; then 80551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck hardcode_libdirs="$libdir" 80561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 80571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Just accumulate the unique libdirs. 80581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 80591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 80601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 80611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 80621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" 80631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 80641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 80651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 80661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 80671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval flag=\"$hardcode_libdir_flag_spec\" 80681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append dep_rpath " $flag" 80691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 80701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck elif test -n "$runpath_var"; then 80711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case "$perm_rpath " in 80721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *" $libdir "*) ;; 80731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) func_append perm_rpath " $libdir" ;; 80741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 80751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 80761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 80771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Substitute the hardcoded libdirs into the rpath. 80781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$hardcode_libdir_separator" && 80791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -n "$hardcode_libdirs"; then 80801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck libdir="$hardcode_libdirs" 80811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" 80821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 80831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$runpath_var" && test -n "$perm_rpath"; then 80841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # We should set the runpath_var. 80851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck rpath= 80861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for dir in $perm_rpath; do 80871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append rpath "$dir:" 80881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 80891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" 80901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 80911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" 80921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 80931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 80941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck shlibpath="$finalize_shlibpath" 80951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath" 80961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$shlibpath"; then 80971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" 80981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 80991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 81001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Get the real and link names of the library. 81011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval shared_ext=\"$shrext_cmds\" 81021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval library_names=\"$library_names_spec\" 81031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck set dummy $library_names 81041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck shift 81051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck realname="$1" 81061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck shift 81071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 81081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$soname_spec"; then 81091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval soname=\"$soname_spec\" 81101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 81111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck soname="$realname" 81121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 81131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -z "$dlname"; then 81141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck dlname=$soname 81151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 81161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 81171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck lib="$output_objdir/$realname" 81181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck linknames= 81191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for link 81201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck do 81211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append linknames " $link" 81221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 81231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 81241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Use standard objects if they are pic 81251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` 81261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test "X$libobjs" = "X " && libobjs= 81271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 81281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck delfiles= 81291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$export_symbols" && test -n "$include_expsyms"; then 81301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" 81311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck export_symbols="$output_objdir/$libname.uexp" 81321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append delfiles " $export_symbols" 81331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 81341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 81351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck orig_export_symbols= 81361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $host_os in 81371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck cygwin* | mingw* | cegcc*) 81381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$export_symbols" && test -z "$export_symbols_regex"; then 81391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # exporting using user supplied symfile 81401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "x`$SED 1q $export_symbols`" != xEXPORTS; then 81411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # and it's NOT already a .def file. Must figure out 81421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # which of the given symbols are data symbols and tag 81431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # them as such. So, trigger use of export_symbols_cmds. 81441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # export_symbols gets reassigned inside the "prepare 81451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # the list of exported symbols" if statement, so the 81461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # include_expsyms logic still works. 81471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck orig_export_symbols="$export_symbols" 81481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck export_symbols= 81491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck always_export_symbols=yes 81501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 81511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 81521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 81531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 81541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 81551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Prepare the list of exported symbols 81561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -z "$export_symbols"; then 81571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then 81581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_verbose "generating symbol list for \`$libname.la'" 81591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck export_symbols="$output_objdir/$libname.exp" 81601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_dry_run || $RM $export_symbols 81611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck cmds=$export_symbols_cmds 81621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck save_ifs="$IFS"; IFS='~' 81631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for cmd1 in $cmds; do 81641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck IFS="$save_ifs" 81651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Take the normal branch if the nm_file_list_spec branch 81661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # doesn't work or if tool conversion is not needed. 81671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $nm_file_list_spec~$to_tool_file_cmd in 81681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) 81691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck try_normal_branch=yes 81701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval cmd=\"$cmd1\" 81711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_len " $cmd" 81721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck len=$func_len_result 81731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 81741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 81751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck try_normal_branch=no 81761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 81771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 81781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$try_normal_branch" = yes \ 81791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck && { test "$len" -lt "$max_cmd_len" \ 81801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck || test "$max_cmd_len" -le -1; } 81811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck then 81821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_show_eval "$cmd" 'exit $?' 81831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck skipped_export=false 81841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck elif test -n "$nm_file_list_spec"; then 81851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_basename "$output" 81861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck output_la=$func_basename_result 81871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck save_libobjs=$libobjs 81881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck save_output=$output 81891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck output=${output_objdir}/${output_la}.nm 81901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_to_tool_file "$output" 81911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck libobjs=$nm_file_list_spec$func_to_tool_file_result 81921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append delfiles " $output" 81931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_verbose "creating $NM input file list: $output" 81941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for obj in $save_libobjs; do 81951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_to_tool_file "$obj" 81961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $ECHO "$func_to_tool_file_result" 81971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done > "$output" 81981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval cmd=\"$cmd1\" 81991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_show_eval "$cmd" 'exit $?' 82001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck output=$save_output 82011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck libobjs=$save_libobjs 82021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck skipped_export=false 82031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 82041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # The command line is too long to execute in one step. 82051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_verbose "using reloadable object file for export list..." 82061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck skipped_export=: 82071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Break out early, otherwise skipped_export may be 82081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # set to false by a later but shorter cmd. 82091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck break 82101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 82111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 82121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck IFS="$save_ifs" 82131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then 82141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' 82151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_show_eval '$MV "${export_symbols}T" "$export_symbols"' 82161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 82171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 82181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 82191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 82201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$export_symbols" && test -n "$include_expsyms"; then 82211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck tmp_export_symbols="$export_symbols" 82221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" 82231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' 82241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 82251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 82261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then 82271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # The given exports_symbols file has to be filtered, so filter it. 82281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" 82291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # FIXME: $output_objdir/$libname.filter potentially contains lots of 82301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # 's' commands which not all seds can handle. GNU sed should be fine 82311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # though. Also, the filter scales superlinearly with the number of 82321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # global variables. join(1) would be nice here, but unfortunately 82331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # isn't a blessed tool. 82341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter 82351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append delfiles " $export_symbols $output_objdir/$libname.filter" 82361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck export_symbols=$output_objdir/$libname.def 82371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols 82381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 82391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 82401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck tmp_deplibs= 82411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for test_deplib in $deplibs; do 82421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case " $convenience " in 82431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *" $test_deplib "*) ;; 82441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 82451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append tmp_deplibs " $test_deplib" 82461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 82471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 82481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 82491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck deplibs="$tmp_deplibs" 82501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 82511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$convenience"; then 82521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$whole_archive_flag_spec" && 82531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test "$compiler_needs_object" = yes && 82541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -z "$libobjs"; then 82551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # extract the archives, so we have objects to list. 82561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # TODO: could optimize this to just extract one archive. 82571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck whole_archive_flag_spec= 82581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 82591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$whole_archive_flag_spec"; then 82601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck save_libobjs=$libobjs 82611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 82621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test "X$libobjs" = "X " && libobjs= 82631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 82641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck gentop="$output_objdir/${outputname}x" 82651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append generated " $gentop" 82661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 82671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_extract_archives $gentop $convenience 82681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append libobjs " $func_extract_archives_result" 82691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test "X$libobjs" = "X " && libobjs= 82701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 82711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 82721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 82731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then 82741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval flag=\"$thread_safe_flag_spec\" 82751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append linker_flags " $flag" 82761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 82771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 82781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Make a backup of the uninstalled library when relinking 82791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$opt_mode" = relink; then 82801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? 82811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 82821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 82831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Do each of the archive commands. 82841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$module" = yes && test -n "$module_cmds" ; then 82851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 82861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval test_cmds=\"$module_expsym_cmds\" 82871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck cmds=$module_expsym_cmds 82881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 82891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval test_cmds=\"$module_cmds\" 82901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck cmds=$module_cmds 82911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 82921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 82931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 82941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval test_cmds=\"$archive_expsym_cmds\" 82951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck cmds=$archive_expsym_cmds 82961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 82971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval test_cmds=\"$archive_cmds\" 82981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck cmds=$archive_cmds 82991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 83001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 83011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 83021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "X$skipped_export" != "X:" && 83031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_len " $test_cmds" && 83041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck len=$func_len_result && 83051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then 83061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck : 83071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 83081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # The command line is too long to link in one step, link piecewise 83091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # or, if using GNU ld and skipped_export is not :, use a linker 83101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # script. 83111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 83121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Save the value of $output and $libobjs because we want to 83131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # use them later. If we have whole_archive_flag_spec, we 83141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # want to use save_libobjs as it was before 83151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # whole_archive_flag_spec was expanded, because we can't 83161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # assume the linker understands whole_archive_flag_spec. 83171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # This may have to be revisited, in case too many 83181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # convenience libraries get linked in and end up exceeding 83191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # the spec. 83201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then 83211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck save_libobjs=$libobjs 83221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 83231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck save_output=$output 83241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_basename "$output" 83251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck output_la=$func_basename_result 83261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 83271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Clear the reloadable object creation command queue and 83281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # initialize k to one. 83291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test_cmds= 83301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck concat_cmds= 83311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck objlist= 83321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck last_robj= 83331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck k=1 83341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 83351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then 83361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck output=${output_objdir}/${output_la}.lnkscript 83371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_verbose "creating GNU ld script: $output" 83381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo 'INPUT (' > $output 83391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for obj in $save_libobjs 83401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck do 83411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_to_tool_file "$obj" 83421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $ECHO "$func_to_tool_file_result" >> $output 83431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 83441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo ')' >> $output 83451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append delfiles " $output" 83461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_to_tool_file "$output" 83471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck output=$func_to_tool_file_result 83481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then 83491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck output=${output_objdir}/${output_la}.lnk 83501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_verbose "creating linker input file list: $output" 83511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck : > $output 83521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck set x $save_libobjs 83531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck shift 83541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck firstobj= 83551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$compiler_needs_object" = yes; then 83561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck firstobj="$1 " 83571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck shift 83581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 83591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for obj 83601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck do 83611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_to_tool_file "$obj" 83621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $ECHO "$func_to_tool_file_result" >> $output 83631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 83641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append delfiles " $output" 83651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_to_tool_file "$output" 83661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck output=$firstobj\"$file_list_spec$func_to_tool_file_result\" 83671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 83681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$save_libobjs"; then 83691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_verbose "creating reloadable object files..." 83701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck output=$output_objdir/$output_la-${k}.$objext 83711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval test_cmds=\"$reload_cmds\" 83721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_len " $test_cmds" 83731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck len0=$func_len_result 83741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck len=$len0 83751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 83761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Loop over the list of objects to be linked. 83771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for obj in $save_libobjs 83781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck do 83791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_len " $obj" 83801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_arith $len + $func_len_result 83811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck len=$func_arith_result 83821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "X$objlist" = X || 83831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test "$len" -lt "$max_cmd_len"; then 83841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append objlist " $obj" 83851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 83861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # The command $test_cmds is almost too long, add a 83871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # command to the queue. 83881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$k" -eq 1 ; then 83891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # The first file doesn't have a previous command to add. 83901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck reload_objs=$objlist 83911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval concat_cmds=\"$reload_cmds\" 83921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 83931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # All subsequent reloadable object files will link in 83941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # the last one created. 83951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck reload_objs="$objlist $last_robj" 83961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" 83971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 83981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck last_robj=$output_objdir/$output_la-${k}.$objext 83991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_arith $k + 1 84001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck k=$func_arith_result 84011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck output=$output_objdir/$output_la-${k}.$objext 84021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck objlist=" $obj" 84031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_len " $last_robj" 84041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_arith $len0 + $func_len_result 84051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck len=$func_arith_result 84061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 84071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 84081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Handle the remaining objects by creating one last 84091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # reloadable object file. All subsequent reloadable object 84101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # files will link in the last one created. 84111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 84121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck reload_objs="$objlist $last_robj" 84131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval concat_cmds=\"\${concat_cmds}$reload_cmds\" 84141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$last_robj"; then 84151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" 84161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 84171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append delfiles " $output" 84181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 84191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 84201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck output= 84211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 84221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 84231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if ${skipped_export-false}; then 84241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_verbose "generating symbol list for \`$libname.la'" 84251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck export_symbols="$output_objdir/$libname.exp" 84261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_dry_run || $RM $export_symbols 84271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck libobjs=$output 84281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Append the command to create the export file. 84291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 84301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" 84311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$last_robj"; then 84321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" 84331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 84341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 84351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 84361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -n "$save_libobjs" && 84371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_verbose "creating a temporary reloadable object file: $output" 84381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 84391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Loop through the commands generated above and execute them. 84401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck save_ifs="$IFS"; IFS='~' 84411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for cmd in $concat_cmds; do 84421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck IFS="$save_ifs" 84431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_silent || { 84441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_quote_for_expand "$cmd" 84451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval "func_echo $func_quote_for_expand_result" 84461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } 84471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_dry_run || eval "$cmd" || { 84481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck lt_exit=$? 84491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 84501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Restore the uninstalled library and exit 84511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$opt_mode" = relink; then 84521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ( cd "$output_objdir" && \ 84531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $RM "${realname}T" && \ 84541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $MV "${realname}U" "$realname" ) 84551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 84561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 84571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck exit $lt_exit 84581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } 84591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 84601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck IFS="$save_ifs" 84611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 84621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$export_symbols_regex" && ${skipped_export-false}; then 84631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' 84641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_show_eval '$MV "${export_symbols}T" "$export_symbols"' 84651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 84661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 84671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 84681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if ${skipped_export-false}; then 84691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$export_symbols" && test -n "$include_expsyms"; then 84701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck tmp_export_symbols="$export_symbols" 84711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" 84721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' 84731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 84741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 84751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$orig_export_symbols"; then 84761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # The given exports_symbols file has to be filtered, so filter it. 84771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" 84781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # FIXME: $output_objdir/$libname.filter potentially contains lots of 84791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # 's' commands which not all seds can handle. GNU sed should be fine 84801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # though. Also, the filter scales superlinearly with the number of 84811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # global variables. join(1) would be nice here, but unfortunately 84821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # isn't a blessed tool. 84831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter 84841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append delfiles " $export_symbols $output_objdir/$libname.filter" 84851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck export_symbols=$output_objdir/$libname.def 84861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols 84871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 84881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 84891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 84901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck libobjs=$output 84911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Restore the value of output. 84921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck output=$save_output 84931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 84941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then 84951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 84961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test "X$libobjs" = "X " && libobjs= 84971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 84981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Expand the library linking commands again to reset the 84991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # value of $libobjs for piecewise linking. 85001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 85011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Do each of the archive commands. 85021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$module" = yes && test -n "$module_cmds" ; then 85031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 85041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck cmds=$module_expsym_cmds 85051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 85061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck cmds=$module_cmds 85071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 85081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 85091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 85101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck cmds=$archive_expsym_cmds 85111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 85121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck cmds=$archive_cmds 85131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 85141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 85151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 85161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 85171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$delfiles"; then 85181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Append the command to remove temporary files to $cmds. 85191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval cmds=\"\$cmds~\$RM $delfiles\" 85201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 85211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 85221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Add any objects from preloaded convenience libraries 85231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$dlprefiles"; then 85241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck gentop="$output_objdir/${outputname}x" 85251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append generated " $gentop" 85261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 85271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_extract_archives $gentop $dlprefiles 85281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append libobjs " $func_extract_archives_result" 85291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test "X$libobjs" = "X " && libobjs= 85301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 85311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 85321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck save_ifs="$IFS"; IFS='~' 85331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for cmd in $cmds; do 85341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck IFS="$save_ifs" 85351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval cmd=\"$cmd\" 85361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_silent || { 85371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_quote_for_expand "$cmd" 85381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval "func_echo $func_quote_for_expand_result" 85391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } 85401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_dry_run || eval "$cmd" || { 85411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck lt_exit=$? 85421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 85431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Restore the uninstalled library and exit 85441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$opt_mode" = relink; then 85451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ( cd "$output_objdir" && \ 85461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $RM "${realname}T" && \ 85471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $MV "${realname}U" "$realname" ) 85481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 85491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 85501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck exit $lt_exit 85511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } 85521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 85531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck IFS="$save_ifs" 85541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 85551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Restore the uninstalled library and exit 85561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$opt_mode" = relink; then 85571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? 85581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 85591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$convenience"; then 85601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -z "$whole_archive_flag_spec"; then 85611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_show_eval '${RM}r "$gentop"' 85621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 85631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 85641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 85651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck exit $EXIT_SUCCESS 85661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 85671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 85681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Create links to the real library. 85691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for linkname in $linknames; do 85701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$realname" != "$linkname"; then 85711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' 85721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 85731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 85741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 85751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # If -module or -export-dynamic was specified, set the dlname. 85761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$module" = yes || test "$export_dynamic" = yes; then 85771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # On all known operating systems, these are identical. 85781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck dlname="$soname" 85791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 85801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 85811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 85821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 85831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck obj) 85841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 85851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_warning "\`-dlopen' is ignored for objects" 85861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 85871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 85881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case " $deplibs" in 85891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *\ -l* | *\ -L*) 85901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_warning "\`-l' and \`-L' are ignored for objects" ;; 85911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 85921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 85931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -n "$rpath" && \ 85941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_warning "\`-rpath' is ignored for objects" 85951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 85961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -n "$xrpath" && \ 85971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_warning "\`-R' is ignored for objects" 85981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 85991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -n "$vinfo" && \ 86001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_warning "\`-version-info' is ignored for objects" 86011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 86021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -n "$release" && \ 86031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_warning "\`-release' is ignored for objects" 86041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 86051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $output in 86061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *.lo) 86071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -n "$objs$old_deplibs" && \ 86081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_fatal_error "cannot build library object \`$output' from non-libtool objects" 86091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 86101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck libobj=$output 86111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_lo2o "$libobj" 86121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck obj=$func_lo2o_result 86131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 86141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 86151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck libobj= 86161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck obj="$output" 86171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 86181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 86191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 86201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Delete the old objects. 86211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_dry_run || $RM $obj $libobj 86221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 86231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Objects from convenience libraries. This assumes 86241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # single-version convenience libraries. Whenever we create 86251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # different ones for PIC/non-PIC, this we'll have to duplicate 86261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # the extraction. 86271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck reload_conv_objs= 86281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck gentop= 86291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # reload_cmds runs $LD directly, so let us get rid of 86301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # -Wl from whole_archive_flag_spec and hope we can get by with 86311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # turning comma into space.. 86321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck wl= 86331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 86341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$convenience"; then 86351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$whole_archive_flag_spec"; then 86361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" 86371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` 86381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 86391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck gentop="$output_objdir/${obj}x" 86401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append generated " $gentop" 86411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 86421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_extract_archives $gentop $convenience 86431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck reload_conv_objs="$reload_objs $func_extract_archives_result" 86441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 86451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 86461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 86471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # If we're not building shared, we need to use non_pic_objs 86481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test "$build_libtool_libs" != yes && libobjs="$non_pic_objects" 86491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 86501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Create the old-style object. 86511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test 86521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 86531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck output="$obj" 86541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_execute_cmds "$reload_cmds" 'exit $?' 86551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 86561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Exit if we aren't doing a library object file. 86571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -z "$libobj"; then 86581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$gentop"; then 86591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_show_eval '${RM}r "$gentop"' 86601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 86611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 86621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck exit $EXIT_SUCCESS 86631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 86641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 86651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$build_libtool_libs" != yes; then 86661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$gentop"; then 86671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_show_eval '${RM}r "$gentop"' 86681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 86691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 86701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Create an invalid libtool object if no PIC, so that we don't 86711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # accidentally link it into a program. 86721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # $show "echo timestamp > $libobj" 86731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? 86741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck exit $EXIT_SUCCESS 86751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 86761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 86771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$pic_flag" || test "$pic_mode" != default; then 86781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Only do commands if we really have different PIC objects. 86791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck reload_objs="$libobjs $reload_conv_objs" 86801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck output="$libobj" 86811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_execute_cmds "$reload_cmds" 'exit $?' 86821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 86831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 86841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$gentop"; then 86851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_show_eval '${RM}r "$gentop"' 86861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 86871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 86881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck exit $EXIT_SUCCESS 86891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 86901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 86911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck prog) 86921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $host in 86931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *cygwin*) func_stripname '' '.exe' "$output" 86941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck output=$func_stripname_result.exe;; 86951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 86961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -n "$vinfo" && \ 86971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_warning "\`-version-info' is ignored for programs" 86981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 86991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -n "$release" && \ 87001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_warning "\`-release' is ignored for programs" 87011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 87021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test "$preload" = yes \ 87031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck && test "$dlopen_support" = unknown \ 87041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck && test "$dlopen_self" = unknown \ 87051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck && test "$dlopen_self_static" = unknown && \ 87061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." 87071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 87081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $host in 87091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *-*-rhapsody* | *-*-darwin1.[012]) 87101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # On Rhapsody replace the C library is the System framework 87111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` 87121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` 87131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 87141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 87151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 87161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $host in 87171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *-*-darwin*) 87181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Don't allow lazy linking, it breaks C++ global constructors 87191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # But is supposedly fixed on 10.4 or later (yay!). 87201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$tagname" = CXX ; then 87211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case ${MACOSX_DEPLOYMENT_TARGET-10.0} in 87221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 10.[0123]) 87231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append compile_command " ${wl}-bind_at_load" 87241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append finalize_command " ${wl}-bind_at_load" 87251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 87261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 87271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 87281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Time to change all our "foo.ltframework" stuff back to "-framework foo" 87291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 87301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 87311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 87321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 87331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 87341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 87351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # move library search paths that coincide with paths to not yet 87361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # installed libraries to the beginning of the library search list 87371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck new_libs= 87381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for path in $notinst_path; do 87391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case " $new_libs " in 87401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *" -L$path/$objdir "*) ;; 87411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 87421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case " $compile_deplibs " in 87431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *" -L$path/$objdir "*) 87441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append new_libs " -L$path/$objdir" ;; 87451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 87461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 87471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 87481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 87491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for deplib in $compile_deplibs; do 87501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $deplib in 87511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -L*) 87521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case " $new_libs " in 87531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *" $deplib "*) ;; 87541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) func_append new_libs " $deplib" ;; 87551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 87561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 87571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) func_append new_libs " $deplib" ;; 87581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 87591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 87601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck compile_deplibs="$new_libs" 87611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 87621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 87631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append compile_command " $compile_deplibs" 87641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append finalize_command " $finalize_deplibs" 87651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 87661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$rpath$xrpath"; then 87671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # If the user specified any rpath flags, then add them. 87681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for libdir in $rpath $xrpath; do 87691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # This is the magic to use -rpath. 87701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case "$finalize_rpath " in 87711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *" $libdir "*) ;; 87721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) func_append finalize_rpath " $libdir" ;; 87731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 87741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 87751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 87761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 87771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Now hardcode the library paths 87781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck rpath= 87791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck hardcode_libdirs= 87801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for libdir in $compile_rpath $finalize_rpath; do 87811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$hardcode_libdir_flag_spec"; then 87821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$hardcode_libdir_separator"; then 87831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -z "$hardcode_libdirs"; then 87841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck hardcode_libdirs="$libdir" 87851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 87861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Just accumulate the unique libdirs. 87871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 87881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 87891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 87901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 87911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" 87921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 87931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 87941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 87951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 87961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval flag=\"$hardcode_libdir_flag_spec\" 87971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append rpath " $flag" 87981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 87991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck elif test -n "$runpath_var"; then 88001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case "$perm_rpath " in 88011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *" $libdir "*) ;; 88021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) func_append perm_rpath " $libdir" ;; 88031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 88041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 88051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $host in 88061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 88071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` 88081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case :$dllsearchpath: in 88091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *":$libdir:"*) ;; 88101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ::) dllsearchpath=$libdir;; 88111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) func_append dllsearchpath ":$libdir";; 88121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 88131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case :$dllsearchpath: in 88141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *":$testbindir:"*) ;; 88151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ::) dllsearchpath=$testbindir;; 88161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) func_append dllsearchpath ":$testbindir";; 88171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 88181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 88191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 88201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 88211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Substitute the hardcoded libdirs into the rpath. 88221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$hardcode_libdir_separator" && 88231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -n "$hardcode_libdirs"; then 88241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck libdir="$hardcode_libdirs" 88251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval rpath=\" $hardcode_libdir_flag_spec\" 88261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 88271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck compile_rpath="$rpath" 88281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 88291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck rpath= 88301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck hardcode_libdirs= 88311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for libdir in $finalize_rpath; do 88321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$hardcode_libdir_flag_spec"; then 88331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$hardcode_libdir_separator"; then 88341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -z "$hardcode_libdirs"; then 88351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck hardcode_libdirs="$libdir" 88361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 88371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Just accumulate the unique libdirs. 88381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 88391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 88401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 88411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 88421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" 88431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 88441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 88451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 88461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 88471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval flag=\"$hardcode_libdir_flag_spec\" 88481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append rpath " $flag" 88491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 88501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck elif test -n "$runpath_var"; then 88511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case "$finalize_perm_rpath " in 88521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *" $libdir "*) ;; 88531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) func_append finalize_perm_rpath " $libdir" ;; 88541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 88551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 88561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 88571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Substitute the hardcoded libdirs into the rpath. 88581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$hardcode_libdir_separator" && 88591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -n "$hardcode_libdirs"; then 88601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck libdir="$hardcode_libdirs" 88611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval rpath=\" $hardcode_libdir_flag_spec\" 88621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 88631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck finalize_rpath="$rpath" 88641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 88651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$libobjs" && test "$build_old_libs" = yes; then 88661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Transform all the library objects into standard objects. 88671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` 88681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` 88691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 88701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 88711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_generate_dlsyms "$outputname" "@PROGRAM@" "no" 88721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 88731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # template prelinking step 88741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$prelink_cmds"; then 88751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_execute_cmds "$prelink_cmds" 'exit $?' 88761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 88771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 88781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck wrappers_required=yes 88791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $host in 88801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *cegcc* | *mingw32ce*) 88811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. 88821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck wrappers_required=no 88831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 88841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *cygwin* | *mingw* ) 88851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$build_libtool_libs" != yes; then 88861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck wrappers_required=no 88871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 88881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 88891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 88901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$need_relink" = no || test "$build_libtool_libs" != yes; then 88911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck wrappers_required=no 88921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 88931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 88941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 88951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$wrappers_required" = no; then 88961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Replace the output file specification. 88971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` 88981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck link_command="$compile_command$compile_rpath" 88991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 89001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # We have no uninstalled library dependencies, so finalize right now. 89011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck exit_status=0 89021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_show_eval "$link_command" 'exit_status=$?' 89031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 89041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$postlink_cmds"; then 89051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_to_tool_file "$output" 89061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` 89071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_execute_cmds "$postlink_cmds" 'exit $?' 89081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 89091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 89101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Delete the generated files. 89111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -f "$output_objdir/${outputname}S.${objext}"; then 89121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' 89131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 89141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 89151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck exit $exit_status 89161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 89171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 89181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$compile_shlibpath$finalize_shlibpath"; then 89191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" 89201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 89211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$finalize_shlibpath"; then 89221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" 89231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 89241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 89251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck compile_var= 89261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck finalize_var= 89271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$runpath_var"; then 89281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$perm_rpath"; then 89291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # We should set the runpath_var. 89301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck rpath= 89311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for dir in $perm_rpath; do 89321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append rpath "$dir:" 89331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 89341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck compile_var="$runpath_var=\"$rpath\$$runpath_var\" " 89351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 89361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$finalize_perm_rpath"; then 89371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # We should set the runpath_var. 89381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck rpath= 89391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for dir in $finalize_perm_rpath; do 89401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append rpath "$dir:" 89411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 89421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " 89431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 89441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 89451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 89461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$no_install" = yes; then 89471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # We don't need to create a wrapper script. 89481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck link_command="$compile_var$compile_command$compile_rpath" 89491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Replace the output file specification. 89501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` 89511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Delete the old output file. 89521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_dry_run || $RM $output 89531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Link the executable and exit 89541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_show_eval "$link_command" 'exit $?' 89551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 89561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$postlink_cmds"; then 89571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_to_tool_file "$output" 89581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` 89591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_execute_cmds "$postlink_cmds" 'exit $?' 89601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 89611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 89621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck exit $EXIT_SUCCESS 89631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 89641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 89651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$hardcode_action" = relink; then 89661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Fast installation is not supported 89671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck link_command="$compile_var$compile_command$compile_rpath" 89681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck relink_command="$finalize_var$finalize_command$finalize_rpath" 89691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 89701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_warning "this platform does not like uninstalled shared libraries" 89711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_warning "\`$output' will be relinked during installation" 89721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 89731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$fast_install" != no; then 89741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck link_command="$finalize_var$compile_command$finalize_rpath" 89751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$fast_install" = yes; then 89761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` 89771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 89781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # fast_install is set to needless 89791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck relink_command= 89801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 89811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 89821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck link_command="$compile_var$compile_command$compile_rpath" 89831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck relink_command="$finalize_var$finalize_command$finalize_rpath" 89841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 89851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 89861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 89871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Replace the output file specification. 89881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` 89891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 89901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Delete the old output files. 89911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname 89921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 89931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_show_eval "$link_command" 'exit $?' 89941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 89951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$postlink_cmds"; then 89961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_to_tool_file "$output_objdir/$outputname" 89971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 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'` 89981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_execute_cmds "$postlink_cmds" 'exit $?' 89991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 90001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 90011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Now create the wrapper script. 90021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_verbose "creating $output" 90031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 90041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Quote the relink command for shipping. 90051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$relink_command"; then 90061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Preserve any variables that may affect compiler behavior 90071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for var in $variables_saved_for_relink; do 90081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if eval test -z \"\${$var+set}\"; then 90091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" 90101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck elif eval var_value=\$$var; test -z "$var_value"; then 90111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck relink_command="$var=; export $var; $relink_command" 90121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 90131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_quote_for_eval "$var_value" 90141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" 90151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 90161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 90171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck relink_command="(cd `pwd`; $relink_command)" 90181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` 90191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 90201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 90211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Only actually do things if not in dry run mode. 90221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_dry_run || { 90231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # win32 will think the script is a binary if it has 90241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # a .exe suffix, so we strip it off here. 90251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $output in 90261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *.exe) func_stripname '' '.exe' "$output" 90271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck output=$func_stripname_result ;; 90281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 90291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # test for cygwin because mv fails w/o .exe extensions 90301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $host in 90311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *cygwin*) 90321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck exeext=.exe 90331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_stripname '' '.exe' "$outputname" 90341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck outputname=$func_stripname_result ;; 90351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) exeext= ;; 90361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 90371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $host in 90381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *cygwin* | *mingw* ) 90391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_dirname_and_basename "$output" "" "." 90401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck output_name=$func_basename_result 90411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck output_path=$func_dirname_result 90421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck cwrappersource="$output_path/$objdir/lt-$output_name.c" 90431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck cwrapper="$output_path/$output_name.exe" 90441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $RM $cwrappersource $cwrapper 90451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 90461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 90471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_emit_cwrapperexe_src > $cwrappersource 90481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 90491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # The wrapper executable is built using the $host compiler, 90501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # because it contains $host paths and files. If cross- 90511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # compiling, it, like the target executable, must be 90521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # executed on the $host or under an emulation environment. 90531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_dry_run || { 90541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $LTCC $LTCFLAGS -o $cwrapper $cwrappersource 90551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $STRIP $cwrapper 90561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } 90571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 90581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Now, create the wrapper script for func_source use: 90591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_ltwrapper_scriptname $cwrapper 90601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $RM $func_ltwrapper_scriptname_result 90611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 90621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_dry_run || { 90631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # note: this script will not be executed, so do not chmod. 90641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "x$build" = "x$host" ; then 90651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result 90661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 90671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_emit_wrapper no > $func_ltwrapper_scriptname_result 90681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 90691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } 90701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 90711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * ) 90721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $RM $output 90731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 90741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 90751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_emit_wrapper no > $output 90761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck chmod +x $output 90771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 90781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 90791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } 90801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck exit $EXIT_SUCCESS 90811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 90821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 90831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 90841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # See if we need to build an old-fashioned archive. 90851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for oldlib in $oldlibs; do 90861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 90871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$build_libtool_libs" = convenience; then 90881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck oldobjs="$libobjs_save $symfileobj" 90891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck addlibs="$convenience" 90901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck build_libtool_libs=no 90911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 90921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$build_libtool_libs" = module; then 90931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck oldobjs="$libobjs_save" 90941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck build_libtool_libs=no 90951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 90961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck oldobjs="$old_deplibs $non_pic_objects" 90971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$preload" = yes && test -f "$symfileobj"; then 90981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append oldobjs " $symfileobj" 90991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 91001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 91011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck addlibs="$old_convenience" 91021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 91031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 91041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$addlibs"; then 91051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck gentop="$output_objdir/${outputname}x" 91061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append generated " $gentop" 91071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 91081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_extract_archives $gentop $addlibs 91091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append oldobjs " $func_extract_archives_result" 91101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 91111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 91121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Do each command in the archive commands. 91131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then 91141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck cmds=$old_archive_from_new_cmds 91151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 91161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 91171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Add any objects from preloaded convenience libraries 91181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$dlprefiles"; then 91191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck gentop="$output_objdir/${outputname}x" 91201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append generated " $gentop" 91211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 91221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_extract_archives $gentop $dlprefiles 91231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append oldobjs " $func_extract_archives_result" 91241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 91251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 91261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # POSIX demands no paths to be encoded in archives. We have 91271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # to avoid creating archives with duplicate basenames if we 91281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # might have to extract them afterwards, e.g., when creating a 91291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # static archive out of a convenience library, or when linking 91301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # the entirety of a libtool archive into another (currently 91311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # not supported by libtool). 91321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if (for obj in $oldobjs 91331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck do 91341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_basename "$obj" 91351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $ECHO "$func_basename_result" 91361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done | sort | sort -uc >/dev/null 2>&1); then 91371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck : 91381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 91391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck echo "copying selected object files to avoid basename conflicts..." 91401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck gentop="$output_objdir/${outputname}x" 91411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append generated " $gentop" 91421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_mkdir_p "$gentop" 91431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck save_oldobjs=$oldobjs 91441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck oldobjs= 91451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck counter=1 91461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for obj in $save_oldobjs 91471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck do 91481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_basename "$obj" 91491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck objbase="$func_basename_result" 91501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case " $oldobjs " in 91511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck " ") oldobjs=$obj ;; 91521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *[\ /]"$objbase "*) 91531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck while :; do 91541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Make sure we don't pick an alternate name that also 91551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # overlaps. 91561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck newobj=lt$counter-$objbase 91571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_arith $counter + 1 91581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck counter=$func_arith_result 91591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case " $oldobjs " in 91601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *[\ /]"$newobj "*) ;; 91611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) if test ! -f "$gentop/$newobj"; then break; fi ;; 91621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 91631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 91641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" 91651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append oldobjs " $gentop/$newobj" 91661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 91671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) func_append oldobjs " $obj" ;; 91681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 91691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 91701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 91711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 91721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck tool_oldlib=$func_to_tool_file_result 91731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval cmds=\"$old_archive_cmds\" 91741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 91751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_len " $cmds" 91761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck len=$func_len_result 91771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then 91781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck cmds=$old_archive_cmds 91791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck elif test -n "$archiver_list_spec"; then 91801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_verbose "using command file archive linking..." 91811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for obj in $oldobjs 91821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck do 91831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_to_tool_file "$obj" 91841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $ECHO "$func_to_tool_file_result" 91851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done > $output_objdir/$libname.libcmd 91861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_to_tool_file "$output_objdir/$libname.libcmd" 91871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck oldobjs=" $archiver_list_spec$func_to_tool_file_result" 91881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck cmds=$old_archive_cmds 91891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 91901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # the command line is too long to link in one step, link in parts 91911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_verbose "using piecewise archive linking..." 91921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck save_RANLIB=$RANLIB 91931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck RANLIB=: 91941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck objlist= 91951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck concat_cmds= 91961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck save_oldobjs=$oldobjs 91971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck oldobjs= 91981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Is there a better way of finding the last object in the list? 91991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for obj in $save_oldobjs 92001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck do 92011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck last_oldobj=$obj 92021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 92031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval test_cmds=\"$old_archive_cmds\" 92041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_len " $test_cmds" 92051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck len0=$func_len_result 92061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck len=$len0 92071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for obj in $save_oldobjs 92081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck do 92091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_len " $obj" 92101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_arith $len + $func_len_result 92111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck len=$func_arith_result 92121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append objlist " $obj" 92131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$len" -lt "$max_cmd_len"; then 92141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck : 92151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 92161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # the above command should be used before it gets too long 92171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck oldobjs=$objlist 92181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$obj" = "$last_oldobj" ; then 92191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck RANLIB=$save_RANLIB 92201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 92211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 92221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" 92231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck objlist= 92241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck len=$len0 92251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 92261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 92271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck RANLIB=$save_RANLIB 92281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck oldobjs=$objlist 92291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "X$oldobjs" = "X" ; then 92301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval cmds=\"\$concat_cmds\" 92311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 92321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval cmds=\"\$concat_cmds~\$old_archive_cmds\" 92331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 92341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 92351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 92361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_execute_cmds "$cmds" 'exit $?' 92371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 92381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 92391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -n "$generated" && \ 92401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_show_eval "${RM}r$generated" 92411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 92421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Now create the libtool archive. 92431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $output in 92441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *.la) 92451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck old_library= 92461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test "$build_old_libs" = yes && old_library="$libname.$libext" 92471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_verbose "creating $output" 92481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 92491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Preserve any variables that may affect compiler behavior 92501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for var in $variables_saved_for_relink; do 92511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if eval test -z \"\${$var+set}\"; then 92521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" 92531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck elif eval var_value=\$$var; test -z "$var_value"; then 92541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck relink_command="$var=; export $var; $relink_command" 92551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 92561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_quote_for_eval "$var_value" 92571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" 92581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 92591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 92601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Quote the link command for shipping. 92611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" 92621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` 92631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$hardcode_automatic" = yes ; then 92641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck relink_command= 92651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 92661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 92671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Only create the output if not a dry run. 92681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_dry_run || { 92691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for installed in no yes; do 92701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$installed" = yes; then 92711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -z "$install_libdir"; then 92721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck break 92731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 92741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck output="$output_objdir/$outputname"i 92751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Replace all uninstalled libtool libraries with the installed ones 92761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck newdependency_libs= 92771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for deplib in $dependency_libs; do 92781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $deplib in 92791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *.la) 92801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_basename "$deplib" 92811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck name="$func_basename_result" 92821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_resolve_sysroot "$deplib" 92831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` 92841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -z "$libdir" && \ 92851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_fatal_error "\`$deplib' is not a valid libtool archive" 92861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" 92871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 92881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -L*) 92891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_stripname -L '' "$deplib" 92901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_replace_sysroot "$func_stripname_result" 92911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append newdependency_libs " -L$func_replace_sysroot_result" 92921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 92931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -R*) 92941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_stripname -R '' "$deplib" 92951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_replace_sysroot "$func_stripname_result" 92961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append newdependency_libs " -R$func_replace_sysroot_result" 92971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 92981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) func_append newdependency_libs " $deplib" ;; 92991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 93001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 93011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck dependency_libs="$newdependency_libs" 93021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck newdlfiles= 93031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 93041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for lib in $dlfiles; do 93051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $lib in 93061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *.la) 93071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_basename "$lib" 93081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck name="$func_basename_result" 93091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 93101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -z "$libdir" && \ 93111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_fatal_error "\`$lib' is not a valid libtool archive" 93121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" 93131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 93141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) func_append newdlfiles " $lib" ;; 93151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 93161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 93171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck dlfiles="$newdlfiles" 93181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck newdlprefiles= 93191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for lib in $dlprefiles; do 93201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $lib in 93211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *.la) 93221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Only pass preopened files to the pseudo-archive (for 93231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # eventual linking with the app. that links it) if we 93241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # didn't already link the preopened objects directly into 93251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # the library: 93261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_basename "$lib" 93271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck name="$func_basename_result" 93281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 93291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -z "$libdir" && \ 93301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_fatal_error "\`$lib' is not a valid libtool archive" 93311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" 93321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 93331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 93341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 93351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck dlprefiles="$newdlprefiles" 93361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 93371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck newdlfiles= 93381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for lib in $dlfiles; do 93391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $lib in 93401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 93411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) abs=`pwd`"/$lib" ;; 93421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 93431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append newdlfiles " $abs" 93441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 93451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck dlfiles="$newdlfiles" 93461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck newdlprefiles= 93471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for lib in $dlprefiles; do 93481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $lib in 93491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 93501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) abs=`pwd`"/$lib" ;; 93511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 93521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append newdlprefiles " $abs" 93531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 93541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck dlprefiles="$newdlprefiles" 93551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 93561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $RM $output 93571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # place dlname in correct position for cygwin 93581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # In fact, it would be nice if we could use this code for all target 93591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # systems that can't hard-code library paths into their executables 93601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # and that have no shared library path variable independent of PATH, 93611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # but it turns out we can't easily determine that from inspecting 93621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # libtool variables, so we have to hard-code the OSs to which it 93631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # applies here; at the moment, that means platforms that use the PE 93641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # object format with DLL files. See the long comment at the top of 93651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # tests/bindir.at for full details. 93661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck tdlname=$dlname 93671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $host,$output,$installed,$module,$dlname in 93681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) 93691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # If a -bindir argument was supplied, place the dll there. 93701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "x$bindir" != x ; 93711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck then 93721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_relative_path "$install_libdir" "$bindir" 93731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck tdlname=$func_relative_path_result$dlname 93741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 93751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Otherwise fall back on heuristic. 93761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck tdlname=../bin/$dlname 93771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 93781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 93791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 93801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $ECHO > $output "\ 93811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# $outputname - a libtool library file 93821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 93831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# 93841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Please DO NOT delete this file! 93851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# It is necessary for linking the library. 93861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 93871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# The name that we can dlopen(3). 93881176bdada62cabc6ec4b0308a930e83b679d5d36John Reckdlname='$tdlname' 93891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 93901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Names of this library. 93911176bdada62cabc6ec4b0308a930e83b679d5d36John Recklibrary_names='$library_names' 93921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 93931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# The name of the static archive. 93941176bdada62cabc6ec4b0308a930e83b679d5d36John Reckold_library='$old_library' 93951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 93961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Linker flags that can not go in dependency_libs. 93971176bdada62cabc6ec4b0308a930e83b679d5d36John Reckinherited_linker_flags='$new_inherited_linker_flags' 93981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 93991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Libraries that this one depends upon. 94001176bdada62cabc6ec4b0308a930e83b679d5d36John Reckdependency_libs='$dependency_libs' 94011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 94021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Names of additional weak libraries provided by this library 94031176bdada62cabc6ec4b0308a930e83b679d5d36John Reckweak_library_names='$weak_libs' 94041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 94051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Version information for $libname. 94061176bdada62cabc6ec4b0308a930e83b679d5d36John Reckcurrent=$current 94071176bdada62cabc6ec4b0308a930e83b679d5d36John Reckage=$age 94081176bdada62cabc6ec4b0308a930e83b679d5d36John Reckrevision=$revision 94091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 94101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Is this an already installed library? 94111176bdada62cabc6ec4b0308a930e83b679d5d36John Reckinstalled=$installed 94121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 94131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Should we warn about portability when linking against -modules? 94141176bdada62cabc6ec4b0308a930e83b679d5d36John Reckshouldnotlink=$module 94151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 94161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Files to dlopen/dlpreopen 94171176bdada62cabc6ec4b0308a930e83b679d5d36John Reckdlopen='$dlfiles' 94181176bdada62cabc6ec4b0308a930e83b679d5d36John Reckdlpreopen='$dlprefiles' 94191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 94201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Directory that this library needs to be installed in: 94211176bdada62cabc6ec4b0308a930e83b679d5d36John Recklibdir='$install_libdir'" 94221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$installed" = no && test "$need_relink" = yes; then 94231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $ECHO >> $output "\ 94241176bdada62cabc6ec4b0308a930e83b679d5d36John Reckrelink_command=\"$relink_command\"" 94251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 94261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 94271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } 94281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 94291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Do a symbolic link so that the libtool archive can be found in 94301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # LD_LIBRARY_PATH before the program is installed. 94311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' 94321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 94331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 94341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck exit $EXIT_SUCCESS 94351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 94361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 94371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ test "$opt_mode" = link || test "$opt_mode" = relink; } && 94381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_mode_link ${1+"$@"} 94391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 94401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 94411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_mode_uninstall arg... 94421176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_mode_uninstall () 94431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 94441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck $opt_debug 94451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck RM="$nonopt" 94461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck files= 94471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck rmforce= 94481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck exit_status=0 94491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 94501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # This variable tells wrapper scripts just to set variables rather 94511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # than running their programs. 94521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck libtool_install_magic="$magic" 94531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 94541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for arg 94551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck do 94561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $arg in 94571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -f) func_append RM " $arg"; rmforce=yes ;; 94581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck -*) func_append RM " $arg" ;; 94591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) func_append files " $arg" ;; 94601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 94611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 94621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 94631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -z "$RM" && \ 94641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_fatal_help "you must specify an RM program" 94651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 94661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck rmdirs= 94671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 94681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for file in $files; do 94691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_dirname "$file" "" "." 94701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck dir="$func_dirname_result" 94711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "X$dir" = X.; then 94721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck odir="$objdir" 94731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 94741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck odir="$dir/$objdir" 94751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 94761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_basename "$file" 94771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck name="$func_basename_result" 94781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test "$opt_mode" = uninstall && odir="$dir" 94791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 94801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Remember odir for removal later, being careful to avoid duplicates 94811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$opt_mode" = clean; then 94821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case " $rmdirs " in 94831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *" $odir "*) ;; 94841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) func_append rmdirs " $odir" ;; 94851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 94861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 94871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 94881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Don't error if the file doesn't exist and rm -f was used. 94891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if { test -L "$file"; } >/dev/null 2>&1 || 94901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck { test -h "$file"; } >/dev/null 2>&1 || 94911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -f "$file"; then 94921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck : 94931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck elif test -d "$file"; then 94941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck exit_status=1 94951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 94961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck elif test "$rmforce" = yes; then 94971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck continue 94981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 94991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 95001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck rmfiles="$file" 95011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 95021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $name in 95031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *.la) 95041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Possibly a libtool archive, so verify it. 95051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if func_lalib_p "$file"; then 95061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_source $dir/$name 95071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 95081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Delete the libtool libraries and symlinks. 95091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for n in $library_names; do 95101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append rmfiles " $odir/$n" 95111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 95121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -n "$old_library" && func_append rmfiles " $odir/$old_library" 95131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 95141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case "$opt_mode" in 95151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck clean) 95161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case " $library_names " in 95171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *" $dlname "*) ;; 95181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; 95191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 95201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" 95211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 95221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck uninstall) 95231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$library_names"; then 95241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Do each command in the postuninstall commands. 95251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' 95261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 95271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 95281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$old_library"; then 95291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Do each command in the old_postuninstall commands. 95301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' 95311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 95321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # FIXME: should reinstall the best remaining shared library. 95331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 95341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 95351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 95361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 95371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 95381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *.lo) 95391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Possibly a libtool object, so verify it. 95401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if func_lalib_p "$file"; then 95411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 95421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Read the .lo file 95431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_source $dir/$name 95441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 95451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Add PIC object to the list of files to remove. 95461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$pic_object" && 95471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test "$pic_object" != none; then 95481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append rmfiles " $dir/$pic_object" 95491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 95501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 95511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Add non-PIC object to the list of files to remove. 95521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -n "$non_pic_object" && 95531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck test "$non_pic_object" != none; then 95541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append rmfiles " $dir/$non_pic_object" 95551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 95561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 95571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 95581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 95591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *) 95601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$opt_mode" = clean ; then 95611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck noexename=$name 95621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck case $file in 95631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *.exe) 95641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_stripname '' '.exe' "$file" 95651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck file=$func_stripname_result 95661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_stripname '' '.exe' "$name" 95671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck noexename=$func_stripname_result 95681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # $file with .exe has already been added to rmfiles, 95691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # add $file without .exe 95701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append rmfiles " $file" 95711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 95721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 95731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Do a test to see if this is a libtool program. 95741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if func_ltwrapper_p "$file"; then 95751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if func_ltwrapper_executable_p "$file"; then 95761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_ltwrapper_scriptname "$file" 95771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck relink_command= 95781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_source $func_ltwrapper_scriptname_result 95791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append rmfiles " $func_ltwrapper_scriptname_result" 95801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck else 95811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck relink_command= 95821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_source $dir/$noexename 95831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 95841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 95851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # note $name still contains .exe if it was in $file originally 95861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # as does the version of $file that was added into $rmfiles 95871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append rmfiles " $odir/$name $odir/${name}S.${objext}" 95881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "$fast_install" = yes && test -n "$relink_command"; then 95891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append rmfiles " $odir/lt-$name" 95901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 95911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test "X$noexename" != "X$name" ; then 95921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_append rmfiles " $odir/lt-${noexename}.c" 95931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 95941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 95951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 95961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck ;; 95971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck esac 95981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_show_eval "$RM $rmfiles" 'exit_status=1' 95991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 96001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 96011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck # Try to remove the ${objdir}s in the directories where we deleted files 96021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for dir in $rmdirs; do 96031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if test -d "$dir"; then 96041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_show_eval "rmdir $dir >/dev/null 2>&1" 96051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck fi 96061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck done 96071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 96081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck exit $exit_status 96091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 96101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 96111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } && 96121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_mode_uninstall ${1+"$@"} 96131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 96141176bdada62cabc6ec4b0308a930e83b679d5d36John Recktest -z "$opt_mode" && { 96151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck help="$generic_help" 96161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_fatal_help "you must specify a MODE" 96171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 96181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 96191176bdada62cabc6ec4b0308a930e83b679d5d36John Recktest -z "$exec_cmd" && \ 96201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck func_fatal_help "invalid operation mode \`$opt_mode'" 96211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 96221176bdada62cabc6ec4b0308a930e83b679d5d36John Reckif test -n "$exec_cmd"; then 96231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck eval exec "$exec_cmd" 96241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck exit $EXIT_FAILURE 96251176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfi 96261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 96271176bdada62cabc6ec4b0308a930e83b679d5d36John Reckexit $exit_status 96281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 96291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 96301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# The TAGs below are defined such that we never get into a situation 96311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# in which we disable both kinds of libraries. Given conflicting 96321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# choices, we go for a static library, that is the most portable, 96331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# since we can't tell whether shared libraries were disabled because 96341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# the user asked for that or because the platform doesn't support 96351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# them. This is particularly important on AIX, because we don't 96361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# support having both static and shared libraries enabled at the same 96371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# time on that platform, so we default to a shared-only configuration. 96381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# If a disable-shared tag is given, we'll fallback to a static-only 96391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# configuration. But we'll never go from static-only to shared-only. 96401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 96411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# ### BEGIN LIBTOOL TAG CONFIG: disable-shared 96421176bdada62cabc6ec4b0308a930e83b679d5d36John Reckbuild_libtool_libs=no 96431176bdada62cabc6ec4b0308a930e83b679d5d36John Reckbuild_old_libs=yes 96441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# ### END LIBTOOL TAG CONFIG: disable-shared 96451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 96461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# ### BEGIN LIBTOOL TAG CONFIG: disable-static 96471176bdada62cabc6ec4b0308a930e83b679d5d36John Reckbuild_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` 96481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# ### END LIBTOOL TAG CONFIG: disable-static 96491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 96501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Local Variables: 96511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# mode:shell-script 96521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# sh-indentation:2 96531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# End: 96541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# vi:sw=2 96551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 9656