112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# libtool (GNU libtool) 2.4.2 312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. 712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# This is free software; see the source for copying conditions. There is NO 812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 1012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# GNU Libtool is free software; you can redistribute it and/or modify 1112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# it under the terms of the GNU General Public License as published by 1212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# the Free Software Foundation; either version 2 of the License, or 1312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# (at your option) any later version. 1412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# 1512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# As a special exception to the GNU General Public License, 1612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# if you distribute this file as part of a program or library that 1712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# is built using GNU Libtool, you may include this file under the 1812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# same distribution terms that you use for the rest of that program. 1912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# 2012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# GNU Libtool is distributed in the hope that it will be useful, but 2112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# WITHOUT ANY WARRANTY; without even the implied warranty of 2212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# General Public License for more details. 2412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# 2512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# You should have received a copy of the GNU General Public License 2612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# along with GNU Libtool; see the file COPYING. If not, a copy 2712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# can be downloaded from http://www.gnu.org/licenses/gpl.html, 2812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# or obtained by writing to the Free Software Foundation, Inc., 2912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 3012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 3112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Usage: $progname [OPTION]... [MODE-ARG]... 3212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# 3312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Provide generalized library-building support services. 3412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# 3512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# --config show all configuration variables 3612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# --debug enable verbose shell tracing 3712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# -n, --dry-run display commands without modifying any files 3812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# --features display basic configuration information and exit 3912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# --mode=MODE use operation mode MODE 4012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# --preserve-dup-deps don't remove duplicate dependency libraries 4112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# --quiet, --silent don't print informational messages 4212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# --no-quiet, --no-silent 4312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# print informational messages (default) 4412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# --no-warn don't display warning messages 4512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# --tag=TAG use configuration variables from tag TAG 4612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# -v, --verbose print more informational messages than default 4712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# --no-verbose don't print the extra informational messages 4812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# --version print version information 4912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# -h, --help, --help-all print short, long, or detailed help message 5012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# 5112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# MODE must be one of the following: 5212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# 5312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# clean remove files from the build directory 5412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# compile compile a source file into a libtool object 5512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# execute automatically set library path, then run a program 5612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# finish complete the installation of libtool libraries 5712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# install install libraries or executables 5812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# link create a library or an executable 5912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# uninstall remove libraries from an installed directory 6012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# 6112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# MODE-ARGS vary depending on the MODE. When passed as first option, 6212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that. 6312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Try `$progname --help --mode=MODE' for a more detailed description of MODE. 6412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# 6512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# When reporting a bug, please describe a test case to reproduce it and 6612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# include the following information: 6712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# 6812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# host-triplet: $host 6912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# shell: $SHELL 7012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# compiler: $LTCC 7112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# compiler flags: $LTCFLAGS 7212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# linker: $LD (gnu? $with_gnu_ld) 7312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# $progname: (GNU libtool) 2.4.2 7412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# automake: $automake_version 7512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# autoconf: $autoconf_version 7612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# 7712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Report bugs to <bug-libtool@gnu.org>. 7812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# GNU libtool home page: <http://www.gnu.org/software/libtool/>. 7912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# General help using GNU software: <http://www.gnu.org/gethelp/>. 8012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 8112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaPROGRAM=libtool 8212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaPACKAGE=libtool 8312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaVERSION=2.4.2 8412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaTIMESTAMP="" 8512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialapackage_revision=1.3337 8612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 8712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Be Bourne compatible 8812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaif test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then 8912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala emulate sh 9012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala NULLCMD=: 9112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which 9212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # is contrary to our usage. Disable this feature. 9312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala alias -g '${1+"$@"}'='"$@"' 9412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala setopt NO_GLOB_SUBST 9512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaelse 9612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac 9712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafi 9812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaBIN_SH=xpg4; export BIN_SH # for Tru64 9912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaDUALCASE=1; export DUALCASE # for MKS sh 10012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 10112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# A function that is used when there is no print builtin or printf. 10212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_fallback_echo () 10312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 10412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval 'cat <<_LTECHO_EOF 10512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala$1 10612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala_LTECHO_EOF' 10712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 10812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 10912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# NLS nuisances: We save the old values to restore during execute mode. 11012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialalt_user_locale= 11112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialalt_safe_locale= 11212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafor lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 11312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialado 11412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval "if test \"\${$lt_var+set}\" = set; then 11512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala save_$lt_var=\$$lt_var 11612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $lt_var=C 11712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala export $lt_var 11812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" 11912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" 12012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi" 12112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialadone 12212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaLC_ALL=C 12312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaLANGUAGE=C 12412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaexport LANGUAGE LC_ALL 12512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 12612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala$lt_unset CDPATH 12712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 12812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 12912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh 13012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# is ksh but when the shell is invoked as "sh" and the current value of 13112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# the _XPG environment variable is not equal to 1 (one), the special 13212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# positional parameter $0, within a function call, is the name of the 13312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# function. 13412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaprogpath="$0" 13512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 13612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 13712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 13812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala: ${CP="cp -f"} 13912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialatest "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'} 14012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala: ${MAKE="make"} 14112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala: ${MKDIR="mkdir"} 14212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala: ${MV="mv -f"} 14312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala: ${RM="rm -f"} 14412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala: ${SHELL="${CONFIG_SHELL-/bin/sh}"} 14512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala: ${Xsed="$SED -e 1s/^X//"} 14612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 14712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Global variables: 14812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaEXIT_SUCCESS=0 14912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaEXIT_FAILURE=1 15012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaEXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. 15112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaEXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. 15212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 15312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaexit_status=$EXIT_SUCCESS 15412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 15512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Make sure IFS has a sensible default 15612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialalt_nl=' 15712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala' 15812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaIFS=" $lt_nl" 15912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 16012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialadirname="s,/[^/]*$,," 16112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialabasename="s,^.*/,," 16212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 16312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_dirname file append nondir_replacement 16412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Compute the dirname of FILE. If nonempty, add APPEND to the result, 16512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# otherwise set result to NONDIR_REPLACEMENT. 16612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_dirname () 16712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 16812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_dirname_result=`$ECHO "${1}" | $SED "$dirname"` 16912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "X$func_dirname_result" = "X${1}"; then 17012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_dirname_result="${3}" 17112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 17212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_dirname_result="$func_dirname_result${2}" 17312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 17412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} # func_dirname may be replaced by extended shell implementation 17512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 17612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 17712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_basename file 17812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_basename () 17912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 18012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_basename_result=`$ECHO "${1}" | $SED "$basename"` 18112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} # func_basename may be replaced by extended shell implementation 18212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 18312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 18412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_dirname_and_basename file append nondir_replacement 18512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# perform func_basename and func_dirname in a single function 18612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# call: 18712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# dirname: Compute the dirname of FILE. If nonempty, 18812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# add APPEND to the result, otherwise set result 18912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# to NONDIR_REPLACEMENT. 19012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# value returned in "$func_dirname_result" 19112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# basename: Compute filename of FILE. 19212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# value retuned in "$func_basename_result" 19312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Implementation must be kept synchronized with func_dirname 19412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# and func_basename. For efficiency, we do not delegate to 19512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# those functions but instead duplicate the functionality here. 19612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_dirname_and_basename () 19712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 19812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Extract subdirectory from the argument. 19912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"` 20012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "X$func_dirname_result" = "X${1}"; then 20112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_dirname_result="${3}" 20212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 20312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_dirname_result="$func_dirname_result${2}" 20412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 20512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_basename_result=`$ECHO "${1}" | $SED -e "$basename"` 20612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} # func_dirname_and_basename may be replaced by extended shell implementation 20712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 20812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 20912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_stripname prefix suffix name 21012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# strip PREFIX and SUFFIX off of NAME. 21112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# PREFIX and SUFFIX must not contain globbing or regex special 21212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# characters, hashes, percent signs, but SUFFIX may contain a leading 21312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# dot (in which case that matches only a dot). 21412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_strip_suffix prefix name 21512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_stripname () 21612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 21712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case ${2} in 21812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; 21912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; 22012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 22112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} # func_stripname may be replaced by extended shell implementation 22212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 22312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 22412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# These SED scripts presuppose an absolute path with a trailing slash. 22512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialapathcar='s,^/\([^/]*\).*$,\1,' 22612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialapathcdr='s,^/[^/]*,,' 22712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaremovedotparts=':dotsl 22812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala s@/\./@/@g 22912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala t dotsl 23012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala s,/\.$,/,' 23112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialacollapseslashes='s@/\{1,\}@/@g' 23212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafinalslash='s,/*$,/,' 23312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 23412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_normal_abspath PATH 23512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Remove doubled-up and trailing slashes, "." path components, 23612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# and cancel out any ".." path components in PATH after making 23712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# it an absolute path. 23812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# value returned in "$func_normal_abspath_result" 23912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_normal_abspath () 24012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 24112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Start from root dir and reassemble the path. 24212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_normal_abspath_result= 24312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_normal_abspath_tpath=$1 24412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_normal_abspath_altnamespace= 24512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $func_normal_abspath_tpath in 24612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala "") 24712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Empty path, that just means $cwd. 24812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_stripname '' '/' "`pwd`" 24912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_normal_abspath_result=$func_stripname_result 25012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala return 25112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 25212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # The next three entries are used to spot a run of precisely 25312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # two leading slashes without using negated character classes; 25412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # we take advantage of case's first-match behaviour. 25512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ///*) 25612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Unusual form of absolute path, do nothing. 25712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 25812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala //*) 25912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Not necessarily an ordinary path; POSIX reserves leading '//' 26012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # and for example Cygwin uses it to access remote file shares 26112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # over CIFS/SMB, so we conserve a leading double slash if found. 26212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_normal_abspath_altnamespace=/ 26312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 26412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala /*) 26512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Absolute path, do nothing. 26612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 26712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 26812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Relative path, prepend $cwd. 26912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath 27012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 27112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 27212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Cancel out all the simple stuff to save iterations. We also want 27312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # the path to end with a slash for ease of parsing, so make sure 27412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # there is one (and only one) here. 27512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ 27612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"` 27712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala while :; do 27812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Processed it all yet? 27912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$func_normal_abspath_tpath" = / ; then 28012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # If we ascended to the root using ".." the result may be empty now. 28112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -z "$func_normal_abspath_result" ; then 28212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_normal_abspath_result=/ 28312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 28412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala break 28512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 28612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ 28712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -e "$pathcar"` 28812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ 28912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -e "$pathcdr"` 29012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Figure out what to do with it 29112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $func_normal_abspath_tcomponent in 29212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala "") 29312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Trailing empty path component, ignore it. 29412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 29512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ..) 29612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Parent dir; strip last assembled component from result. 29712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_dirname "$func_normal_abspath_result" 29812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_normal_abspath_result=$func_dirname_result 29912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 30012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 30112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Actual path component, append it. 30212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent 30312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 30412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 30512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 30612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Restore leading double-slash if one was found on entry. 30712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result 30812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 30912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 31012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_relative_path SRCDIR DSTDIR 31112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# generates a relative path from SRCDIR to DSTDIR, with a trailing 31212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# slash if non-empty, suitable for immediately appending a filename 31312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# without needing to append a separator. 31412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# value returned in "$func_relative_path_result" 31512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_relative_path () 31612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 31712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_relative_path_result= 31812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_normal_abspath "$1" 31912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_relative_path_tlibdir=$func_normal_abspath_result 32012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_normal_abspath "$2" 32112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_relative_path_tbindir=$func_normal_abspath_result 32212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 32312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Ascend the tree starting from libdir 32412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala while :; do 32512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # check if we have found a prefix of bindir 32612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $func_relative_path_tbindir in 32712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $func_relative_path_tlibdir) 32812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # found an exact match 32912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_relative_path_tcancelled= 33012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala break 33112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 33212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $func_relative_path_tlibdir*) 33312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # found a matching prefix 33412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" 33512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_relative_path_tcancelled=$func_stripname_result 33612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -z "$func_relative_path_result"; then 33712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_relative_path_result=. 33812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 33912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala break 34012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 34112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 34212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_dirname $func_relative_path_tlibdir 34312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_relative_path_tlibdir=${func_dirname_result} 34412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "x$func_relative_path_tlibdir" = x ; then 34512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Have to descend all the way to the root! 34612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_relative_path_result=../$func_relative_path_result 34712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_relative_path_tcancelled=$func_relative_path_tbindir 34812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala break 34912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 35012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_relative_path_result=../$func_relative_path_result 35112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 35212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 35312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 35412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 35512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Now calculate path; take care to avoid doubling-up slashes. 35612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_stripname '' '/' "$func_relative_path_result" 35712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_relative_path_result=$func_stripname_result 35812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_stripname '/' '/' "$func_relative_path_tcancelled" 35912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "x$func_stripname_result" != x ; then 36012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_relative_path_result=${func_relative_path_result}/${func_stripname_result} 36112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 36212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 36312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Normalisation. If bindir is libdir, return empty string, 36412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # else relative path ending with a slash; either way, target 36512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # file name can be directly appended. 36612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test ! -z "$func_relative_path_result"; then 36712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_stripname './' '' "$func_relative_path_result/" 36812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_relative_path_result=$func_stripname_result 36912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 37012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 37112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 37212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# The name of this program: 37312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_dirname_and_basename "$progpath" 37412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaprogname=$func_basename_result 37512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 37612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Make sure we have an absolute path for reexecution: 37712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialacase $progpath in 37812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala [\\/]*|[A-Za-z]:\\*) ;; 37912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *[\\/]*) 38012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala progdir=$func_dirname_result 38112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala progdir=`cd "$progdir" && pwd` 38212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala progpath="$progdir/$progname" 38312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 38412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 38512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala save_IFS="$IFS" 38612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala IFS=${PATH_SEPARATOR-:} 38712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for progdir in $PATH; do 38812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala IFS="$save_IFS" 38912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -x "$progdir/$progname" && break 39012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 39112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala IFS="$save_IFS" 39212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -n "$progdir" || progdir=`pwd` 39312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala progpath="$progdir/$progname" 39412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 39512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaesac 39612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 39712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Sed substitution that helps us do robust quoting. It backslashifies 39812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# metacharacters that are still active within double-quoted strings. 39912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaXsed="${SED}"' -e 1s/^X//' 40012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialased_quote_subst='s/\([`"$\\]\)/\\\1/g' 40112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 40212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Same as above, but do not quote variable references. 40312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialadouble_quote_subst='s/\(["`\\]\)/\\\1/g' 40412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 40512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Sed substitution that turns a string into a regex matching for the 40612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# string literally. 40712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialased_make_literal_regex='s,[].[^$\\*\/],\\&,g' 40812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 40912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Sed substitution that converts a w32 file name or path 41012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# which contains forward slashes, into one that contains 41112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# (escaped) backslashes. A very naive implementation. 41212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialalt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' 41312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 41412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Re-`\' parameter expansions in output of double_quote_subst that were 41512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# `\'-ed in input to the same. If an odd number of `\' preceded a '$' 41612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# in input to double_quote_subst, that '$' was protected from expansion. 41712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Since each input `\' is now two `\'s, look for any number of runs of 41812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# four `\'s followed by two `\'s and then a '$'. `\' that '$'. 41912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialabs='\\' 42012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialabs2='\\\\' 42112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialabs4='\\\\\\\\' 42212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialadollar='\$' 42312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialased_double_backslash="\ 42412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala s/$bs4/&\\ 42512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala/g 42612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala s/^$bs2$dollar/$bs&/ 42712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g 42812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala s/\n//g" 42912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 43012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Standard options: 43112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaopt_dry_run=false 43212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaopt_help=false 43312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaopt_quiet=false 43412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaopt_verbose=false 43512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaopt_warning=: 43612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 43712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_echo arg... 43812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Echo program name prefixed message, along with the current mode 43912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# name if it has been set yet. 44012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_echo () 44112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 44212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $ECHO "$progname: ${opt_mode+$opt_mode: }$*" 44312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 44412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 44512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_verbose arg... 44612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Echo program name prefixed message in verbose mode only. 44712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_verbose () 44812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 44912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_verbose && func_echo ${1+"$@"} 45012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 45112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # A bug in bash halts the script if the last line of a function 45212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # fails when set -e is in force, so we need another command to 45312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # work around that: 45412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala : 45512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 45612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 45712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_echo_all arg... 45812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Invoke $ECHO with all args, space-separated. 45912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_echo_all () 46012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 46112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $ECHO "$*" 46212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 46312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 46412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_error arg... 46512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Echo program name prefixed message to standard error. 46612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_error () 46712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 46812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2 46912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 47012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 47112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_warning arg... 47212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Echo program name prefixed warning message to standard error. 47312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_warning () 47412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 47512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2 47612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 47712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # bash bug again: 47812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala : 47912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 48012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 48112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_fatal_error arg... 48212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Echo program name prefixed message to standard error, and exit. 48312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_fatal_error () 48412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 48512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_error ${1+"$@"} 48612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala exit $EXIT_FAILURE 48712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 48812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 48912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_fatal_help arg... 49012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Echo program name prefixed message to standard error, followed by 49112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# a help hint, and exit. 49212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_fatal_help () 49312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 49412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_error ${1+"$@"} 49512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_fatal_error "$help" 49612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 49712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialahelp="Try \`$progname --help' for more information." ## default 49812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 49912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 50012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_grep expression filename 50112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Check whether EXPRESSION matches any line of FILENAME, without output. 50212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_grep () 50312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 50412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $GREP "$1" "$2" >/dev/null 2>&1 50512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 50612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 50712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 50812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_mkdir_p directory-path 50912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Make sure the entire path to DIRECTORY-PATH is available. 51012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_mkdir_p () 51112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 51212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala my_directory_path="$1" 51312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala my_dir_list= 51412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 51512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then 51612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 51712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Protect directory names starting with `-' 51812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $my_directory_path in 51912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -*) my_directory_path="./$my_directory_path" ;; 52012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 52112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 52212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # While some portion of DIR does not yet exist... 52312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala while test ! -d "$my_directory_path"; do 52412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # ...make a list in topmost first order. Use a colon delimited 52512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # list incase some portion of path contains whitespace. 52612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala my_dir_list="$my_directory_path:$my_dir_list" 52712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 52812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # If the last portion added has no slash in it, the list is done 52912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $my_directory_path in */*) ;; *) break ;; esac 53012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 53112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # ...otherwise throw away the child directory and loop 53212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"` 53312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 53412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'` 53512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 53612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala save_mkdir_p_IFS="$IFS"; IFS=':' 53712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for my_dir in $my_dir_list; do 53812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala IFS="$save_mkdir_p_IFS" 53912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # mkdir can fail with a `File exist' error if two processes 54012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # try to create one of the directories concurrently. Don't 54112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # stop in that case! 54212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $MKDIR "$my_dir" 2>/dev/null || : 54312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 54412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala IFS="$save_mkdir_p_IFS" 54512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 54612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Bail out if we (or some other process) failed to create a directory. 54712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -d "$my_directory_path" || \ 54812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_fatal_error "Failed to create \`$1'" 54912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 55012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 55112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 55212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 55312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_mktempdir [string] 55412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Make a temporary directory that won't clash with other running 55512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# libtool processes, and avoids race conditions if possible. If 55612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# given, STRING is the basename for that directory. 55712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_mktempdir () 55812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 55912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala my_template="${TMPDIR-/tmp}/${1-$progname}" 56012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 56112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$opt_dry_run" = ":"; then 56212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Return a directory name, but don't create it in dry-run mode 56312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala my_tmpdir="${my_template}-$$" 56412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 56512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 56612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # If mktemp works, use that first and foremost 56712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` 56812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 56912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test ! -d "$my_tmpdir"; then 57012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Failing that, at least try and use $RANDOM to avoid a race 57112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala my_tmpdir="${my_template}-${RANDOM-0}$$" 57212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 57312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala save_mktempdir_umask=`umask` 57412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala umask 0077 57512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $MKDIR "$my_tmpdir" 57612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala umask $save_mktempdir_umask 57712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 57812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 57912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # If we're not in dry-run mode, bomb out on failure 58012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -d "$my_tmpdir" || \ 58112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_fatal_error "cannot create temporary directory \`$my_tmpdir'" 58212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 58312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 58412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $ECHO "$my_tmpdir" 58512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 58612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 58712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 58812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_quote_for_eval arg 58912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Aesthetically quote ARG to be evaled later. 59012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT 59112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# is double-quoted, suitable for a subsequent eval, whereas 59212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters 59312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# which are still active within double quotes backslashified. 59412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_quote_for_eval () 59512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 59612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $1 in 59712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *[\\\`\"\$]*) 59812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;; 59912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 60012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_quote_for_eval_unquoted_result="$1" ;; 60112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 60212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 60312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $func_quote_for_eval_unquoted_result in 60412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Double-quote args containing shell metacharacters to delay 60512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # word splitting, command substitution and and variable 60612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # expansion for a subsequent eval. 60712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Many Bourne shells cannot handle close brackets correctly 60812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # in scan sets, so we specify it separately. 60912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 61012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" 61112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 61212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 61312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" 61412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 61512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 61612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 61712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 61812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_quote_for_expand arg 61912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Aesthetically quote ARG to be evaled later; same as above, 62012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# but do not quote variable references. 62112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_quote_for_expand () 62212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 62312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $1 in 62412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *[\\\`\"]*) 62512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala my_arg=`$ECHO "$1" | $SED \ 62612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -e "$double_quote_subst" -e "$sed_double_backslash"` ;; 62712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 62812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala my_arg="$1" ;; 62912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 63012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 63112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $my_arg in 63212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Double-quote args containing shell metacharacters to delay 63312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # word splitting and command substitution for a subsequent eval. 63412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Many Bourne shells cannot handle close brackets correctly 63512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # in scan sets, so we specify it separately. 63612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 63712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala my_arg="\"$my_arg\"" 63812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 63912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 64012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 64112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_quote_for_expand_result="$my_arg" 64212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 64312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 64412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 64512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_show_eval cmd [fail_exp] 64612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is 64712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP 64812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# is given, then evaluate it. 64912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_show_eval () 65012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 65112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala my_cmd="$1" 65212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala my_fail_exp="${2-:}" 65312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 65412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ${opt_silent-false} || { 65512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_quote_for_expand "$my_cmd" 65612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval "func_echo $func_quote_for_expand_result" 65712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } 65812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 65912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if ${opt_dry_run-false}; then :; else 66012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval "$my_cmd" 66112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala my_status=$? 66212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$my_status" -eq 0; then :; else 66312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval "(exit $my_status); $my_fail_exp" 66412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 66512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 66612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 66712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 66812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 66912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_show_eval_locale cmd [fail_exp] 67012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is 67112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP 67212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# is given, then evaluate it. Use the saved locale for evaluation. 67312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_show_eval_locale () 67412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 67512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala my_cmd="$1" 67612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala my_fail_exp="${2-:}" 67712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 67812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ${opt_silent-false} || { 67912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_quote_for_expand "$my_cmd" 68012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval "func_echo $func_quote_for_expand_result" 68112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } 68212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 68312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if ${opt_dry_run-false}; then :; else 68412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval "$lt_user_locale 68512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $my_cmd" 68612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala my_status=$? 68712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval "$lt_safe_locale" 68812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$my_status" -eq 0; then :; else 68912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval "(exit $my_status); $my_fail_exp" 69012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 69112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 69212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 69312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 69412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_tr_sh 69512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Turn $1 into a string suitable for a shell variable name. 69612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Result is stored in $func_tr_sh_result. All characters 69712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# not in the set a-zA-Z0-9_ are replaced with '_'. Further, 69812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# if $1 begins with a digit, a '_' is prepended as well. 69912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_tr_sh () 70012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 70112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $1 in 70212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala [0-9]* | *[!a-zA-Z0-9_]*) 70312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'` 70412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 70512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala * ) 70612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_tr_sh_result=$1 70712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 70812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 70912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 71012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 71112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 71212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_version 71312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Echo version message to standard output and exit. 71412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_version () 71512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 71612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_debug 71712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 71812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $SED -n '/(C)/!b go 71912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala :more 72012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala /\./!{ 72112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala N 72212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala s/\n# / / 72312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala b more 72412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } 72512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala :go 72612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala /^# '$PROGRAM' (GNU /,/# warranty; / { 72712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala s/^# // 72812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala s/^# *$// 72912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ 73012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala p 73112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala }' < "$progpath" 73212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala exit $? 73312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 73412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 73512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_usage 73612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Echo short help message to standard output and exit. 73712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_usage () 73812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 73912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_debug 74012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 74112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $SED -n '/^# Usage:/,/^# *.*--help/ { 74212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala s/^# // 74312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala s/^# *$// 74412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala s/\$progname/'$progname'/ 74512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala p 74612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala }' < "$progpath" 74712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo 74812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $ECHO "run \`$progname --help | more' for full usage" 74912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala exit $? 75012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 75112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 75212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_help [NOEXIT] 75312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Echo long help message to standard output and exit, 75412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# unless 'noexit' is passed as argument. 75512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_help () 75612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 75712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_debug 75812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 75912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $SED -n '/^# Usage:/,/# Report bugs to/ { 76012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala :print 76112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala s/^# // 76212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala s/^# *$// 76312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala s*\$progname*'$progname'* 76412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala s*\$host*'"$host"'* 76512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala s*\$SHELL*'"$SHELL"'* 76612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala s*\$LTCC*'"$LTCC"'* 76712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala s*\$LTCFLAGS*'"$LTCFLAGS"'* 76812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala s*\$LD*'"$LD"'* 76912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala s/\$with_gnu_ld/'"$with_gnu_ld"'/ 77012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/ 77112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/ 77212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala p 77312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala d 77412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } 77512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala /^# .* home page:/b print 77612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala /^# General help using/b print 77712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ' < "$progpath" 77812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ret=$? 77912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -z "$1"; then 78012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala exit $ret 78112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 78212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 78312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 78412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_missing_arg argname 78512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Echo program name prefixed message to standard error and set global 78612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# exit_cmd. 78712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_missing_arg () 78812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 78912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_debug 79012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 79112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_error "missing argument for $1." 79212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala exit_cmd=exit 79312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 79412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 79512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 79612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_split_short_opt shortopt 79712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Set func_split_short_opt_name and func_split_short_opt_arg shell 79812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# variables after splitting SHORTOPT after the 2nd character. 79912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_split_short_opt () 80012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 80112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala my_sed_short_opt='1s/^\(..\).*$/\1/;q' 80212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala my_sed_short_rest='1s/^..\(.*\)$/\1/;q' 80312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 80412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"` 80512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"` 80612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} # func_split_short_opt may be replaced by extended shell implementation 80712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 80812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 80912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_split_long_opt longopt 81012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Set func_split_long_opt_name and func_split_long_opt_arg shell 81112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# variables after splitting LONGOPT at the `=' sign. 81212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_split_long_opt () 81312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 81412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q' 81512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala my_sed_long_arg='1s/^--[^=]*=//' 81612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 81712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"` 81812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"` 81912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} # func_split_long_opt may be replaced by extended shell implementation 82012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 82112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaexit_cmd=: 82212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 82312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 82412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 82512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 82612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 82712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialamagic="%%%MAGIC variable%%%" 82812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialamagic_exe="%%%MAGIC EXE variable%%%" 82912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 83012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Global variables. 83112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialanonopt= 83212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialapreserve_args= 83312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialalo2o="s/\\.lo\$/.${objext}/" 83412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialao2lo="s/\\.${objext}\$/.lo/" 83512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaextracted_archives= 83612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaextracted_serial=0 83712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 83812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# If this variable is set in any of the actions, the command in it 83912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# will be execed at the end. This prevents here-documents from being 84012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# left over by shells. 84112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaexec_cmd= 84212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 84312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_append var value 84412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Append VALUE to the end of shell variable VAR. 84512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_append () 84612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 84712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval "${1}=\$${1}\${2}" 84812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} # func_append may be replaced by extended shell implementation 84912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 85012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_append_quoted var value 85112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Quote VALUE and append to the end of shell variable VAR, separated 85212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# by a space. 85312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_append_quoted () 85412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 85512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_quote_for_eval "${2}" 85612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval "${1}=\$${1}\\ \$func_quote_for_eval_result" 85712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} # func_append_quoted may be replaced by extended shell implementation 85812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 85912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 86012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_arith arithmetic-term... 86112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_arith () 86212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 86312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_arith_result=`expr "${@}"` 86412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} # func_arith may be replaced by extended shell implementation 86512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 86612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 86712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_len string 86812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# STRING may not start with a hyphen. 86912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_len () 87012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 87112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len` 87212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} # func_len may be replaced by extended shell implementation 87312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 87412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 87512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_lo2o object 87612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_lo2o () 87712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 87812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"` 87912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} # func_lo2o may be replaced by extended shell implementation 88012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 88112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 88212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_xform libobj-or-source 88312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_xform () 88412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 88512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'` 88612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} # func_xform may be replaced by extended shell implementation 88712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 88812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 88912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_fatal_configuration arg... 89012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Echo program name prefixed message to standard error, followed by 89112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# a configuration failure hint, and exit. 89212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_fatal_configuration () 89312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 89412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_error ${1+"$@"} 89512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_error "See the $PACKAGE documentation for more information." 89612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_fatal_error "Fatal configuration error." 89712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 89812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 89912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 90012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_config 90112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Display the configuration for all the tags in this script. 90212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_config () 90312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 90412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala re_begincf='^# ### BEGIN LIBTOOL' 90512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala re_endcf='^# ### END LIBTOOL' 90612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 90712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Default configuration. 90812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" 90912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 91012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Now print the configurations for the tags. 91112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for tagname in $taglist; do 91212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" 91312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 91412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 91512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala exit $? 91612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 91712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 91812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_features 91912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Display the features supported by this script. 92012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_features () 92112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 92212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo "host: $host" 92312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$build_libtool_libs" = yes; then 92412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo "enable shared libraries" 92512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 92612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo "disable shared libraries" 92712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 92812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$build_old_libs" = yes; then 92912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo "enable static libraries" 93012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 93112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo "disable static libraries" 93212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 93312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 93412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala exit $? 93512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 93612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 93712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_enable_tag tagname 93812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Verify that TAGNAME is valid, and either flag an error and exit, or 93912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# enable the TAGNAME tag. We also add TAGNAME to the global $taglist 94012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# variable here. 94112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_enable_tag () 94212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 94312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Global variable: 94412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala tagname="$1" 94512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 94612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" 94712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" 94812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala sed_extractcf="/$re_begincf/,/$re_endcf/p" 94912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 95012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Validate tagname. 95112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $tagname in 95212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *[!-_A-Za-z0-9,/]*) 95312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_fatal_error "invalid tag name: $tagname" 95412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 95512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 95612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 95712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Don't test for the "default" C tag, as we know it's 95812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # there but not specially marked. 95912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $tagname in 96012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala CC) ;; 96112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 96212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then 96312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala taglist="$taglist $tagname" 96412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 96512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Evaluate the configuration. Be careful to quote the path 96612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # and the sed script, to avoid splitting on whitespace, but 96712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # also don't use non-portable quotes within backquotes within 96812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # quotes we have to do it in 2 steps: 96912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` 97012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval "$extractedcf" 97112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 97212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_error "ignoring unknown tag $tagname" 97312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 97412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 97512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 97612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 97712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 97812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_check_version_match 97912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Ensure that we are using m4 macros, and libtool script from the same 98012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# release of libtool. 98112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_check_version_match () 98212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 98312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$package_revision" != "$macro_revision"; then 98412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$VERSION" != "$macro_version"; then 98512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -z "$macro_version"; then 98612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala cat >&2 <<_LT_EOF 98712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala$progname: Version mismatch error. This is $PACKAGE $VERSION, but the 98812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala$progname: definition of this LT_INIT comes from an older release. 98912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION 99012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala$progname: and run autoconf again. 99112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala_LT_EOF 99212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 99312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala cat >&2 <<_LT_EOF 99412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala$progname: Version mismatch error. This is $PACKAGE $VERSION, but the 99512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. 99612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION 99712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala$progname: and run autoconf again. 99812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala_LT_EOF 99912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 100012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 100112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala cat >&2 <<_LT_EOF 100212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, 100312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala$progname: but the definition of this LT_INIT comes from revision $macro_revision. 100412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala$progname: You should recreate aclocal.m4 with macros from revision $package_revision 100512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala$progname: of $PACKAGE $VERSION and run autoconf again. 100612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala_LT_EOF 100712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 100812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 100912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala exit $EXIT_MISMATCH 101012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 101112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 101212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 101312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 101412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Shorthand for --mode=foo, only valid as the first argument 101512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialacase $1 in 101612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaclean|clea|cle|cl) 101712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala shift; set dummy --mode clean ${1+"$@"}; shift 101812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 101912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialacompile|compil|compi|comp|com|co|c) 102012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala shift; set dummy --mode compile ${1+"$@"}; shift 102112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 102212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaexecute|execut|execu|exec|exe|ex|e) 102312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala shift; set dummy --mode execute ${1+"$@"}; shift 102412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 102512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafinish|finis|fini|fin|fi|f) 102612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala shift; set dummy --mode finish ${1+"$@"}; shift 102712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 102812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialainstall|instal|insta|inst|ins|in|i) 102912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala shift; set dummy --mode install ${1+"$@"}; shift 103012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 103112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialalink|lin|li|l) 103212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala shift; set dummy --mode link ${1+"$@"}; shift 103312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 103412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialauninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) 103512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala shift; set dummy --mode uninstall ${1+"$@"}; shift 103612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 103712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaesac 103812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 103912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 104012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 104112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Option defaults: 104212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaopt_debug=: 104312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaopt_dry_run=false 104412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaopt_config=false 104512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaopt_preserve_dup_deps=false 104612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaopt_features=false 104712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaopt_finish=false 104812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaopt_help=false 104912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaopt_help_all=false 105012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaopt_silent=: 105112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaopt_warning=: 105212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaopt_verbose=: 105312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaopt_silent=false 105412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaopt_verbose=false 105512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 105612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 105712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Parse options once, thoroughly. This comes as soon as possible in the 105812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# script to make things like `--version' happen as quickly as we can. 105912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 106012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # this just eases exit handling 106112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala while test $# -gt 0; do 106212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala opt="$1" 106312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala shift 106412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $opt in 106512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala --debug|-x) opt_debug='set -x' 106612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_echo "enabling shell trace mode" 106712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_debug 106812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 106912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala --dry-run|--dryrun|-n) 107012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala opt_dry_run=: 107112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 107212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala --config) 107312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala opt_config=: 107412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_config 107512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 107612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala --dlopen|-dlopen) 107712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala optarg="$1" 107812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala opt_dlopen="${opt_dlopen+$opt_dlopen 107912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala}$optarg" 108012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala shift 108112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 108212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala --preserve-dup-deps) 108312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala opt_preserve_dup_deps=: 108412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 108512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala --features) 108612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala opt_features=: 108712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_features 108812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 108912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala --finish) 109012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala opt_finish=: 109112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaset dummy --mode finish ${1+"$@"}; shift 109212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 109312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala --help) 109412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala opt_help=: 109512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 109612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala --help-all) 109712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala opt_help_all=: 109812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaopt_help=': help-all' 109912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 110012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala --mode) 110112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test $# = 0 && func_missing_arg $opt && break 110212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala optarg="$1" 110312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala opt_mode="$optarg" 110412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialacase $optarg in 110512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Valid mode arguments: 110612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala clean|compile|execute|finish|install|link|relink|uninstall) ;; 110712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 110812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Catch anything else as an error 110912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) func_error "invalid argument for $opt" 111012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala exit_cmd=exit 111112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala break 111212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 111312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaesac 111412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala shift 111512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 111612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala --no-silent|--no-quiet) 111712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala opt_silent=false 111812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_append preserve_args " $opt" 111912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 112012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala --no-warning|--no-warn) 112112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala opt_warning=false 112212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_append preserve_args " $opt" 112312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 112412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala --no-verbose) 112512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala opt_verbose=false 112612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_append preserve_args " $opt" 112712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 112812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala --silent|--quiet) 112912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala opt_silent=: 113012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_append preserve_args " $opt" 113112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala opt_verbose=false 113212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 113312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala --verbose|-v) 113412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala opt_verbose=: 113512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_append preserve_args " $opt" 113612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaopt_silent=false 113712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 113812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala --tag) 113912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test $# = 0 && func_missing_arg $opt && break 114012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala optarg="$1" 114112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala opt_tag="$optarg" 114212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_append preserve_args " $opt $optarg" 114312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_enable_tag "$optarg" 114412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala shift 114512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 114612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 114712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -\?|-h) func_usage ;; 114812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala --help) func_help ;; 114912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala --version) func_version ;; 115012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 115112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Separate optargs to long options: 115212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala --*=*) 115312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_split_long_opt "$opt" 115412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"} 115512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala shift 115612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 115712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 115812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Separate non-argument short options: 115912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -\?*|-h*|-n*|-v*) 116012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_split_short_opt "$opt" 116112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"} 116212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala shift 116312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 116412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 116512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala --) break ;; 116612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -*) func_fatal_help "unrecognized option \`$opt'" ;; 116712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) set dummy "$opt" ${1+"$@"}; shift; break ;; 116812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 116912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 117012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 117112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Validate options: 117212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 117312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # save first non-option argument 117412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$#" -gt 0; then 117512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala nonopt="$opt" 117612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala shift 117712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 117812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 117912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # preserve --debug 118012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test "$opt_debug" = : || func_append preserve_args " --debug" 118112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 118212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $host in 118312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *cygwin* | *mingw* | *pw32* | *cegcc*) 118412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # don't eliminate duplications in $postdeps and $predeps 118512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala opt_duplicate_compiler_generated_deps=: 118612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 118712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 118812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps 118912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 119012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 119112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 119212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_help || { 119312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Sanity checks first: 119412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_check_version_match 119512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 119612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then 119712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_fatal_configuration "not configured to build any kind of library" 119812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 119912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 120012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Darwin sucks 120112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval std_shrext=\"$shrext_cmds\" 120212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 120312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Only execute mode is allowed to have -dlopen flags. 120412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$opt_dlopen" && test "$opt_mode" != execute; then 120512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_error "unrecognized option \`-dlopen'" 120612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $ECHO "$help" 1>&2 120712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala exit $EXIT_FAILURE 120812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 120912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 121012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Change the help message to a mode-specific one. 121112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala generic_help="$help" 121212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala help="Try \`$progname --help --mode=$opt_mode' for more information." 121312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } 121412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 121512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 121612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Bail if the options were screwed 121712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $exit_cmd $EXIT_FAILURE 121812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 121912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 122012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 122112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 122212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 122312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala## ----------- ## 122412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala## Main. ## 122512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala## ----------- ## 122612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 122712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_lalib_p file 122812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# True iff FILE is a libtool `.la' library or `.lo' object file. 122912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# This function is only a basic sanity check; it will hardly flush out 123012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# determined imposters. 123112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_lalib_p () 123212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 123312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -f "$1" && 123412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $SED -e 4q "$1" 2>/dev/null \ 123512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 123612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 123712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 123812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_lalib_unsafe_p file 123912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# True iff FILE is a libtool `.la' library or `.lo' object file. 124012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# This function implements the same check as func_lalib_p without 124112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# resorting to external programs. To this end, it redirects stdin and 124212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# closes it afterwards, without saving the original file descriptor. 124312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# As a safety measure, use it only where a negative result would be 124412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# fatal anyway. Works if `file' does not exist. 124512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_lalib_unsafe_p () 124612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 124712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala lalib_p=no 124812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then 124912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for lalib_p_l in 1 2 3 4 125012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala do 125112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala read lalib_p_line 125212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case "$lalib_p_line" in 125312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; 125412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 125512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 125612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala exec 0<&5 5<&- 125712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 125812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test "$lalib_p" = yes 125912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 126012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 126112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_ltwrapper_script_p file 126212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# True iff FILE is a libtool wrapper script 126312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# This function is only a basic sanity check; it will hardly flush out 126412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# determined imposters. 126512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_ltwrapper_script_p () 126612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 126712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_lalib_p "$1" 126812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 126912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 127012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_ltwrapper_executable_p file 127112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# True iff FILE is a libtool wrapper executable 127212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# This function is only a basic sanity check; it will hardly flush out 127312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# determined imposters. 127412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_ltwrapper_executable_p () 127512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 127612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_ltwrapper_exec_suffix= 127712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $1 in 127812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *.exe) ;; 127912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) func_ltwrapper_exec_suffix=.exe ;; 128012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 128112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 128212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 128312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 128412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_ltwrapper_scriptname file 128512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Assumes file is an ltwrapper_executable 128612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# uses $file to determine the appropriate filename for a 128712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# temporary ltwrapper_script. 128812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_ltwrapper_scriptname () 128912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 129012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_dirname_and_basename "$1" "" "." 129112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_stripname '' '.exe' "$func_basename_result" 129212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" 129312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 129412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 129512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_ltwrapper_p file 129612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# True iff FILE is a libtool wrapper script or wrapper executable 129712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# This function is only a basic sanity check; it will hardly flush out 129812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# determined imposters. 129912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_ltwrapper_p () 130012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 130112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" 130212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 130312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 130412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 130512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_execute_cmds commands fail_cmd 130612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Execute tilde-delimited COMMANDS. 130712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# If FAIL_CMD is given, eval that upon failure. 130812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# FAIL_CMD may read-access the current command in variable CMD! 130912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_execute_cmds () 131012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 131112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_debug 131212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala save_ifs=$IFS; IFS='~' 131312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for cmd in $1; do 131412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala IFS=$save_ifs 131512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval cmd=\"$cmd\" 131612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_show_eval "$cmd" "${2-:}" 131712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 131812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala IFS=$save_ifs 131912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 132012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 132112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 132212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_source file 132312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Source FILE, adding directory component if necessary. 132412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Note that it is not necessary on cygwin/mingw to append a dot to 132512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# FILE even if both FILE and FILE.exe exist: automatic-append-.exe 132612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# behavior happens only for exec(3), not for open(2)! Also, sourcing 132712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# `FILE.' does not work on cygwin managed mounts. 132812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_source () 132912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 133012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_debug 133112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $1 in 133212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala */* | *\\*) . "$1" ;; 133312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) . "./$1" ;; 133412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 133512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 133612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 133712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 133812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_resolve_sysroot PATH 133912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Replace a leading = in PATH with a sysroot. Store the result into 134012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_resolve_sysroot_result 134112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_resolve_sysroot () 134212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 134312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_resolve_sysroot_result=$1 134412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $func_resolve_sysroot_result in 134512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala =*) 134612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_stripname '=' '' "$func_resolve_sysroot_result" 134712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_resolve_sysroot_result=$lt_sysroot$func_stripname_result 134812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 134912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 135012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 135112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 135212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_replace_sysroot PATH 135312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# If PATH begins with the sysroot, replace it with = and 135412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# store the result into func_replace_sysroot_result. 135512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_replace_sysroot () 135612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 135712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case "$lt_sysroot:$1" in 135812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ?*:"$lt_sysroot"*) 135912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_stripname "$lt_sysroot" '' "$1" 136012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_replace_sysroot_result="=$func_stripname_result" 136112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 136212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 136312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Including no sysroot. 136412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_replace_sysroot_result=$1 136512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 136612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 136712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 136812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 136912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_infer_tag arg 137012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Infer tagged configuration to use if any are available and 137112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# if one wasn't chosen via the "--tag" command line option. 137212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Only attempt this if the compiler in the base compile 137312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# command doesn't match the default compiler. 137412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# arg is usually of the form 'gcc ...' 137512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_infer_tag () 137612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 137712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_debug 137812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$available_tags" && test -z "$tagname"; then 137912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala CC_quoted= 138012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for arg in $CC; do 138112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append_quoted CC_quoted "$arg" 138212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 138312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala CC_expanded=`func_echo_all $CC` 138412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala CC_quoted_expanded=`func_echo_all $CC_quoted` 138512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $@ in 138612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Blanks in the command may have been stripped by the calling shell, 138712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # but not from the CC environment variable when configure was run. 138812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ 138912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; 139012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Blanks at the start of $base_compile will cause this to fail 139112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # if we don't check for them as well. 139212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 139312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for z in $available_tags; do 139412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then 139512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Evaluate the configuration. 139612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" 139712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala CC_quoted= 139812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for arg in $CC; do 139912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Double-quote args containing other shell metacharacters. 140012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append_quoted CC_quoted "$arg" 140112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 140212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala CC_expanded=`func_echo_all $CC` 140312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala CC_quoted_expanded=`func_echo_all $CC_quoted` 140412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case "$@ " in 140512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ 140612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) 140712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # The compiler in the base compile command matches 140812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # the one in the tagged configuration. 140912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Assume this is the tagged configuration we want. 141012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala tagname=$z 141112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala break 141212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 141312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 141412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 141512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 141612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # If $tagname still isn't set, then no tagged configuration 141712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # was found and let the user know that the "--tag" command 141812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # line option must be used. 141912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -z "$tagname"; then 142012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_echo "unable to infer tagged configuration" 142112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_fatal_error "specify a tag with \`--tag'" 142212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# else 142312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_verbose "using $tagname tagged configuration" 142412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 142512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 142612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 142712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 142812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 142912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 143012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 143112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 143212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_write_libtool_object output_name pic_name nonpic_name 143312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Create a libtool object file (analogous to a ".la" file), 143412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# but don't create it if we're doing a dry run. 143512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_write_libtool_object () 143612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 143712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala write_libobj=${1} 143812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$build_libtool_libs" = yes; then 143912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala write_lobj=\'${2}\' 144012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 144112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala write_lobj=none 144212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 144312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 144412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$build_old_libs" = yes; then 144512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala write_oldobj=\'${3}\' 144612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 144712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala write_oldobj=none 144812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 144912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 145012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_dry_run || { 145112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala cat >${write_libobj}T <<EOF 145212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# $write_libobj - a libtool object file 145312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 145412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# 145512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Please DO NOT delete this file! 145612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# It is necessary for linking the library. 145712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 145812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Name of the PIC object. 145912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialapic_object=$write_lobj 146012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 146112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Name of the non-PIC object 146212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialanon_pic_object=$write_oldobj 146312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 146412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaEOF 146512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $MV "${write_libobj}T" "${write_libobj}" 146612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } 146712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 146812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 146912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 147012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala################################################## 147112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# FILE NAME AND PATH CONVERSION HELPER FUNCTIONS # 147212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala################################################## 147312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 147412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_convert_core_file_wine_to_w32 ARG 147512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Helper function used by file name conversion functions when $build is *nix, 147612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# and $host is mingw, cygwin, or some other w32 environment. Relies on a 147712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# correctly configured wine environment available, with the winepath program 147812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# in $build's $PATH. 147912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# 148012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# ARG is the $build file name to be converted to w32 format. 148112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Result is available in $func_convert_core_file_wine_to_w32_result, and will 148212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# be empty on error (or when ARG is empty) 148312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_convert_core_file_wine_to_w32 () 148412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 148512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_debug 148612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_convert_core_file_wine_to_w32_result="$1" 148712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$1"; then 148812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Unfortunately, winepath does not exit with a non-zero error code, so we 148912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # are forced to check the contents of stdout. On the other hand, if the 149012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # command is not found, the shell will set an exit code of 127 and print 149112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # *an error message* to stdout. So we must check for both error code of 149212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # zero AND non-empty stdout, which explains the odd construction: 149312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null` 149412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then 149512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | 149612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $SED -e "$lt_sed_naive_backslashify"` 149712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 149812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_convert_core_file_wine_to_w32_result= 149912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 150012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 150112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 150212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# end: func_convert_core_file_wine_to_w32 150312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 150412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 150512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_convert_core_path_wine_to_w32 ARG 150612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Helper function used by path conversion functions when $build is *nix, and 150712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly 150812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# configured wine environment available, with the winepath program in $build's 150912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# $PATH. Assumes ARG has no leading or trailing path separator characters. 151012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# 151112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# ARG is path to be converted from $build format to win32. 151212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Result is available in $func_convert_core_path_wine_to_w32_result. 151312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Unconvertible file (directory) names in ARG are skipped; if no directory names 151412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# are convertible, then the result may be empty. 151512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_convert_core_path_wine_to_w32 () 151612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 151712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_debug 151812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # unfortunately, winepath doesn't convert paths, only file names 151912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_convert_core_path_wine_to_w32_result="" 152012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$1"; then 152112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala oldIFS=$IFS 152212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala IFS=: 152312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for func_convert_core_path_wine_to_w32_f in $1; do 152412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala IFS=$oldIFS 152512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" 152612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$func_convert_core_file_wine_to_w32_result" ; then 152712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -z "$func_convert_core_path_wine_to_w32_result"; then 152812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result" 152912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 153012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" 153112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 153212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 153312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 153412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala IFS=$oldIFS 153512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 153612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 153712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# end: func_convert_core_path_wine_to_w32 153812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 153912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 154012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_cygpath ARGS... 154112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when 154212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) 154312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or 154412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# (2), returns the Cygwin file name or path in func_cygpath_result (input 154512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# file name or path is assumed to be in w32 format, as previously converted 154612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# from $build's *nix or MSYS format). In case (3), returns the w32 file name 154712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# or path in func_cygpath_result (input file name or path is assumed to be in 154812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Cygwin format). Returns an empty string on error. 154912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# 155012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# ARGS are passed to cygpath, with the last one being the file name or path to 155112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# be converted. 155212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# 155312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH 155412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# environment variable; do not put it in $PATH. 155512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_cygpath () 155612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 155712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_debug 155812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then 155912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` 156012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$?" -ne 0; then 156112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # on failure, ensure result is empty 156212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_cygpath_result= 156312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 156412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 156512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_cygpath_result= 156612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'" 156712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 156812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 156912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#end: func_cygpath 157012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 157112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 157212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_convert_core_msys_to_w32 ARG 157312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Convert file name or path ARG from MSYS format to w32 format. Return 157412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# result in func_convert_core_msys_to_w32_result. 157512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_convert_core_msys_to_w32 () 157612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 157712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_debug 157812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # awkward: cmd appends spaces to result 157912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | 158012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` 158112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 158212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#end: func_convert_core_msys_to_w32 158312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 158412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 158512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_convert_file_check ARG1 ARG2 158612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Verify that ARG1 (a file name in $build format) was converted to $host 158712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# format in ARG2. Otherwise, emit an error message, but continue (resetting 158812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_to_host_file_result to ARG1). 158912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_convert_file_check () 159012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 159112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_debug 159212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -z "$2" && test -n "$1" ; then 159312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_error "Could not determine host file name corresponding to" 159412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_error " \`$1'" 159512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_error "Continuing, but uninstalled executables may not work." 159612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Fallback: 159712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_to_host_file_result="$1" 159812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 159912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 160012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# end func_convert_file_check 160112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 160212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 160312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH 160412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Verify that FROM_PATH (a path in $build format) was converted to $host 160512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# format in TO_PATH. Otherwise, emit an error message, but continue, resetting 160612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_to_host_file_result to a simplistic fallback value (see below). 160712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_convert_path_check () 160812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 160912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_debug 161012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -z "$4" && test -n "$3"; then 161112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_error "Could not determine the host path corresponding to" 161212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_error " \`$3'" 161312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_error "Continuing, but uninstalled executables may not work." 161412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Fallback. This is a deliberately simplistic "conversion" and 161512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # should not be "improved". See libtool.info. 161612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "x$1" != "x$2"; then 161712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala lt_replace_pathsep_chars="s|$1|$2|g" 161812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_to_host_path_result=`echo "$3" | 161912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $SED -e "$lt_replace_pathsep_chars"` 162012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 162112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_to_host_path_result="$3" 162212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 162312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 162412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 162512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# end func_convert_path_check 162612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 162712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 162812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG 162912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT 163012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# and appending REPL if ORIG matches BACKPAT. 163112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_convert_path_front_back_pathsep () 163212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 163312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_debug 163412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $4 in 163512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $1 ) func_to_host_path_result="$3$func_to_host_path_result" 163612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 163712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 163812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $4 in 163912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $2 ) func_append func_to_host_path_result "$3" 164012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 164112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 164212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 164312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# end func_convert_path_front_back_pathsep 164412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 164512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 164612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala################################################## 164712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# $build to $host FILE NAME CONVERSION FUNCTIONS # 164812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala################################################## 164912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# invoked via `$to_host_file_cmd ARG' 165012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# 165112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# In each case, ARG is the path to be converted from $build to $host format. 165212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Result will be available in $func_to_host_file_result. 165312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 165412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 165512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_to_host_file ARG 165612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Converts the file name ARG from $build format to $host format. Return result 165712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# in func_to_host_file_result. 165812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_to_host_file () 165912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 166012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_debug 166112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $to_host_file_cmd "$1" 166212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 166312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# end func_to_host_file 166412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 166512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 166612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_to_tool_file ARG LAZY 166712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# converts the file name ARG from $build format to toolchain format. Return 166812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# result in func_to_tool_file_result. If the conversion in use is listed 166912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# in (the comma separated) LAZY, no conversion takes place. 167012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_to_tool_file () 167112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 167212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_debug 167312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case ,$2, in 167412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *,"$to_tool_file_cmd",*) 167512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_to_tool_file_result=$1 167612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 167712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 167812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $to_tool_file_cmd "$1" 167912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_to_tool_file_result=$func_to_host_file_result 168012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 168112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 168212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 168312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# end func_to_tool_file 168412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 168512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 168612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_convert_file_noop ARG 168712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Copy ARG to func_to_host_file_result. 168812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_convert_file_noop () 168912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 169012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_to_host_file_result="$1" 169112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 169212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# end func_convert_file_noop 169312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 169412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 169512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_convert_file_msys_to_w32 ARG 169612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic 169712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# conversion to w32 is not available inside the cwrapper. Returns result in 169812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_to_host_file_result. 169912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_convert_file_msys_to_w32 () 170012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 170112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_debug 170212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_to_host_file_result="$1" 170312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$1"; then 170412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_convert_core_msys_to_w32 "$1" 170512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_to_host_file_result="$func_convert_core_msys_to_w32_result" 170612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 170712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_convert_file_check "$1" "$func_to_host_file_result" 170812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 170912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# end func_convert_file_msys_to_w32 171012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 171112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 171212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_convert_file_cygwin_to_w32 ARG 171312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Convert file name ARG from Cygwin to w32 format. Returns result in 171412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_to_host_file_result. 171512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_convert_file_cygwin_to_w32 () 171612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 171712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_debug 171812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_to_host_file_result="$1" 171912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$1"; then 172012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # because $build is cygwin, we call "the" cygpath in $PATH; no need to use 172112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # LT_CYGPATH in this case. 172212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_to_host_file_result=`cygpath -m "$1"` 172312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 172412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_convert_file_check "$1" "$func_to_host_file_result" 172512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 172612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# end func_convert_file_cygwin_to_w32 172712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 172812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 172912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_convert_file_nix_to_w32 ARG 173012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Convert file name ARG from *nix to w32 format. Requires a wine environment 173112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# and a working winepath. Returns result in func_to_host_file_result. 173212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_convert_file_nix_to_w32 () 173312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 173412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_debug 173512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_to_host_file_result="$1" 173612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$1"; then 173712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_convert_core_file_wine_to_w32 "$1" 173812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_to_host_file_result="$func_convert_core_file_wine_to_w32_result" 173912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 174012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_convert_file_check "$1" "$func_to_host_file_result" 174112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 174212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# end func_convert_file_nix_to_w32 174312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 174412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 174512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_convert_file_msys_to_cygwin ARG 174612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. 174712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Returns result in func_to_host_file_result. 174812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_convert_file_msys_to_cygwin () 174912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 175012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_debug 175112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_to_host_file_result="$1" 175212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$1"; then 175312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_convert_core_msys_to_w32 "$1" 175412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_cygpath -u "$func_convert_core_msys_to_w32_result" 175512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_to_host_file_result="$func_cygpath_result" 175612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 175712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_convert_file_check "$1" "$func_to_host_file_result" 175812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 175912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# end func_convert_file_msys_to_cygwin 176012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 176112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 176212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_convert_file_nix_to_cygwin ARG 176312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed 176412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# in a wine environment, working winepath, and LT_CYGPATH set. Returns result 176512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# in func_to_host_file_result. 176612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_convert_file_nix_to_cygwin () 176712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 176812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_debug 176912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_to_host_file_result="$1" 177012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$1"; then 177112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. 177212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_convert_core_file_wine_to_w32 "$1" 177312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_cygpath -u "$func_convert_core_file_wine_to_w32_result" 177412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_to_host_file_result="$func_cygpath_result" 177512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 177612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_convert_file_check "$1" "$func_to_host_file_result" 177712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 177812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# end func_convert_file_nix_to_cygwin 177912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 178012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 178112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala############################################# 178212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# $build to $host PATH CONVERSION FUNCTIONS # 178312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala############################################# 178412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# invoked via `$to_host_path_cmd ARG' 178512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# 178612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# In each case, ARG is the path to be converted from $build to $host format. 178712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# The result will be available in $func_to_host_path_result. 178812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# 178912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Path separators are also converted from $build format to $host format. If 179012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# ARG begins or ends with a path separator character, it is preserved (but 179112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# converted to $host format) on output. 179212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# 179312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# All path conversion functions are named using the following convention: 179412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# file name conversion function : func_convert_file_X_to_Y () 179512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# path conversion function : func_convert_path_X_to_Y () 179612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# where, for any given $build/$host combination the 'X_to_Y' value is the 179712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# same. If conversion functions are added for new $build/$host combinations, 179812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# the two new functions must follow this pattern, or func_init_to_host_path_cmd 179912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# will break. 180012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 180112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 180212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_init_to_host_path_cmd 180312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Ensures that function "pointer" variable $to_host_path_cmd is set to the 180412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# appropriate value, based on the value of $to_host_file_cmd. 180512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialato_host_path_cmd= 180612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_init_to_host_path_cmd () 180712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 180812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_debug 180912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -z "$to_host_path_cmd"; then 181012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_stripname 'func_convert_file_' '' "$to_host_file_cmd" 181112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala to_host_path_cmd="func_convert_path_${func_stripname_result}" 181212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 181312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 181412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 181512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 181612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_to_host_path ARG 181712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Converts the path ARG from $build format to $host format. Return result 181812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# in func_to_host_path_result. 181912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_to_host_path () 182012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 182112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_debug 182212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_init_to_host_path_cmd 182312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $to_host_path_cmd "$1" 182412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 182512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# end func_to_host_path 182612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 182712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 182812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_convert_path_noop ARG 182912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Copy ARG to func_to_host_path_result. 183012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_convert_path_noop () 183112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 183212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_to_host_path_result="$1" 183312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 183412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# end func_convert_path_noop 183512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 183612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 183712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_convert_path_msys_to_w32 ARG 183812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic 183912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# conversion to w32 is not available inside the cwrapper. Returns result in 184012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_to_host_path_result. 184112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_convert_path_msys_to_w32 () 184212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 184312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_debug 184412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_to_host_path_result="$1" 184512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$1"; then 184612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Remove leading and trailing path separator characters from ARG. MSYS 184712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; 184812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # and winepath ignores them completely. 184912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_stripname : : "$1" 185012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_to_host_path_tmp1=$func_stripname_result 185112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" 185212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_to_host_path_result="$func_convert_core_msys_to_w32_result" 185312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_convert_path_check : ";" \ 185412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala "$func_to_host_path_tmp1" "$func_to_host_path_result" 185512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" 185612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 185712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 185812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# end func_convert_path_msys_to_w32 185912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 186012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 186112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_convert_path_cygwin_to_w32 ARG 186212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Convert path ARG from Cygwin to w32 format. Returns result in 186312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_to_host_file_result. 186412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_convert_path_cygwin_to_w32 () 186512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 186612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_debug 186712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_to_host_path_result="$1" 186812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$1"; then 186912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # See func_convert_path_msys_to_w32: 187012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_stripname : : "$1" 187112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_to_host_path_tmp1=$func_stripname_result 187212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` 187312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_convert_path_check : ";" \ 187412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala "$func_to_host_path_tmp1" "$func_to_host_path_result" 187512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" 187612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 187712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 187812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# end func_convert_path_cygwin_to_w32 187912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 188012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 188112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_convert_path_nix_to_w32 ARG 188212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Convert path ARG from *nix to w32 format. Requires a wine environment and 188312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# a working winepath. Returns result in func_to_host_file_result. 188412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_convert_path_nix_to_w32 () 188512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 188612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_debug 188712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_to_host_path_result="$1" 188812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$1"; then 188912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # See func_convert_path_msys_to_w32: 189012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_stripname : : "$1" 189112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_to_host_path_tmp1=$func_stripname_result 189212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" 189312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_to_host_path_result="$func_convert_core_path_wine_to_w32_result" 189412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_convert_path_check : ";" \ 189512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala "$func_to_host_path_tmp1" "$func_to_host_path_result" 189612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" 189712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 189812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 189912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# end func_convert_path_nix_to_w32 190012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 190112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 190212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_convert_path_msys_to_cygwin ARG 190312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. 190412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Returns result in func_to_host_file_result. 190512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_convert_path_msys_to_cygwin () 190612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 190712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_debug 190812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_to_host_path_result="$1" 190912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$1"; then 191012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # See func_convert_path_msys_to_w32: 191112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_stripname : : "$1" 191212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_to_host_path_tmp1=$func_stripname_result 191312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" 191412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_cygpath -u -p "$func_convert_core_msys_to_w32_result" 191512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_to_host_path_result="$func_cygpath_result" 191612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_convert_path_check : : \ 191712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala "$func_to_host_path_tmp1" "$func_to_host_path_result" 191812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_convert_path_front_back_pathsep ":*" "*:" : "$1" 191912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 192012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 192112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# end func_convert_path_msys_to_cygwin 192212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 192312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 192412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_convert_path_nix_to_cygwin ARG 192512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a 192612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# a wine environment, working winepath, and LT_CYGPATH set. Returns result in 192712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_to_host_file_result. 192812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_convert_path_nix_to_cygwin () 192912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 193012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_debug 193112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_to_host_path_result="$1" 193212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$1"; then 193312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Remove leading and trailing path separator characters from 193412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # ARG. msys behavior is inconsistent here, cygpath turns them 193512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # into '.;' and ';.', and winepath ignores them completely. 193612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_stripname : : "$1" 193712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_to_host_path_tmp1=$func_stripname_result 193812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" 193912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" 194012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_to_host_path_result="$func_cygpath_result" 194112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_convert_path_check : : \ 194212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala "$func_to_host_path_tmp1" "$func_to_host_path_result" 194312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_convert_path_front_back_pathsep ":*" "*:" : "$1" 194412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 194512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 194612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# end func_convert_path_nix_to_cygwin 194712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 194812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 194912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_mode_compile arg... 195012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_mode_compile () 195112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 195212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_debug 195312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Get the compilation command and the source file. 195412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala base_compile= 195512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala srcfile="$nonopt" # always keep a non-empty value in "srcfile" 195612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala suppress_opt=yes 195712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala suppress_output= 195812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala arg_mode=normal 195912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala libobj= 196012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala later= 196112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala pie_flag= 196212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 196312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for arg 196412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala do 196512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $arg_mode in 196612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala arg ) 196712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # do not "continue". Instead, add this to base_compile 196812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala lastarg="$arg" 196912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala arg_mode=normal 197012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 197112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 197212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala target ) 197312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala libobj="$arg" 197412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala arg_mode=normal 197512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 197612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 197712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 197812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala normal ) 197912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Accept any command-line options. 198012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $arg in 198112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -o) 198212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -n "$libobj" && \ 198312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_fatal_error "you cannot specify \`-o' more than once" 198412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala arg_mode=target 198512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 198612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 198712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 198812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -pie | -fpie | -fPIE) 198912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append pie_flag " $arg" 199012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 199112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 199212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 199312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -shared | -static | -prefer-pic | -prefer-non-pic) 199412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append later " $arg" 199512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 199612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 199712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 199812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -no-suppress) 199912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala suppress_opt=no 200012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 200112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 200212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 200312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -Xcompiler) 200412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala arg_mode=arg # the next one goes into the "base_compile" arg list 200512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue # The current "srcfile" will either be retained or 200612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; # replaced later. I would guess that would be a bug. 200712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 200812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -Wc,*) 200912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_stripname '-Wc,' '' "$arg" 201012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala args=$func_stripname_result 201112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala lastarg= 201212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala save_ifs="$IFS"; IFS=',' 201312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for arg in $args; do 201412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala IFS="$save_ifs" 201512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append_quoted lastarg "$arg" 201612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 201712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala IFS="$save_ifs" 201812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_stripname ' ' '' "$lastarg" 201912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala lastarg=$func_stripname_result 202012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 202112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Add the arguments to base_compile. 202212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append base_compile " $lastarg" 202312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 202412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 202512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 202612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 202712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Accept the current argument as the source file. 202812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # The previous "srcfile" becomes the current argument. 202912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # 203012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala lastarg="$srcfile" 203112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala srcfile="$arg" 203212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 203312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac # case $arg 203412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 203512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac # case $arg_mode 203612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 203712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Aesthetically quote the previous argument. 203812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append_quoted base_compile "$lastarg" 203912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done # for arg 204012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 204112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $arg_mode in 204212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala arg) 204312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_fatal_error "you must specify an argument for -Xcompile" 204412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 204512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala target) 204612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_fatal_error "you must specify a target with \`-o'" 204712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 204812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 204912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Get the name of the library object. 205012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -z "$libobj" && { 205112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_basename "$srcfile" 205212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala libobj="$func_basename_result" 205312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } 205412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 205512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 205612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 205712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Recognize several different file suffixes. 205812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # If the user specifies -o file.o, it is replaced with file.lo 205912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $libobj in 206012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *.[cCFSifmso] | \ 206112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *.ada | *.adb | *.ads | *.asm | \ 206212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ 206312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) 206412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_xform "$libobj" 206512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala libobj=$func_xform_result 206612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 206712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 206812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 206912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $libobj in 207012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; 207112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 207212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_fatal_error "cannot determine name of library object from \`$libobj'" 207312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 207412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 207512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 207612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_infer_tag $base_compile 207712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 207812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for arg in $later; do 207912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $arg in 208012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -shared) 208112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test "$build_libtool_libs" != yes && \ 208212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_fatal_configuration "can not build a shared library" 208312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala build_old_libs=no 208412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 208512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 208612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 208712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -static) 208812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala build_libtool_libs=no 208912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala build_old_libs=yes 209012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 209112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 209212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 209312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -prefer-pic) 209412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala pic_mode=yes 209512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 209612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 209712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 209812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -prefer-non-pic) 209912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala pic_mode=no 210012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 210112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 210212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 210312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 210412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 210512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_quote_for_eval "$libobj" 210612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test "X$libobj" != "X$func_quote_for_eval_result" \ 210712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ 210812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala && func_warning "libobj name \`$libobj' may not contain shell special characters." 210912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_dirname_and_basename "$obj" "/" "" 211012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala objname="$func_basename_result" 211112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala xdir="$func_dirname_result" 211212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala lobj=${xdir}$objdir/$objname 211312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 211412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -z "$base_compile" && \ 211512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_fatal_help "you must specify a compilation command" 211612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 211712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Delete any leftover library objects. 211812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$build_old_libs" = yes; then 211912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala removelist="$obj $lobj $libobj ${libobj}T" 212012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 212112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala removelist="$lobj $libobj ${libobj}T" 212212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 212312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 212412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # On Cygwin there's no "real" PIC flag so we must build both object types 212512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $host_os in 212612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala cygwin* | mingw* | pw32* | os2* | cegcc*) 212712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala pic_mode=default 212812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 212912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 213012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then 213112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # non-PIC code in shared libraries is not supported 213212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala pic_mode=default 213312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 213412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 213512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Calculate the filename of the output object if compiler does 213612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # not support -o with -c 213712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$compiler_c_o" = no; then 213812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext} 213912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala lockfile="$output_obj.lock" 214012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 214112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala output_obj= 214212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala need_locks=no 214312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala lockfile= 214412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 214512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 214612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Lock this critical section if it is needed 214712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # We use this script file to make the link, it avoids creating a new file 214812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$need_locks" = yes; then 214912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do 215012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_echo "Waiting for $lockfile to be removed" 215112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala sleep 2 215212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 215312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala elif test "$need_locks" = warn; then 215412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -f "$lockfile"; then 215512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $ECHO "\ 215612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala*** ERROR, $lockfile exists and contains: 215712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala`cat $lockfile 2>/dev/null` 215812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 215912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaThis indicates that another process is trying to use the same 216012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialatemporary object file, and libtool could not work around it because 216112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialayour compiler does not support \`-c' and \`-o' together. If you 216212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialarepeat this compilation, it may succeed, by chance, but you had better 216312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaavoid parallel builds (make -j) in this platform, or get a better 216412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialacompiler." 216512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 216612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_dry_run || $RM $removelist 216712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala exit $EXIT_FAILURE 216812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 216912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append removelist " $output_obj" 217012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $ECHO "$srcfile" > "$lockfile" 217112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 217212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 217312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_dry_run || $RM $removelist 217412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append removelist " $lockfile" 217512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 217612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 217712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 217812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala srcfile=$func_to_tool_file_result 217912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_quote_for_eval "$srcfile" 218012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala qsrcfile=$func_quote_for_eval_result 218112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 218212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Only build a PIC object if we are building libtool libraries. 218312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$build_libtool_libs" = yes; then 218412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Without this assignment, base_compile gets emptied. 218512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fbsd_hideous_sh_bug=$base_compile 218612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 218712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$pic_mode" != no; then 218812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala command="$base_compile $qsrcfile $pic_flag" 218912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 219012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Don't build PIC code 219112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala command="$base_compile $qsrcfile" 219212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 219312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 219412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_mkdir_p "$xdir$objdir" 219512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 219612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -z "$output_obj"; then 219712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Place PIC objects in $objdir 219812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append command " -o $lobj" 219912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 220012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 220112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_show_eval_locale "$command" \ 220212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' 220312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 220412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$need_locks" = warn && 220512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 220612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $ECHO "\ 220712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala*** ERROR, $lockfile contains: 220812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala`cat $lockfile 2>/dev/null` 220912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 221012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialabut it should contain: 221112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala$srcfile 221212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 221312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaThis indicates that another process is trying to use the same 221412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialatemporary object file, and libtool could not work around it because 221512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialayour compiler does not support \`-c' and \`-o' together. If you 221612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialarepeat this compilation, it may succeed, by chance, but you had better 221712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaavoid parallel builds (make -j) in this platform, or get a better 221812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialacompiler." 221912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 222012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_dry_run || $RM $removelist 222112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala exit $EXIT_FAILURE 222212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 222312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 222412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Just move the object if needed, then go on to compile the next one 222512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then 222612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_show_eval '$MV "$output_obj" "$lobj"' \ 222712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 'error=$?; $opt_dry_run || $RM $removelist; exit $error' 222812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 222912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 223012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Allow error messages only from the first compilation. 223112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$suppress_opt" = yes; then 223212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala suppress_output=' >/dev/null 2>&1' 223312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 223412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 223512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 223612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Only build a position-dependent object if we build old libraries. 223712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$build_old_libs" = yes; then 223812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$pic_mode" != yes; then 223912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Don't build PIC code 224012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala command="$base_compile $qsrcfile$pie_flag" 224112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 224212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala command="$base_compile $qsrcfile $pic_flag" 224312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 224412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$compiler_c_o" = yes; then 224512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append command " -o $obj" 224612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 224712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 224812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Suppress compiler output if we already did a PIC compilation. 224912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append command "$suppress_output" 225012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_show_eval_locale "$command" \ 225112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 225212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 225312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$need_locks" = warn && 225412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 225512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $ECHO "\ 225612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala*** ERROR, $lockfile contains: 225712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala`cat $lockfile 2>/dev/null` 225812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 225912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialabut it should contain: 226012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala$srcfile 226112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 226212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaThis indicates that another process is trying to use the same 226312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialatemporary object file, and libtool could not work around it because 226412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialayour compiler does not support \`-c' and \`-o' together. If you 226512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialarepeat this compilation, it may succeed, by chance, but you had better 226612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaavoid parallel builds (make -j) in this platform, or get a better 226712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialacompiler." 226812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 226912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_dry_run || $RM $removelist 227012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala exit $EXIT_FAILURE 227112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 227212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 227312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Just move the object if needed 227412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then 227512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_show_eval '$MV "$output_obj" "$obj"' \ 227612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 'error=$?; $opt_dry_run || $RM $removelist; exit $error' 227712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 227812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 227912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 228012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_dry_run || { 228112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" 228212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 228312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Unlock the critical section if it was locked 228412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$need_locks" != no; then 228512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala removelist=$lockfile 228612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $RM "$lockfile" 228712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 228812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } 228912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 229012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala exit $EXIT_SUCCESS 229112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 229212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 229312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala$opt_help || { 229412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test "$opt_mode" = compile && func_mode_compile ${1+"$@"} 229512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 229612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 229712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_mode_help () 229812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 229912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # We need to display help for each of the modes. 230012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $opt_mode in 230112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala "") 230212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Generic help is extracted from the usage comments 230312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # at the start of this file. 230412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_help 230512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 230612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 230712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala clean) 230812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $ECHO \ 230912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... 231012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 231112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaRemove files from the build directory. 231212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 231312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaRM is the name of the program to use to delete files associated with each FILE 231412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 231512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialato RM. 231612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 231712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaIf FILE is a libtool library, object or program, all the files associated 231812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialawith it are deleted. Otherwise, only FILE itself is deleted using RM." 231912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 232012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 232112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala compile) 232212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $ECHO \ 232312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE 232412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 232512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaCompile a source file into a libtool library object. 232612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 232712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaThis mode accepts the following additional options: 232812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 232912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -o OUTPUT-FILE set the output file name to OUTPUT-FILE 233012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -no-suppress do not suppress compiler output for multiple passes 233112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -prefer-pic try to build PIC objects only 233212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -prefer-non-pic try to build non-PIC objects only 233312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -shared do not build a \`.o' file suitable for static linking 233412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -static only build a \`.o' file suitable for static linking 233512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -Wc,FLAG pass FLAG directly to the compiler 233612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 233712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaCOMPILE-COMMAND is a command to be used in creating a \`standard' object file 233812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafrom the given SOURCEFILE. 233912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 234012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaThe output file name is determined by removing the directory component from 234112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaSOURCEFILE, then substituting the C source code suffix \`.c' with the 234212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialalibrary object suffix, \`.lo'." 234312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 234412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 234512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala execute) 234612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $ECHO \ 234712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... 234812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 234912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaAutomatically set library path, then run a program. 235012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 235112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaThis mode accepts the following additional options: 235212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 235312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -dlopen FILE add the directory containing FILE to the library path 235412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 235512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaThis mode sets the library path environment variable according to \`-dlopen' 235612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaflags. 235712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 235812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaIf any of the ARGS are libtool executable wrappers, then they are translated 235912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialainto their corresponding uninstalled binary, and any of their required library 236012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialadirectories are added to the library path. 236112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 236212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaThen, COMMAND is executed, with ARGS as arguments." 236312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 236412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 236512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala finish) 236612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $ECHO \ 236712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... 236812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 236912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaComplete the installation of libtool libraries. 237012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 237112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaEach LIBDIR is a directory that contains libtool libraries. 237212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 237312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaThe commands that this mode executes may require superuser privileges. Use 237412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialathe \`--dry-run' option if you just want to see what would be executed." 237512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 237612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 237712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala install) 237812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $ECHO \ 237912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... 238012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 238112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaInstall executables or libraries. 238212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 238312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaINSTALL-COMMAND is the installation command. The first component should be 238412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaeither the \`install' or \`cp' program. 238512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 238612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaThe following components of INSTALL-COMMAND are treated specially: 238712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 238812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation 238912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 239012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaThe rest of the components are interpreted as arguments to that command (only 239112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaBSD-compatible install options are recognized)." 239212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 239312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 239412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala link) 239512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $ECHO \ 239612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... 239712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 239812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaLink object files or libraries together to form another library, or to 239912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialacreate an executable program. 240012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 240112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaLINK-COMMAND is a command using the C compiler that you would use to create 240212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaa program from several object files. 240312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 240412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaThe following components of LINK-COMMAND are treated specially: 240512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 240612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -all-static do not do any dynamic linking at all 240712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -avoid-version do not add a version suffix if possible 240812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -bindir BINDIR specify path to binaries directory (for systems where 240912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala libraries must be found in the PATH setting at runtime) 241012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime 241112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols 241212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) 241312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -export-symbols SYMFILE 241412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala try to export only the symbols listed in SYMFILE 241512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -export-symbols-regex REGEX 241612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala try to export only the symbols matching REGEX 241712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -LLIBDIR search LIBDIR for required installed libraries 241812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -lNAME OUTPUT-FILE requires the installed library libNAME 241912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -module build a library that can dlopened 242012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -no-fast-install disable the fast-install mode 242112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -no-install link a not-installable executable 242212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -no-undefined declare that a library does not refer to external symbols 242312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -o OUTPUT-FILE create OUTPUT-FILE from the specified objects 242412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -objectlist FILE Use a list of object files found in FILE to specify objects 242512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -precious-files-regex REGEX 242612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala don't remove output files matching REGEX 242712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -release RELEASE specify package release information 242812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -rpath LIBDIR the created library will eventually be installed in LIBDIR 242912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries 243012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -shared only do dynamic linking of libtool libraries 243112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -shrext SUFFIX override the standard shared library file extension 243212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -static do not do any dynamic linking of uninstalled libtool libraries 243312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -static-libtool-libs 243412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala do not do any dynamic linking of libtool libraries 243512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -version-info CURRENT[:REVISION[:AGE]] 243612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala specify library version info [each variable defaults to 0] 243712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -weak LIBNAME declare that the target provides the LIBNAME interface 243812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -Wc,FLAG 243912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -Xcompiler FLAG pass linker-specific FLAG directly to the compiler 244012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -Wl,FLAG 244112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -Xlinker FLAG pass linker-specific FLAG directly to the linker 244212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) 244312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 244412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaAll other options (arguments beginning with \`-') are ignored. 244512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 244612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaEvery other argument is treated as a filename. Files ending in \`.la' are 244712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialatreated as uninstalled libtool libraries, other files are standard or library 244812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaobject files. 244912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 245012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaIf the OUTPUT-FILE ends in \`.la', then a libtool library is created, 245112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaonly library objects (\`.lo' files) may be specified, and \`-rpath' is 245212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialarequired, except when creating a convenience library. 245312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 245412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaIf OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created 245512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialausing \`ar' and \`ranlib', or on Windows using \`lib'. 245612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 245712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaIf OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file 245812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialais created, otherwise an executable program is created." 245912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 246012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 246112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala uninstall) 246212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $ECHO \ 246312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... 246412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 246512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaRemove libraries from an installation directory. 246612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 246712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaRM is the name of the program to use to delete files associated with each FILE 246812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 246912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialato RM. 247012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 247112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaIf FILE is a libtool library, all the files associated with it are deleted. 247212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaOtherwise, only FILE itself is deleted using RM." 247312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 247412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 247512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 247612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_fatal_help "invalid operation mode \`$opt_mode'" 247712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 247812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 247912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 248012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo 248112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $ECHO "Try \`$progname --help' for more information about other modes." 248212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 248312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 248412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Now that we've collected a possible --mode arg, show help if necessary 248512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaif $opt_help; then 248612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$opt_help" = :; then 248712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_mode_help 248812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 248912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala { 249012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_help noexit 249112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for opt_mode in compile link execute install finish uninstall clean; do 249212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_mode_help 249312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 249412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } | sed -n '1p; 2,$s/^Usage:/ or: /p' 249512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala { 249612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_help noexit 249712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for opt_mode in compile link execute install finish uninstall clean; do 249812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo 249912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_mode_help 250012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 250112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } | 250212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala sed '1d 250312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala /^When reporting/,/^Report/{ 250412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala H 250512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala d 250612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } 250712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $x 250812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala /information about other modes/d 250912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala /more detailed .*MODE/d 251012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' 251112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 251212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala exit $? 251312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafi 251412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 251512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 251612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_mode_execute arg... 251712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_mode_execute () 251812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 251912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_debug 252012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # The first argument is the command name. 252112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala cmd="$nonopt" 252212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -z "$cmd" && \ 252312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_fatal_help "you must specify a COMMAND" 252412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 252512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Handle -dlopen flags immediately. 252612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for file in $opt_dlopen; do 252712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -f "$file" \ 252812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala || func_fatal_help "\`$file' is not a file" 252912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 253012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala dir= 253112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $file in 253212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *.la) 253312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_resolve_sysroot "$file" 253412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala file=$func_resolve_sysroot_result 253512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 253612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Check to see that this really is a libtool archive. 253712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_lalib_unsafe_p "$file" \ 253812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala || func_fatal_help "\`$lib' is not a valid libtool archive" 253912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 254012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Read the libtool library. 254112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala dlname= 254212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala library_names= 254312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_source "$file" 254412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 254512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Skip this library if it cannot be dlopened. 254612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -z "$dlname"; then 254712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Warn if it was a shared library. 254812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -n "$library_names" && \ 254912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_warning "\`$file' was not linked with \`-export-dynamic'" 255012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 255112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 255212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 255312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_dirname "$file" "" "." 255412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala dir="$func_dirname_result" 255512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 255612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -f "$dir/$objdir/$dlname"; then 255712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append dir "/$objdir" 255812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 255912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test ! -f "$dir/$dlname"; then 256012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 256112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 256212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 256312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 256412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 256512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *.lo) 256612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Just add the directory containing the .lo file. 256712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_dirname "$file" "" "." 256812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala dir="$func_dirname_result" 256912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 257012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 257112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 257212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" 257312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 257412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 257512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 257612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 257712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Get the absolute pathname. 257812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala absdir=`cd "$dir" && pwd` 257912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -n "$absdir" && dir="$absdir" 258012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 258112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Now add the directory to shlibpath_var. 258212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if eval "test -z \"\$$shlibpath_var\""; then 258312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval "$shlibpath_var=\"\$dir\"" 258412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 258512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" 258612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 258712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 258812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 258912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # This variable tells wrapper scripts just to set shlibpath_var 259012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # rather than running their programs. 259112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala libtool_execute_magic="$magic" 259212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 259312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Check if any of the arguments is a wrapper script. 259412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala args= 259512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for file 259612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala do 259712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $file in 259812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -* | *.la | *.lo ) ;; 259912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 260012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Do a test to see if this is really a libtool program. 260112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if func_ltwrapper_script_p "$file"; then 260212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_source "$file" 260312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Transform arg to wrapped name. 260412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala file="$progdir/$program" 260512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala elif func_ltwrapper_executable_p "$file"; then 260612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_ltwrapper_scriptname "$file" 260712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_source "$func_ltwrapper_scriptname_result" 260812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Transform arg to wrapped name. 260912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala file="$progdir/$program" 261012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 261112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 261212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 261312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Quote arguments (to preserve shell metacharacters). 261412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append_quoted args "$file" 261512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 261612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 261712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "X$opt_dry_run" = Xfalse; then 261812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$shlibpath_var"; then 261912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Export the shlibpath_var. 262012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval "export $shlibpath_var" 262112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 262212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 262312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Restore saved environment variables 262412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 262512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala do 262612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval "if test \"\${save_$lt_var+set}\" = set; then 262712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $lt_var=\$save_$lt_var; export $lt_var 262812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 262912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $lt_unset $lt_var 263012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi" 263112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 263212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 263312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Now prepare to actually exec the command. 263412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala exec_cmd="\$cmd$args" 263512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 263612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Display what would be done. 263712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$shlibpath_var"; then 263812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" 263912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo "export $shlibpath_var" 264012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 264112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $ECHO "$cmd$args" 264212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala exit $EXIT_SUCCESS 264312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 264412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 264512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 264612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialatest "$opt_mode" = execute && func_mode_execute ${1+"$@"} 264712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 264812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 264912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_mode_finish arg... 265012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_mode_finish () 265112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 265212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_debug 265312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala libs= 265412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala libdirs= 265512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala admincmds= 265612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 265712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for opt in "$nonopt" ${1+"$@"} 265812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala do 265912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -d "$opt"; then 266012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append libdirs " $opt" 266112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 266212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala elif test -f "$opt"; then 266312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if func_lalib_unsafe_p "$opt"; then 266412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append libs " $opt" 266512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 266612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_warning "\`$opt' is not a valid libtool archive" 266712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 266812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 266912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 267012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_fatal_error "invalid argument \`$opt'" 267112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 267212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 267312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 267412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$libs"; then 267512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$lt_sysroot"; then 267612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` 267712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" 267812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 267912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala sysroot_cmd= 268012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 268112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 268212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Remove sysroot references 268312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if $opt_dry_run; then 268412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for lib in $libs; do 268512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo "removing references to $lt_sysroot and \`=' prefixes from $lib" 268612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 268712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 268812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala tmpdir=`func_mktempdir` 268912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for lib in $libs; do 269012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ 269112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala > $tmpdir/tmp-la 269212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala mv -f $tmpdir/tmp-la $lib 269312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 269412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ${RM}r "$tmpdir" 269512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 269612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 269712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 269812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then 269912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for libdir in $libdirs; do 270012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$finish_cmds"; then 270112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Do each command in the finish commands. 270212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_execute_cmds "$finish_cmds" 'admincmds="$admincmds 270312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala'"$cmd"'"' 270412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 270512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$finish_eval"; then 270612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Do the single finish_eval. 270712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval cmds=\"$finish_eval\" 270812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_dry_run || eval "$cmds" || func_append admincmds " 270912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $cmds" 271012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 271112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 271212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 271312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 271412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Exit here if they wanted silent mode. 271512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_silent && exit $EXIT_SUCCESS 271612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 271712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then 271812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo "----------------------------------------------------------------------" 271912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo "Libraries have been installed in:" 272012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for libdir in $libdirs; do 272112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $ECHO " $libdir" 272212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 272312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo 272412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo "If you ever happen to want to link against installed libraries" 272512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo "in a given directory, LIBDIR, you must either use libtool, and" 272612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo "specify the full pathname of the library, or use the \`-LLIBDIR'" 272712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo "flag during linking and do at least one of the following:" 272812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$shlibpath_var"; then 272912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo " - add LIBDIR to the \`$shlibpath_var' environment variable" 273012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo " during execution" 273112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 273212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$runpath_var"; then 273312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo " - add LIBDIR to the \`$runpath_var' environment variable" 273412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo " during linking" 273512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 273612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$hardcode_libdir_flag_spec"; then 273712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala libdir=LIBDIR 273812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval flag=\"$hardcode_libdir_flag_spec\" 273912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 274012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $ECHO " - use the \`$flag' linker flag" 274112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 274212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$admincmds"; then 274312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $ECHO " - have your system administrator run these commands:$admincmds" 274412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 274512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -f /etc/ld.so.conf; then 274612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" 274712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 274812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo 274912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 275012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo "See any operating system documentation about shared libraries for" 275112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $host in 275212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala solaris2.[6789]|solaris2.1[0-9]) 275312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" 275412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo "pages." 275512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 275612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 275712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo "more information, such as the ld(1) and ld.so(8) manual pages." 275812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 275912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 276012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo "----------------------------------------------------------------------" 276112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 276212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala exit $EXIT_SUCCESS 276312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 276412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 276512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialatest "$opt_mode" = finish && func_mode_finish ${1+"$@"} 276612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 276712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 276812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_mode_install arg... 276912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_mode_install () 277012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 277112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_debug 277212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # There may be an optional sh(1) argument at the beginning of 277312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # install_prog (especially on Windows NT). 277412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || 277512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Allow the use of GNU shtool's install command. 277612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $nonopt in *shtool*) :;; *) false;; esac; then 277712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Aesthetically quote it. 277812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_quote_for_eval "$nonopt" 277912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala install_prog="$func_quote_for_eval_result " 278012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala arg=$1 278112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala shift 278212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 278312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala install_prog= 278412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala arg=$nonopt 278512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 278612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 278712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # The real first argument should be the name of the installation program. 278812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Aesthetically quote it. 278912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_quote_for_eval "$arg" 279012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append install_prog "$func_quote_for_eval_result" 279112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala install_shared_prog=$install_prog 279212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case " $install_prog " in 279312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *[\\\ /]cp\ *) install_cp=: ;; 279412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) install_cp=false ;; 279512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 279612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 279712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # We need to accept at least all the BSD install flags. 279812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala dest= 279912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala files= 280012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala opts= 280112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala prev= 280212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala install_type= 280312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala isdir=no 280412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala stripme= 280512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala no_mode=: 280612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for arg 280712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala do 280812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala arg2= 280912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$dest"; then 281012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append files " $dest" 281112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala dest=$arg 281212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 281312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 281412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 281512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $arg in 281612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -d) isdir=yes ;; 281712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -f) 281812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if $install_cp; then :; else 281912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala prev=$arg 282012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 282112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 282212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -g | -m | -o) 282312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala prev=$arg 282412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 282512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -s) 282612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala stripme=" -s" 282712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 282812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 282912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -*) 283012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 283112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 283212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # If the previous option needed an argument, then skip it. 283312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$prev"; then 283412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "x$prev" = x-m && test -n "$install_override_mode"; then 283512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala arg2=$install_override_mode 283612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala no_mode=false 283712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 283812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala prev= 283912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 284012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala dest=$arg 284112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 284212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 284312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 284412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 284512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 284612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Aesthetically quote the argument. 284712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_quote_for_eval "$arg" 284812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append install_prog " $func_quote_for_eval_result" 284912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$arg2"; then 285012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_quote_for_eval "$arg2" 285112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 285212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append install_shared_prog " $func_quote_for_eval_result" 285312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 285412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 285512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -z "$install_prog" && \ 285612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_fatal_help "you must specify an install program" 285712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 285812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -n "$prev" && \ 285912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_fatal_help "the \`$prev' option requires an argument" 286012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 286112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$install_override_mode" && $no_mode; then 286212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if $install_cp; then :; else 286312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_quote_for_eval "$install_override_mode" 286412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append install_shared_prog " -m $func_quote_for_eval_result" 286512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 286612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 286712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 286812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -z "$files"; then 286912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -z "$dest"; then 287012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_fatal_help "no file or destination specified" 287112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 287212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_fatal_help "you must specify a destination" 287312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 287412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 287512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 287612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Strip any trailing slash from the destination. 287712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_stripname '' '/' "$dest" 287812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala dest=$func_stripname_result 287912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 288012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Check to see that the destination is a directory. 288112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -d "$dest" && isdir=yes 288212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$isdir" = yes; then 288312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala destdir="$dest" 288412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala destname= 288512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 288612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_dirname_and_basename "$dest" "" "." 288712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala destdir="$func_dirname_result" 288812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala destname="$func_basename_result" 288912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 289012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Not a directory, so check to see that there is only one file specified. 289112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala set dummy $files; shift 289212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test "$#" -gt 1 && \ 289312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_fatal_help "\`$dest' is not a directory" 289412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 289512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $destdir in 289612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala [\\/]* | [A-Za-z]:[\\/]*) ;; 289712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 289812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for file in $files; do 289912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $file in 290012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *.lo) ;; 290112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 290212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_fatal_help "\`$destdir' must be an absolute directory name" 290312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 290412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 290512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 290612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 290712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 290812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 290912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # This variable tells wrapper scripts just to set variables rather 291012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # than running their programs. 291112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala libtool_install_magic="$magic" 291212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 291312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala staticlibs= 291412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala future_libdirs= 291512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala current_libdirs= 291612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for file in $files; do 291712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 291812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Do each installation. 291912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $file in 292012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *.$libext) 292112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Do the static libraries later. 292212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append staticlibs " $file" 292312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 292412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 292512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *.la) 292612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_resolve_sysroot "$file" 292712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala file=$func_resolve_sysroot_result 292812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 292912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Check to see that this really is a libtool archive. 293012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_lalib_unsafe_p "$file" \ 293112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala || func_fatal_help "\`$file' is not a valid libtool archive" 293212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 293312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala library_names= 293412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala old_library= 293512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala relink_command= 293612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_source "$file" 293712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 293812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Add the libdir to current_libdirs if it is the destination. 293912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "X$destdir" = "X$libdir"; then 294012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case "$current_libdirs " in 294112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *" $libdir "*) ;; 294212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) func_append current_libdirs " $libdir" ;; 294312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 294412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 294512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Note the libdir as a future libdir. 294612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case "$future_libdirs " in 294712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *" $libdir "*) ;; 294812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) func_append future_libdirs " $libdir" ;; 294912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 295012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 295112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 295212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_dirname "$file" "/" "" 295312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala dir="$func_dirname_result" 295412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append dir "$objdir" 295512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 295612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$relink_command"; then 295712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Determine the prefix the user has applied to our future dir. 295812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` 295912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 296012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Don't allow the user to place us outside of our expected 296112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # location b/c this prevents finding dependent libraries that 296212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # are installed to the same prefix. 296312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # At present, this check doesn't affect windows .dll's that 296412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # are installed into $libdir/../bin (currently, that works fine) 296512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # but it's something to keep an eye on. 296612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test "$inst_prefix_dir" = "$destdir" && \ 296712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" 296812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 296912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$inst_prefix_dir"; then 297012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Stick the inst_prefix_dir data into the link command. 297112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` 297212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 297312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` 297412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 297512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 297612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_warning "relinking \`$file'" 297712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_show_eval "$relink_command" \ 297812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' 297912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 298012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 298112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # See the names of the shared library. 298212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala set dummy $library_names; shift 298312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$1"; then 298412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala realname="$1" 298512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala shift 298612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 298712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala srcname="$realname" 298812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -n "$relink_command" && srcname="$realname"T 298912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 299012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Install the shared library and build the symlinks. 299112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ 299212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 'exit $?' 299312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala tstripme="$stripme" 299412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $host_os in 299512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala cygwin* | mingw* | pw32* | cegcc*) 299612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $realname in 299712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *.dll.a) 299812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala tstripme="" 299912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 300012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 300112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 300212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 300312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$tstripme" && test -n "$striplib"; then 300412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_show_eval "$striplib $destdir/$realname" 'exit $?' 300512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 300612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 300712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$#" -gt 0; then 300812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Delete the old symlinks, and create new ones. 300912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Try `ln -sf' first, because the `ln' binary might depend on 301012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # the symlink we replace! Solaris /bin/ln does not understand -f, 301112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # so we also need to try rm && ln -s. 301212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for linkname 301312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala do 301412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test "$linkname" != "$realname" \ 301512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" 301612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 301712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 301812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 301912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Do each command in the postinstall commands. 302012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala lib="$destdir/$realname" 302112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_execute_cmds "$postinstall_cmds" 'exit $?' 302212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 302312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 302412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Install the pseudo-library for information purposes. 302512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_basename "$file" 302612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala name="$func_basename_result" 302712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala instname="$dir/$name"i 302812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' 302912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 303012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Maybe install the static library, too. 303112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -n "$old_library" && func_append staticlibs " $dir/$old_library" 303212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 303312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 303412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *.lo) 303512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Install (i.e. copy) a libtool object. 303612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 303712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Figure out destination file name, if it wasn't already specified. 303812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$destname"; then 303912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala destfile="$destdir/$destname" 304012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 304112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_basename "$file" 304212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala destfile="$func_basename_result" 304312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala destfile="$destdir/$destfile" 304412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 304512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 304612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Deduce the name of the destination old-style object file. 304712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $destfile in 304812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *.lo) 304912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_lo2o "$destfile" 305012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala staticdest=$func_lo2o_result 305112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 305212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *.$objext) 305312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala staticdest="$destfile" 305412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala destfile= 305512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 305612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 305712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_fatal_help "cannot copy a libtool object to \`$destfile'" 305812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 305912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 306012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 306112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Install the libtool object if requested. 306212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -n "$destfile" && \ 306312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_show_eval "$install_prog $file $destfile" 'exit $?' 306412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 306512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Install the old object if enabled. 306612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$build_old_libs" = yes; then 306712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Deduce the name of the old-style object file. 306812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_lo2o "$file" 306912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala staticobj=$func_lo2o_result 307012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' 307112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 307212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala exit $EXIT_SUCCESS 307312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 307412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 307512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 307612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Figure out destination file name, if it wasn't already specified. 307712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$destname"; then 307812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala destfile="$destdir/$destname" 307912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 308012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_basename "$file" 308112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala destfile="$func_basename_result" 308212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala destfile="$destdir/$destfile" 308312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 308412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 308512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # If the file is missing, and there is a .exe on the end, strip it 308612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # because it is most likely a libtool script we actually want to 308712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # install 308812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala stripped_ext="" 308912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $file in 309012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *.exe) 309112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test ! -f "$file"; then 309212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_stripname '' '.exe' "$file" 309312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala file=$func_stripname_result 309412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala stripped_ext=".exe" 309512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 309612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 309712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 309812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 309912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Do a test to see if this is really a libtool program. 310012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $host in 310112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *cygwin* | *mingw*) 310212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if func_ltwrapper_executable_p "$file"; then 310312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_ltwrapper_scriptname "$file" 310412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala wrapper=$func_ltwrapper_scriptname_result 310512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 310612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_stripname '' '.exe' "$file" 310712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala wrapper=$func_stripname_result 310812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 310912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 311012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 311112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala wrapper=$file 311212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 311312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 311412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if func_ltwrapper_script_p "$wrapper"; then 311512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala notinst_deplibs= 311612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala relink_command= 311712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 311812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_source "$wrapper" 311912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 312012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Check the variables that should have been set. 312112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -z "$generated_by_libtool_version" && \ 312212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_fatal_error "invalid libtool wrapper script \`$wrapper'" 312312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 312412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala finalize=yes 312512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for lib in $notinst_deplibs; do 312612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Check to see that each library is installed. 312712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala libdir= 312812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -f "$lib"; then 312912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_source "$lib" 313012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 313112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test 313212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$libdir" && test ! -f "$libfile"; then 313312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_warning "\`$lib' has not been installed in \`$libdir'" 313412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala finalize=no 313512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 313612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 313712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 313812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala relink_command= 313912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_source "$wrapper" 314012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 314112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala outputname= 314212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$fast_install" = no && test -n "$relink_command"; then 314312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_dry_run || { 314412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$finalize" = yes; then 314512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala tmpdir=`func_mktempdir` 314612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_basename "$file$stripped_ext" 314712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala file="$func_basename_result" 314812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala outputname="$tmpdir/$file" 314912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Replace the output file specification. 315012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` 315112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 315212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_silent || { 315312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_quote_for_expand "$relink_command" 315412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval "func_echo $func_quote_for_expand_result" 315512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } 315612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if eval "$relink_command"; then : 315712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 315812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_error "error: relink \`$file' with the above command before installing it" 315912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_dry_run || ${RM}r "$tmpdir" 316012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 316112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 316212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala file="$outputname" 316312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 316412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_warning "cannot relink \`$file'" 316512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 316612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } 316712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 316812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Install the binary that we compiled earlier. 316912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` 317012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 317112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 317212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 317312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # remove .exe since cygwin /usr/bin/install will append another 317412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # one anyway 317512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $install_prog,$host in 317612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala */usr/bin/install*,*cygwin*) 317712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $file:$destfile in 317812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *.exe:*.exe) 317912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # this is ok 318012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 318112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *.exe:*) 318212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala destfile=$destfile.exe 318312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 318412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *:*.exe) 318512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_stripname '' '.exe' "$destfile" 318612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala destfile=$func_stripname_result 318712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 318812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 318912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 319012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 319112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' 319212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_dry_run || if test -n "$outputname"; then 319312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ${RM}r "$tmpdir" 319412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 319512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 319612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 319712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 319812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 319912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for file in $staticlibs; do 320012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_basename "$file" 320112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala name="$func_basename_result" 320212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 320312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Set up the ranlib parameters. 320412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala oldlib="$destdir/$name" 320512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 320612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala tool_oldlib=$func_to_tool_file_result 320712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 320812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_show_eval "$install_prog \$file \$oldlib" 'exit $?' 320912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 321012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$stripme" && test -n "$old_striplib"; then 321112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_show_eval "$old_striplib $tool_oldlib" 'exit $?' 321212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 321312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 321412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Do each command in the postinstall commands. 321512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_execute_cmds "$old_postinstall_cmds" 'exit $?' 321612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 321712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 321812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -n "$future_libdirs" && \ 321912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_warning "remember to run \`$progname --finish$future_libdirs'" 322012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 322112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$current_libdirs"; then 322212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Maybe just do a dry run. 322312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_dry_run && current_libdirs=" -n$current_libdirs" 322412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' 322512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 322612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala exit $EXIT_SUCCESS 322712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 322812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 322912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 323012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialatest "$opt_mode" = install && func_mode_install ${1+"$@"} 323112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 323212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 323312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_generate_dlsyms outputname originator pic_p 323412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Extract symbols from dlprefiles and create ${outputname}S.o with 323512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# a dlpreopen symbol table. 323612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_generate_dlsyms () 323712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 323812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_debug 323912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala my_outputname="$1" 324012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala my_originator="$2" 324112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala my_pic_p="${3-no}" 324212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` 324312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala my_dlsyms= 324412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 324512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 324612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$NM" && test -n "$global_symbol_pipe"; then 324712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala my_dlsyms="${my_outputname}S.c" 324812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 324912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_error "not configured to extract global symbols from dlpreopened files" 325012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 325112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 325212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 325312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$my_dlsyms"; then 325412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $my_dlsyms in 325512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala "") ;; 325612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *.c) 325712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Discover the nlist of each of the dlfiles. 325812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala nlist="$output_objdir/${my_outputname}.nm" 325912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 326012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_show_eval "$RM $nlist ${nlist}S ${nlist}T" 326112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 326212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Parse the name list into a source file. 326312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_verbose "creating $output_objdir/$my_dlsyms" 326412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 326512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ 326612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ 326712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ 326812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 326912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#ifdef __cplusplus 327012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaextern \"C\" { 327112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#endif 327212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 327312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) 327412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#pragma GCC diagnostic ignored \"-Wstrict-prototypes\" 327512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#endif 327612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 327712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ 327812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) 327912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala/* DATA imports from DLLs on WIN32 con't be const, because runtime 328012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala relocations are performed -- see ld's documentation on pseudo-relocs. */ 328112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# define LT_DLSYM_CONST 328212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#elif defined(__osf__) 328312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala/* This system does not cope well with relocations in const data. */ 328412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# define LT_DLSYM_CONST 328512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#else 328612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# define LT_DLSYM_CONST const 328712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#endif 328812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 328912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala/* External symbol declarations for the compiler. */\ 329012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala" 329112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 329212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$dlself" = yes; then 329312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_verbose "generating symbol list for \`$output'" 329412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 329512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" 329612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 329712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Add our own program objects to the symbol list. 329812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` 329912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for progfile in $progfiles; do 330012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_to_tool_file "$progfile" func_convert_file_msys_to_w32 330112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_verbose "extracting global C symbols from \`$func_to_tool_file_result'" 330212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" 330312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 330412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 330512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$exclude_expsyms"; then 330612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_dry_run || { 330712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' 330812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval '$MV "$nlist"T "$nlist"' 330912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } 331012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 331112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 331212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$export_symbols_regex"; then 331312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_dry_run || { 331412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' 331512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval '$MV "$nlist"T "$nlist"' 331612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } 331712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 331812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 331912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Prepare the list of exported symbols 332012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -z "$export_symbols"; then 332112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala export_symbols="$output_objdir/$outputname.exp" 332212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_dry_run || { 332312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $RM $export_symbols 332412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' 332512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $host in 332612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *cygwin* | *mingw* | *cegcc* ) 332712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 332812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' 332912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 333012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 333112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } 333212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 333312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_dry_run || { 333412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' 333512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' 333612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval '$MV "$nlist"T "$nlist"' 333712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $host in 333812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *cygwin* | *mingw* | *cegcc* ) 333912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 334012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' 334112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 334212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 334312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } 334412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 334512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 334612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 334712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for dlprefile in $dlprefiles; do 334812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_verbose "extracting global C symbols from \`$dlprefile'" 334912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_basename "$dlprefile" 335012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala name="$func_basename_result" 335112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $host in 335212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *cygwin* | *mingw* | *cegcc* ) 335312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # if an import library, we need to obtain dlname 335412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if func_win32_import_lib_p "$dlprefile"; then 335512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_tr_sh "$dlprefile" 335612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval "curr_lafile=\$libfile_$func_tr_sh_result" 335712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala dlprefile_dlbasename="" 335812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then 335912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Use subshell, to avoid clobbering current variable values 336012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` 336112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$dlprefile_dlname" ; then 336212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_basename "$dlprefile_dlname" 336312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala dlprefile_dlbasename="$func_basename_result" 336412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 336512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # no lafile. user explicitly requested -dlpreopen <import library>. 336612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $sharedlib_from_linklib_cmd "$dlprefile" 336712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala dlprefile_dlbasename=$sharedlib_from_linklib_result 336812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 336912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 337012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_dry_run || { 337112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$dlprefile_dlbasename" ; then 337212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' 337312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 337412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_warning "Could not compute DLL name from $name" 337512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval '$ECHO ": $name " >> "$nlist"' 337612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 337712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 337812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | 337912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" 338012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } 338112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else # not an import lib 338212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_dry_run || { 338312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval '$ECHO ": $name " >> "$nlist"' 338412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 338512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" 338612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } 338712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 338812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 338912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 339012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_dry_run || { 339112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval '$ECHO ": $name " >> "$nlist"' 339212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 339312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" 339412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } 339512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 339612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 339712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 339812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 339912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_dry_run || { 340012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Make sure we have at least an empty file. 340112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -f "$nlist" || : > "$nlist" 340212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 340312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$exclude_expsyms"; then 340412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T 340512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $MV "$nlist"T "$nlist" 340612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 340712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 340812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Try sorting and uniquifying the output. 340912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if $GREP -v "^: " < "$nlist" | 341012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if sort -k 3 </dev/null >/dev/null 2>&1; then 341112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala sort -k 3 341212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 341312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala sort +2 341412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi | 341512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala uniq > "$nlist"S; then 341612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala : 341712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 341812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $GREP -v "^: " < "$nlist" > "$nlist"S 341912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 342012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 342112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -f "$nlist"S; then 342212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' 342312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 342412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo '/* NONE */' >> "$output_objdir/$my_dlsyms" 342512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 342612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 342712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo >> "$output_objdir/$my_dlsyms" "\ 342812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 342912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala/* The mapping between symbol names and symbols. */ 343012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialatypedef struct { 343112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala const char *name; 343212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala void *address; 343312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} lt_dlsymlist; 343412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaextern LT_DLSYM_CONST lt_dlsymlist 343512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialalt_${my_prefix}_LTX_preloaded_symbols[]; 343612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaLT_DLSYM_CONST lt_dlsymlist 343712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialalt_${my_prefix}_LTX_preloaded_symbols[] = 343812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{\ 343912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala { \"$my_originator\", (void *) 0 }," 344012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 344112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $need_lib_prefix in 344212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala no) 344312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" 344412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 344512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 344612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" 344712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 344812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 344912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo >> "$output_objdir/$my_dlsyms" "\ 345012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala {0, (void *) 0} 345112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala}; 345212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 345312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala/* This works around a problem in FreeBSD linker */ 345412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#ifdef FREEBSD_WORKAROUND 345512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialastatic const void *lt_preloaded_setup() { 345612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala return lt_${my_prefix}_LTX_preloaded_symbols; 345712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 345812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#endif 345912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 346012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#ifdef __cplusplus 346112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 346212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#endif\ 346312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala" 346412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } # !$opt_dry_run 346512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 346612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala pic_flag_for_symtable= 346712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case "$compile_command " in 346812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *" -static "*) ;; 346912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 347012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $host in 347112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # compiling the symbol table file with pic_flag works around 347212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # a FreeBSD bug that causes programs to crash when -lm is 347312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # linked before any other PIC object. But we must not use 347412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # pic_flag when linking with -static. The problem exists in 347512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. 347612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) 347712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; 347812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *-*-hpux*) 347912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala pic_flag_for_symtable=" $pic_flag" ;; 348012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 348112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "X$my_pic_p" != Xno; then 348212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala pic_flag_for_symtable=" $pic_flag" 348312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 348412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 348512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 348612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 348712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 348812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala symtab_cflags= 348912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for arg in $LTCFLAGS; do 349012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $arg in 349112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -pie | -fpie | -fPIE) ;; 349212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) func_append symtab_cflags " $arg" ;; 349312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 349412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 349512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 349612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Now compile the dynamic symbol file. 349712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' 349812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 349912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Clean up the generated files. 350012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' 350112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 350212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Transform the symbol file into the correct name. 350312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala symfileobj="$output_objdir/${my_outputname}S.$objext" 350412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $host in 350512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *cygwin* | *mingw* | *cegcc* ) 350612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -f "$output_objdir/$my_outputname.def"; then 350712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` 350812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` 350912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 351012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` 351112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` 351212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 351312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 351412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 351512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` 351612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` 351712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 351812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 351912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 352012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 352112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_fatal_error "unknown suffix for \`$my_dlsyms'" 352212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 352312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 352412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 352512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # We keep going just in case the user didn't refer to 352612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # lt_preloaded_symbols. The linker will fail if global_symbol_pipe 352712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # really was required. 352812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 352912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Nullify the symbol file. 353012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` 353112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` 353212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 353312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 353412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 353512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_win32_libid arg 353612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# return the library type of file 'arg' 353712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# 353812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Need a lot of goo to handle *both* DLLs and import libs 353912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Has to be a shell function in order to 'eat' the argument 354012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# that is supplied when $file_magic_command is called. 354112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Despite the name, also deal with 64 bit binaries. 354212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_win32_libid () 354312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 354412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_debug 354512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala win32_libid_type="unknown" 354612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala win32_fileres=`file -L $1 2>/dev/null` 354712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $win32_fileres in 354812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *ar\ archive\ import\ library*) # definitely import 354912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala win32_libid_type="x86 archive import" 355012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 355112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *ar\ archive*) # could be an import, or static 355212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. 355312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | 355412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then 355512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_to_tool_file "$1" func_convert_file_msys_to_w32 355612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | 355712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $SED -n -e ' 355812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 1,100{ 355912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala / I /{ 356012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala s,.*,import, 356112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala p 356212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala q 356312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } 356412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala }'` 356512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $win32_nmres in 356612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala import*) win32_libid_type="x86 archive import";; 356712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) win32_libid_type="x86 archive static";; 356812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 356912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 357012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 357112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *DLL*) 357212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala win32_libid_type="x86 DLL" 357312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 357412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *executable*) # but shell scripts are "executable" too... 357512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $win32_fileres in 357612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *MS\ Windows\ PE\ Intel*) 357712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala win32_libid_type="x86 DLL" 357812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 357912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 358012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 358112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 358212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $ECHO "$win32_libid_type" 358312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 358412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 358512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_cygming_dll_for_implib ARG 358612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# 358712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Platform-specific function to extract the 358812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# name of the DLL associated with the specified 358912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# import library ARG. 359012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Invoked by eval'ing the libtool variable 359112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# $sharedlib_from_linklib_cmd 359212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Result is available in the variable 359312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# $sharedlib_from_linklib_result 359412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_cygming_dll_for_implib () 359512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 359612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_debug 359712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` 359812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 359912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 360012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs 360112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# 360212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# The is the core of a fallback implementation of a 360312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# platform-specific function to extract the name of the 360412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# DLL associated with the specified import library LIBNAME. 360512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# 360612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# SECTION_NAME is either .idata$6 or .idata$7, depending 360712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# on the platform and compiler that created the implib. 360812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# 360912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Echos the name of the DLL associated with the 361012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# specified import library. 361112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_cygming_dll_for_implib_fallback_core () 361212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 361312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_debug 361412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` 361512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $OBJDUMP -s --section "$1" "$2" 2>/dev/null | 361612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $SED '/^Contents of section '"$match_literal"':/{ 361712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Place marker at beginning of archive member dllname section 361812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala s/.*/====MARK====/ 361912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala p 362012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala d 362112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } 362212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # These lines can sometimes be longer than 43 characters, but 362312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # are always uninteresting 362412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala /:[ ]*file format pe[i]\{,1\}-/d 362512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala /^In archive [^:]*:/d 362612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Ensure marker is printed 362712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala /^====MARK====/p 362812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Remove all lines with less than 43 characters 362912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala /^.\{43\}/!d 363012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # From remaining lines, remove first 43 characters 363112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala s/^.\{43\}//' | 363212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $SED -n ' 363312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Join marker and all lines until next marker into a single line 363412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala /^====MARK====/ b para 363512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala H 363612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $ b para 363712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala b 363812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala :para 363912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala x 364012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala s/\n//g 364112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Remove the marker 364212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala s/^====MARK====// 364312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Remove trailing dots and whitespace 364412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala s/[\. \t]*$// 364512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Print 364612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala /./p' | 364712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # we now have a list, one entry per line, of the stringified 364812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # contents of the appropriate section of all members of the 364912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # archive which possess that section. Heuristic: eliminate 365012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # all those which have a first or second character that is 365112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # a '.' (that is, objdump's representation of an unprintable 365212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # character.) This should work for all archives with less than 365312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # 0x302f exports -- but will fail for DLLs whose name actually 365412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # begins with a literal '.' or a single character followed by 365512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # a '.'. 365612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # 365712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Of those that remain, print the first one. 365812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $SED -e '/^\./d;/^.\./d;q' 365912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 366012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 366112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_cygming_gnu_implib_p ARG 366212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# This predicate returns with zero status (TRUE) if 366312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# ARG is a GNU/binutils-style import library. Returns 366412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# with nonzero status (FALSE) otherwise. 366512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_cygming_gnu_implib_p () 366612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 366712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_debug 366812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_to_tool_file "$1" func_convert_file_msys_to_w32 366912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 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)$'` 367012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -n "$func_cygming_gnu_implib_tmp" 367112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 367212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 367312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_cygming_ms_implib_p ARG 367412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# This predicate returns with zero status (TRUE) if 367512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# ARG is an MS-style import library. Returns 367612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# with nonzero status (FALSE) otherwise. 367712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_cygming_ms_implib_p () 367812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 367912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_debug 368012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_to_tool_file "$1" func_convert_file_msys_to_w32 368112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` 368212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -n "$func_cygming_ms_implib_tmp" 368312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 368412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 368512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_cygming_dll_for_implib_fallback ARG 368612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Platform-specific function to extract the 368712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# name of the DLL associated with the specified 368812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# import library ARG. 368912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# 369012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# This fallback implementation is for use when $DLLTOOL 369112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# does not support the --identify-strict option. 369212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Invoked by eval'ing the libtool variable 369312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# $sharedlib_from_linklib_cmd 369412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Result is available in the variable 369512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# $sharedlib_from_linklib_result 369612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_cygming_dll_for_implib_fallback () 369712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 369812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_debug 369912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if func_cygming_gnu_implib_p "$1" ; then 370012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # binutils import library 370112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` 370212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala elif func_cygming_ms_implib_p "$1" ; then 370312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # ms-generated import library 370412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` 370512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 370612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # unknown 370712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala sharedlib_from_linklib_result="" 370812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 370912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 371012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 371112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 371212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_extract_an_archive dir oldlib 371312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_extract_an_archive () 371412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 371512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_debug 371612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala f_ex_an_ar_dir="$1"; shift 371712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala f_ex_an_ar_oldlib="$1" 371812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$lock_old_archive_extraction" = yes; then 371912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala lockfile=$f_ex_an_ar_oldlib.lock 372012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do 372112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_echo "Waiting for $lockfile to be removed" 372212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala sleep 2 372312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 372412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 372512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ 372612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 'stat=$?; rm -f "$lockfile"; exit $stat' 372712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$lock_old_archive_extraction" = yes; then 372812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_dry_run || rm -f "$lockfile" 372912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 373012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then 373112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala : 373212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 373312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 373412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 373512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 373612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 373712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 373812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_extract_archives gentop oldlib ... 373912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_extract_archives () 374012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 374112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_debug 374212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala my_gentop="$1"; shift 374312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala my_oldlibs=${1+"$@"} 374412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala my_oldobjs="" 374512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala my_xlib="" 374612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala my_xabs="" 374712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala my_xdir="" 374812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 374912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for my_xlib in $my_oldlibs; do 375012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Extract the objects. 375112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $my_xlib in 375212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; 375312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) my_xabs=`pwd`"/$my_xlib" ;; 375412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 375512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_basename "$my_xlib" 375612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala my_xlib="$func_basename_result" 375712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala my_xlib_u=$my_xlib 375812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala while :; do 375912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case " $extracted_archives " in 376012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *" $my_xlib_u "*) 376112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_arith $extracted_serial + 1 376212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala extracted_serial=$func_arith_result 376312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala my_xlib_u=lt$extracted_serial-$my_xlib ;; 376412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) break ;; 376512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 376612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 376712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala extracted_archives="$extracted_archives $my_xlib_u" 376812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala my_xdir="$my_gentop/$my_xlib_u" 376912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 377012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_mkdir_p "$my_xdir" 377112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 377212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $host in 377312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *-darwin*) 377412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_verbose "Extracting $my_xabs" 377512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Do not bother doing anything if just a dry run 377612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_dry_run || { 377712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala darwin_orig_dir=`pwd` 377812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala cd $my_xdir || exit $? 377912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala darwin_archive=$my_xabs 378012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala darwin_curdir=`pwd` 378112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala darwin_base_archive=`basename "$darwin_archive"` 378212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` 378312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$darwin_arches"; then 378412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` 378512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala darwin_arch= 378612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" 378712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for darwin_arch in $darwin_arches ; do 378812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" 378912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" 379012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" 379112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_extract_an_archive "`pwd`" "${darwin_base_archive}" 379212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala cd "$darwin_curdir" 379312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" 379412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done # $darwin_arches 379512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ## Okay now we've a bunch of thin objects, gotta fatten them up :) 379612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` 379712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala darwin_file= 379812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala darwin_files= 379912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for darwin_file in $darwin_filelist; do 380012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` 380112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $LIPO -create -output "$darwin_file" $darwin_files 380212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done # $darwin_filelist 380312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $RM -rf unfat-$$ 380412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala cd "$darwin_orig_dir" 380512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 380612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala cd $darwin_orig_dir 380712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_extract_an_archive "$my_xdir" "$my_xabs" 380812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi # $darwin_arches 380912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } # !$opt_dry_run 381012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 381112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 381212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_extract_an_archive "$my_xdir" "$my_xabs" 381312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 381412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 381512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` 381612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 381712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 381812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_extract_archives_result="$my_oldobjs" 381912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 382012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 382112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 382212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_emit_wrapper [arg=no] 382312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# 382412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Emit a libtool wrapper script on stdout. 382512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Don't directly open a file because we may want to 382612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# incorporate the script contents within a cygwin/mingw 382712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# wrapper executable. Must ONLY be called from within 382812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_mode_link because it depends on a number of variables 382912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# set therein. 383012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# 383112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR 383212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# variable will take. If 'yes', then the emitted script 383312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# will assume that the directory in which it is stored is 383412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# the $objdir directory. This is a cygwin/mingw-specific 383512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# behavior. 383612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_emit_wrapper () 383712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 383812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_emit_wrapper_arg1=${1-no} 383912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 384012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $ECHO "\ 384112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#! $SHELL 384212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 384312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# $output - temporary wrapper script for $objdir/$outputname 384412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 384512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# 384612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# The $output program cannot be directly executed until all the libtool 384712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# libraries that it depends on are installed. 384812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# 384912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# This wrapper script should never be moved out of the build directory. 385012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# If it is, it will not operate correctly. 385112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 385212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Sed substitution that helps us do robust quoting. It backslashifies 385312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# metacharacters that are still active within double-quoted strings. 385412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialased_quote_subst='$sed_quote_subst' 385512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 385612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Be Bourne compatible 385712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaif test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then 385812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala emulate sh 385912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala NULLCMD=: 386012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which 386112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # is contrary to our usage. Disable this feature. 386212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala alias -g '\${1+\"\$@\"}'='\"\$@\"' 386312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala setopt NO_GLOB_SUBST 386412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaelse 386512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac 386612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafi 386712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaBIN_SH=xpg4; export BIN_SH # for Tru64 386812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaDUALCASE=1; export DUALCASE # for MKS sh 386912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 387012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# The HP-UX ksh and POSIX shell print the target directory to stdout 387112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# if CDPATH is set. 387212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala(unset CDPATH) >/dev/null 2>&1 && unset CDPATH 387312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 387412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialarelink_command=\"$relink_command\" 387512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 387612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# This environment variable determines our operation mode. 387712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaif test \"\$libtool_install_magic\" = \"$magic\"; then 387812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # install mode needs the following variables: 387912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala generated_by_libtool_version='$macro_version' 388012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala notinst_deplibs='$notinst_deplibs' 388112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaelse 388212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # When we are sourced in execute mode, \$file and \$ECHO are already set. 388312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test \"\$libtool_execute_magic\" != \"$magic\"; then 388412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala file=\"\$0\"" 388512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 388612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` 388712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $ECHO "\ 388812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 388912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# A function that is used when there is no print builtin or printf. 389012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_fallback_echo () 389112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 389212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval 'cat <<_LTECHO_EOF 389312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala\$1 389412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala_LTECHO_EOF' 389512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 389612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ECHO=\"$qECHO\" 389712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 389812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 389912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Very basic option parsing. These options are (a) specific to 390012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# the libtool wrapper, (b) are identical between the wrapper 390112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# /script/ and the wrapper /executable/ which is used only on 390212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# windows platforms, and (c) all begin with the string "--lt-" 390312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# (application programs are unlikely to have options which match 390412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# this pattern). 390512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# 390612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# There are only two supported options: --lt-debug and 390712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# --lt-dump-script. There is, deliberately, no --lt-help. 390812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# 390912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# The first argument to this parsing function should be the 391012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# script's $0 value, followed by "$@". 391112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialalt_option_debug= 391212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_parse_lt_options () 391312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 391412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala lt_script_arg0=\$0 391512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala shift 391612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for lt_opt 391712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala do 391812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case \"\$lt_opt\" in 391912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala --lt-debug) lt_option_debug=1 ;; 392012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala --lt-dump-script) 392112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` 392212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. 392312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` 392412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala cat \"\$lt_dump_D/\$lt_dump_F\" 392512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala exit 0 392612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 392712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala --lt-*) 392812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 392912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala exit 1 393012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 393112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 393212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 393312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 393412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Print the debug banner immediately: 393512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n \"\$lt_option_debug\"; then 393612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2 393712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 393812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 393912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 394012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Used when --lt-debug. Prints its arguments to stdout 394112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# (redirection is the responsibility of the caller) 394212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_lt_dump_args () 394312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 394412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala lt_dump_args_N=1; 394512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for lt_arg 394612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala do 394712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\" 394812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` 394912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 395012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 395112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 395212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Core function for launching the target application 395312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_exec_program_core () 395412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 395512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala" 395612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $host in 395712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Backslashes separate directories on plain windows 395812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *-*-mingw | *-*-os2* | *-cegcc*) 395912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $ECHO "\ 396012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n \"\$lt_option_debug\"; then 396112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2 396212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_lt_dump_args \${1+\"\$@\"} 1>&2 396312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 396412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} 396512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala" 396612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 396712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 396812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 396912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $ECHO "\ 397012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n \"\$lt_option_debug\"; then 397112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2 397212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_lt_dump_args \${1+\"\$@\"} 1>&2 397312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 397412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala exec \"\$progdir/\$program\" \${1+\"\$@\"} 397512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala" 397612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 397712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 397812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $ECHO "\ 397912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 398012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala exit 1 398112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 398212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 398312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# A function to encapsulate launching the target application 398412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Strips options in the --lt-* namespace from \$@ and 398512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# launches target application with the remaining arguments. 398612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_exec_program () 398712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 398812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case \" \$* \" in 398912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *\\ --lt-*) 399012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for lt_wr_arg 399112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala do 399212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case \$lt_wr_arg in 399312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala --lt-*) ;; 399412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; 399512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 399612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala shift 399712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done ;; 399812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 399912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_exec_program_core \${1+\"\$@\"} 400012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 400112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 400212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Parse options 400312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_parse_lt_options \"\$0\" \${1+\"\$@\"} 400412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 400512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Find the directory that this script lives in. 400612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` 400712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test \"x\$thisdir\" = \"x\$file\" && thisdir=. 400812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 400912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Follow symbolic links until we get to the real thisdir. 401012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` 401112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala while test -n \"\$file\"; do 401212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` 401312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 401412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # If there was a directory component, then change thisdir. 401512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test \"x\$destdir\" != \"x\$file\"; then 401612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case \"\$destdir\" in 401712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; 401812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) thisdir=\"\$thisdir/\$destdir\" ;; 401912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 402012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 402112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 402212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` 402312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` 402412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 402512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 402612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Usually 'no', except on cygwin/mingw when embedded into 402712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # the cwrapper. 402812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 402912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then 403012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # special case for '.' 403112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test \"\$thisdir\" = \".\"; then 403212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala thisdir=\`pwd\` 403312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 403412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # remove .libs from thisdir 403512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case \"\$thisdir\" in 403612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; 403712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $objdir ) thisdir=. ;; 403812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 403912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 404012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 404112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Try to get the absolute directory name. 404212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala absdir=\`cd \"\$thisdir\" && pwd\` 404312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -n \"\$absdir\" && thisdir=\"\$absdir\" 404412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala" 404512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 404612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$fast_install" = yes; then 404712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $ECHO "\ 404812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala program=lt-'$outputname'$exeext 404912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala progdir=\"\$thisdir/$objdir\" 405012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 405112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test ! -f \"\$progdir/\$program\" || 405212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ 405312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test \"X\$file\" != \"X\$progdir/\$program\"; }; then 405412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 405512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala file=\"\$\$-\$program\" 405612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 405712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test ! -d \"\$progdir\"; then 405812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $MKDIR \"\$progdir\" 405912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 406012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $RM \"\$progdir/\$file\" 406112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi" 406212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 406312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $ECHO "\ 406412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 406512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # relink executable if necessary 406612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n \"\$relink_command\"; then 406712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if relink_command_output=\`eval \$relink_command 2>&1\`; then : 406812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 406912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $ECHO \"\$relink_command_output\" >&2 407012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $RM \"\$progdir/\$file\" 407112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala exit 1 407212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 407312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 407412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 407512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || 407612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala { $RM \"\$progdir/\$program\"; 407712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } 407812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $RM \"\$progdir/\$file\" 407912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi" 408012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 408112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $ECHO "\ 408212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala program='$outputname' 408312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala progdir=\"\$thisdir/$objdir\" 408412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala" 408512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 408612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 408712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $ECHO "\ 408812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 408912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -f \"\$progdir/\$program\"; then" 409012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 409112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # fixup the dll searchpath if we need to. 409212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # 409312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Fix the DLL searchpath if we need to. Do this before prepending 409412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # to shlibpath, because on Windows, both are PATH and uninstalled 409512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # libraries must come first. 409612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$dllsearchpath"; then 409712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $ECHO "\ 409812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Add the dll search path components to the executable PATH 409912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala PATH=$dllsearchpath:\$PATH 410012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala" 410112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 410212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 410312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Export our shlibpath_var if we have one. 410412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 410512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $ECHO "\ 410612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Add our own library path to $shlibpath_var 410712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" 410812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 410912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Some systems cannot cope with colon-terminated $shlibpath_var 411012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # The second colon is a workaround for a bug in BeOS R4 sed 411112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` 411212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 411312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala export $shlibpath_var 411412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala" 411512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 411612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 411712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $ECHO "\ 411812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test \"\$libtool_execute_magic\" != \"$magic\"; then 411912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Run the actual program with our arguments. 412012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_exec_program \${1+\"\$@\"} 412112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 412212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 412312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # The program doesn't exist. 412412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 412512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 412612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 412712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala exit 1 412812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 412912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafi\ 413012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala" 413112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 413212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 413312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 413412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_emit_cwrapperexe_src 413512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# emit the source code for a wrapper executable on stdout 413612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Must ONLY be called from within func_mode_link because 413712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# it depends on a number of variable set therein. 413812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_emit_cwrapperexe_src () 413912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 414012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala cat <<EOF 414112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 414212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala/* $cwrappersource - temporary wrapper executable for $objdir/$outputname 414312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 414412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 414512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala The $output program cannot be directly executed until all the libtool 414612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala libraries that it depends on are installed. 414712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 414812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala This wrapper executable should never be moved out of the build directory. 414912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala If it is, it will not operate correctly. 415012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala*/ 415112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaEOF 415212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala cat <<"EOF" 415312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#ifdef _MSC_VER 415412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# define _CRT_SECURE_NO_DEPRECATE 1 415512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#endif 415612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#include <stdio.h> 415712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#include <stdlib.h> 415812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#ifdef _MSC_VER 415912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# include <direct.h> 416012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# include <process.h> 416112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# include <io.h> 416212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#else 416312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# include <unistd.h> 416412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# include <stdint.h> 416512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# ifdef __CYGWIN__ 416612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# include <io.h> 416712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# endif 416812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#endif 416912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#include <malloc.h> 417012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#include <stdarg.h> 417112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#include <assert.h> 417212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#include <string.h> 417312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#include <ctype.h> 417412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#include <errno.h> 417512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#include <fcntl.h> 417612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#include <sys/stat.h> 417712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 417812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala/* declarations of non-ANSI functions */ 417912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#if defined(__MINGW32__) 418012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# ifdef __STRICT_ANSI__ 418112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaint _putenv (const char *); 418212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# endif 418312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#elif defined(__CYGWIN__) 418412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# ifdef __STRICT_ANSI__ 418512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialachar *realpath (const char *, char *); 418612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaint putenv (char *); 418712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaint setenv (const char *, const char *, int); 418812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# endif 418912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala/* #elif defined (other platforms) ... */ 419012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#endif 419112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 419212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala/* portability defines, excluding path handling macros */ 419312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#if defined(_MSC_VER) 419412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# define setmode _setmode 419512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# define stat _stat 419612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# define chmod _chmod 419712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# define getcwd _getcwd 419812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# define putenv _putenv 419912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# define S_IXUSR _S_IEXEC 420012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# ifndef _INTPTR_T_DEFINED 420112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# define _INTPTR_T_DEFINED 420212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# define intptr_t int 420312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# endif 420412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#elif defined(__MINGW32__) 420512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# define setmode _setmode 420612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# define stat _stat 420712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# define chmod _chmod 420812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# define getcwd _getcwd 420912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# define putenv _putenv 421012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#elif defined(__CYGWIN__) 421112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# define HAVE_SETENV 421212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# define FOPEN_WB "wb" 421312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala/* #elif defined (other platforms) ... */ 421412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#endif 421512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 421612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#if defined(PATH_MAX) 421712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# define LT_PATHMAX PATH_MAX 421812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#elif defined(MAXPATHLEN) 421912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# define LT_PATHMAX MAXPATHLEN 422012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#else 422112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# define LT_PATHMAX 1024 422212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#endif 422312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 422412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#ifndef S_IXOTH 422512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# define S_IXOTH 0 422612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#endif 422712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#ifndef S_IXGRP 422812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# define S_IXGRP 0 422912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#endif 423012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 423112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala/* path handling portability macros */ 423212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#ifndef DIR_SEPARATOR 423312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# define DIR_SEPARATOR '/' 423412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# define PATH_SEPARATOR ':' 423512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#endif 423612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 423712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ 423812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala defined (__OS2__) 423912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# define HAVE_DOS_BASED_FILE_SYSTEM 424012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# define FOPEN_WB "wb" 424112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# ifndef DIR_SEPARATOR_2 424212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# define DIR_SEPARATOR_2 '\\' 424312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# endif 424412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# ifndef PATH_SEPARATOR_2 424512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# define PATH_SEPARATOR_2 ';' 424612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# endif 424712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#endif 424812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 424912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#ifndef DIR_SEPARATOR_2 425012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) 425112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#else /* DIR_SEPARATOR_2 */ 425212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# define IS_DIR_SEPARATOR(ch) \ 425312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) 425412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#endif /* DIR_SEPARATOR_2 */ 425512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 425612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#ifndef PATH_SEPARATOR_2 425712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) 425812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#else /* PATH_SEPARATOR_2 */ 425912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) 426012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#endif /* PATH_SEPARATOR_2 */ 426112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 426212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#ifndef FOPEN_WB 426312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# define FOPEN_WB "w" 426412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#endif 426512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#ifndef _O_BINARY 426612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# define _O_BINARY 0 426712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#endif 426812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 426912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) 427012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#define XFREE(stale) do { \ 427112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if (stale) { free ((void *) stale); stale = 0; } \ 427212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} while (0) 427312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 427412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#if defined(LT_DEBUGWRAPPER) 427512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialastatic int lt_debug = 1; 427612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#else 427712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialastatic int lt_debug = 0; 427812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#endif 427912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 428012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaconst char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ 428112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 428212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialavoid *xmalloc (size_t num); 428312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialachar *xstrdup (const char *string); 428412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaconst char *base_name (const char *name); 428512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialachar *find_executable (const char *wrapper); 428612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialachar *chase_symlinks (const char *pathspec); 428712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaint make_executable (const char *path); 428812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaint check_executable (const char *path); 428912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialachar *strendzap (char *str, const char *pat); 429012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialavoid lt_debugprintf (const char *file, int line, const char *fmt, ...); 429112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialavoid lt_fatal (const char *file, int line, const char *message, ...); 429212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialastatic const char *nonnull (const char *s); 429312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialastatic const char *nonempty (const char *s); 429412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialavoid lt_setenv (const char *name, const char *value); 429512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialachar *lt_extend_str (const char *orig_value, const char *add, int to_end); 429612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialavoid lt_update_exe_path (const char *name, const char *value); 429712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialavoid lt_update_lib_path (const char *name, const char *value); 429812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialachar **prepare_spawn (char **argv); 429912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialavoid lt_dump_script (FILE *f); 430012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaEOF 430112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 430212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala cat <<EOF 430312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialavolatile const char * MAGIC_EXE = "$magic_exe"; 430412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaconst char * LIB_PATH_VARNAME = "$shlibpath_var"; 430512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaEOF 430612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 430712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 430812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_to_host_path "$temp_rpath" 430912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala cat <<EOF 431012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaconst char * LIB_PATH_VALUE = "$func_to_host_path_result"; 431112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaEOF 431212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 431312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala cat <<"EOF" 431412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaconst char * LIB_PATH_VALUE = ""; 431512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaEOF 431612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 431712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 431812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$dllsearchpath"; then 431912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_to_host_path "$dllsearchpath:" 432012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala cat <<EOF 432112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaconst char * EXE_PATH_VARNAME = "PATH"; 432212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaconst char * EXE_PATH_VALUE = "$func_to_host_path_result"; 432312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaEOF 432412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 432512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala cat <<"EOF" 432612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaconst char * EXE_PATH_VARNAME = ""; 432712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaconst char * EXE_PATH_VALUE = ""; 432812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaEOF 432912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 433012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 433112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$fast_install" = yes; then 433212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala cat <<EOF 433312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaconst char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */ 433412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaEOF 433512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 433612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala cat <<EOF 433712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaconst char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */ 433812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaEOF 433912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 434012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 434112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 434212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala cat <<"EOF" 434312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 434412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#define LTWRAPPER_OPTION_PREFIX "--lt-" 434512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 434612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialastatic const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX; 434712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialastatic const char *dumpscript_opt = LTWRAPPER_OPTION_PREFIX "dump-script"; 434812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialastatic const char *debug_opt = LTWRAPPER_OPTION_PREFIX "debug"; 434912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 435012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaint 435112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialamain (int argc, char *argv[]) 435212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 435312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala char **newargz; 435412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala int newargc; 435512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala char *tmp_pathspec; 435612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala char *actual_cwrapper_path; 435712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala char *actual_cwrapper_name; 435812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala char *target_name; 435912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala char *lt_argv_zero; 436012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala intptr_t rval = 127; 436112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 436212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala int i; 436312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 436412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala program_name = (char *) xstrdup (base_name (argv[0])); 436512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala newargz = XMALLOC (char *, argc + 1); 436612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 436712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala /* very simple arg parsing; don't want to rely on getopt 436812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala * also, copy all non cwrapper options to newargz, except 436912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala * argz[0], which is handled differently 437012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala */ 437112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala newargc=0; 437212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for (i = 1; i < argc; i++) 437312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala { 437412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if (strcmp (argv[i], dumpscript_opt) == 0) 437512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala { 437612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaEOF 437712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case "$host" in 437812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *mingw* | *cygwin* ) 437912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # make stdout use "unix" line endings 438012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo " setmode(1,_O_BINARY);" 438112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 438212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 438312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 438412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala cat <<"EOF" 438512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala lt_dump_script (stdout); 438612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala return 0; 438712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } 438812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if (strcmp (argv[i], debug_opt) == 0) 438912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala { 439012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala lt_debug = 1; 439112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue; 439212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } 439312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if (strcmp (argv[i], ltwrapper_option_prefix) == 0) 439412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala { 439512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX 439612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala namespace, but it is not one of the ones we know about and 439712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala have already dealt with, above (inluding dump-script), then 439812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala report an error. Otherwise, targets might begin to believe 439912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala they are allowed to use options in the LTWRAPPER_OPTION_PREFIX 440012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala namespace. The first time any user complains about this, we'll 440112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala need to make LTWRAPPER_OPTION_PREFIX a configure-time option 440212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala or a configure.ac-settable value. 440312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala */ 440412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala lt_fatal (__FILE__, __LINE__, 440512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala "unrecognized %s option: '%s'", 440612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ltwrapper_option_prefix, argv[i]); 440712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } 440812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala /* otherwise ... */ 440912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala newargz[++newargc] = xstrdup (argv[i]); 441012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } 441112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala newargz[++newargc] = NULL; 441212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 441312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaEOF 441412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala cat <<EOF 441512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala /* The GNU banner must be the first non-error debug message */ 441612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\n"); 441712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaEOF 441812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala cat <<"EOF" 441912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]); 442012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name); 442112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 442212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala tmp_pathspec = find_executable (argv[0]); 442312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if (tmp_pathspec == NULL) 442412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]); 442512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala lt_debugprintf (__FILE__, __LINE__, 442612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala "(main) found exe (before symlink chase) at: %s\n", 442712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala tmp_pathspec); 442812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 442912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala actual_cwrapper_path = chase_symlinks (tmp_pathspec); 443012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala lt_debugprintf (__FILE__, __LINE__, 443112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala "(main) found exe (after symlink chase) at: %s\n", 443212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala actual_cwrapper_path); 443312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala XFREE (tmp_pathspec); 443412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 443512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path)); 443612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala strendzap (actual_cwrapper_path, actual_cwrapper_name); 443712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 443812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala /* wrapper name transforms */ 443912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala strendzap (actual_cwrapper_name, ".exe"); 444012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1); 444112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala XFREE (actual_cwrapper_name); 444212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala actual_cwrapper_name = tmp_pathspec; 444312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala tmp_pathspec = 0; 444412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 444512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala /* target_name transforms -- use actual target program name; might have lt- prefix */ 444612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala target_name = xstrdup (base_name (TARGET_PROGRAM_NAME)); 444712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala strendzap (target_name, ".exe"); 444812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala tmp_pathspec = lt_extend_str (target_name, ".exe", 1); 444912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala XFREE (target_name); 445012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala target_name = tmp_pathspec; 445112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala tmp_pathspec = 0; 445212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 445312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala lt_debugprintf (__FILE__, __LINE__, 445412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala "(main) libtool target name: %s\n", 445512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala target_name); 445612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaEOF 445712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 445812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala cat <<EOF 445912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala newargz[0] = 446012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala XMALLOC (char, (strlen (actual_cwrapper_path) + 446112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1)); 446212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala strcpy (newargz[0], actual_cwrapper_path); 446312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala strcat (newargz[0], "$objdir"); 446412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala strcat (newargz[0], "/"); 446512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaEOF 446612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 446712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala cat <<"EOF" 446812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala /* stop here, and copy so we don't have to do this twice */ 446912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala tmp_pathspec = xstrdup (newargz[0]); 447012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 447112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala /* do NOT want the lt- prefix here, so use actual_cwrapper_name */ 447212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala strcat (newargz[0], actual_cwrapper_name); 447312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 447412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala /* DO want the lt- prefix here if it exists, so use target_name */ 447512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1); 447612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala XFREE (tmp_pathspec); 447712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala tmp_pathspec = NULL; 447812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaEOF 447912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 448012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $host_os in 448112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala mingw*) 448212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala cat <<"EOF" 448312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala { 448412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala char* p; 448512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala while ((p = strchr (newargz[0], '\\')) != NULL) 448612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala { 448712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *p = '/'; 448812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } 448912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala while ((p = strchr (lt_argv_zero, '\\')) != NULL) 449012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala { 449112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *p = '/'; 449212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } 449312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } 449412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaEOF 449512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 449612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 449712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 449812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala cat <<"EOF" 449912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala XFREE (target_name); 450012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala XFREE (actual_cwrapper_path); 450112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala XFREE (actual_cwrapper_name); 450212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 450312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */ 450412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala lt_setenv ("DUALCASE", "1"); /* for MSK sh */ 450512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala /* Update the DLL searchpath. EXE_PATH_VALUE ($dllsearchpath) must 450612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath) 450712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala because on Windows, both *_VARNAMEs are PATH but uninstalled 450812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala libraries must come first. */ 450912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE); 451012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE); 451112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 451212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n", 451312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala nonnull (lt_argv_zero)); 451412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for (i = 0; i < newargc; i++) 451512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala { 451612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n", 451712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala i, nonnull (newargz[i])); 451812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } 451912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 452012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaEOF 452112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 452212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $host_os in 452312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala mingw*) 452412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala cat <<"EOF" 452512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala /* execv doesn't actually work on mingw as expected on unix */ 452612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala newargz = prepare_spawn (newargz); 452712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz); 452812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if (rval == -1) 452912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala { 453012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala /* failed to start process */ 453112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala lt_debugprintf (__FILE__, __LINE__, 453212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala "(main) failed to launch target \"%s\": %s\n", 453312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala lt_argv_zero, nonnull (strerror (errno))); 453412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala return 127; 453512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } 453612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala return rval; 453712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaEOF 453812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 453912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 454012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala cat <<"EOF" 454112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala execv (lt_argv_zero, newargz); 454212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala return rval; /* =127, but avoids unused variable warning */ 454312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaEOF 454412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 454512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 454612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 454712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala cat <<"EOF" 454812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 454912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 455012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialavoid * 455112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaxmalloc (size_t num) 455212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 455312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala void *p = (void *) malloc (num); 455412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if (!p) 455512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala lt_fatal (__FILE__, __LINE__, "memory exhausted"); 455612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 455712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala return p; 455812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 455912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 456012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialachar * 456112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaxstrdup (const char *string) 456212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 456312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala return string ? strcpy ((char *) xmalloc (strlen (string) + 1), 456412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala string) : NULL; 456512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 456612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 456712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaconst char * 456812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialabase_name (const char *name) 456912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 457012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala const char *base; 457112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 457212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 457312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala /* Skip over the disk name in MSDOS pathnames. */ 457412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if (isalpha ((unsigned char) name[0]) && name[1] == ':') 457512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala name += 2; 457612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#endif 457712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 457812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for (base = name; *name; name++) 457912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if (IS_DIR_SEPARATOR (*name)) 458012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala base = name + 1; 458112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala return base; 458212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 458312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 458412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaint 458512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialacheck_executable (const char *path) 458612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 458712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala struct stat st; 458812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 458912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n", 459012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala nonempty (path)); 459112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if ((!path) || (!*path)) 459212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala return 0; 459312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 459412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if ((stat (path, &st) >= 0) 459512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) 459612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala return 1; 459712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 459812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala return 0; 459912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 460012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 460112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaint 460212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialamake_executable (const char *path) 460312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 460412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala int rval = 0; 460512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala struct stat st; 460612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 460712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", 460812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala nonempty (path)); 460912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if ((!path) || (!*path)) 461012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala return 0; 461112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 461212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if (stat (path, &st) >= 0) 461312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala { 461412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); 461512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } 461612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala return rval; 461712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 461812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 461912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala/* Searches for the full path of the wrapper. Returns 462012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala newly allocated full path name if found, NULL otherwise 462112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala Does not chase symlinks, even on platforms that support them. 462212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala*/ 462312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialachar * 462412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafind_executable (const char *wrapper) 462512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 462612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala int has_slash = 0; 462712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala const char *p; 462812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala const char *p_next; 462912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala /* static buffer for getcwd */ 463012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala char tmp[LT_PATHMAX + 1]; 463112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala int tmp_len; 463212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala char *concat_name; 463312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 463412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", 463512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala nonempty (wrapper)); 463612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 463712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if ((wrapper == NULL) || (*wrapper == '\0')) 463812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala return NULL; 463912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 464012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala /* Absolute path? */ 464112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 464212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') 464312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala { 464412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala concat_name = xstrdup (wrapper); 464512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if (check_executable (concat_name)) 464612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala return concat_name; 464712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala XFREE (concat_name); 464812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } 464912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 465012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala { 465112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#endif 465212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if (IS_DIR_SEPARATOR (wrapper[0])) 465312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala { 465412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala concat_name = xstrdup (wrapper); 465512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if (check_executable (concat_name)) 465612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala return concat_name; 465712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala XFREE (concat_name); 465812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } 465912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 466012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } 466112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#endif 466212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 466312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for (p = wrapper; *p; p++) 466412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if (*p == '/') 466512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala { 466612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala has_slash = 1; 466712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala break; 466812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } 466912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if (!has_slash) 467012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala { 467112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala /* no slashes; search PATH */ 467212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala const char *path = getenv ("PATH"); 467312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if (path != NULL) 467412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala { 467512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for (p = path; *p; p = p_next) 467612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala { 467712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala const char *q; 467812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala size_t p_len; 467912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for (q = p; *q; q++) 468012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if (IS_PATH_SEPARATOR (*q)) 468112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala break; 468212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala p_len = q - p; 468312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala p_next = (*q == '\0' ? q : q + 1); 468412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if (p_len == 0) 468512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala { 468612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala /* empty path: current directory */ 468712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if (getcwd (tmp, LT_PATHMAX) == NULL) 468812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", 468912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala nonnull (strerror (errno))); 469012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala tmp_len = strlen (tmp); 469112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala concat_name = 469212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); 469312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala memcpy (concat_name, tmp, tmp_len); 469412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala concat_name[tmp_len] = '/'; 469512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala strcpy (concat_name + tmp_len + 1, wrapper); 469612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } 469712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 469812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala { 469912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala concat_name = 470012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); 470112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala memcpy (concat_name, p, p_len); 470212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala concat_name[p_len] = '/'; 470312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala strcpy (concat_name + p_len + 1, wrapper); 470412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } 470512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if (check_executable (concat_name)) 470612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala return concat_name; 470712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala XFREE (concat_name); 470812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } 470912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } 471012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala /* not found in PATH; assume curdir */ 471112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } 471212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala /* Relative path | not found in path: prepend cwd */ 471312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if (getcwd (tmp, LT_PATHMAX) == NULL) 471412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", 471512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala nonnull (strerror (errno))); 471612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala tmp_len = strlen (tmp); 471712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); 471812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala memcpy (concat_name, tmp, tmp_len); 471912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala concat_name[tmp_len] = '/'; 472012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala strcpy (concat_name + tmp_len + 1, wrapper); 472112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 472212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if (check_executable (concat_name)) 472312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala return concat_name; 472412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala XFREE (concat_name); 472512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala return NULL; 472612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 472712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 472812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialachar * 472912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialachase_symlinks (const char *pathspec) 473012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 473112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#ifndef S_ISLNK 473212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala return xstrdup (pathspec); 473312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#else 473412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala char buf[LT_PATHMAX]; 473512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala struct stat s; 473612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala char *tmp_pathspec = xstrdup (pathspec); 473712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala char *p; 473812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala int has_symlinks = 0; 473912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala while (strlen (tmp_pathspec) && !has_symlinks) 474012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala { 474112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala lt_debugprintf (__FILE__, __LINE__, 474212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala "checking path component for symlinks: %s\n", 474312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala tmp_pathspec); 474412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if (lstat (tmp_pathspec, &s) == 0) 474512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala { 474612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if (S_ISLNK (s.st_mode) != 0) 474712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala { 474812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala has_symlinks = 1; 474912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala break; 475012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } 475112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 475212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala /* search backwards for last DIR_SEPARATOR */ 475312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala p = tmp_pathspec + strlen (tmp_pathspec) - 1; 475412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) 475512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala p--; 475612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) 475712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala { 475812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala /* no more DIR_SEPARATORS left */ 475912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala break; 476012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } 476112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *p = '\0'; 476212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } 476312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 476412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala { 476512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala lt_fatal (__FILE__, __LINE__, 476612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala "error accessing file \"%s\": %s", 476712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala tmp_pathspec, nonnull (strerror (errno))); 476812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } 476912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } 477012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala XFREE (tmp_pathspec); 477112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 477212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if (!has_symlinks) 477312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala { 477412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala return xstrdup (pathspec); 477512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } 477612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 477712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala tmp_pathspec = realpath (pathspec, buf); 477812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if (tmp_pathspec == 0) 477912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala { 478012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala lt_fatal (__FILE__, __LINE__, 478112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala "could not follow symlinks for %s", pathspec); 478212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } 478312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala return xstrdup (tmp_pathspec); 478412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#endif 478512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 478612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 478712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialachar * 478812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialastrendzap (char *str, const char *pat) 478912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 479012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala size_t len, patlen; 479112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 479212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala assert (str != NULL); 479312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala assert (pat != NULL); 479412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 479512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala len = strlen (str); 479612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala patlen = strlen (pat); 479712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 479812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if (patlen <= len) 479912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala { 480012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala str += len - patlen; 480112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if (strcmp (str, pat) == 0) 480212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *str = '\0'; 480312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } 480412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala return str; 480512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 480612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 480712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialavoid 480812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialalt_debugprintf (const char *file, int line, const char *fmt, ...) 480912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 481012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala va_list args; 481112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if (lt_debug) 481212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala { 481312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); 481412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala va_start (args, fmt); 481512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala (void) vfprintf (stderr, fmt, args); 481612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala va_end (args); 481712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } 481812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 481912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 482012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialastatic void 482112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialalt_error_core (int exit_status, const char *file, 482212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala int line, const char *mode, 482312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala const char *message, va_list ap) 482412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 482512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); 482612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala vfprintf (stderr, message, ap); 482712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fprintf (stderr, ".\n"); 482812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 482912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if (exit_status >= 0) 483012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala exit (exit_status); 483112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 483212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 483312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialavoid 483412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialalt_fatal (const char *file, int line, const char *message, ...) 483512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 483612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala va_list ap; 483712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala va_start (ap, message); 483812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); 483912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala va_end (ap); 484012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 484112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 484212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialastatic const char * 484312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialanonnull (const char *s) 484412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 484512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala return s ? s : "(null)"; 484612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 484712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 484812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialastatic const char * 484912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialanonempty (const char *s) 485012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 485112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala return (s && !*s) ? "(empty)" : nonnull (s); 485212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 485312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 485412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialavoid 485512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialalt_setenv (const char *name, const char *value) 485612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 485712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala lt_debugprintf (__FILE__, __LINE__, 485812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala "(lt_setenv) setting '%s' to '%s'\n", 485912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala nonnull (name), nonnull (value)); 486012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala { 486112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#ifdef HAVE_SETENV 486212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala /* always make a copy, for consistency with !HAVE_SETENV */ 486312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala char *str = xstrdup (value); 486412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala setenv (name, str, 1); 486512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#else 486612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala int len = strlen (name) + 1 + strlen (value) + 1; 486712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala char *str = XMALLOC (char, len); 486812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala sprintf (str, "%s=%s", name, value); 486912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if (putenv (str) != EXIT_SUCCESS) 487012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala { 487112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala XFREE (str); 487212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } 487312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#endif 487412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } 487512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 487612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 487712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialachar * 487812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialalt_extend_str (const char *orig_value, const char *add, int to_end) 487912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 488012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala char *new_value; 488112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if (orig_value && *orig_value) 488212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala { 488312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala int orig_value_len = strlen (orig_value); 488412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala int add_len = strlen (add); 488512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala new_value = XMALLOC (char, add_len + orig_value_len + 1); 488612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if (to_end) 488712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala { 488812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala strcpy (new_value, orig_value); 488912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala strcpy (new_value + orig_value_len, add); 489012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } 489112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 489212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala { 489312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala strcpy (new_value, add); 489412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala strcpy (new_value + add_len, orig_value); 489512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } 489612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } 489712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 489812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala { 489912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala new_value = xstrdup (add); 490012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } 490112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala return new_value; 490212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 490312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 490412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialavoid 490512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialalt_update_exe_path (const char *name, const char *value) 490612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 490712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala lt_debugprintf (__FILE__, __LINE__, 490812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", 490912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala nonnull (name), nonnull (value)); 491012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 491112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if (name && *name && value && *value) 491212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala { 491312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala char *new_value = lt_extend_str (getenv (name), value, 0); 491412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala /* some systems can't cope with a ':'-terminated path #' */ 491512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala int len = strlen (new_value); 491612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) 491712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala { 491812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala new_value[len-1] = '\0'; 491912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } 492012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala lt_setenv (name, new_value); 492112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala XFREE (new_value); 492212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } 492312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 492412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 492512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialavoid 492612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialalt_update_lib_path (const char *name, const char *value) 492712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 492812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala lt_debugprintf (__FILE__, __LINE__, 492912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", 493012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala nonnull (name), nonnull (value)); 493112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 493212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if (name && *name && value && *value) 493312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala { 493412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala char *new_value = lt_extend_str (getenv (name), value, 0); 493512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala lt_setenv (name, new_value); 493612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala XFREE (new_value); 493712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } 493812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 493912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 494012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaEOF 494112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $host_os in 494212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala mingw*) 494312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala cat <<"EOF" 494412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 494512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala/* Prepares an argument vector before calling spawn(). 494612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala Note that spawn() does not by itself call the command interpreter 494712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : 494812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); 494912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala GetVersionEx(&v); 495012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala v.dwPlatformId == VER_PLATFORM_WIN32_NT; 495112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala }) ? "cmd.exe" : "command.com"). 495212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala Instead it simply concatenates the arguments, separated by ' ', and calls 495312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala CreateProcess(). We must quote the arguments since Win32 CreateProcess() 495412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a 495512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala special way: 495612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala - Space and tab are interpreted as delimiters. They are not treated as 495712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala delimiters if they are surrounded by double quotes: "...". 495812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala - Unescaped double quotes are removed from the input. Their only effect is 495912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala that within double quotes, space and tab are treated like normal 496012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala characters. 496112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala - Backslashes not followed by double quotes are not special. 496212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala - But 2*n+1 backslashes followed by a double quote become 496312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala n backslashes followed by a double quote (n >= 0): 496412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala \" -> " 496512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala \\\" -> \" 496612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala \\\\\" -> \\" 496712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala */ 496812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#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" 496912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala#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" 497012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialachar ** 497112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaprepare_spawn (char **argv) 497212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 497312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala size_t argc; 497412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala char **new_argv; 497512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala size_t i; 497612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 497712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala /* Count number of arguments. */ 497812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for (argc = 0; argv[argc] != NULL; argc++) 497912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ; 498012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 498112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala /* Allocate new argument vector. */ 498212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala new_argv = XMALLOC (char *, argc + 1); 498312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 498412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala /* Put quoted arguments into the new argument vector. */ 498512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for (i = 0; i < argc; i++) 498612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala { 498712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala const char *string = argv[i]; 498812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 498912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if (string[0] == '\0') 499012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala new_argv[i] = xstrdup ("\"\""); 499112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) 499212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala { 499312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); 499412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala size_t length; 499512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala unsigned int backslashes; 499612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala const char *s; 499712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala char *quoted_string; 499812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala char *p; 499912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 500012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala length = 0; 500112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala backslashes = 0; 500212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if (quote_around) 500312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala length++; 500412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for (s = string; *s != '\0'; s++) 500512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala { 500612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala char c = *s; 500712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if (c == '"') 500812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala length += backslashes + 1; 500912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala length++; 501012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if (c == '\\') 501112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala backslashes++; 501212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 501312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala backslashes = 0; 501412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } 501512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if (quote_around) 501612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala length += backslashes + 1; 501712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 501812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala quoted_string = XMALLOC (char, length + 1); 501912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 502012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala p = quoted_string; 502112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala backslashes = 0; 502212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if (quote_around) 502312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *p++ = '"'; 502412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for (s = string; *s != '\0'; s++) 502512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala { 502612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala char c = *s; 502712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if (c == '"') 502812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala { 502912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala unsigned int j; 503012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for (j = backslashes + 1; j > 0; j--) 503112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *p++ = '\\'; 503212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } 503312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *p++ = c; 503412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if (c == '\\') 503512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala backslashes++; 503612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 503712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala backslashes = 0; 503812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } 503912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if (quote_around) 504012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala { 504112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala unsigned int j; 504212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for (j = backslashes; j > 0; j--) 504312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *p++ = '\\'; 504412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *p++ = '"'; 504512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } 504612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *p = '\0'; 504712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 504812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala new_argv[i] = quoted_string; 504912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } 505012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 505112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala new_argv[i] = (char *) string; 505212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } 505312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala new_argv[argc] = NULL; 505412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 505512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala return new_argv; 505612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 505712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaEOF 505812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 505912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 506012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 506112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala cat <<"EOF" 506212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialavoid lt_dump_script (FILE* f) 506312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 506412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaEOF 506512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_emit_wrapper yes | 506612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $SED -n -e ' 506712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialas/^\(.\{79\}\)\(..*\)/\1\ 506812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala\2/ 506912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialah 507012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialas/\([\\"]\)/\\\1/g 507112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialas/$/\\n/ 507212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialas/\([^\n]*\).*/ fputs ("\1", f);/p 507312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialag 507412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaD' 507512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala cat <<"EOF" 507612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 507712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaEOF 507812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 507912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# end: func_emit_cwrapperexe_src 508012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 508112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_win32_import_lib_p ARG 508212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# True if ARG is an import lib, as indicated by $file_magic_cmd 508312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_win32_import_lib_p () 508412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 508512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_debug 508612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in 508712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *import*) : ;; 508812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) false ;; 508912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 509012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 509112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 509212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_mode_link arg... 509312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_mode_link () 509412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 509512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_debug 509612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $host in 509712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 509812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # It is impossible to link a dll without this setting, and 509912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # we shouldn't force the makefile maintainer to figure out 510012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # which system we are compiling for in order to pass an extra 510112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # flag for every libtool invocation. 510212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # allow_undefined=no 510312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 510412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # FIXME: Unfortunately, there are problems with the above when trying 510512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # to make a dll which has undefined symbols, in which case not 510612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # even a static library is built. For now, we need to specify 510712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # -no-undefined on the libtool link line when we can be certain 510812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # that all symbols are satisfied, otherwise we get a static library. 510912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala allow_undefined=yes 511012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 511112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 511212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala allow_undefined=yes 511312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 511412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 511512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala libtool_args=$nonopt 511612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala base_compile="$nonopt $@" 511712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala compile_command=$nonopt 511812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala finalize_command=$nonopt 511912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 512012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala compile_rpath= 512112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala finalize_rpath= 512212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala compile_shlibpath= 512312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala finalize_shlibpath= 512412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala convenience= 512512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala old_convenience= 512612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala deplibs= 512712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala old_deplibs= 512812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala compiler_flags= 512912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala linker_flags= 513012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala dllsearchpath= 513112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala lib_search_path=`pwd` 513212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala inst_prefix_dir= 513312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala new_inherited_linker_flags= 513412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 513512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala avoid_version=no 513612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala bindir= 513712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala dlfiles= 513812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala dlprefiles= 513912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala dlself=no 514012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala export_dynamic=no 514112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala export_symbols= 514212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala export_symbols_regex= 514312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala generated= 514412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala libobjs= 514512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ltlibs= 514612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala module=no 514712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala no_install=no 514812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala objs= 514912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala non_pic_objects= 515012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala precious_files_regex= 515112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala prefer_static_libs=no 515212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala preload=no 515312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala prev= 515412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala prevarg= 515512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala release= 515612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala rpath= 515712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala xrpath= 515812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala perm_rpath= 515912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala temp_rpath= 516012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala thread_safe=no 516112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala vinfo= 516212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala vinfo_number=no 516312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala weak_libs= 516412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala single_module="${wl}-single_module" 516512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_infer_tag $base_compile 516612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 516712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # We need to know -static, to get the right output filenames. 516812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for arg 516912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala do 517012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $arg in 517112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -shared) 517212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test "$build_libtool_libs" != yes && \ 517312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_fatal_configuration "can not build a shared library" 517412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala build_old_libs=no 517512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala break 517612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 517712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -all-static | -static | -static-libtool-libs) 517812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $arg in 517912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -all-static) 518012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then 518112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_warning "complete static linking is impossible in this configuration" 518212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 518312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$link_static_flag"; then 518412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala dlopen_self=$dlopen_self_static 518512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 518612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala prefer_static_libs=yes 518712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 518812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -static) 518912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -z "$pic_flag" && test -n "$link_static_flag"; then 519012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala dlopen_self=$dlopen_self_static 519112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 519212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala prefer_static_libs=built 519312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 519412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -static-libtool-libs) 519512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -z "$pic_flag" && test -n "$link_static_flag"; then 519612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala dlopen_self=$dlopen_self_static 519712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 519812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala prefer_static_libs=yes 519912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 520012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 520112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala build_libtool_libs=no 520212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala build_old_libs=yes 520312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala break 520412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 520512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 520612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 520712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 520812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # See if our shared archives depend on static archives. 520912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -n "$old_archive_from_new_cmds" && build_old_libs=yes 521012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 521112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Go through the arguments, transforming them on the way. 521212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala while test "$#" -gt 0; do 521312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala arg="$1" 521412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala shift 521512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_quote_for_eval "$arg" 521612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala qarg=$func_quote_for_eval_unquoted_result 521712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append libtool_args " $func_quote_for_eval_result" 521812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 521912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # If the previous option needs an argument, assign it. 522012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$prev"; then 522112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $prev in 522212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala output) 522312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append compile_command " @OUTPUT@" 522412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append finalize_command " @OUTPUT@" 522512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 522612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 522712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 522812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $prev in 522912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala bindir) 523012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala bindir="$arg" 523112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala prev= 523212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 523312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 523412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala dlfiles|dlprefiles) 523512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$preload" = no; then 523612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Add the symbol object into the linking commands. 523712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append compile_command " @SYMFILE@" 523812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append finalize_command " @SYMFILE@" 523912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala preload=yes 524012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 524112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $arg in 524212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *.la | *.lo) ;; # We handle these cases below. 524312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala force) 524412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$dlself" = no; then 524512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala dlself=needless 524612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala export_dynamic=yes 524712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 524812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala prev= 524912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 525012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 525112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala self) 525212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$prev" = dlprefiles; then 525312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala dlself=yes 525412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then 525512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala dlself=yes 525612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 525712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala dlself=needless 525812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala export_dynamic=yes 525912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 526012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala prev= 526112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 526212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 526312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 526412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$prev" = dlfiles; then 526512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append dlfiles " $arg" 526612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 526712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append dlprefiles " $arg" 526812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 526912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala prev= 527012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 527112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 527212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 527312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 527412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala expsyms) 527512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala export_symbols="$arg" 527612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -f "$arg" \ 527712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala || func_fatal_error "symbol file \`$arg' does not exist" 527812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala prev= 527912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 528012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 528112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala expsyms_regex) 528212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala export_symbols_regex="$arg" 528312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala prev= 528412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 528512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 528612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala framework) 528712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $host in 528812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *-*-darwin*) 528912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case "$deplibs " in 529012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *" $qarg.ltframework "*) ;; 529112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) func_append deplibs " $qarg.ltframework" # this is fixed later 529212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 529312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 529412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 529512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 529612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala prev= 529712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 529812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 529912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala inst_prefix) 530012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala inst_prefix_dir="$arg" 530112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala prev= 530212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 530312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 530412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala objectlist) 530512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -f "$arg"; then 530612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala save_arg=$arg 530712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala moreargs= 530812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for fil in `cat "$save_arg"` 530912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala do 531012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_append moreargs " $fil" 531112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala arg=$fil 531212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # A libtool-controlled object. 531312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 531412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Check to see that this really is a libtool object. 531512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if func_lalib_unsafe_p "$arg"; then 531612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala pic_object= 531712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala non_pic_object= 531812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 531912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Read the .lo file 532012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_source "$arg" 532112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 532212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -z "$pic_object" || 532312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -z "$non_pic_object" || 532412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test "$pic_object" = none && 532512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test "$non_pic_object" = none; then 532612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_fatal_error "cannot find name of object for \`$arg'" 532712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 532812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 532912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Extract subdirectory from the argument. 533012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_dirname "$arg" "/" "" 533112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala xdir="$func_dirname_result" 533212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 533312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$pic_object" != none; then 533412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Prepend the subdirectory the object is found in. 533512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala pic_object="$xdir$pic_object" 533612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 533712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$prev" = dlfiles; then 533812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 533912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append dlfiles " $pic_object" 534012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala prev= 534112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 534212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 534312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # If libtool objects are unsupported, then we need to preload. 534412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala prev=dlprefiles 534512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 534612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 534712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 534812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # CHECK ME: I think I busted this. -Ossama 534912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$prev" = dlprefiles; then 535012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Preload the old-style object. 535112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append dlprefiles " $pic_object" 535212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala prev= 535312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 535412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 535512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # A PIC object. 535612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append libobjs " $pic_object" 535712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala arg="$pic_object" 535812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 535912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 536012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Non-PIC object. 536112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$non_pic_object" != none; then 536212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Prepend the subdirectory the object is found in. 536312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala non_pic_object="$xdir$non_pic_object" 536412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 536512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # A standard non-PIC object 536612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append non_pic_objects " $non_pic_object" 536712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -z "$pic_object" || test "$pic_object" = none ; then 536812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala arg="$non_pic_object" 536912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 537012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 537112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # If the PIC object exists, use it instead. 537212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # $xdir was prepended to $pic_object above. 537312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala non_pic_object="$pic_object" 537412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append non_pic_objects " $non_pic_object" 537512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 537612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 537712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Only an error if not doing a dry-run. 537812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if $opt_dry_run; then 537912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Extract subdirectory from the argument. 538012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_dirname "$arg" "/" "" 538112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala xdir="$func_dirname_result" 538212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 538312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_lo2o "$arg" 538412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala pic_object=$xdir$objdir/$func_lo2o_result 538512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala non_pic_object=$xdir$func_lo2o_result 538612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append libobjs " $pic_object" 538712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append non_pic_objects " $non_pic_object" 538812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 538912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_fatal_error "\`$arg' is not a valid libtool object" 539012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 539112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 539212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 539312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 539412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_fatal_error "link input file \`$arg' does not exist" 539512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 539612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala arg=$save_arg 539712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala prev= 539812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 539912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 540012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala precious_regex) 540112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala precious_files_regex="$arg" 540212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala prev= 540312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 540412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 540512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala release) 540612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala release="-$arg" 540712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala prev= 540812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 540912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 541012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala rpath | xrpath) 541112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # We need an absolute path. 541212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $arg in 541312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala [\\/]* | [A-Za-z]:[\\/]*) ;; 541412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 541512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_fatal_error "only absolute run-paths are allowed" 541612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 541712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 541812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$prev" = rpath; then 541912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case "$rpath " in 542012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *" $arg "*) ;; 542112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) func_append rpath " $arg" ;; 542212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 542312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 542412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case "$xrpath " in 542512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *" $arg "*) ;; 542612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) func_append xrpath " $arg" ;; 542712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 542812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 542912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala prev= 543012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 543112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 543212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala shrext) 543312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala shrext_cmds="$arg" 543412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala prev= 543512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 543612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 543712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala weak) 543812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append weak_libs " $arg" 543912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala prev= 544012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 544112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 544212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala xcclinker) 544312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append linker_flags " $qarg" 544412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append compiler_flags " $qarg" 544512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala prev= 544612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append compile_command " $qarg" 544712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append finalize_command " $qarg" 544812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 544912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 545012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala xcompiler) 545112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append compiler_flags " $qarg" 545212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala prev= 545312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append compile_command " $qarg" 545412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append finalize_command " $qarg" 545512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 545612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 545712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala xlinker) 545812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append linker_flags " $qarg" 545912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append compiler_flags " $wl$qarg" 546012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala prev= 546112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append compile_command " $wl$qarg" 546212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append finalize_command " $wl$qarg" 546312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 546412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 546512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 546612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval "$prev=\"\$arg\"" 546712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala prev= 546812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 546912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 547012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 547112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi # test -n "$prev" 547212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 547312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala prevarg="$arg" 547412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 547512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $arg in 547612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -all-static) 547712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$link_static_flag"; then 547812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # See comment for -static flag below, for more details. 547912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append compile_command " $link_static_flag" 548012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append finalize_command " $link_static_flag" 548112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 548212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 548312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 548412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 548512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -allow-undefined) 548612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # FIXME: remove this flag sometime in the future. 548712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_fatal_error "\`-allow-undefined' must not be used because it is the default" 548812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 548912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 549012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -avoid-version) 549112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala avoid_version=yes 549212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 549312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 549412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 549512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -bindir) 549612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala prev=bindir 549712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 549812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 549912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 550012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -dlopen) 550112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala prev=dlfiles 550212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 550312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 550412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 550512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -dlpreopen) 550612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala prev=dlprefiles 550712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 550812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 550912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 551012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -export-dynamic) 551112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala export_dynamic=yes 551212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 551312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 551412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 551512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -export-symbols | -export-symbols-regex) 551612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$export_symbols" || test -n "$export_symbols_regex"; then 551712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_fatal_error "more than one -exported-symbols argument is not allowed" 551812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 551912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "X$arg" = "X-export-symbols"; then 552012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala prev=expsyms 552112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 552212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala prev=expsyms_regex 552312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 552412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 552512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 552612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 552712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -framework) 552812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala prev=framework 552912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 553012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 553112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 553212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -inst-prefix-dir) 553312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala prev=inst_prefix 553412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 553512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 553612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 553712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* 553812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # so, if we see these flags be careful not to treat them like -L 553912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -L[A-Z][A-Z]*:*) 554012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $with_gcc/$host in 554112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala no/*-*-irix* | /*-*-irix*) 554212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append compile_command " $arg" 554312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append finalize_command " $arg" 554412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 554512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 554612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 554712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 554812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 554912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -L*) 555012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_stripname "-L" '' "$arg" 555112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -z "$func_stripname_result"; then 555212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$#" -gt 0; then 555312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_fatal_error "require no space between \`-L' and \`$1'" 555412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 555512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_fatal_error "need path for \`-L' option" 555612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 555712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 555812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_resolve_sysroot "$func_stripname_result" 555912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala dir=$func_resolve_sysroot_result 556012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # We need an absolute path. 556112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $dir in 556212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala [\\/]* | [A-Za-z]:[\\/]*) ;; 556312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 556412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala absdir=`cd "$dir" && pwd` 556512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -z "$absdir" && \ 556612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_fatal_error "cannot determine absolute directory name of \`$dir'" 556712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala dir="$absdir" 556812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 556912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 557012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case "$deplibs " in 557112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *" -L$dir "* | *" $arg "*) 557212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Will only happen for absolute or sysroot arguments 557312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 557412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 557512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Preserve sysroot, but never include relative directories 557612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $dir in 557712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; 557812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) func_append deplibs " -L$dir" ;; 557912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 558012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append lib_search_path " $dir" 558112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 558212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 558312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $host in 558412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 558512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` 558612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case :$dllsearchpath: in 558712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *":$dir:"*) ;; 558812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ::) dllsearchpath=$dir;; 558912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) func_append dllsearchpath ":$dir";; 559012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 559112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case :$dllsearchpath: in 559212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *":$testbindir:"*) ;; 559312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ::) dllsearchpath=$testbindir;; 559412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) func_append dllsearchpath ":$testbindir";; 559512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 559612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 559712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 559812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 559912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 560012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 560112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -l*) 560212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then 560312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $host in 560412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) 560512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # These systems don't actually have a C or math library (as such) 560612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 560712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 560812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *-*-os2*) 560912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # These systems don't actually have a C library (as such) 561012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test "X$arg" = "X-lc" && continue 561112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 561212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 561312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Do not include libc due to us having libc/libc_r. 561412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test "X$arg" = "X-lc" && continue 561512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 561612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *-*-rhapsody* | *-*-darwin1.[012]) 561712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Rhapsody C and math libraries are in the System framework 561812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append deplibs " System.ltframework" 561912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 562012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 562112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *-*-sco3.2v5* | *-*-sco5v6*) 562212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Causes problems with __ctype 562312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test "X$arg" = "X-lc" && continue 562412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 562512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 562612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Compiler inserts libc in the correct place for threads to work 562712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test "X$arg" = "X-lc" && continue 562812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 562912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 563012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala elif test "X$arg" = "X-lc_r"; then 563112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $host in 563212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 563312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Do not include libc_r directly, use -pthread flag. 563412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 563512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 563612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 563712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 563812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append deplibs " $arg" 563912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 564012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 564112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 564212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -module) 564312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala module=yes 564412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 564512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 564612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 564712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Tru64 UNIX uses -model [arg] to determine the layout of C++ 564812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # classes, name mangling, and exception handling. 564912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Darwin uses the -arch flag to determine output architecture. 565012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -model|-arch|-isysroot|--sysroot) 565112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append compiler_flags " $arg" 565212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append compile_command " $arg" 565312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append finalize_command " $arg" 565412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala prev=xcompiler 565512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 565612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 565712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 565812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ 565912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) 566012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append compiler_flags " $arg" 566112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append compile_command " $arg" 566212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append finalize_command " $arg" 566312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case "$new_inherited_linker_flags " in 566412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *" $arg "*) ;; 566512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala * ) func_append new_inherited_linker_flags " $arg" ;; 566612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 566712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 566812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 566912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 567012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -multi_module) 567112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala single_module="${wl}-multi_module" 567212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 567312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 567412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 567512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -no-fast-install) 567612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fast_install=no 567712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 567812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 567912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 568012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -no-install) 568112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $host in 568212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) 568312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # The PATH hackery in wrapper scripts is required on Windows 568412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # and Darwin in order for the loader to find any dlls it needs. 568512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_warning "\`-no-install' is ignored for $host" 568612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_warning "assuming \`-no-fast-install' instead" 568712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fast_install=no 568812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 568912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) no_install=yes ;; 569012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 569112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 569212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 569312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 569412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -no-undefined) 569512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala allow_undefined=no 569612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 569712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 569812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 569912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -objectlist) 570012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala prev=objectlist 570112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 570212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 570312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 570412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -o) prev=output ;; 570512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 570612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -precious-files-regex) 570712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala prev=precious_regex 570812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 570912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 571012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 571112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -release) 571212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala prev=release 571312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 571412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 571512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 571612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -rpath) 571712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala prev=rpath 571812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 571912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 572012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 572112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -R) 572212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala prev=xrpath 572312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 572412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 572512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 572612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -R*) 572712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_stripname '-R' '' "$arg" 572812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala dir=$func_stripname_result 572912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # We need an absolute path. 573012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $dir in 573112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala [\\/]* | [A-Za-z]:[\\/]*) ;; 573212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala =*) 573312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_stripname '=' '' "$dir" 573412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala dir=$lt_sysroot$func_stripname_result 573512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 573612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 573712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_fatal_error "only absolute run-paths are allowed" 573812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 573912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 574012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case "$xrpath " in 574112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *" $dir "*) ;; 574212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) func_append xrpath " $dir" ;; 574312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 574412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 574512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 574612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 574712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -shared) 574812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # The effects of -shared are defined in a previous loop. 574912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 575012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 575112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 575212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -shrext) 575312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala prev=shrext 575412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 575512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 575612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 575712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -static | -static-libtool-libs) 575812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # The effects of -static are defined in a previous loop. 575912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # We used to do the same as -all-static on platforms that 576012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # didn't have a PIC flag, but the assumption that the effects 576112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # would be equivalent was wrong. It would break on at least 576212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Digital Unix and AIX. 576312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 576412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 576512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 576612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -thread-safe) 576712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala thread_safe=yes 576812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 576912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 577012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 577112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -version-info) 577212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala prev=vinfo 577312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 577412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 577512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 577612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -version-number) 577712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala prev=vinfo 577812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala vinfo_number=yes 577912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 578012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 578112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 578212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -weak) 578312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala prev=weak 578412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 578512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 578612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 578712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -Wc,*) 578812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_stripname '-Wc,' '' "$arg" 578912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala args=$func_stripname_result 579012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala arg= 579112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala save_ifs="$IFS"; IFS=',' 579212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for flag in $args; do 579312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala IFS="$save_ifs" 579412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_quote_for_eval "$flag" 579512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append arg " $func_quote_for_eval_result" 579612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append compiler_flags " $func_quote_for_eval_result" 579712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 579812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala IFS="$save_ifs" 579912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_stripname ' ' '' "$arg" 580012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala arg=$func_stripname_result 580112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 580212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 580312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -Wl,*) 580412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_stripname '-Wl,' '' "$arg" 580512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala args=$func_stripname_result 580612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala arg= 580712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala save_ifs="$IFS"; IFS=',' 580812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for flag in $args; do 580912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala IFS="$save_ifs" 581012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_quote_for_eval "$flag" 581112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append arg " $wl$func_quote_for_eval_result" 581212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append compiler_flags " $wl$func_quote_for_eval_result" 581312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append linker_flags " $func_quote_for_eval_result" 581412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 581512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala IFS="$save_ifs" 581612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_stripname ' ' '' "$arg" 581712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala arg=$func_stripname_result 581812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 581912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 582012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -Xcompiler) 582112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala prev=xcompiler 582212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 582312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 582412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 582512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -Xlinker) 582612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala prev=xlinker 582712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 582812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 582912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 583012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -XCClinker) 583112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala prev=xcclinker 583212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 583312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 583412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 583512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # -msg_* for osf cc 583612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -msg_*) 583712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_quote_for_eval "$arg" 583812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala arg="$func_quote_for_eval_result" 583912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 584012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 584112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Flags to be passed through unchanged, with rationale: 584212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # -64, -mips[0-9] enable 64-bit mode for the SGI compiler 584312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # -r[0-9][0-9]* specify processor for the SGI compiler 584412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler 584512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # +DA*, +DD* enable 64-bit mode for the HP compiler 584612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # -q* compiler args for the IBM compiler 584712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # -m*, -t[45]*, -txscale* architecture-specific flags for GCC 584812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # -F/path path to uninstalled frameworks, gcc on darwin 584912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # -p, -pg, --coverage, -fprofile-* profiling flags for GCC 585012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # @file GCC response files 585112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # -tp=* Portland pgcc target processor selection 585212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # --sysroot=* for sysroot support 585312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization 585412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ 585512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ 585612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -O*|-flto*|-fwhopr*|-fuse-linker-plugin) 585712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_quote_for_eval "$arg" 585812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala arg="$func_quote_for_eval_result" 585912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append compile_command " $arg" 586012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append finalize_command " $arg" 586112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append compiler_flags " $arg" 586212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 586312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 586412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 586512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Some other compiler flag. 586612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -* | +*) 586712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_quote_for_eval "$arg" 586812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala arg="$func_quote_for_eval_result" 586912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 587012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 587112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *.$objext) 587212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # A standard object. 587312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append objs " $arg" 587412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 587512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 587612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *.lo) 587712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # A libtool-controlled object. 587812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 587912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Check to see that this really is a libtool object. 588012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if func_lalib_unsafe_p "$arg"; then 588112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala pic_object= 588212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala non_pic_object= 588312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 588412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Read the .lo file 588512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_source "$arg" 588612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 588712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -z "$pic_object" || 588812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -z "$non_pic_object" || 588912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test "$pic_object" = none && 589012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test "$non_pic_object" = none; then 589112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_fatal_error "cannot find name of object for \`$arg'" 589212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 589312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 589412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Extract subdirectory from the argument. 589512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_dirname "$arg" "/" "" 589612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala xdir="$func_dirname_result" 589712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 589812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$pic_object" != none; then 589912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Prepend the subdirectory the object is found in. 590012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala pic_object="$xdir$pic_object" 590112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 590212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$prev" = dlfiles; then 590312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 590412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append dlfiles " $pic_object" 590512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala prev= 590612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 590712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 590812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # If libtool objects are unsupported, then we need to preload. 590912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala prev=dlprefiles 591012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 591112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 591212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 591312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # CHECK ME: I think I busted this. -Ossama 591412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$prev" = dlprefiles; then 591512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Preload the old-style object. 591612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append dlprefiles " $pic_object" 591712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala prev= 591812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 591912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 592012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # A PIC object. 592112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append libobjs " $pic_object" 592212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala arg="$pic_object" 592312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 592412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 592512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Non-PIC object. 592612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$non_pic_object" != none; then 592712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Prepend the subdirectory the object is found in. 592812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala non_pic_object="$xdir$non_pic_object" 592912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 593012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # A standard non-PIC object 593112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append non_pic_objects " $non_pic_object" 593212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -z "$pic_object" || test "$pic_object" = none ; then 593312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala arg="$non_pic_object" 593412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 593512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 593612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # If the PIC object exists, use it instead. 593712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # $xdir was prepended to $pic_object above. 593812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala non_pic_object="$pic_object" 593912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append non_pic_objects " $non_pic_object" 594012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 594112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 594212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Only an error if not doing a dry-run. 594312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if $opt_dry_run; then 594412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Extract subdirectory from the argument. 594512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_dirname "$arg" "/" "" 594612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala xdir="$func_dirname_result" 594712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 594812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_lo2o "$arg" 594912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala pic_object=$xdir$objdir/$func_lo2o_result 595012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala non_pic_object=$xdir$func_lo2o_result 595112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append libobjs " $pic_object" 595212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append non_pic_objects " $non_pic_object" 595312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 595412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_fatal_error "\`$arg' is not a valid libtool object" 595512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 595612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 595712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 595812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 595912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *.$libext) 596012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # An archive. 596112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append deplibs " $arg" 596212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append old_deplibs " $arg" 596312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 596412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 596512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 596612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *.la) 596712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # A libtool-controlled library. 596812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 596912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_resolve_sysroot "$arg" 597012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$prev" = dlfiles; then 597112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # This library was specified with -dlopen. 597212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append dlfiles " $func_resolve_sysroot_result" 597312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala prev= 597412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala elif test "$prev" = dlprefiles; then 597512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # The library was specified with -dlpreopen. 597612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append dlprefiles " $func_resolve_sysroot_result" 597712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala prev= 597812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 597912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append deplibs " $func_resolve_sysroot_result" 598012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 598112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 598212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 598312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 598412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Some other compiler argument. 598512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 598612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Unknown arguments in both finalize_command and compile_command need 598712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # to be aesthetically quoted because they are evaled later. 598812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_quote_for_eval "$arg" 598912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala arg="$func_quote_for_eval_result" 599012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 599112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac # arg 599212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 599312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Now actually substitute the argument into the commands. 599412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$arg"; then 599512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append compile_command " $arg" 599612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append finalize_command " $arg" 599712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 599812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done # argument parsing loop 599912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 600012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -n "$prev" && \ 600112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_fatal_help "the \`$prevarg' option requires an argument" 600212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 600312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then 600412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval arg=\"$export_dynamic_flag_spec\" 600512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append compile_command " $arg" 600612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append finalize_command " $arg" 600712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 600812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 600912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala oldlibs= 601012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # calculate the name of the file, without its directory 601112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_basename "$output" 601212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala outputname="$func_basename_result" 601312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala libobjs_save="$libobjs" 601412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 601512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$shlibpath_var"; then 601612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # get the directories listed in $shlibpath_var 601712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\` 601812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 601912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala shlib_search_path= 602012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 602112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval sys_lib_search_path=\"$sys_lib_search_path_spec\" 602212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" 602312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 602412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_dirname "$output" "/" "" 602512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala output_objdir="$func_dirname_result$objdir" 602612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_to_tool_file "$output_objdir/" 602712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala tool_output_objdir=$func_to_tool_file_result 602812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Create the object directory. 602912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_mkdir_p "$output_objdir" 603012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 603112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Determine the type of output 603212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $output in 603312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala "") 603412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_fatal_help "you must specify an output file" 603512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 603612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *.$libext) linkmode=oldlib ;; 603712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *.lo | *.$objext) linkmode=obj ;; 603812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *.la) linkmode=lib ;; 603912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) linkmode=prog ;; # Anything else should be a program. 604012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 604112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 604212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala specialdeplibs= 604312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 604412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala libs= 604512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Find all interdependent deplibs by searching for libraries 604612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # that are linked more than once (e.g. -la -lb -la) 604712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for deplib in $deplibs; do 604812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if $opt_preserve_dup_deps ; then 604912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case "$libs " in 605012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *" $deplib "*) func_append specialdeplibs " $deplib" ;; 605112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 605212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 605312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append libs " $deplib" 605412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 605512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 605612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$linkmode" = lib; then 605712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala libs="$predeps $libs $compiler_lib_search_path $postdeps" 605812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 605912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Compute libraries that are listed more than once in $predeps 606012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # $postdeps and mark them as special (i.e., whose duplicates are 606112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # not to be eliminated). 606212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala pre_post_deps= 606312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if $opt_duplicate_compiler_generated_deps; then 606412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for pre_post_dep in $predeps $postdeps; do 606512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case "$pre_post_deps " in 606612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; 606712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 606812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append pre_post_deps " $pre_post_dep" 606912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 607012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 607112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala pre_post_deps= 607212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 607312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 607412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala deplibs= 607512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala newdependency_libs= 607612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala newlib_search_path= 607712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala need_relink=no # whether we're linking any uninstalled libtool libraries 607812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala notinst_deplibs= # not-installed libtool libraries 607912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala notinst_path= # paths that contain not-installed libtool libraries 608012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 608112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $linkmode in 608212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala lib) 608312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala passes="conv dlpreopen link" 608412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for file in $dlfiles $dlprefiles; do 608512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $file in 608612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *.la) ;; 608712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 608812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" 608912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 609012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 609112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 609212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 609312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala prog) 609412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala compile_deplibs= 609512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala finalize_deplibs= 609612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala alldeplibs=no 609712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala newdlfiles= 609812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala newdlprefiles= 609912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala passes="conv scan dlopen dlpreopen link" 610012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 610112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) passes="conv" 610212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 610312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 610412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 610512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for pass in $passes; do 610612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # The preopen pass in lib mode reverses $deplibs; put it back here 610712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # so that -L comes before libs that need it for instance... 610812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$linkmode,$pass" = "lib,link"; then 610912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ## FIXME: Find the place where the list is rebuilt in the wrong 611012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ## order, and fix it there properly 611112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala tmp_deplibs= 611212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for deplib in $deplibs; do 611312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala tmp_deplibs="$deplib $tmp_deplibs" 611412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 611512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala deplibs="$tmp_deplibs" 611612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 611712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 611812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$linkmode,$pass" = "lib,link" || 611912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test "$linkmode,$pass" = "prog,scan"; then 612012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala libs="$deplibs" 612112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala deplibs= 612212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 612312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$linkmode" = prog; then 612412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $pass in 612512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala dlopen) libs="$dlfiles" ;; 612612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala dlpreopen) libs="$dlprefiles" ;; 612712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; 612812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 612912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 613012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$linkmode,$pass" = "lib,dlpreopen"; then 613112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Collect and forward deplibs of preopened libtool libs 613212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for lib in $dlprefiles; do 613312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Ignore non-libtool-libs 613412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala dependency_libs= 613512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_resolve_sysroot "$lib" 613612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $lib in 613712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *.la) func_source "$func_resolve_sysroot_result" ;; 613812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 613912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 614012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Collect preopened libtool deplibs, except any this library 614112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # has declared as weak libs 614212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for deplib in $dependency_libs; do 614312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_basename "$deplib" 614412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala deplib_base=$func_basename_result 614512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case " $weak_libs " in 614612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *" $deplib_base "*) ;; 614712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) func_append deplibs " $deplib" ;; 614812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 614912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 615012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 615112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala libs="$dlprefiles" 615212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 615312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$pass" = dlopen; then 615412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Collect dlpreopened libraries 615512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala save_deplibs="$deplibs" 615612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala deplibs= 615712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 615812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 615912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for deplib in $libs; do 616012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala lib= 616112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala found=no 616212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $deplib in 616312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ 616412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) 616512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$linkmode,$pass" = "prog,link"; then 616612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala compile_deplibs="$deplib $compile_deplibs" 616712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala finalize_deplibs="$deplib $finalize_deplibs" 616812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 616912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append compiler_flags " $deplib" 617012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$linkmode" = lib ; then 617112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case "$new_inherited_linker_flags " in 617212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *" $deplib "*) ;; 617312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala * ) func_append new_inherited_linker_flags " $deplib" ;; 617412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 617512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 617612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 617712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 617812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 617912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -l*) 618012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$linkmode" != lib && test "$linkmode" != prog; then 618112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_warning "\`-l' is ignored for archives/objects" 618212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 618312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 618412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_stripname '-l' '' "$deplib" 618512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala name=$func_stripname_result 618612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$linkmode" = lib; then 618712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" 618812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 618912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" 619012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 619112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for searchdir in $searchdirs; do 619212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for search_ext in .la $std_shrext .so .a; do 619312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Search the libtool library 619412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala lib="$searchdir/lib${name}${search_ext}" 619512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -f "$lib"; then 619612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$search_ext" = ".la"; then 619712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala found=yes 619812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 619912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala found=no 620012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 620112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala break 2 620212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 620312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 620412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 620512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$found" != yes; then 620612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # deplib doesn't seem to be a libtool library 620712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$linkmode,$pass" = "prog,link"; then 620812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala compile_deplibs="$deplib $compile_deplibs" 620912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala finalize_deplibs="$deplib $finalize_deplibs" 621012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 621112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala deplibs="$deplib $deplibs" 621212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 621312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 621412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 621512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else # deplib is a libtool library 621612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, 621712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # We need to do some special things here, and not later. 621812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 621912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case " $predeps $postdeps " in 622012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *" $deplib "*) 622112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if func_lalib_p "$lib"; then 622212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala library_names= 622312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala old_library= 622412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_source "$lib" 622512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for l in $old_library $library_names; do 622612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ll="$l" 622712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 622812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "X$ll" = "X$old_library" ; then # only static version available 622912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala found=no 623012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_dirname "$lib" "" "." 623112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ladir="$func_dirname_result" 623212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala lib=$ladir/$old_library 623312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$linkmode,$pass" = "prog,link"; then 623412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala compile_deplibs="$deplib $compile_deplibs" 623512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala finalize_deplibs="$deplib $finalize_deplibs" 623612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 623712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala deplibs="$deplib $deplibs" 623812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 623912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 624012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 624112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 624212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 624312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 624412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) ;; 624512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 624612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 624712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 624812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; # -l 624912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *.ltframework) 625012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$linkmode,$pass" = "prog,link"; then 625112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala compile_deplibs="$deplib $compile_deplibs" 625212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala finalize_deplibs="$deplib $finalize_deplibs" 625312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 625412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala deplibs="$deplib $deplibs" 625512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$linkmode" = lib ; then 625612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case "$new_inherited_linker_flags " in 625712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *" $deplib "*) ;; 625812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala * ) func_append new_inherited_linker_flags " $deplib" ;; 625912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 626012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 626112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 626212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 626312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 626412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -L*) 626512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $linkmode in 626612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala lib) 626712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala deplibs="$deplib $deplibs" 626812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test "$pass" = conv && continue 626912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala newdependency_libs="$deplib $newdependency_libs" 627012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_stripname '-L' '' "$deplib" 627112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_resolve_sysroot "$func_stripname_result" 627212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append newlib_search_path " $func_resolve_sysroot_result" 627312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 627412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala prog) 627512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$pass" = conv; then 627612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala deplibs="$deplib $deplibs" 627712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 627812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 627912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$pass" = scan; then 628012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala deplibs="$deplib $deplibs" 628112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 628212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala compile_deplibs="$deplib $compile_deplibs" 628312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala finalize_deplibs="$deplib $finalize_deplibs" 628412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 628512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_stripname '-L' '' "$deplib" 628612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_resolve_sysroot "$func_stripname_result" 628712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append newlib_search_path " $func_resolve_sysroot_result" 628812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 628912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 629012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_warning "\`-L' is ignored for archives/objects" 629112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 629212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac # linkmode 629312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 629412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; # -L 629512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -R*) 629612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$pass" = link; then 629712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_stripname '-R' '' "$deplib" 629812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_resolve_sysroot "$func_stripname_result" 629912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala dir=$func_resolve_sysroot_result 630012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Make sure the xrpath contains only unique directories. 630112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case "$xrpath " in 630212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *" $dir "*) ;; 630312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) func_append xrpath " $dir" ;; 630412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 630512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 630612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala deplibs="$deplib $deplibs" 630712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 630812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 630912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *.la) 631012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_resolve_sysroot "$deplib" 631112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala lib=$func_resolve_sysroot_result 631212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 631312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *.$libext) 631412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$pass" = conv; then 631512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala deplibs="$deplib $deplibs" 631612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 631712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 631812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $linkmode in 631912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala lib) 632012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Linking convenience modules into shared libraries is allowed, 632112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # but linking other static libraries is non-portable. 632212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case " $dlpreconveniencelibs " in 632312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *" $deplib "*) ;; 632412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 632512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala valid_a_lib=no 632612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $deplibs_check_method in 632712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala match_pattern*) 632812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala set dummy $deplibs_check_method; shift 632912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 633012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ 633112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala | $EGREP "$match_pattern_regex" > /dev/null; then 633212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala valid_a_lib=yes 633312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 633412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 633512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala pass_all) 633612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala valid_a_lib=yes 633712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 633812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 633912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$valid_a_lib" != yes; then 634012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo 634112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $ECHO "*** Warning: Trying to link with static lib archive $deplib." 634212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo "*** I have the capability to make that library automatically link in when" 634312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo "*** you link to this library. But I can only do this if you have a" 634412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo "*** shared version of the library, which you do not appear to have" 634512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo "*** because the file extensions .$libext of this argument makes me believe" 634612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo "*** that it is just a static archive that I should not use here." 634712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 634812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo 634912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $ECHO "*** Warning: Linking the shared library $output against the" 635012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $ECHO "*** static library $deplib is not portable!" 635112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala deplibs="$deplib $deplibs" 635212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 635312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 635412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 635512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 635612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 635712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala prog) 635812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$pass" != link; then 635912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala deplibs="$deplib $deplibs" 636012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 636112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala compile_deplibs="$deplib $compile_deplibs" 636212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala finalize_deplibs="$deplib $finalize_deplibs" 636312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 636412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 636512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 636612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac # linkmode 636712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; # *.$libext 636812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *.lo | *.$objext) 636912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$pass" = conv; then 637012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala deplibs="$deplib $deplibs" 637112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala elif test "$linkmode" = prog; then 637212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then 637312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # If there is no dlopen support or we're linking statically, 637412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # we need to preload. 637512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append newdlprefiles " $deplib" 637612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala compile_deplibs="$deplib $compile_deplibs" 637712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala finalize_deplibs="$deplib $finalize_deplibs" 637812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 637912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append newdlfiles " $deplib" 638012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 638112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 638212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 638312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 638412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala %DEPLIBS%) 638512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala alldeplibs=yes 638612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 638712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 638812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac # case $deplib 638912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 639012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$found" = yes || test -f "$lib"; then : 639112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 639212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" 639312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 639412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 639512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Check to see that this really is a libtool archive. 639612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_lalib_unsafe_p "$lib" \ 639712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala || func_fatal_error "\`$lib' is not a valid libtool archive" 639812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 639912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_dirname "$lib" "" "." 640012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ladir="$func_dirname_result" 640112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 640212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala dlname= 640312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala dlopen= 640412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala dlpreopen= 640512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala libdir= 640612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala library_names= 640712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala old_library= 640812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala inherited_linker_flags= 640912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # If the library was installed with an old release of libtool, 641012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # it will not redefine variables installed, or shouldnotlink 641112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala installed=yes 641212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala shouldnotlink=no 641312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala avoidtemprpath= 641412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 641512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 641612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Read the .la file 641712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_source "$lib" 641812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 641912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Convert "-framework foo" to "foo.ltframework" 642012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$inherited_linker_flags"; then 642112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` 642212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do 642312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case " $new_inherited_linker_flags " in 642412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *" $tmp_inherited_linker_flag "*) ;; 642512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; 642612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 642712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 642812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 642912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 643012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$linkmode,$pass" = "lib,link" || 643112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test "$linkmode,$pass" = "prog,scan" || 643212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala { test "$linkmode" != prog && test "$linkmode" != lib; }; then 643312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -n "$dlopen" && func_append dlfiles " $dlopen" 643412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" 643512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 643612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 643712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$pass" = conv; then 643812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Only check for convenience libraries 643912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala deplibs="$lib $deplibs" 644012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -z "$libdir"; then 644112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -z "$old_library"; then 644212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_fatal_error "cannot find name of link library for \`$lib'" 644312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 644412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # It is a libtool convenience library, so add in its objects. 644512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append convenience " $ladir/$objdir/$old_library" 644612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append old_convenience " $ladir/$objdir/$old_library" 644712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala elif test "$linkmode" != prog && test "$linkmode" != lib; then 644812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_fatal_error "\`$lib' is not a convenience library" 644912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 645012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala tmp_libs= 645112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for deplib in $dependency_libs; do 645212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala deplibs="$deplib $deplibs" 645312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if $opt_preserve_dup_deps ; then 645412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case "$tmp_libs " in 645512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *" $deplib "*) func_append specialdeplibs " $deplib" ;; 645612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 645712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 645812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append tmp_libs " $deplib" 645912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 646012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 646112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi # $pass = conv 646212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 646312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 646412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Get the name of the library we link against. 646512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala linklib= 646612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$old_library" && 646712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala { test "$prefer_static_libs" = yes || 646812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test "$prefer_static_libs,$installed" = "built,no"; }; then 646912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala linklib=$old_library 647012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 647112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for l in $old_library $library_names; do 647212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala linklib="$l" 647312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 647412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 647512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -z "$linklib"; then 647612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_fatal_error "cannot find name of link library for \`$lib'" 647712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 647812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 647912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # This library was specified with -dlopen. 648012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$pass" = dlopen; then 648112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -z "$libdir"; then 648212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_fatal_error "cannot -dlopen a convenience library: \`$lib'" 648312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 648412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -z "$dlname" || 648512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test "$dlopen_support" != yes || 648612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test "$build_libtool_libs" = no; then 648712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # If there is no dlname, no dlopen support or we're linking 648812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # statically, we need to preload. We also need to preload any 648912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # dependent libraries so libltdl's deplib preloader doesn't 649012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # bomb out in the load deplibs phase. 649112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append dlprefiles " $lib $dependency_libs" 649212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 649312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append newdlfiles " $lib" 649412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 649512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 649612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi # $pass = dlopen 649712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 649812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # We need an absolute path. 649912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $ladir in 650012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; 650112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 650212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala abs_ladir=`cd "$ladir" && pwd` 650312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -z "$abs_ladir"; then 650412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_warning "cannot determine absolute directory name of \`$ladir'" 650512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_warning "passing it literally to the linker, although it might fail" 650612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala abs_ladir="$ladir" 650712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 650812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 650912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 651012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_basename "$lib" 651112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala laname="$func_basename_result" 651212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 651312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Find the relevant object directory and library name. 651412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "X$installed" = Xyes; then 651512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then 651612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_warning "library \`$lib' was moved." 651712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala dir="$ladir" 651812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala absdir="$abs_ladir" 651912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala libdir="$abs_ladir" 652012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 652112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala dir="$lt_sysroot$libdir" 652212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala absdir="$lt_sysroot$libdir" 652312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 652412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes 652512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 652612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then 652712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala dir="$ladir" 652812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala absdir="$abs_ladir" 652912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Remove this search path later 653012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append notinst_path " $abs_ladir" 653112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 653212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala dir="$ladir/$objdir" 653312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala absdir="$abs_ladir/$objdir" 653412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Remove this search path later 653512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append notinst_path " $abs_ladir" 653612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 653712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi # $installed = yes 653812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_stripname 'lib' '.la' "$laname" 653912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala name=$func_stripname_result 654012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 654112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # This library was specified with -dlpreopen. 654212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$pass" = dlpreopen; then 654312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -z "$libdir" && test "$linkmode" = prog; then 654412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" 654512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 654612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case "$host" in 654712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # special handling for platforms with PE-DLLs. 654812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *cygwin* | *mingw* | *cegcc* ) 654912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Linker will automatically link against shared library if both 655012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # static and shared are present. Therefore, ensure we extract 655112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # symbols from the import library if a shared library is present 655212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # (otherwise, the dlopen module name will be incorrect). We do 655312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # this by putting the import library name into $newdlprefiles. 655412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # We recover the dlopen module name by 'saving' the la file 655512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # name in a special purpose variable, and (later) extracting the 655612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # dlname from the la file. 655712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$dlname"; then 655812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_tr_sh "$dir/$linklib" 655912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" 656012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append newdlprefiles " $dir/$linklib" 656112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 656212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append newdlprefiles " $dir/$old_library" 656312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Keep a list of preopened convenience libraries to check 656412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # that they are being used correctly in the link pass. 656512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -z "$libdir" && \ 656612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append dlpreconveniencelibs " $dir/$old_library" 656712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 656812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 656912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala * ) 657012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Prefer using a static library (so that no silly _DYNAMIC symbols 657112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # are required to link). 657212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$old_library"; then 657312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append newdlprefiles " $dir/$old_library" 657412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Keep a list of preopened convenience libraries to check 657512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # that they are being used correctly in the link pass. 657612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -z "$libdir" && \ 657712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append dlpreconveniencelibs " $dir/$old_library" 657812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Otherwise, use the dlname, so that lt_dlopen finds it. 657912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala elif test -n "$dlname"; then 658012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append newdlprefiles " $dir/$dlname" 658112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 658212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append newdlprefiles " $dir/$linklib" 658312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 658412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 658512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 658612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi # $pass = dlpreopen 658712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 658812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -z "$libdir"; then 658912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Link the convenience library 659012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$linkmode" = lib; then 659112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala deplibs="$dir/$old_library $deplibs" 659212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala elif test "$linkmode,$pass" = "prog,link"; then 659312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala compile_deplibs="$dir/$old_library $compile_deplibs" 659412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala finalize_deplibs="$dir/$old_library $finalize_deplibs" 659512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 659612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala deplibs="$lib $deplibs" # used for prog,scan pass 659712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 659812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 659912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 660012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 660112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 660212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$linkmode" = prog && test "$pass" != link; then 660312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append newlib_search_path " $ladir" 660412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala deplibs="$lib $deplibs" 660512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 660612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala linkalldeplibs=no 660712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$link_all_deplibs" != no || test -z "$library_names" || 660812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test "$build_libtool_libs" = no; then 660912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala linkalldeplibs=yes 661012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 661112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 661212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala tmp_libs= 661312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for deplib in $dependency_libs; do 661412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $deplib in 661512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -L*) func_stripname '-L' '' "$deplib" 661612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_resolve_sysroot "$func_stripname_result" 661712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append newlib_search_path " $func_resolve_sysroot_result" 661812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 661912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 662012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Need to link against all dependency_libs? 662112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$linkalldeplibs" = yes; then 662212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala deplibs="$deplib $deplibs" 662312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 662412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Need to hardcode shared library paths 662512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # or/and link against static libraries 662612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala newdependency_libs="$deplib $newdependency_libs" 662712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 662812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if $opt_preserve_dup_deps ; then 662912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case "$tmp_libs " in 663012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *" $deplib "*) func_append specialdeplibs " $deplib" ;; 663112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 663212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 663312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append tmp_libs " $deplib" 663412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done # for deplib 663512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 663612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi # $linkmode = prog... 663712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 663812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$linkmode,$pass" = "prog,link"; then 663912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$library_names" && 664012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala { { test "$prefer_static_libs" = no || 664112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test "$prefer_static_libs,$installed" = "built,yes"; } || 664212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -z "$old_library"; }; then 664312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # We need to hardcode the library path 664412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then 664512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Make sure the rpath contains only unique directories. 664612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case "$temp_rpath:" in 664712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *"$absdir:"*) ;; 664812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) func_append temp_rpath "$absdir:" ;; 664912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 665012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 665112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 665212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Hardcode the library path. 665312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Skip directories that are in the system default run-time 665412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # search path. 665512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case " $sys_lib_dlsearch_path " in 665612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *" $absdir "*) ;; 665712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 665812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case "$compile_rpath " in 665912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *" $absdir "*) ;; 666012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) func_append compile_rpath " $absdir" ;; 666112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 666212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 666312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 666412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case " $sys_lib_dlsearch_path " in 666512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *" $libdir "*) ;; 666612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 666712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case "$finalize_rpath " in 666812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *" $libdir "*) ;; 666912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) func_append finalize_rpath " $libdir" ;; 667012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 667112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 667212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 667312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi # $linkmode,$pass = prog,link... 667412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 667512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$alldeplibs" = yes && 667612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala { test "$deplibs_check_method" = pass_all || 667712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala { test "$build_libtool_libs" = yes && 667812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -n "$library_names"; }; }; then 667912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # We only need to search for static libraries 668012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 668112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 668212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 668312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 668412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala link_static=no # Whether the deplib will be linked statically 668512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala use_static_libs=$prefer_static_libs 668612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$use_static_libs" = built && test "$installed" = yes; then 668712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala use_static_libs=no 668812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 668912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$library_names" && 669012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala { test "$use_static_libs" = no || test -z "$old_library"; }; then 669112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $host in 669212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *cygwin* | *mingw* | *cegcc*) 669312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # No point in relinking DLLs because paths are not encoded 669412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append notinst_deplibs " $lib" 669512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala need_relink=no 669612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 669712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 669812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$installed" = no; then 669912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append notinst_deplibs " $lib" 670012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala need_relink=yes 670112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 670212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 670312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 670412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # This is a shared library 670512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 670612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Warn about portability, can't link against -module's on some 670712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # systems (darwin). Don't bleat about dlopened modules though! 670812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala dlopenmodule="" 670912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for dlpremoduletest in $dlprefiles; do 671012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "X$dlpremoduletest" = "X$lib"; then 671112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala dlopenmodule="$dlpremoduletest" 671212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala break 671312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 671412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 671512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then 671612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo 671712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$linkmode" = prog; then 671812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $ECHO "*** Warning: Linking the executable $output against the loadable module" 671912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 672012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $ECHO "*** Warning: Linking the shared library $output against the loadable module" 672112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 672212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $ECHO "*** $linklib is not portable!" 672312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 672412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$linkmode" = lib && 672512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test "$hardcode_into_libs" = yes; then 672612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Hardcode the library path. 672712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Skip directories that are in the system default run-time 672812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # search path. 672912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case " $sys_lib_dlsearch_path " in 673012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *" $absdir "*) ;; 673112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 673212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case "$compile_rpath " in 673312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *" $absdir "*) ;; 673412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) func_append compile_rpath " $absdir" ;; 673512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 673612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 673712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 673812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case " $sys_lib_dlsearch_path " in 673912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *" $libdir "*) ;; 674012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 674112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case "$finalize_rpath " in 674212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *" $libdir "*) ;; 674312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) func_append finalize_rpath " $libdir" ;; 674412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 674512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 674612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 674712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 674812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 674912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$old_archive_from_expsyms_cmds"; then 675012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # figure out the soname 675112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala set dummy $library_names 675212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala shift 675312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala realname="$1" 675412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala shift 675512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala libname=`eval "\\$ECHO \"$libname_spec\""` 675612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # use dlname if we got it. it's perfectly good, no? 675712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$dlname"; then 675812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala soname="$dlname" 675912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala elif test -n "$soname_spec"; then 676012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # bleh windows 676112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $host in 676212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *cygwin* | mingw* | *cegcc*) 676312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_arith $current - $age 676412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala major=$func_arith_result 676512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala versuffix="-$major" 676612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 676712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 676812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval soname=\"$soname_spec\" 676912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 677012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala soname="$realname" 677112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 677212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 677312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Make a new name for the extract_expsyms_cmds to use 677412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala soroot="$soname" 677512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_basename "$soroot" 677612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala soname="$func_basename_result" 677712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_stripname 'lib' '.dll' "$soname" 677812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala newlib=libimp-$func_stripname_result.a 677912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 678012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # If the library has no export list, then create one now 678112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -f "$output_objdir/$soname-def"; then : 678212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 678312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_verbose "extracting exported symbol list from \`$soname'" 678412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_execute_cmds "$extract_expsyms_cmds" 'exit $?' 678512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 678612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 678712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Create $newlib 678812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -f "$output_objdir/$newlib"; then :; else 678912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_verbose "generating import library for \`$soname'" 679012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' 679112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 679212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # make sure the library variables are pointing to the new library 679312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala dir=$output_objdir 679412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala linklib=$newlib 679512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi # test -n "$old_archive_from_expsyms_cmds" 679612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 679712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$linkmode" = prog || test "$opt_mode" != relink; then 679812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala add_shlibpath= 679912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala add_dir= 680012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala add= 680112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala lib_linked=yes 680212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $hardcode_action in 680312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala immediate | unsupported) 680412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$hardcode_direct" = no; then 680512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala add="$dir/$linklib" 680612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $host in 680712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; 680812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *-*-sysv4*uw2*) add_dir="-L$dir" ;; 680912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ 681012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *-*-unixware7*) add_dir="-L$dir" ;; 681112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *-*-darwin* ) 681212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # if the lib is a (non-dlopened) module then we can not 681312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # link against it, someone is ignoring the earlier warnings 681412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if /usr/bin/file -L $add 2> /dev/null | 681512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $GREP ": [^:]* bundle" >/dev/null ; then 681612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "X$dlopenmodule" != "X$lib"; then 681712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $ECHO "*** Warning: lib $linklib is a module, not a shared library" 681812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -z "$old_library" ; then 681912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo 682012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo "*** And there doesn't seem to be a static archive available" 682112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo "*** The link will probably fail, sorry" 682212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 682312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala add="$dir/$old_library" 682412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 682512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala elif test -n "$old_library"; then 682612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala add="$dir/$old_library" 682712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 682812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 682912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 683012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala elif test "$hardcode_minus_L" = no; then 683112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $host in 683212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *-*-sunos*) add_shlibpath="$dir" ;; 683312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 683412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala add_dir="-L$dir" 683512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala add="-l$name" 683612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala elif test "$hardcode_shlibpath_var" = no; then 683712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala add_shlibpath="$dir" 683812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala add="-l$name" 683912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 684012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala lib_linked=no 684112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 684212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 684312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala relink) 684412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$hardcode_direct" = yes && 684512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test "$hardcode_direct_absolute" = no; then 684612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala add="$dir/$linklib" 684712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala elif test "$hardcode_minus_L" = yes; then 684812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala add_dir="-L$absdir" 684912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Try looking first in the location we're being installed to. 685012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$inst_prefix_dir"; then 685112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $libdir in 685212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala [\\/]*) 685312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append add_dir " -L$inst_prefix_dir$libdir" 685412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 685512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 685612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 685712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala add="-l$name" 685812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala elif test "$hardcode_shlibpath_var" = yes; then 685912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala add_shlibpath="$dir" 686012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala add="-l$name" 686112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 686212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala lib_linked=no 686312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 686412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 686512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) lib_linked=no ;; 686612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 686712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 686812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$lib_linked" != yes; then 686912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_fatal_configuration "unsupported hardcode properties" 687012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 687112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 687212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$add_shlibpath"; then 687312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case :$compile_shlibpath: in 687412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *":$add_shlibpath:"*) ;; 687512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) func_append compile_shlibpath "$add_shlibpath:" ;; 687612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 687712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 687812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$linkmode" = prog; then 687912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" 688012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -n "$add" && compile_deplibs="$add $compile_deplibs" 688112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 688212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -n "$add_dir" && deplibs="$add_dir $deplibs" 688312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -n "$add" && deplibs="$add $deplibs" 688412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$hardcode_direct" != yes && 688512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test "$hardcode_minus_L" != yes && 688612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test "$hardcode_shlibpath_var" = yes; then 688712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case :$finalize_shlibpath: in 688812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *":$libdir:"*) ;; 688912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) func_append finalize_shlibpath "$libdir:" ;; 689012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 689112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 689212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 689312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 689412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 689512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$linkmode" = prog || test "$opt_mode" = relink; then 689612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala add_shlibpath= 689712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala add_dir= 689812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala add= 689912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Finalize command for both is simple: just hardcode it. 690012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$hardcode_direct" = yes && 690112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test "$hardcode_direct_absolute" = no; then 690212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala add="$libdir/$linklib" 690312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala elif test "$hardcode_minus_L" = yes; then 690412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala add_dir="-L$libdir" 690512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala add="-l$name" 690612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala elif test "$hardcode_shlibpath_var" = yes; then 690712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case :$finalize_shlibpath: in 690812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *":$libdir:"*) ;; 690912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) func_append finalize_shlibpath "$libdir:" ;; 691012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 691112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala add="-l$name" 691212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala elif test "$hardcode_automatic" = yes; then 691312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$inst_prefix_dir" && 691412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -f "$inst_prefix_dir$libdir/$linklib" ; then 691512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala add="$inst_prefix_dir$libdir/$linklib" 691612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 691712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala add="$libdir/$linklib" 691812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 691912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 692012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # We cannot seem to hardcode it, guess we'll fake it. 692112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala add_dir="-L$libdir" 692212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Try looking first in the location we're being installed to. 692312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$inst_prefix_dir"; then 692412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $libdir in 692512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala [\\/]*) 692612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append add_dir " -L$inst_prefix_dir$libdir" 692712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 692812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 692912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 693012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala add="-l$name" 693112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 693212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 693312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$linkmode" = prog; then 693412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" 693512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -n "$add" && finalize_deplibs="$add $finalize_deplibs" 693612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 693712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -n "$add_dir" && deplibs="$add_dir $deplibs" 693812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -n "$add" && deplibs="$add $deplibs" 693912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 694012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 694112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala elif test "$linkmode" = prog; then 694212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Here we assume that one of hardcode_direct or hardcode_minus_L 694312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # is not unsupported. This is valid on all known static and 694412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # shared platforms. 694512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$hardcode_direct" != unsupported; then 694612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -n "$old_library" && linklib="$old_library" 694712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala compile_deplibs="$dir/$linklib $compile_deplibs" 694812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala finalize_deplibs="$dir/$linklib $finalize_deplibs" 694912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 695012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala compile_deplibs="-l$name -L$dir $compile_deplibs" 695112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala finalize_deplibs="-l$name -L$dir $finalize_deplibs" 695212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 695312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala elif test "$build_libtool_libs" = yes; then 695412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Not a shared library 695512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$deplibs_check_method" != pass_all; then 695612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # We're trying link a shared library against a static one 695712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # but the system doesn't support it. 695812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 695912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Just print a warning and add the library to dependency_libs so 696012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # that the program can be linked against the static library. 696112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo 696212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $ECHO "*** Warning: This system can not link to static lib archive $lib." 696312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo "*** I have the capability to make that library automatically link in when" 696412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo "*** you link to this library. But I can only do this if you have a" 696512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo "*** shared version of the library, which you do not appear to have." 696612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$module" = yes; then 696712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo "*** But as you try to build a module library, libtool will still create " 696812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo "*** a static module, that should work as long as the dlopening application" 696912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo "*** is linked with the -dlopen flag to resolve symbols at runtime." 697012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -z "$global_symbol_pipe"; then 697112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo 697212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo "*** However, this would only work if libtool was able to extract symbol" 697312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo "*** lists from a program, using \`nm' or equivalent, but libtool could" 697412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo "*** not find such a program. So, this module is probably useless." 697512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo "*** \`nm' from GNU binutils and a full rebuild may help." 697612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 697712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$build_old_libs" = no; then 697812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala build_libtool_libs=module 697912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala build_old_libs=yes 698012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 698112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala build_libtool_libs=no 698212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 698312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 698412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 698512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala deplibs="$dir/$old_library $deplibs" 698612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala link_static=yes 698712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 698812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi # link shared/static library? 698912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 699012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$linkmode" = lib; then 699112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$dependency_libs" && 699212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala { test "$hardcode_into_libs" != yes || 699312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test "$build_old_libs" = yes || 699412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test "$link_static" = yes; }; then 699512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Extract -R from dependency_libs 699612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala temp_deplibs= 699712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for libdir in $dependency_libs; do 699812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $libdir in 699912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -R*) func_stripname '-R' '' "$libdir" 700012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala temp_xrpath=$func_stripname_result 700112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case " $xrpath " in 700212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *" $temp_xrpath "*) ;; 700312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) func_append xrpath " $temp_xrpath";; 700412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac;; 700512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) func_append temp_deplibs " $libdir";; 700612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 700712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 700812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala dependency_libs="$temp_deplibs" 700912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 701012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 701112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append newlib_search_path " $absdir" 701212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Link against this library 701312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" 701412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # ... and its dependency_libs 701512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala tmp_libs= 701612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for deplib in $dependency_libs; do 701712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala newdependency_libs="$deplib $newdependency_libs" 701812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $deplib in 701912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -L*) func_stripname '-L' '' "$deplib" 702012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_resolve_sysroot "$func_stripname_result";; 702112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) func_resolve_sysroot "$deplib" ;; 702212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 702312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if $opt_preserve_dup_deps ; then 702412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case "$tmp_libs " in 702512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *" $func_resolve_sysroot_result "*) 702612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append specialdeplibs " $func_resolve_sysroot_result" ;; 702712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 702812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 702912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append tmp_libs " $func_resolve_sysroot_result" 703012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 703112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 703212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$link_all_deplibs" != no; then 703312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Add the search paths of all dependency libraries 703412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for deplib in $dependency_libs; do 703512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala path= 703612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $deplib in 703712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -L*) path="$deplib" ;; 703812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *.la) 703912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_resolve_sysroot "$deplib" 704012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala deplib=$func_resolve_sysroot_result 704112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_dirname "$deplib" "" "." 704212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala dir=$func_dirname_result 704312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # We need an absolute path. 704412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $dir in 704512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; 704612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 704712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala absdir=`cd "$dir" && pwd` 704812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -z "$absdir"; then 704912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_warning "cannot determine absolute directory name of \`$dir'" 705012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala absdir="$dir" 705112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 705212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 705312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 705412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if $GREP "^installed=no" $deplib > /dev/null; then 705512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $host in 705612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *-*-darwin*) 705712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala depdepl= 705812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` 705912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$deplibrary_names" ; then 706012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for tmp in $deplibrary_names ; do 706112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala depdepl=$tmp 706212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 706312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -f "$absdir/$objdir/$depdepl" ; then 706412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala depdepl="$absdir/$objdir/$depdepl" 706512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` 706612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -z "$darwin_install_name"; then 706712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` 706812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 706912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" 707012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}" 707112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala path= 707212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 707312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 707412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 707512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 707612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala path="-L$absdir/$objdir" 707712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 707812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 707912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 708012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 708112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -z "$libdir" && \ 708212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_fatal_error "\`$deplib' is not a valid libtool archive" 708312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test "$absdir" != "$libdir" && \ 708412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_warning "\`$deplib' seems to be moved" 708512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 708612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala path="-L$absdir" 708712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 708812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 708912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 709012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case " $deplibs " in 709112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *" $path "*) ;; 709212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) deplibs="$path $deplibs" ;; 709312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 709412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 709512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi # link_all_deplibs != no 709612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi # linkmode = lib 709712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done # for deplib in $libs 709812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$pass" = link; then 709912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$linkmode" = "prog"; then 710012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala compile_deplibs="$new_inherited_linker_flags $compile_deplibs" 710112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" 710212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 710312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 710412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 710512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 710612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala dependency_libs="$newdependency_libs" 710712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$pass" = dlpreopen; then 710812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Link the dlpreopened libraries before other libraries 710912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for deplib in $save_deplibs; do 711012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala deplibs="$deplib $deplibs" 711112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 711212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 711312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$pass" != dlopen; then 711412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$pass" != conv; then 711512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Make sure lib_search_path contains only unique directories. 711612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala lib_search_path= 711712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for dir in $newlib_search_path; do 711812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case "$lib_search_path " in 711912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *" $dir "*) ;; 712012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) func_append lib_search_path " $dir" ;; 712112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 712212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 712312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala newlib_search_path= 712412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 712512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 712612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$linkmode,$pass" != "prog,link"; then 712712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala vars="deplibs" 712812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 712912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala vars="compile_deplibs finalize_deplibs" 713012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 713112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for var in $vars dependency_libs; do 713212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Add libraries to $var in reverse order 713312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval tmp_libs=\"\$$var\" 713412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala new_libs= 713512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for deplib in $tmp_libs; do 713612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # FIXME: Pedantically, this is the right thing to do, so 713712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # that some nasty dependency loop isn't accidentally 713812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # broken: 713912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala #new_libs="$deplib $new_libs" 714012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Pragmatically, this seems to cause very few problems in 714112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # practice: 714212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $deplib in 714312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -L*) new_libs="$deplib $new_libs" ;; 714412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -R*) ;; 714512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 714612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # And here is the reason: when a library appears more 714712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # than once as an explicit dependence of a library, or 714812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # is implicitly linked in more than once by the 714912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # compiler, it is considered special, and multiple 715012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # occurrences thereof are not removed. Compare this 715112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # with having the same library being listed as a 715212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # dependency of multiple other libraries: in this case, 715312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # we know (pedantically, we assume) the library does not 715412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # need to be listed more than once, so we keep only the 715512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # last copy. This is not always right, but it is rare 715612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # enough that we require users that really mean to play 715712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # such unportable linking tricks to link the library 715812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # using -Wl,-lname, so that libtool does not consider it 715912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # for duplicate removal. 716012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case " $specialdeplibs " in 716112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *" $deplib "*) new_libs="$deplib $new_libs" ;; 716212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 716312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case " $new_libs " in 716412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *" $deplib "*) ;; 716512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) new_libs="$deplib $new_libs" ;; 716612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 716712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 716812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 716912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 717012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 717112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 717212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala tmp_libs= 717312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for deplib in $new_libs; do 717412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $deplib in 717512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -L*) 717612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case " $tmp_libs " in 717712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *" $deplib "*) ;; 717812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) func_append tmp_libs " $deplib" ;; 717912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 718012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 718112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) func_append tmp_libs " $deplib" ;; 718212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 718312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 718412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval $var=\"$tmp_libs\" 718512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done # for var 718612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 718712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Last step: remove runtime libs from dependency_libs 718812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # (they stay in deplibs) 718912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala tmp_libs= 719012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for i in $dependency_libs ; do 719112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case " $predeps $postdeps $compiler_lib_search_path " in 719212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *" $i "*) 719312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala i="" 719412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 719512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 719612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$i" ; then 719712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append tmp_libs " $i" 719812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 719912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 720012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala dependency_libs=$tmp_libs 720112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done # for pass 720212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$linkmode" = prog; then 720312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala dlfiles="$newdlfiles" 720412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 720512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$linkmode" = prog || test "$linkmode" = lib; then 720612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala dlprefiles="$newdlprefiles" 720712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 720812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 720912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $linkmode in 721012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala oldlib) 721112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 721212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_warning "\`-dlopen' is ignored for archives" 721312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 721412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 721512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case " $deplibs" in 721612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *\ -l* | *\ -L*) 721712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_warning "\`-l' and \`-L' are ignored for archives" ;; 721812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 721912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 722012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -n "$rpath" && \ 722112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_warning "\`-rpath' is ignored for archives" 722212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 722312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -n "$xrpath" && \ 722412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_warning "\`-R' is ignored for archives" 722512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 722612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -n "$vinfo" && \ 722712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_warning "\`-version-info/-version-number' is ignored for archives" 722812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 722912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -n "$release" && \ 723012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_warning "\`-release' is ignored for archives" 723112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 723212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -n "$export_symbols$export_symbols_regex" && \ 723312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_warning "\`-export-symbols' is ignored for archives" 723412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 723512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Now set the variables for building old libraries. 723612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala build_libtool_libs=no 723712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala oldlibs="$output" 723812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append objs "$old_deplibs" 723912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 724012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 724112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala lib) 724212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Make sure we only generate libraries of the form `libNAME.la'. 724312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $outputname in 724412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala lib*) 724512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_stripname 'lib' '.la' "$outputname" 724612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala name=$func_stripname_result 724712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval shared_ext=\"$shrext_cmds\" 724812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval libname=\"$libname_spec\" 724912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 725012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 725112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test "$module" = no && \ 725212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_fatal_help "libtool library \`$output' must begin with \`lib'" 725312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 725412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$need_lib_prefix" != no; then 725512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Add the "lib" prefix for modules if required 725612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_stripname '' '.la' "$outputname" 725712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala name=$func_stripname_result 725812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval shared_ext=\"$shrext_cmds\" 725912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval libname=\"$libname_spec\" 726012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 726112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_stripname '' '.la' "$outputname" 726212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala libname=$func_stripname_result 726312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 726412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 726512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 726612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 726712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$objs"; then 726812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$deplibs_check_method" != pass_all; then 726912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 727012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 727112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo 727212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $ECHO "*** Warning: Linking the shared library $output against the non-libtool" 727312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $ECHO "*** objects $objs is not portable!" 727412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append libobjs " $objs" 727512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 727612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 727712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 727812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test "$dlself" != no && \ 727912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_warning "\`-dlopen self' is ignored for libtool libraries" 728012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 728112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala set dummy $rpath 728212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala shift 728312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test "$#" -gt 1 && \ 728412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_warning "ignoring multiple \`-rpath's for a libtool library" 728512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 728612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala install_libdir="$1" 728712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 728812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala oldlibs= 728912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -z "$rpath"; then 729012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$build_libtool_libs" = yes; then 729112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Building a libtool convenience library. 729212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Some compilers have problems with a `.al' extension so 729312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # convenience libraries should have the same extension an 729412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # archive normally would. 729512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala oldlibs="$output_objdir/$libname.$libext $oldlibs" 729612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala build_libtool_libs=convenience 729712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala build_old_libs=yes 729812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 729912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 730012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -n "$vinfo" && \ 730112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_warning "\`-version-info/-version-number' is ignored for convenience libraries" 730212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 730312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -n "$release" && \ 730412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_warning "\`-release' is ignored for convenience libraries" 730512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 730612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 730712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Parse the version information argument. 730812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala save_ifs="$IFS"; IFS=':' 730912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala set dummy $vinfo 0 0 0 731012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala shift 731112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala IFS="$save_ifs" 731212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 731312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -n "$7" && \ 731412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_fatal_help "too many parameters to \`-version-info'" 731512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 731612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # convert absolute version numbers to libtool ages 731712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # this retains compatibility with .la files and attempts 731812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # to make the code below a bit more comprehensible 731912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 732012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $vinfo_number in 732112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala yes) 732212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala number_major="$1" 732312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala number_minor="$2" 732412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala number_revision="$3" 732512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # 732612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # There are really only two kinds -- those that 732712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # use the current revision as the major version 732812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # and those that subtract age and use age as 732912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # a minor version. But, then there is irix 733012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # which has an extra 1 added just for fun 733112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # 733212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $version_type in 733312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # correct linux to gnu/linux during the next big refactor 733412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala darwin|linux|osf|windows|none) 733512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_arith $number_major + $number_minor 733612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala current=$func_arith_result 733712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala age="$number_minor" 733812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala revision="$number_revision" 733912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 734012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala freebsd-aout|freebsd-elf|qnx|sunos) 734112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala current="$number_major" 734212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala revision="$number_minor" 734312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala age="0" 734412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 734512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala irix|nonstopux) 734612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_arith $number_major + $number_minor 734712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala current=$func_arith_result 734812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala age="$number_minor" 734912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala revision="$number_minor" 735012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala lt_irix_increment=no 735112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 735212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 735312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 735412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala no) 735512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala current="$1" 735612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala revision="$2" 735712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala age="$3" 735812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 735912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 736012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 736112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Check that each of the things are valid numbers. 736212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $current in 736312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 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]) ;; 736412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 736512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_error "CURRENT \`$current' must be a nonnegative integer" 736612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_fatal_error "\`$vinfo' is not valid version information" 736712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 736812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 736912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 737012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $revision in 737112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 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]) ;; 737212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 737312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_error "REVISION \`$revision' must be a nonnegative integer" 737412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_fatal_error "\`$vinfo' is not valid version information" 737512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 737612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 737712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 737812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $age in 737912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 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]) ;; 738012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 738112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_error "AGE \`$age' must be a nonnegative integer" 738212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_fatal_error "\`$vinfo' is not valid version information" 738312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 738412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 738512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 738612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$age" -gt "$current"; then 738712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_error "AGE \`$age' is greater than the current interface number \`$current'" 738812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_fatal_error "\`$vinfo' is not valid version information" 738912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 739012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 739112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Calculate the version variables. 739212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala major= 739312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala versuffix= 739412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala verstring= 739512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $version_type in 739612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala none) ;; 739712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 739812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala darwin) 739912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Like Linux, but with the current version available in 740012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # verstring for coding it into the library header 740112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_arith $current - $age 740212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala major=.$func_arith_result 740312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala versuffix="$major.$age.$revision" 740412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Darwin ld doesn't like 0 for these options... 740512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_arith $current + 1 740612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala minor_current=$func_arith_result 740712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" 740812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" 740912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 741012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 741112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala freebsd-aout) 741212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala major=".$current" 741312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala versuffix=".$current.$revision"; 741412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 741512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 741612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala freebsd-elf) 741712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala major=".$current" 741812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala versuffix=".$current" 741912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 742012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 742112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala irix | nonstopux) 742212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "X$lt_irix_increment" = "Xno"; then 742312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_arith $current - $age 742412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 742512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_arith $current - $age + 1 742612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 742712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala major=$func_arith_result 742812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 742912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $version_type in 743012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala nonstopux) verstring_prefix=nonstopux ;; 743112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) verstring_prefix=sgi ;; 743212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 743312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala verstring="$verstring_prefix$major.$revision" 743412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 743512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Add in all the interfaces that we are compatible with. 743612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala loop=$revision 743712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala while test "$loop" -ne 0; do 743812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_arith $revision - $loop 743912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala iface=$func_arith_result 744012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_arith $loop - 1 744112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala loop=$func_arith_result 744212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala verstring="$verstring_prefix$major.$iface:$verstring" 744312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 744412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 744512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Before this point, $major must not contain `.'. 744612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala major=.$major 744712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala versuffix="$major.$revision" 744812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 744912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 745012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala linux) # correct to gnu/linux during the next big refactor 745112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_arith $current - $age 745212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala major=.$func_arith_result 745312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala versuffix="$major.$age.$revision" 745412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 745512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 745612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala osf) 745712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_arith $current - $age 745812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala major=.$func_arith_result 745912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala versuffix=".$current.$age.$revision" 746012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala verstring="$current.$age.$revision" 746112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 746212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Add in all the interfaces that we are compatible with. 746312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala loop=$age 746412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala while test "$loop" -ne 0; do 746512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_arith $current - $loop 746612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala iface=$func_arith_result 746712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_arith $loop - 1 746812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala loop=$func_arith_result 746912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala verstring="$verstring:${iface}.0" 747012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 747112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 747212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Make executables depend on our current version. 747312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append verstring ":${current}.0" 747412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 747512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 747612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala qnx) 747712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala major=".$current" 747812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala versuffix=".$current" 747912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 748012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 748112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala sunos) 748212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala major=".$current" 748312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala versuffix=".$current.$revision" 748412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 748512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 748612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala windows) 748712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Use '-' rather than '.', since we only want one 748812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # extension on DOS 8.3 filesystems. 748912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_arith $current - $age 749012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala major=$func_arith_result 749112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala versuffix="-$major" 749212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 749312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 749412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 749512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_fatal_configuration "unknown library version type \`$version_type'" 749612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 749712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 749812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 749912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Clear the version info if we defaulted, and they specified a release. 750012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -z "$vinfo" && test -n "$release"; then 750112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala major= 750212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $version_type in 750312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala darwin) 750412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # we can't check for "0.0" in archive_cmds due to quoting 750512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # problems, so we reset it completely 750612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala verstring= 750712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 750812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 750912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala verstring="0.0" 751012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 751112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 751212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$need_version" = no; then 751312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala versuffix= 751412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 751512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala versuffix=".0.0" 751612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 751712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 751812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 751912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Remove version info from name if versioning should be avoided 752012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$avoid_version" = yes && test "$need_version" = no; then 752112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala major= 752212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala versuffix= 752312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala verstring="" 752412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 752512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 752612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Check to see if the archive will have undefined symbols. 752712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$allow_undefined" = yes; then 752812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$allow_undefined_flag" = unsupported; then 752912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_warning "undefined symbols not allowed in $host shared libraries" 753012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala build_libtool_libs=no 753112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala build_old_libs=yes 753212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 753312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 753412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Don't allow undefined symbols. 753512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala allow_undefined_flag="$no_undefined_flag" 753612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 753712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 753812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 753912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 754012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_generate_dlsyms "$libname" "$libname" "yes" 754112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append libobjs " $symfileobj" 754212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test "X$libobjs" = "X " && libobjs= 754312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 754412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$opt_mode" != relink; then 754512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Remove our outputs, but don't remove object files since they 754612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # may have been created when compiling PIC objects. 754712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala removelist= 754812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala tempremovelist=`$ECHO "$output_objdir/*"` 754912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for p in $tempremovelist; do 755012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $p in 755112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *.$objext | *.gcno) 755212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 755312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) 755412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "X$precious_files_regex" != "X"; then 755512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 755612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala then 755712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 755812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 755912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 756012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append removelist " $p" 756112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 756212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) ;; 756312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 756412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 756512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -n "$removelist" && \ 756612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_show_eval "${RM}r \$removelist" 756712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 756812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 756912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Now set the variables for building old libraries. 757012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then 757112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append oldlibs " $output_objdir/$libname.$libext" 757212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 757312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Transform .lo files to .o files. 757412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP` 757512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 757612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 757712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Eliminate all temporary directories. 757812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala #for path in $notinst_path; do 757912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` 758012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` 758112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` 758212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala #done 758312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 758412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$xrpath"; then 758512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # If the user specified any rpath flags, then add them. 758612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala temp_xrpath= 758712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for libdir in $xrpath; do 758812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_replace_sysroot "$libdir" 758912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append temp_xrpath " -R$func_replace_sysroot_result" 759012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case "$finalize_rpath " in 759112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *" $libdir "*) ;; 759212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) func_append finalize_rpath " $libdir" ;; 759312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 759412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 759512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then 759612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala dependency_libs="$temp_xrpath $dependency_libs" 759712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 759812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 759912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 760012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Make sure dlfiles contains only unique files that won't be dlpreopened 760112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala old_dlfiles="$dlfiles" 760212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala dlfiles= 760312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for lib in $old_dlfiles; do 760412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case " $dlprefiles $dlfiles " in 760512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *" $lib "*) ;; 760612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) func_append dlfiles " $lib" ;; 760712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 760812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 760912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 761012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Make sure dlprefiles contains only unique files 761112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala old_dlprefiles="$dlprefiles" 761212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala dlprefiles= 761312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for lib in $old_dlprefiles; do 761412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case "$dlprefiles " in 761512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *" $lib "*) ;; 761612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) func_append dlprefiles " $lib" ;; 761712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 761812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 761912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 762012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$build_libtool_libs" = yes; then 762112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$rpath"; then 762212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $host in 762312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) 762412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # these systems don't actually have a c library (as such)! 762512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 762612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *-*-rhapsody* | *-*-darwin1.[012]) 762712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Rhapsody C library is in the System framework 762812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append deplibs " System.ltframework" 762912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 763012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *-*-netbsd*) 763112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Don't link with libc until the a.out ld.so is fixed. 763212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 763312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 763412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Do not include libc due to us having libc/libc_r. 763512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 763612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *-*-sco3.2v5* | *-*-sco5v6*) 763712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Causes problems with __ctype 763812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 763912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 764012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Compiler inserts libc in the correct place for threads to work 764112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 764212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 764312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Add libc to deplibs on all other systems if necessary. 764412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$build_libtool_need_lc" = "yes"; then 764512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append deplibs " -lc" 764612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 764712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 764812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 764912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 765012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 765112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Transform deplibs into only deplibs that can be linked in shared. 765212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala name_save=$name 765312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala libname_save=$libname 765412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala release_save=$release 765512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala versuffix_save=$versuffix 765612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala major_save=$major 765712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # I'm not sure if I'm treating the release correctly. I think 765812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # release should show up in the -l (ie -lgmp5) so we don't want to 765912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # add it in twice. Is that correct? 766012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala release="" 766112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala versuffix="" 766212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala major="" 766312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala newdeplibs= 766412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala droppeddeps=no 766512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $deplibs_check_method in 766612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala pass_all) 766712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Don't check for shared/static. Everything works. 766812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # This might be a little naive. We might want to check 766912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # whether the library exists or not. But this is on 767012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # osf3 & osf4 and I'm not really sure... Just 767112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # implementing what was already the behavior. 767212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala newdeplibs=$deplibs 767312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 767412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test_compile) 767512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # This code stresses the "libraries are programs" paradigm to its 767612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # limits. Maybe even breaks it. We compile a program, linking it 767712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # against the deplibs as a proxy for the library. Then we can check 767812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # whether they linked in statically or dynamically with ldd. 767912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_dry_run || $RM conftest.c 768012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala cat > conftest.c <<EOF 768112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala int main() { return 0; } 768212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd FialaEOF 768312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_dry_run || $RM conftest 768412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then 768512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ldd_output=`ldd conftest` 768612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for i in $deplibs; do 768712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $i in 768812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -l*) 768912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_stripname -l '' "$i" 769012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala name=$func_stripname_result 769112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 769212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case " $predeps $postdeps " in 769312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *" $i "*) 769412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append newdeplibs " $i" 769512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala i="" 769612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 769712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 769812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 769912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$i" ; then 770012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala libname=`eval "\\$ECHO \"$libname_spec\""` 770112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` 770212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala set dummy $deplib_matches; shift 770312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala deplib_match=$1 770412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 770512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append newdeplibs " $i" 770612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 770712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala droppeddeps=yes 770812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo 770912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $ECHO "*** Warning: dynamic linker does not accept needed library $i." 771012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo "*** I have the capability to make that library automatically link in when" 771112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo "*** you link to this library. But I can only do this if you have a" 771212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo "*** shared version of the library, which I believe you do not have" 771312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo "*** because a test_compile did reveal that the linker did not use it for" 771412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo "*** its dynamic dependency list that programs get resolved with at runtime." 771512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 771612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 771712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 771812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 771912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append newdeplibs " $i" 772012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 772112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 772212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 772312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 772412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Error occurred in the first compile. Let's try to salvage 772512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # the situation: Compile a separate program for each library. 772612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for i in $deplibs; do 772712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $i in 772812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -l*) 772912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_stripname -l '' "$i" 773012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala name=$func_stripname_result 773112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_dry_run || $RM conftest 773212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if $LTCC $LTCFLAGS -o conftest conftest.c $i; then 773312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ldd_output=`ldd conftest` 773412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 773512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case " $predeps $postdeps " in 773612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *" $i "*) 773712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append newdeplibs " $i" 773812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala i="" 773912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 774012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 774112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 774212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$i" ; then 774312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala libname=`eval "\\$ECHO \"$libname_spec\""` 774412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` 774512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala set dummy $deplib_matches; shift 774612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala deplib_match=$1 774712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 774812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append newdeplibs " $i" 774912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 775012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala droppeddeps=yes 775112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo 775212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $ECHO "*** Warning: dynamic linker does not accept needed library $i." 775312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo "*** I have the capability to make that library automatically link in when" 775412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo "*** you link to this library. But I can only do this if you have a" 775512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo "*** shared version of the library, which you do not appear to have" 775612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo "*** because a test_compile did reveal that the linker did not use this one" 775712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo "*** as a dynamic dependency that programs can get resolved with at runtime." 775812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 775912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 776012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 776112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala droppeddeps=yes 776212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo 776312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $ECHO "*** Warning! Library $i is needed by this library but I was not able to" 776412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo "*** make it link in! You will probably need to install it or some" 776512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo "*** library that it depends on before this library will be fully" 776612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo "*** functional. Installing it before continuing would be even better." 776712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 776812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 776912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 777012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append newdeplibs " $i" 777112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 777212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 777312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 777412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 777512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 777612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala file_magic*) 777712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala set dummy $deplibs_check_method; shift 777812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 777912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for a_deplib in $deplibs; do 778012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $a_deplib in 778112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -l*) 778212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_stripname -l '' "$a_deplib" 778312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala name=$func_stripname_result 778412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 778512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case " $predeps $postdeps " in 778612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *" $a_deplib "*) 778712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append newdeplibs " $a_deplib" 778812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala a_deplib="" 778912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 779012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 779112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 779212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$a_deplib" ; then 779312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala libname=`eval "\\$ECHO \"$libname_spec\""` 779412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$file_magic_glob"; then 779512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob` 779612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 779712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala libnameglob=$libname 779812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 779912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test "$want_nocaseglob" = yes && nocaseglob=`shopt -p nocaseglob` 780012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 780112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$want_nocaseglob" = yes; then 780212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala shopt -s nocaseglob 780312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` 780412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $nocaseglob 780512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 780612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` 780712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 780812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for potent_lib in $potential_libs; do 780912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Follow soft links. 781012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if ls -lLd "$potent_lib" 2>/dev/null | 781112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $GREP " -> " >/dev/null; then 781212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 781312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 781412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # The statement above tries to avoid entering an 781512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # endless loop below, in case of cyclic links. 781612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # We might still enter an endless loop, since a link 781712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # loop can be closed while we follow links, 781812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # but so what? 781912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala potlib="$potent_lib" 782012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala while test -h "$potlib" 2>/dev/null; do 782112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` 782212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $potliblink in 782312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; 782412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";; 782512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 782612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 782712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | 782812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $SED -e 10q | 782912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $EGREP "$file_magic_regex" > /dev/null; then 783012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append newdeplibs " $a_deplib" 783112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala a_deplib="" 783212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala break 2 783312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 783412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 783512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 783612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 783712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$a_deplib" ; then 783812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala droppeddeps=yes 783912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo 784012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $ECHO "*** Warning: linker path does not have real file for library $a_deplib." 784112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo "*** I have the capability to make that library automatically link in when" 784212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo "*** you link to this library. But I can only do this if you have a" 784312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo "*** shared version of the library, which you do not appear to have" 784412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo "*** because I did check the linker path looking for a file starting" 784512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -z "$potlib" ; then 784612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $ECHO "*** with $libname but no candidates were found. (...for file magic test)" 784712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 784812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $ECHO "*** with $libname and none of the candidates passed a file format test" 784912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $ECHO "*** using a file magic. Last file checked: $potlib" 785012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 785112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 785212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 785312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 785412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Add a -L argument. 785512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append newdeplibs " $a_deplib" 785612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 785712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 785812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done # Gone through all deplibs. 785912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 786012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala match_pattern*) 786112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala set dummy $deplibs_check_method; shift 786212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 786312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for a_deplib in $deplibs; do 786412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $a_deplib in 786512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -l*) 786612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_stripname -l '' "$a_deplib" 786712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala name=$func_stripname_result 786812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 786912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case " $predeps $postdeps " in 787012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *" $a_deplib "*) 787112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append newdeplibs " $a_deplib" 787212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala a_deplib="" 787312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 787412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 787512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 787612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$a_deplib" ; then 787712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala libname=`eval "\\$ECHO \"$libname_spec\""` 787812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 787912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala potential_libs=`ls $i/$libname[.-]* 2>/dev/null` 788012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for potent_lib in $potential_libs; do 788112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala potlib="$potent_lib" # see symlink-check above in file_magic test 788212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ 788312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $EGREP "$match_pattern_regex" > /dev/null; then 788412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append newdeplibs " $a_deplib" 788512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala a_deplib="" 788612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala break 2 788712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 788812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 788912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 789012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 789112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$a_deplib" ; then 789212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala droppeddeps=yes 789312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo 789412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $ECHO "*** Warning: linker path does not have real file for library $a_deplib." 789512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo "*** I have the capability to make that library automatically link in when" 789612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo "*** you link to this library. But I can only do this if you have a" 789712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo "*** shared version of the library, which you do not appear to have" 789812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo "*** because I did check the linker path looking for a file starting" 789912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -z "$potlib" ; then 790012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" 790112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 790212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $ECHO "*** with $libname and none of the candidates passed a file format test" 790312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $ECHO "*** using a regex pattern. Last file checked: $potlib" 790412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 790512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 790612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 790712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 790812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Add a -L argument. 790912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append newdeplibs " $a_deplib" 791012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 791112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 791212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done # Gone through all deplibs. 791312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 791412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala none | unknown | *) 791512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala newdeplibs="" 791612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` 791712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 791812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for i in $predeps $postdeps ; do 791912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # can't use Xsed below, because $i might contain '/' 792012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"` 792112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 792212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 792312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $tmp_deplibs in 792412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *[!\ \ ]*) 792512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo 792612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "X$deplibs_check_method" = "Xnone"; then 792712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo "*** Warning: inter-library dependencies are not supported in this platform." 792812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 792912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo "*** Warning: inter-library dependencies are not known to be supported." 793012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 793112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo "*** All declared inter-library dependencies are being dropped." 793212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala droppeddeps=yes 793312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 793412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 793512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 793612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 793712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala versuffix=$versuffix_save 793812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala major=$major_save 793912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala release=$release_save 794012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala libname=$libname_save 794112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala name=$name_save 794212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 794312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $host in 794412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *-*-rhapsody* | *-*-darwin1.[012]) 794512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # On Rhapsody replace the C library with the System framework 794612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` 794712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 794812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 794912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 795012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$droppeddeps" = yes; then 795112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$module" = yes; then 795212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo 795312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo "*** Warning: libtool could not satisfy all declared inter-library" 795412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $ECHO "*** dependencies of module $libname. Therefore, libtool will create" 795512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo "*** a static module, that should work as long as the dlopening" 795612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo "*** application is linked with the -dlopen flag." 795712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -z "$global_symbol_pipe"; then 795812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo 795912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo "*** However, this would only work if libtool was able to extract symbol" 796012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo "*** lists from a program, using \`nm' or equivalent, but libtool could" 796112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo "*** not find such a program. So, this module is probably useless." 796212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo "*** \`nm' from GNU binutils and a full rebuild may help." 796312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 796412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$build_old_libs" = no; then 796512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala oldlibs="$output_objdir/$libname.$libext" 796612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala build_libtool_libs=module 796712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala build_old_libs=yes 796812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 796912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala build_libtool_libs=no 797012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 797112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 797212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo "*** The inter-library dependencies that have been dropped here will be" 797312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo "*** automatically added whenever a program is linked with this library" 797412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo "*** or is declared to -dlopen it." 797512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 797612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$allow_undefined" = no; then 797712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo 797812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo "*** Since this library must not contain undefined symbols," 797912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo "*** because either the platform does not support them or" 798012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo "*** it was explicitly requested with -no-undefined," 798112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo "*** libtool will only create a static version of it." 798212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$build_old_libs" = no; then 798312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala oldlibs="$output_objdir/$libname.$libext" 798412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala build_libtool_libs=module 798512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala build_old_libs=yes 798612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 798712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala build_libtool_libs=no 798812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 798912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 799012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 799112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 799212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Done checking deplibs! 799312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala deplibs=$newdeplibs 799412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 799512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Time to change all our "foo.ltframework" stuff back to "-framework foo" 799612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $host in 799712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *-*-darwin*) 799812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 799912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 800012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 800112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 800212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 800312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 800412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # move library search paths that coincide with paths to not yet 800512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # installed libraries to the beginning of the library search list 800612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala new_libs= 800712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for path in $notinst_path; do 800812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case " $new_libs " in 800912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *" -L$path/$objdir "*) ;; 801012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 801112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case " $deplibs " in 801212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *" -L$path/$objdir "*) 801312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append new_libs " -L$path/$objdir" ;; 801412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 801512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 801612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 801712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 801812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for deplib in $deplibs; do 801912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $deplib in 802012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -L*) 802112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case " $new_libs " in 802212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *" $deplib "*) ;; 802312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) func_append new_libs " $deplib" ;; 802412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 802512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 802612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) func_append new_libs " $deplib" ;; 802712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 802812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 802912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala deplibs="$new_libs" 803012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 803112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # All the library-specific variables (install_libdir is set above). 803212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala library_names= 803312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala old_library= 803412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala dlname= 803512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 803612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Test again, we may have decided not to build it any more 803712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$build_libtool_libs" = yes; then 803812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Remove ${wl} instances when linking with ld. 803912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # FIXME: should test the right _cmds variable. 804012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $archive_cmds in 804112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *\$LD\ *) wl= ;; 804212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 804312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$hardcode_into_libs" = yes; then 804412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Hardcode the library paths 804512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala hardcode_libdirs= 804612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala dep_rpath= 804712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala rpath="$finalize_rpath" 804812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test "$opt_mode" != relink && rpath="$compile_rpath$rpath" 804912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for libdir in $rpath; do 805012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$hardcode_libdir_flag_spec"; then 805112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$hardcode_libdir_separator"; then 805212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_replace_sysroot "$libdir" 805312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala libdir=$func_replace_sysroot_result 805412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -z "$hardcode_libdirs"; then 805512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala hardcode_libdirs="$libdir" 805612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 805712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Just accumulate the unique libdirs. 805812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 805912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 806012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 806112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 806212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" 806312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 806412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 806512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 806612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 806712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval flag=\"$hardcode_libdir_flag_spec\" 806812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append dep_rpath " $flag" 806912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 807012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala elif test -n "$runpath_var"; then 807112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case "$perm_rpath " in 807212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *" $libdir "*) ;; 807312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) func_append perm_rpath " $libdir" ;; 807412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 807512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 807612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 807712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Substitute the hardcoded libdirs into the rpath. 807812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$hardcode_libdir_separator" && 807912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -n "$hardcode_libdirs"; then 808012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala libdir="$hardcode_libdirs" 808112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" 808212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 808312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$runpath_var" && test -n "$perm_rpath"; then 808412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # We should set the runpath_var. 808512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala rpath= 808612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for dir in $perm_rpath; do 808712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append rpath "$dir:" 808812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 808912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" 809012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 809112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" 809212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 809312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 809412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala shlibpath="$finalize_shlibpath" 809512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath" 809612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$shlibpath"; then 809712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" 809812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 809912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 810012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Get the real and link names of the library. 810112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval shared_ext=\"$shrext_cmds\" 810212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval library_names=\"$library_names_spec\" 810312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala set dummy $library_names 810412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala shift 810512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala realname="$1" 810612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala shift 810712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 810812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$soname_spec"; then 810912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval soname=\"$soname_spec\" 811012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 811112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala soname="$realname" 811212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 811312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -z "$dlname"; then 811412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala dlname=$soname 811512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 811612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 811712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala lib="$output_objdir/$realname" 811812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala linknames= 811912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for link 812012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala do 812112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append linknames " $link" 812212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 812312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 812412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Use standard objects if they are pic 812512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` 812612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test "X$libobjs" = "X " && libobjs= 812712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 812812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala delfiles= 812912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$export_symbols" && test -n "$include_expsyms"; then 813012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" 813112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala export_symbols="$output_objdir/$libname.uexp" 813212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append delfiles " $export_symbols" 813312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 813412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 813512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala orig_export_symbols= 813612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $host_os in 813712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala cygwin* | mingw* | cegcc*) 813812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$export_symbols" && test -z "$export_symbols_regex"; then 813912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # exporting using user supplied symfile 814012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "x`$SED 1q $export_symbols`" != xEXPORTS; then 814112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # and it's NOT already a .def file. Must figure out 814212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # which of the given symbols are data symbols and tag 814312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # them as such. So, trigger use of export_symbols_cmds. 814412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # export_symbols gets reassigned inside the "prepare 814512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # the list of exported symbols" if statement, so the 814612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # include_expsyms logic still works. 814712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala orig_export_symbols="$export_symbols" 814812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala export_symbols= 814912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala always_export_symbols=yes 815012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 815112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 815212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 815312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 815412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 815512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Prepare the list of exported symbols 815612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -z "$export_symbols"; then 815712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then 815812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_verbose "generating symbol list for \`$libname.la'" 815912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala export_symbols="$output_objdir/$libname.exp" 816012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_dry_run || $RM $export_symbols 816112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala cmds=$export_symbols_cmds 816212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala save_ifs="$IFS"; IFS='~' 816312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for cmd1 in $cmds; do 816412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala IFS="$save_ifs" 816512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Take the normal branch if the nm_file_list_spec branch 816612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # doesn't work or if tool conversion is not needed. 816712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $nm_file_list_spec~$to_tool_file_cmd in 816812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) 816912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala try_normal_branch=yes 817012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval cmd=\"$cmd1\" 817112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_len " $cmd" 817212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala len=$func_len_result 817312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 817412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 817512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala try_normal_branch=no 817612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 817712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 817812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$try_normal_branch" = yes \ 817912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala && { test "$len" -lt "$max_cmd_len" \ 818012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala || test "$max_cmd_len" -le -1; } 818112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala then 818212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_show_eval "$cmd" 'exit $?' 818312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala skipped_export=false 818412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala elif test -n "$nm_file_list_spec"; then 818512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_basename "$output" 818612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala output_la=$func_basename_result 818712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala save_libobjs=$libobjs 818812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala save_output=$output 818912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala output=${output_objdir}/${output_la}.nm 819012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_to_tool_file "$output" 819112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala libobjs=$nm_file_list_spec$func_to_tool_file_result 819212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append delfiles " $output" 819312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_verbose "creating $NM input file list: $output" 819412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for obj in $save_libobjs; do 819512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_to_tool_file "$obj" 819612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $ECHO "$func_to_tool_file_result" 819712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done > "$output" 819812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval cmd=\"$cmd1\" 819912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_show_eval "$cmd" 'exit $?' 820012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala output=$save_output 820112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala libobjs=$save_libobjs 820212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala skipped_export=false 820312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 820412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # The command line is too long to execute in one step. 820512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_verbose "using reloadable object file for export list..." 820612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala skipped_export=: 820712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Break out early, otherwise skipped_export may be 820812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # set to false by a later but shorter cmd. 820912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala break 821012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 821112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 821212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala IFS="$save_ifs" 821312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then 821412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' 821512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_show_eval '$MV "${export_symbols}T" "$export_symbols"' 821612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 821712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 821812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 821912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 822012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$export_symbols" && test -n "$include_expsyms"; then 822112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala tmp_export_symbols="$export_symbols" 822212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" 822312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' 822412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 822512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 822612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then 822712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # The given exports_symbols file has to be filtered, so filter it. 822812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" 822912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # FIXME: $output_objdir/$libname.filter potentially contains lots of 823012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # 's' commands which not all seds can handle. GNU sed should be fine 823112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # though. Also, the filter scales superlinearly with the number of 823212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # global variables. join(1) would be nice here, but unfortunately 823312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # isn't a blessed tool. 823412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter 823512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append delfiles " $export_symbols $output_objdir/$libname.filter" 823612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala export_symbols=$output_objdir/$libname.def 823712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols 823812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 823912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 824012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala tmp_deplibs= 824112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for test_deplib in $deplibs; do 824212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case " $convenience " in 824312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *" $test_deplib "*) ;; 824412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 824512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append tmp_deplibs " $test_deplib" 824612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 824712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 824812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 824912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala deplibs="$tmp_deplibs" 825012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 825112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$convenience"; then 825212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$whole_archive_flag_spec" && 825312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test "$compiler_needs_object" = yes && 825412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -z "$libobjs"; then 825512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # extract the archives, so we have objects to list. 825612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # TODO: could optimize this to just extract one archive. 825712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala whole_archive_flag_spec= 825812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 825912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$whole_archive_flag_spec"; then 826012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala save_libobjs=$libobjs 826112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 826212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test "X$libobjs" = "X " && libobjs= 826312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 826412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala gentop="$output_objdir/${outputname}x" 826512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append generated " $gentop" 826612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 826712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_extract_archives $gentop $convenience 826812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append libobjs " $func_extract_archives_result" 826912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test "X$libobjs" = "X " && libobjs= 827012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 827112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 827212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 827312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then 827412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval flag=\"$thread_safe_flag_spec\" 827512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append linker_flags " $flag" 827612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 827712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 827812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Make a backup of the uninstalled library when relinking 827912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$opt_mode" = relink; then 828012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? 828112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 828212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 828312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Do each of the archive commands. 828412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$module" = yes && test -n "$module_cmds" ; then 828512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 828612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval test_cmds=\"$module_expsym_cmds\" 828712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala cmds=$module_expsym_cmds 828812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 828912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval test_cmds=\"$module_cmds\" 829012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala cmds=$module_cmds 829112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 829212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 829312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 829412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval test_cmds=\"$archive_expsym_cmds\" 829512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala cmds=$archive_expsym_cmds 829612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 829712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval test_cmds=\"$archive_cmds\" 829812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala cmds=$archive_cmds 829912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 830012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 830112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 830212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "X$skipped_export" != "X:" && 830312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_len " $test_cmds" && 830412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala len=$func_len_result && 830512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then 830612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala : 830712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 830812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # The command line is too long to link in one step, link piecewise 830912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # or, if using GNU ld and skipped_export is not :, use a linker 831012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # script. 831112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 831212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Save the value of $output and $libobjs because we want to 831312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # use them later. If we have whole_archive_flag_spec, we 831412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # want to use save_libobjs as it was before 831512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # whole_archive_flag_spec was expanded, because we can't 831612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # assume the linker understands whole_archive_flag_spec. 831712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # This may have to be revisited, in case too many 831812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # convenience libraries get linked in and end up exceeding 831912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # the spec. 832012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then 832112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala save_libobjs=$libobjs 832212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 832312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala save_output=$output 832412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_basename "$output" 832512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala output_la=$func_basename_result 832612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 832712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Clear the reloadable object creation command queue and 832812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # initialize k to one. 832912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test_cmds= 833012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala concat_cmds= 833112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala objlist= 833212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala last_robj= 833312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala k=1 833412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 833512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then 833612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala output=${output_objdir}/${output_la}.lnkscript 833712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_verbose "creating GNU ld script: $output" 833812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo 'INPUT (' > $output 833912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for obj in $save_libobjs 834012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala do 834112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_to_tool_file "$obj" 834212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $ECHO "$func_to_tool_file_result" >> $output 834312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 834412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo ')' >> $output 834512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append delfiles " $output" 834612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_to_tool_file "$output" 834712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala output=$func_to_tool_file_result 834812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then 834912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala output=${output_objdir}/${output_la}.lnk 835012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_verbose "creating linker input file list: $output" 835112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala : > $output 835212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala set x $save_libobjs 835312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala shift 835412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala firstobj= 835512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$compiler_needs_object" = yes; then 835612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala firstobj="$1 " 835712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala shift 835812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 835912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for obj 836012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala do 836112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_to_tool_file "$obj" 836212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $ECHO "$func_to_tool_file_result" >> $output 836312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 836412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append delfiles " $output" 836512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_to_tool_file "$output" 836612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala output=$firstobj\"$file_list_spec$func_to_tool_file_result\" 836712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 836812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$save_libobjs"; then 836912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_verbose "creating reloadable object files..." 837012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala output=$output_objdir/$output_la-${k}.$objext 837112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval test_cmds=\"$reload_cmds\" 837212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_len " $test_cmds" 837312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala len0=$func_len_result 837412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala len=$len0 837512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 837612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Loop over the list of objects to be linked. 837712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for obj in $save_libobjs 837812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala do 837912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_len " $obj" 838012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_arith $len + $func_len_result 838112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala len=$func_arith_result 838212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "X$objlist" = X || 838312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test "$len" -lt "$max_cmd_len"; then 838412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append objlist " $obj" 838512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 838612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # The command $test_cmds is almost too long, add a 838712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # command to the queue. 838812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$k" -eq 1 ; then 838912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # The first file doesn't have a previous command to add. 839012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala reload_objs=$objlist 839112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval concat_cmds=\"$reload_cmds\" 839212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 839312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # All subsequent reloadable object files will link in 839412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # the last one created. 839512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala reload_objs="$objlist $last_robj" 839612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" 839712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 839812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala last_robj=$output_objdir/$output_la-${k}.$objext 839912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_arith $k + 1 840012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala k=$func_arith_result 840112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala output=$output_objdir/$output_la-${k}.$objext 840212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala objlist=" $obj" 840312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_len " $last_robj" 840412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_arith $len0 + $func_len_result 840512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala len=$func_arith_result 840612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 840712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 840812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Handle the remaining objects by creating one last 840912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # reloadable object file. All subsequent reloadable object 841012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # files will link in the last one created. 841112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 841212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala reload_objs="$objlist $last_robj" 841312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval concat_cmds=\"\${concat_cmds}$reload_cmds\" 841412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$last_robj"; then 841512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" 841612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 841712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append delfiles " $output" 841812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 841912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 842012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala output= 842112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 842212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 842312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if ${skipped_export-false}; then 842412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_verbose "generating symbol list for \`$libname.la'" 842512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala export_symbols="$output_objdir/$libname.exp" 842612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_dry_run || $RM $export_symbols 842712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala libobjs=$output 842812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Append the command to create the export file. 842912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 843012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" 843112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$last_robj"; then 843212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" 843312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 843412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 843512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 843612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -n "$save_libobjs" && 843712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_verbose "creating a temporary reloadable object file: $output" 843812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 843912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Loop through the commands generated above and execute them. 844012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala save_ifs="$IFS"; IFS='~' 844112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for cmd in $concat_cmds; do 844212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala IFS="$save_ifs" 844312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_silent || { 844412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_quote_for_expand "$cmd" 844512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval "func_echo $func_quote_for_expand_result" 844612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } 844712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_dry_run || eval "$cmd" || { 844812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala lt_exit=$? 844912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 845012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Restore the uninstalled library and exit 845112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$opt_mode" = relink; then 845212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ( cd "$output_objdir" && \ 845312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $RM "${realname}T" && \ 845412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $MV "${realname}U" "$realname" ) 845512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 845612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 845712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala exit $lt_exit 845812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } 845912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 846012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala IFS="$save_ifs" 846112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 846212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$export_symbols_regex" && ${skipped_export-false}; then 846312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' 846412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_show_eval '$MV "${export_symbols}T" "$export_symbols"' 846512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 846612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 846712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 846812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if ${skipped_export-false}; then 846912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$export_symbols" && test -n "$include_expsyms"; then 847012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala tmp_export_symbols="$export_symbols" 847112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" 847212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' 847312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 847412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 847512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$orig_export_symbols"; then 847612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # The given exports_symbols file has to be filtered, so filter it. 847712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" 847812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # FIXME: $output_objdir/$libname.filter potentially contains lots of 847912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # 's' commands which not all seds can handle. GNU sed should be fine 848012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # though. Also, the filter scales superlinearly with the number of 848112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # global variables. join(1) would be nice here, but unfortunately 848212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # isn't a blessed tool. 848312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter 848412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append delfiles " $export_symbols $output_objdir/$libname.filter" 848512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala export_symbols=$output_objdir/$libname.def 848612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols 848712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 848812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 848912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 849012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala libobjs=$output 849112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Restore the value of output. 849212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala output=$save_output 849312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 849412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then 849512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 849612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test "X$libobjs" = "X " && libobjs= 849712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 849812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Expand the library linking commands again to reset the 849912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # value of $libobjs for piecewise linking. 850012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 850112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Do each of the archive commands. 850212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$module" = yes && test -n "$module_cmds" ; then 850312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 850412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala cmds=$module_expsym_cmds 850512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 850612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala cmds=$module_cmds 850712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 850812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 850912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 851012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala cmds=$archive_expsym_cmds 851112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 851212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala cmds=$archive_cmds 851312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 851412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 851512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 851612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 851712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$delfiles"; then 851812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Append the command to remove temporary files to $cmds. 851912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval cmds=\"\$cmds~\$RM $delfiles\" 852012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 852112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 852212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Add any objects from preloaded convenience libraries 852312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$dlprefiles"; then 852412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala gentop="$output_objdir/${outputname}x" 852512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append generated " $gentop" 852612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 852712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_extract_archives $gentop $dlprefiles 852812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append libobjs " $func_extract_archives_result" 852912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test "X$libobjs" = "X " && libobjs= 853012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 853112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 853212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala save_ifs="$IFS"; IFS='~' 853312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for cmd in $cmds; do 853412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala IFS="$save_ifs" 853512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval cmd=\"$cmd\" 853612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_silent || { 853712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_quote_for_expand "$cmd" 853812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval "func_echo $func_quote_for_expand_result" 853912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } 854012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_dry_run || eval "$cmd" || { 854112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala lt_exit=$? 854212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 854312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Restore the uninstalled library and exit 854412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$opt_mode" = relink; then 854512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ( cd "$output_objdir" && \ 854612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $RM "${realname}T" && \ 854712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $MV "${realname}U" "$realname" ) 854812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 854912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 855012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala exit $lt_exit 855112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } 855212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 855312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala IFS="$save_ifs" 855412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 855512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Restore the uninstalled library and exit 855612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$opt_mode" = relink; then 855712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? 855812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 855912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$convenience"; then 856012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -z "$whole_archive_flag_spec"; then 856112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_show_eval '${RM}r "$gentop"' 856212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 856312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 856412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 856512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala exit $EXIT_SUCCESS 856612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 856712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 856812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Create links to the real library. 856912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for linkname in $linknames; do 857012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$realname" != "$linkname"; then 857112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' 857212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 857312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 857412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 857512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # If -module or -export-dynamic was specified, set the dlname. 857612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$module" = yes || test "$export_dynamic" = yes; then 857712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # On all known operating systems, these are identical. 857812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala dlname="$soname" 857912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 858012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 858112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 858212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 858312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala obj) 858412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 858512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_warning "\`-dlopen' is ignored for objects" 858612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 858712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 858812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case " $deplibs" in 858912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *\ -l* | *\ -L*) 859012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_warning "\`-l' and \`-L' are ignored for objects" ;; 859112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 859212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 859312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -n "$rpath" && \ 859412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_warning "\`-rpath' is ignored for objects" 859512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 859612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -n "$xrpath" && \ 859712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_warning "\`-R' is ignored for objects" 859812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 859912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -n "$vinfo" && \ 860012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_warning "\`-version-info' is ignored for objects" 860112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 860212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -n "$release" && \ 860312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_warning "\`-release' is ignored for objects" 860412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 860512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $output in 860612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *.lo) 860712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -n "$objs$old_deplibs" && \ 860812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_fatal_error "cannot build library object \`$output' from non-libtool objects" 860912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 861012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala libobj=$output 861112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_lo2o "$libobj" 861212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala obj=$func_lo2o_result 861312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 861412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 861512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala libobj= 861612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala obj="$output" 861712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 861812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 861912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 862012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Delete the old objects. 862112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_dry_run || $RM $obj $libobj 862212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 862312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Objects from convenience libraries. This assumes 862412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # single-version convenience libraries. Whenever we create 862512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # different ones for PIC/non-PIC, this we'll have to duplicate 862612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # the extraction. 862712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala reload_conv_objs= 862812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala gentop= 862912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # reload_cmds runs $LD directly, so let us get rid of 863012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # -Wl from whole_archive_flag_spec and hope we can get by with 863112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # turning comma into space.. 863212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala wl= 863312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 863412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$convenience"; then 863512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$whole_archive_flag_spec"; then 863612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" 863712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` 863812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 863912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala gentop="$output_objdir/${obj}x" 864012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append generated " $gentop" 864112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 864212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_extract_archives $gentop $convenience 864312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala reload_conv_objs="$reload_objs $func_extract_archives_result" 864412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 864512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 864612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 864712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # If we're not building shared, we need to use non_pic_objs 864812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test "$build_libtool_libs" != yes && libobjs="$non_pic_objects" 864912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 865012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Create the old-style object. 865112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test 865212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 865312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala output="$obj" 865412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_execute_cmds "$reload_cmds" 'exit $?' 865512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 865612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Exit if we aren't doing a library object file. 865712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -z "$libobj"; then 865812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$gentop"; then 865912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_show_eval '${RM}r "$gentop"' 866012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 866112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 866212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala exit $EXIT_SUCCESS 866312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 866412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 866512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$build_libtool_libs" != yes; then 866612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$gentop"; then 866712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_show_eval '${RM}r "$gentop"' 866812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 866912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 867012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Create an invalid libtool object if no PIC, so that we don't 867112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # accidentally link it into a program. 867212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # $show "echo timestamp > $libobj" 867312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? 867412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala exit $EXIT_SUCCESS 867512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 867612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 867712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$pic_flag" || test "$pic_mode" != default; then 867812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Only do commands if we really have different PIC objects. 867912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala reload_objs="$libobjs $reload_conv_objs" 868012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala output="$libobj" 868112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_execute_cmds "$reload_cmds" 'exit $?' 868212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 868312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 868412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$gentop"; then 868512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_show_eval '${RM}r "$gentop"' 868612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 868712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 868812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala exit $EXIT_SUCCESS 868912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 869012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 869112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala prog) 869212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $host in 869312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *cygwin*) func_stripname '' '.exe' "$output" 869412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala output=$func_stripname_result.exe;; 869512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 869612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -n "$vinfo" && \ 869712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_warning "\`-version-info' is ignored for programs" 869812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 869912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -n "$release" && \ 870012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_warning "\`-release' is ignored for programs" 870112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 870212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test "$preload" = yes \ 870312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala && test "$dlopen_support" = unknown \ 870412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala && test "$dlopen_self" = unknown \ 870512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala && test "$dlopen_self_static" = unknown && \ 870612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." 870712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 870812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $host in 870912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *-*-rhapsody* | *-*-darwin1.[012]) 871012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # On Rhapsody replace the C library is the System framework 871112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` 871212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` 871312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 871412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 871512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 871612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $host in 871712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *-*-darwin*) 871812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Don't allow lazy linking, it breaks C++ global constructors 871912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # But is supposedly fixed on 10.4 or later (yay!). 872012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$tagname" = CXX ; then 872112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case ${MACOSX_DEPLOYMENT_TARGET-10.0} in 872212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 10.[0123]) 872312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append compile_command " ${wl}-bind_at_load" 872412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append finalize_command " ${wl}-bind_at_load" 872512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 872612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 872712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 872812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Time to change all our "foo.ltframework" stuff back to "-framework foo" 872912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 873012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 873112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 873212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 873312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 873412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 873512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # move library search paths that coincide with paths to not yet 873612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # installed libraries to the beginning of the library search list 873712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala new_libs= 873812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for path in $notinst_path; do 873912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case " $new_libs " in 874012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *" -L$path/$objdir "*) ;; 874112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 874212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case " $compile_deplibs " in 874312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *" -L$path/$objdir "*) 874412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append new_libs " -L$path/$objdir" ;; 874512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 874612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 874712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 874812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 874912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for deplib in $compile_deplibs; do 875012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $deplib in 875112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -L*) 875212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case " $new_libs " in 875312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *" $deplib "*) ;; 875412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) func_append new_libs " $deplib" ;; 875512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 875612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 875712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) func_append new_libs " $deplib" ;; 875812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 875912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 876012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala compile_deplibs="$new_libs" 876112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 876212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 876312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append compile_command " $compile_deplibs" 876412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append finalize_command " $finalize_deplibs" 876512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 876612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$rpath$xrpath"; then 876712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # If the user specified any rpath flags, then add them. 876812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for libdir in $rpath $xrpath; do 876912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # This is the magic to use -rpath. 877012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case "$finalize_rpath " in 877112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *" $libdir "*) ;; 877212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) func_append finalize_rpath " $libdir" ;; 877312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 877412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 877512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 877612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 877712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Now hardcode the library paths 877812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala rpath= 877912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala hardcode_libdirs= 878012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for libdir in $compile_rpath $finalize_rpath; do 878112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$hardcode_libdir_flag_spec"; then 878212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$hardcode_libdir_separator"; then 878312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -z "$hardcode_libdirs"; then 878412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala hardcode_libdirs="$libdir" 878512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 878612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Just accumulate the unique libdirs. 878712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 878812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 878912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 879012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 879112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" 879212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 879312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 879412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 879512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 879612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval flag=\"$hardcode_libdir_flag_spec\" 879712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append rpath " $flag" 879812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 879912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala elif test -n "$runpath_var"; then 880012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case "$perm_rpath " in 880112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *" $libdir "*) ;; 880212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) func_append perm_rpath " $libdir" ;; 880312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 880412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 880512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $host in 880612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 880712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` 880812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case :$dllsearchpath: in 880912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *":$libdir:"*) ;; 881012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ::) dllsearchpath=$libdir;; 881112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) func_append dllsearchpath ":$libdir";; 881212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 881312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case :$dllsearchpath: in 881412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *":$testbindir:"*) ;; 881512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ::) dllsearchpath=$testbindir;; 881612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) func_append dllsearchpath ":$testbindir";; 881712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 881812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 881912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 882012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 882112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Substitute the hardcoded libdirs into the rpath. 882212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$hardcode_libdir_separator" && 882312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -n "$hardcode_libdirs"; then 882412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala libdir="$hardcode_libdirs" 882512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval rpath=\" $hardcode_libdir_flag_spec\" 882612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 882712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala compile_rpath="$rpath" 882812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 882912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala rpath= 883012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala hardcode_libdirs= 883112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for libdir in $finalize_rpath; do 883212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$hardcode_libdir_flag_spec"; then 883312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$hardcode_libdir_separator"; then 883412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -z "$hardcode_libdirs"; then 883512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala hardcode_libdirs="$libdir" 883612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 883712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Just accumulate the unique libdirs. 883812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 883912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 884012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 884112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 884212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" 884312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 884412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 884512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 884612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 884712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval flag=\"$hardcode_libdir_flag_spec\" 884812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append rpath " $flag" 884912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 885012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala elif test -n "$runpath_var"; then 885112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case "$finalize_perm_rpath " in 885212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *" $libdir "*) ;; 885312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) func_append finalize_perm_rpath " $libdir" ;; 885412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 885512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 885612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 885712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Substitute the hardcoded libdirs into the rpath. 885812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$hardcode_libdir_separator" && 885912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -n "$hardcode_libdirs"; then 886012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala libdir="$hardcode_libdirs" 886112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval rpath=\" $hardcode_libdir_flag_spec\" 886212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 886312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala finalize_rpath="$rpath" 886412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 886512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$libobjs" && test "$build_old_libs" = yes; then 886612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Transform all the library objects into standard objects. 886712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` 886812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` 886912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 887012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 887112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_generate_dlsyms "$outputname" "@PROGRAM@" "no" 887212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 887312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # template prelinking step 887412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$prelink_cmds"; then 887512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_execute_cmds "$prelink_cmds" 'exit $?' 887612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 887712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 887812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala wrappers_required=yes 887912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $host in 888012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *cegcc* | *mingw32ce*) 888112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. 888212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala wrappers_required=no 888312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 888412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *cygwin* | *mingw* ) 888512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$build_libtool_libs" != yes; then 888612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala wrappers_required=no 888712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 888812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 888912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 889012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$need_relink" = no || test "$build_libtool_libs" != yes; then 889112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala wrappers_required=no 889212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 889312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 889412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 889512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$wrappers_required" = no; then 889612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Replace the output file specification. 889712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` 889812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala link_command="$compile_command$compile_rpath" 889912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 890012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # We have no uninstalled library dependencies, so finalize right now. 890112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala exit_status=0 890212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_show_eval "$link_command" 'exit_status=$?' 890312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 890412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$postlink_cmds"; then 890512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_to_tool_file "$output" 890612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` 890712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_execute_cmds "$postlink_cmds" 'exit $?' 890812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 890912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 891012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Delete the generated files. 891112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -f "$output_objdir/${outputname}S.${objext}"; then 891212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' 891312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 891412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 891512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala exit $exit_status 891612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 891712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 891812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$compile_shlibpath$finalize_shlibpath"; then 891912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" 892012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 892112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$finalize_shlibpath"; then 892212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" 892312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 892412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 892512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala compile_var= 892612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala finalize_var= 892712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$runpath_var"; then 892812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$perm_rpath"; then 892912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # We should set the runpath_var. 893012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala rpath= 893112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for dir in $perm_rpath; do 893212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append rpath "$dir:" 893312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 893412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala compile_var="$runpath_var=\"$rpath\$$runpath_var\" " 893512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 893612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$finalize_perm_rpath"; then 893712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # We should set the runpath_var. 893812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala rpath= 893912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for dir in $finalize_perm_rpath; do 894012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append rpath "$dir:" 894112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 894212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " 894312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 894412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 894512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 894612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$no_install" = yes; then 894712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # We don't need to create a wrapper script. 894812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala link_command="$compile_var$compile_command$compile_rpath" 894912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Replace the output file specification. 895012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` 895112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Delete the old output file. 895212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_dry_run || $RM $output 895312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Link the executable and exit 895412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_show_eval "$link_command" 'exit $?' 895512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 895612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$postlink_cmds"; then 895712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_to_tool_file "$output" 895812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` 895912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_execute_cmds "$postlink_cmds" 'exit $?' 896012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 896112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 896212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala exit $EXIT_SUCCESS 896312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 896412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 896512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$hardcode_action" = relink; then 896612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Fast installation is not supported 896712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala link_command="$compile_var$compile_command$compile_rpath" 896812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala relink_command="$finalize_var$finalize_command$finalize_rpath" 896912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 897012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_warning "this platform does not like uninstalled shared libraries" 897112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_warning "\`$output' will be relinked during installation" 897212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 897312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$fast_install" != no; then 897412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala link_command="$finalize_var$compile_command$finalize_rpath" 897512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$fast_install" = yes; then 897612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` 897712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 897812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # fast_install is set to needless 897912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala relink_command= 898012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 898112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 898212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala link_command="$compile_var$compile_command$compile_rpath" 898312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala relink_command="$finalize_var$finalize_command$finalize_rpath" 898412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 898512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 898612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 898712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Replace the output file specification. 898812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` 898912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 899012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Delete the old output files. 899112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname 899212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 899312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_show_eval "$link_command" 'exit $?' 899412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 899512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$postlink_cmds"; then 899612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_to_tool_file "$output_objdir/$outputname" 899712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 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'` 899812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_execute_cmds "$postlink_cmds" 'exit $?' 899912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 900012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 900112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Now create the wrapper script. 900212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_verbose "creating $output" 900312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 900412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Quote the relink command for shipping. 900512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$relink_command"; then 900612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Preserve any variables that may affect compiler behavior 900712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for var in $variables_saved_for_relink; do 900812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if eval test -z \"\${$var+set}\"; then 900912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" 901012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala elif eval var_value=\$$var; test -z "$var_value"; then 901112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala relink_command="$var=; export $var; $relink_command" 901212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 901312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_quote_for_eval "$var_value" 901412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" 901512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 901612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 901712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala relink_command="(cd `pwd`; $relink_command)" 901812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` 901912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 902012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 902112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Only actually do things if not in dry run mode. 902212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_dry_run || { 902312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # win32 will think the script is a binary if it has 902412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # a .exe suffix, so we strip it off here. 902512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $output in 902612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *.exe) func_stripname '' '.exe' "$output" 902712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala output=$func_stripname_result ;; 902812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 902912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # test for cygwin because mv fails w/o .exe extensions 903012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $host in 903112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *cygwin*) 903212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala exeext=.exe 903312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_stripname '' '.exe' "$outputname" 903412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala outputname=$func_stripname_result ;; 903512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) exeext= ;; 903612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 903712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $host in 903812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *cygwin* | *mingw* ) 903912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_dirname_and_basename "$output" "" "." 904012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala output_name=$func_basename_result 904112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala output_path=$func_dirname_result 904212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala cwrappersource="$output_path/$objdir/lt-$output_name.c" 904312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala cwrapper="$output_path/$output_name.exe" 904412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $RM $cwrappersource $cwrapper 904512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 904612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 904712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_emit_cwrapperexe_src > $cwrappersource 904812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 904912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # The wrapper executable is built using the $host compiler, 905012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # because it contains $host paths and files. If cross- 905112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # compiling, it, like the target executable, must be 905212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # executed on the $host or under an emulation environment. 905312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_dry_run || { 905412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $LTCC $LTCFLAGS -o $cwrapper $cwrappersource 905512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $STRIP $cwrapper 905612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } 905712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 905812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Now, create the wrapper script for func_source use: 905912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_ltwrapper_scriptname $cwrapper 906012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $RM $func_ltwrapper_scriptname_result 906112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 906212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_dry_run || { 906312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # note: this script will not be executed, so do not chmod. 906412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "x$build" = "x$host" ; then 906512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result 906612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 906712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_emit_wrapper no > $func_ltwrapper_scriptname_result 906812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 906912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } 907012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 907112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala * ) 907212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $RM $output 907312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 907412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 907512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_emit_wrapper no > $output 907612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala chmod +x $output 907712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 907812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 907912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } 908012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala exit $EXIT_SUCCESS 908112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 908212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 908312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 908412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # See if we need to build an old-fashioned archive. 908512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for oldlib in $oldlibs; do 908612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 908712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$build_libtool_libs" = convenience; then 908812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala oldobjs="$libobjs_save $symfileobj" 908912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala addlibs="$convenience" 909012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala build_libtool_libs=no 909112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 909212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$build_libtool_libs" = module; then 909312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala oldobjs="$libobjs_save" 909412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala build_libtool_libs=no 909512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 909612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala oldobjs="$old_deplibs $non_pic_objects" 909712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$preload" = yes && test -f "$symfileobj"; then 909812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append oldobjs " $symfileobj" 909912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 910012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 910112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala addlibs="$old_convenience" 910212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 910312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 910412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$addlibs"; then 910512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala gentop="$output_objdir/${outputname}x" 910612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append generated " $gentop" 910712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 910812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_extract_archives $gentop $addlibs 910912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append oldobjs " $func_extract_archives_result" 911012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 911112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 911212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Do each command in the archive commands. 911312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then 911412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala cmds=$old_archive_from_new_cmds 911512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 911612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 911712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Add any objects from preloaded convenience libraries 911812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$dlprefiles"; then 911912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala gentop="$output_objdir/${outputname}x" 912012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append generated " $gentop" 912112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 912212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_extract_archives $gentop $dlprefiles 912312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append oldobjs " $func_extract_archives_result" 912412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 912512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 912612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # POSIX demands no paths to be encoded in archives. We have 912712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # to avoid creating archives with duplicate basenames if we 912812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # might have to extract them afterwards, e.g., when creating a 912912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # static archive out of a convenience library, or when linking 913012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # the entirety of a libtool archive into another (currently 913112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # not supported by libtool). 913212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if (for obj in $oldobjs 913312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala do 913412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_basename "$obj" 913512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $ECHO "$func_basename_result" 913612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done | sort | sort -uc >/dev/null 2>&1); then 913712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala : 913812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 913912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala echo "copying selected object files to avoid basename conflicts..." 914012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala gentop="$output_objdir/${outputname}x" 914112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append generated " $gentop" 914212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_mkdir_p "$gentop" 914312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala save_oldobjs=$oldobjs 914412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala oldobjs= 914512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala counter=1 914612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for obj in $save_oldobjs 914712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala do 914812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_basename "$obj" 914912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala objbase="$func_basename_result" 915012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case " $oldobjs " in 915112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala " ") oldobjs=$obj ;; 915212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *[\ /]"$objbase "*) 915312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala while :; do 915412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Make sure we don't pick an alternate name that also 915512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # overlaps. 915612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala newobj=lt$counter-$objbase 915712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_arith $counter + 1 915812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala counter=$func_arith_result 915912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case " $oldobjs " in 916012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *[\ /]"$newobj "*) ;; 916112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) if test ! -f "$gentop/$newobj"; then break; fi ;; 916212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 916312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 916412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" 916512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append oldobjs " $gentop/$newobj" 916612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 916712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) func_append oldobjs " $obj" ;; 916812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 916912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 917012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 917112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 917212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala tool_oldlib=$func_to_tool_file_result 917312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval cmds=\"$old_archive_cmds\" 917412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 917512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_len " $cmds" 917612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala len=$func_len_result 917712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then 917812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala cmds=$old_archive_cmds 917912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala elif test -n "$archiver_list_spec"; then 918012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_verbose "using command file archive linking..." 918112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for obj in $oldobjs 918212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala do 918312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_to_tool_file "$obj" 918412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $ECHO "$func_to_tool_file_result" 918512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done > $output_objdir/$libname.libcmd 918612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_to_tool_file "$output_objdir/$libname.libcmd" 918712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala oldobjs=" $archiver_list_spec$func_to_tool_file_result" 918812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala cmds=$old_archive_cmds 918912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 919012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # the command line is too long to link in one step, link in parts 919112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_verbose "using piecewise archive linking..." 919212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala save_RANLIB=$RANLIB 919312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala RANLIB=: 919412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala objlist= 919512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala concat_cmds= 919612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala save_oldobjs=$oldobjs 919712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala oldobjs= 919812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Is there a better way of finding the last object in the list? 919912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for obj in $save_oldobjs 920012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala do 920112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala last_oldobj=$obj 920212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 920312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval test_cmds=\"$old_archive_cmds\" 920412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_len " $test_cmds" 920512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala len0=$func_len_result 920612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala len=$len0 920712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for obj in $save_oldobjs 920812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala do 920912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_len " $obj" 921012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_arith $len + $func_len_result 921112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala len=$func_arith_result 921212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append objlist " $obj" 921312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$len" -lt "$max_cmd_len"; then 921412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala : 921512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 921612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # the above command should be used before it gets too long 921712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala oldobjs=$objlist 921812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$obj" = "$last_oldobj" ; then 921912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala RANLIB=$save_RANLIB 922012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 922112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 922212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" 922312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala objlist= 922412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala len=$len0 922512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 922612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 922712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala RANLIB=$save_RANLIB 922812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala oldobjs=$objlist 922912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "X$oldobjs" = "X" ; then 923012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval cmds=\"\$concat_cmds\" 923112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 923212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval cmds=\"\$concat_cmds~\$old_archive_cmds\" 923312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 923412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 923512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 923612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_execute_cmds "$cmds" 'exit $?' 923712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 923812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 923912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -n "$generated" && \ 924012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_show_eval "${RM}r$generated" 924112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 924212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Now create the libtool archive. 924312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $output in 924412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *.la) 924512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala old_library= 924612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test "$build_old_libs" = yes && old_library="$libname.$libext" 924712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_verbose "creating $output" 924812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 924912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Preserve any variables that may affect compiler behavior 925012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for var in $variables_saved_for_relink; do 925112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if eval test -z \"\${$var+set}\"; then 925212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" 925312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala elif eval var_value=\$$var; test -z "$var_value"; then 925412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala relink_command="$var=; export $var; $relink_command" 925512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 925612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_quote_for_eval "$var_value" 925712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" 925812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 925912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 926012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Quote the link command for shipping. 926112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" 926212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` 926312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$hardcode_automatic" = yes ; then 926412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala relink_command= 926512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 926612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 926712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Only create the output if not a dry run. 926812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_dry_run || { 926912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for installed in no yes; do 927012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$installed" = yes; then 927112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -z "$install_libdir"; then 927212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala break 927312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 927412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala output="$output_objdir/$outputname"i 927512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Replace all uninstalled libtool libraries with the installed ones 927612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala newdependency_libs= 927712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for deplib in $dependency_libs; do 927812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $deplib in 927912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *.la) 928012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_basename "$deplib" 928112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala name="$func_basename_result" 928212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_resolve_sysroot "$deplib" 928312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` 928412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -z "$libdir" && \ 928512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_fatal_error "\`$deplib' is not a valid libtool archive" 928612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" 928712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 928812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -L*) 928912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_stripname -L '' "$deplib" 929012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_replace_sysroot "$func_stripname_result" 929112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append newdependency_libs " -L$func_replace_sysroot_result" 929212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 929312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -R*) 929412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_stripname -R '' "$deplib" 929512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_replace_sysroot "$func_stripname_result" 929612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append newdependency_libs " -R$func_replace_sysroot_result" 929712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 929812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) func_append newdependency_libs " $deplib" ;; 929912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 930012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 930112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala dependency_libs="$newdependency_libs" 930212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala newdlfiles= 930312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 930412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for lib in $dlfiles; do 930512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $lib in 930612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *.la) 930712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_basename "$lib" 930812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala name="$func_basename_result" 930912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 931012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -z "$libdir" && \ 931112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_fatal_error "\`$lib' is not a valid libtool archive" 931212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" 931312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 931412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) func_append newdlfiles " $lib" ;; 931512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 931612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 931712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala dlfiles="$newdlfiles" 931812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala newdlprefiles= 931912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for lib in $dlprefiles; do 932012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $lib in 932112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *.la) 932212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Only pass preopened files to the pseudo-archive (for 932312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # eventual linking with the app. that links it) if we 932412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # didn't already link the preopened objects directly into 932512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # the library: 932612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_basename "$lib" 932712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala name="$func_basename_result" 932812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 932912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -z "$libdir" && \ 933012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_fatal_error "\`$lib' is not a valid libtool archive" 933112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" 933212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 933312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 933412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 933512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala dlprefiles="$newdlprefiles" 933612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 933712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala newdlfiles= 933812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for lib in $dlfiles; do 933912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $lib in 934012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 934112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) abs=`pwd`"/$lib" ;; 934212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 934312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append newdlfiles " $abs" 934412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 934512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala dlfiles="$newdlfiles" 934612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala newdlprefiles= 934712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for lib in $dlprefiles; do 934812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $lib in 934912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 935012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) abs=`pwd`"/$lib" ;; 935112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 935212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append newdlprefiles " $abs" 935312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 935412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala dlprefiles="$newdlprefiles" 935512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 935612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $RM $output 935712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # place dlname in correct position for cygwin 935812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # In fact, it would be nice if we could use this code for all target 935912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # systems that can't hard-code library paths into their executables 936012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # and that have no shared library path variable independent of PATH, 936112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # but it turns out we can't easily determine that from inspecting 936212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # libtool variables, so we have to hard-code the OSs to which it 936312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # applies here; at the moment, that means platforms that use the PE 936412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # object format with DLL files. See the long comment at the top of 936512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # tests/bindir.at for full details. 936612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala tdlname=$dlname 936712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $host,$output,$installed,$module,$dlname in 936812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) 936912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # If a -bindir argument was supplied, place the dll there. 937012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "x$bindir" != x ; 937112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala then 937212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_relative_path "$install_libdir" "$bindir" 937312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala tdlname=$func_relative_path_result$dlname 937412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 937512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Otherwise fall back on heuristic. 937612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala tdlname=../bin/$dlname 937712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 937812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 937912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 938012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $ECHO > $output "\ 938112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# $outputname - a libtool library file 938212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 938312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# 938412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Please DO NOT delete this file! 938512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# It is necessary for linking the library. 938612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 938712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# The name that we can dlopen(3). 938812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialadlname='$tdlname' 938912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 939012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Names of this library. 939112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialalibrary_names='$library_names' 939212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 939312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# The name of the static archive. 939412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaold_library='$old_library' 939512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 939612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Linker flags that can not go in dependency_libs. 939712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialainherited_linker_flags='$new_inherited_linker_flags' 939812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 939912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Libraries that this one depends upon. 940012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialadependency_libs='$dependency_libs' 940112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 940212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Names of additional weak libraries provided by this library 940312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaweak_library_names='$weak_libs' 940412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 940512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Version information for $libname. 940612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialacurrent=$current 940712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaage=$age 940812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialarevision=$revision 940912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 941012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Is this an already installed library? 941112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialainstalled=$installed 941212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 941312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Should we warn about portability when linking against -modules? 941412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialashouldnotlink=$module 941512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 941612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Files to dlopen/dlpreopen 941712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialadlopen='$dlfiles' 941812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialadlpreopen='$dlprefiles' 941912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 942012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Directory that this library needs to be installed in: 942112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialalibdir='$install_libdir'" 942212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$installed" = no && test "$need_relink" = yes; then 942312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $ECHO >> $output "\ 942412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialarelink_command=\"$relink_command\"" 942512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 942612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 942712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala } 942812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 942912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Do a symbolic link so that the libtool archive can be found in 943012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # LD_LIBRARY_PATH before the program is installed. 943112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' 943212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 943312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 943412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala exit $EXIT_SUCCESS 943512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 943612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 943712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ test "$opt_mode" = link || test "$opt_mode" = relink; } && 943812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_mode_link ${1+"$@"} 943912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 944012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 944112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# func_mode_uninstall arg... 944212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafunc_mode_uninstall () 944312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ 944412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala $opt_debug 944512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala RM="$nonopt" 944612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala files= 944712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala rmforce= 944812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala exit_status=0 944912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 945012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # This variable tells wrapper scripts just to set variables rather 945112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # than running their programs. 945212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala libtool_install_magic="$magic" 945312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 945412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for arg 945512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala do 945612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $arg in 945712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -f) func_append RM " $arg"; rmforce=yes ;; 945812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala -*) func_append RM " $arg" ;; 945912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) func_append files " $arg" ;; 946012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 946112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 946212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 946312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -z "$RM" && \ 946412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_fatal_help "you must specify an RM program" 946512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 946612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala rmdirs= 946712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 946812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for file in $files; do 946912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_dirname "$file" "" "." 947012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala dir="$func_dirname_result" 947112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "X$dir" = X.; then 947212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala odir="$objdir" 947312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 947412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala odir="$dir/$objdir" 947512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 947612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_basename "$file" 947712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala name="$func_basename_result" 947812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test "$opt_mode" = uninstall && odir="$dir" 947912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 948012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Remember odir for removal later, being careful to avoid duplicates 948112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$opt_mode" = clean; then 948212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case " $rmdirs " in 948312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *" $odir "*) ;; 948412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) func_append rmdirs " $odir" ;; 948512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 948612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 948712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 948812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Don't error if the file doesn't exist and rm -f was used. 948912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if { test -L "$file"; } >/dev/null 2>&1 || 949012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala { test -h "$file"; } >/dev/null 2>&1 || 949112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -f "$file"; then 949212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala : 949312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala elif test -d "$file"; then 949412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala exit_status=1 949512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 949612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala elif test "$rmforce" = yes; then 949712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala continue 949812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 949912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 950012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala rmfiles="$file" 950112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 950212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $name in 950312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *.la) 950412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Possibly a libtool archive, so verify it. 950512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if func_lalib_p "$file"; then 950612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_source $dir/$name 950712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 950812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Delete the libtool libraries and symlinks. 950912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for n in $library_names; do 951012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append rmfiles " $odir/$n" 951112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 951212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -n "$old_library" && func_append rmfiles " $odir/$old_library" 951312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 951412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case "$opt_mode" in 951512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala clean) 951612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case " $library_names " in 951712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *" $dlname "*) ;; 951812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; 951912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 952012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" 952112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 952212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala uninstall) 952312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$library_names"; then 952412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Do each command in the postuninstall commands. 952512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' 952612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 952712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 952812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$old_library"; then 952912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Do each command in the old_postuninstall commands. 953012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' 953112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 953212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # FIXME: should reinstall the best remaining shared library. 953312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 953412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 953512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 953612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 953712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 953812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *.lo) 953912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Possibly a libtool object, so verify it. 954012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if func_lalib_p "$file"; then 954112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 954212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Read the .lo file 954312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_source $dir/$name 954412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 954512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Add PIC object to the list of files to remove. 954612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$pic_object" && 954712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test "$pic_object" != none; then 954812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append rmfiles " $dir/$pic_object" 954912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 955012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 955112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Add non-PIC object to the list of files to remove. 955212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -n "$non_pic_object" && 955312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala test "$non_pic_object" != none; then 955412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append rmfiles " $dir/$non_pic_object" 955512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 955612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 955712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 955812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 955912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *) 956012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$opt_mode" = clean ; then 956112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala noexename=$name 956212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala case $file in 956312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala *.exe) 956412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_stripname '' '.exe' "$file" 956512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala file=$func_stripname_result 956612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_stripname '' '.exe' "$name" 956712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala noexename=$func_stripname_result 956812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # $file with .exe has already been added to rmfiles, 956912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # add $file without .exe 957012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append rmfiles " $file" 957112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 957212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 957312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Do a test to see if this is a libtool program. 957412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if func_ltwrapper_p "$file"; then 957512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if func_ltwrapper_executable_p "$file"; then 957612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_ltwrapper_scriptname "$file" 957712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala relink_command= 957812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_source $func_ltwrapper_scriptname_result 957912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append rmfiles " $func_ltwrapper_scriptname_result" 958012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala else 958112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala relink_command= 958212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_source $dir/$noexename 958312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 958412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 958512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # note $name still contains .exe if it was in $file originally 958612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # as does the version of $file that was added into $rmfiles 958712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append rmfiles " $odir/$name $odir/${name}S.${objext}" 958812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "$fast_install" = yes && test -n "$relink_command"; then 958912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append rmfiles " $odir/lt-$name" 959012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 959112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test "X$noexename" != "X$name" ; then 959212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_append rmfiles " $odir/lt-${noexename}.c" 959312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 959412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 959512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 959612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala ;; 959712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala esac 959812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_show_eval "$RM $rmfiles" 'exit_status=1' 959912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 960012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 960112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala # Try to remove the ${objdir}s in the directories where we deleted files 960212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala for dir in $rmdirs; do 960312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala if test -d "$dir"; then 960412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_show_eval "rmdir $dir >/dev/null 2>&1" 960512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala fi 960612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala done 960712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 960812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala exit $exit_status 960912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 961012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 961112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } && 961212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_mode_uninstall ${1+"$@"} 961312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 961412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialatest -z "$opt_mode" && { 961512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala help="$generic_help" 961612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_fatal_help "you must specify a MODE" 961712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala} 961812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 961912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialatest -z "$exec_cmd" && \ 962012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala func_fatal_help "invalid operation mode \`$opt_mode'" 962112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 962212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaif test -n "$exec_cmd"; then 962312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala eval exec "$exec_cmd" 962412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala exit $EXIT_FAILURE 962512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialafi 962612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 962712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialaexit $exit_status 962812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 962912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 963012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# The TAGs below are defined such that we never get into a situation 963112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# in which we disable both kinds of libraries. Given conflicting 963212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# choices, we go for a static library, that is the most portable, 963312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# since we can't tell whether shared libraries were disabled because 963412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# the user asked for that or because the platform doesn't support 963512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# them. This is particularly important on AIX, because we don't 963612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# support having both static and shared libraries enabled at the same 963712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# time on that platform, so we default to a shared-only configuration. 963812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# If a disable-shared tag is given, we'll fallback to a static-only 963912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# configuration. But we'll never go from static-only to shared-only. 964012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 964112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# ### BEGIN LIBTOOL TAG CONFIG: disable-shared 964212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialabuild_libtool_libs=no 964312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialabuild_old_libs=yes 964412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# ### END LIBTOOL TAG CONFIG: disable-shared 964512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 964612e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# ### BEGIN LIBTOOL TAG CONFIG: disable-static 964712e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fialabuild_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` 964812e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# ### END LIBTOOL TAG CONFIG: disable-static 964912e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 965012e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# Local Variables: 965112e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# mode:shell-script 965212e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# sh-indentation:2 965312e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# End: 965412e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala# vi:sw=2 965512e21689bc88a77c7b5b9b220fec31e049e5ec0fTodd Fiala 9656