17c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Generated from ltmain.m4sh.
27c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
37c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# ltmain.sh (GNU libtool) 2.2.6b
47c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
57c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
67c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 2008 Free Software Foundation, Inc.
77c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# This is free software; see the source for copying conditions.  There is NO
87c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
97c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# GNU Libtool is free software; you can redistribute it and/or modify
117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# it under the terms of the GNU General Public License as published by
127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# the Free Software Foundation; either version 2 of the License, or
137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# (at your option) any later version.
147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#
157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# As a special exception to the GNU General Public License,
167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# if you distribute this file as part of a program or library that
177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# is built using GNU Libtool, you may include this file under the
187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# same distribution terms that you use for the rest of that program.
197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#
207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# GNU Libtool is distributed in the hope that it will be useful, but
217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# WITHOUT ANY WARRANTY; without even the implied warranty of
227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# General Public License for more details.
247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#
257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# You should have received a copy of the GNU General Public License
267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# along with GNU Libtool; see the file COPYING.  If not, a copy
277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# can be downloaded from http://www.gnu.org/licenses/gpl.html,
287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# or obtained by writing to the Free Software Foundation, Inc.,
297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Usage: $progname [OPTION]... [MODE-ARG]...
327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#
337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Provide generalized library-building support services.
347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#
357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#     --config             show all configuration variables
367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#     --debug              enable verbose shell tracing
377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# -n, --dry-run            display commands without modifying any files
387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#     --features           display basic configuration information and exit
397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#     --mode=MODE          use operation mode MODE
407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#     --preserve-dup-deps  don't remove duplicate dependency libraries
417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#     --quiet, --silent    don't print informational messages
427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#     --tag=TAG            use configuration variables from tag TAG
437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# -v, --verbose            print informational messages (default)
447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#     --version            print version information
457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# -h, --help               print short or long help message
467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#
477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# MODE must be one of the following:
487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#
497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#       clean              remove files from the build directory
507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#       compile            compile a source file into a libtool object
517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#       execute            automatically set library path, then run a program
527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#       finish             complete the installation of libtool libraries
537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#       install            install libraries or executables
547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#       link               create a library or an executable
557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#       uninstall          remove libraries from an installed directory
567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#
577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# MODE-ARGS vary depending on the MODE.
587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Try `$progname --help --mode=MODE' for a more detailed description of MODE.
597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#
607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# When reporting a bug, please describe a test case to reproduce it and
617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# include the following information:
627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#
637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#       host-triplet:	$host
647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#       shell:		$SHELL
657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#       compiler:		$LTCC
667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#       compiler flags:		$LTCFLAGS
677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#       linker:		$LD (gnu? $with_gnu_ld)
687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#       $progname:		(GNU libtool) 2.2.6b Debian-2.2.6b-2ubuntu1
697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#       automake:		$automake_version
707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#       autoconf:		$autoconf_version
717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#
727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Report bugs to <bug-libtool@gnu.org>.
737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
747c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetPROGRAM=ltmain.sh
757c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetPACKAGE=libtool
767c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetVERSION="2.2.6b Debian-2.2.6b-2ubuntu1"
777c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetTIMESTAMP=""
787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetpackage_revision=1.3017
797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Be Bourne compatible
817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetif test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  emulate sh
837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  NULLCMD=:
847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  # is contrary to our usage.  Disable this feature.
867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  alias -g '${1+"$@"}'='"$@"'
877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  setopt NO_GLOB_SUBST
887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetelse
897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfi
917c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetBIN_SH=xpg4; export BIN_SH # for Tru64
927c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetDUALCASE=1; export DUALCASE # for MKS sh
937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# NLS nuisances: We save the old values to restore during execute mode.
957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Only set LANG and LC_ALL to C if already set.
967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# These must not be set unconditionally because not all systems understand
977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# e.g. LANG=C (notably SCO).
987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetlt_user_locale=
997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetlt_safe_locale=
1007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfor lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
1017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetdo
1027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  eval "if test \"\${$lt_var+set}\" = set; then
1037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet          save_$lt_var=\$$lt_var
1047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet          $lt_var=C
1057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  export $lt_var
1067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\"
1077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
1087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi"
1097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetdone
1107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
1117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet$lt_unset CDPATH
1127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
1137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
1147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
1157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
1167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
1177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet: ${CP="cp -f"}
1187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet: ${ECHO="echo"}
1197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet: ${EGREP="/bin/grep -E"}
1207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet: ${FGREP="/bin/grep -F"}
1217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet: ${GREP="/bin/grep"}
1227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet: ${LN_S="ln -s"}
1237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet: ${MAKE="make"}
1247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet: ${MKDIR="mkdir"}
1257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet: ${MV="mv -f"}
1267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet: ${RM="rm -f"}
1277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet: ${SED="/bin/sed"}
1287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
1297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet: ${Xsed="$SED -e 1s/^X//"}
1307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
1317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Global variables:
1327c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetEXIT_SUCCESS=0
1337c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetEXIT_FAILURE=1
1347c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetEXIT_MISMATCH=63  # $? = 63 is used to indicate version mismatch to missing.
1357c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetEXIT_SKIP=77	  # $? = 77 is used to indicate a skipped test to automake.
1367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
1377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetexit_status=$EXIT_SUCCESS
1387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
1397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Make sure IFS has a sensible default
1407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetlt_nl='
1417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet'
1427c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetIFS=" 	$lt_nl"
1437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
1447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetdirname="s,/[^/]*$,,"
1457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetbasename="s,^.*/,,"
1467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
1477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_dirname_and_basename file append nondir_replacement
1487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# perform func_basename and func_dirname in a single function
1497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# call:
1507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#   dirname:  Compute the dirname of FILE.  If nonempty,
1517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#             add APPEND to the result, otherwise set result
1527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#             to NONDIR_REPLACEMENT.
1537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#             value returned in "$func_dirname_result"
1547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#   basename: Compute filename of FILE.
1557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#             value retuned in "$func_basename_result"
1567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Implementation must be kept synchronized with func_dirname
1577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# and func_basename. For efficiency, we do not delegate to
1587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# those functions but instead duplicate the functionality here.
1597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_dirname_and_basename ()
1607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{
1617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  # Extract subdirectory from the argument.
1627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"`
1637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  if test "X$func_dirname_result" = "X${1}"; then
1647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    func_dirname_result="${3}"
1657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  else
1667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    func_dirname_result="$func_dirname_result${2}"
1677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  fi
1687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"`
1697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
1707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
1717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Generated shell functions inserted here.
1727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
1737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
1747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# is ksh but when the shell is invoked as "sh" and the current value of
1757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# the _XPG environment variable is not equal to 1 (one), the special
1767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# positional parameter $0, within a function call, is the name of the
1777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# function.
1787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetprogpath="$0"
1797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
1807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# The name of this program:
1817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# In the unlikely event $progname began with a '-', it would play havoc with
1827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_echo (imagine progname=-n), so we prepend ./ in that case:
1837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_dirname_and_basename "$progpath"
1847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetprogname=$func_basename_result
1857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetcase $progname in
1867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  -*) progname=./$progname ;;
1877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetesac
1887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
1897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Make sure we have an absolute path for reexecution:
1907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetcase $progpath in
1917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  [\\/]*|[A-Za-z]:\\*) ;;
1927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  *[\\/]*)
1937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet     progdir=$func_dirname_result
1947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet     progdir=`cd "$progdir" && pwd`
1957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet     progpath="$progdir/$progname"
1967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet     ;;
1977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  *)
1987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet     save_IFS="$IFS"
1997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet     IFS=:
2007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet     for progdir in $PATH; do
2017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet       IFS="$save_IFS"
2027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet       test -x "$progdir/$progname" && break
2037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet     done
2047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet     IFS="$save_IFS"
2057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet     test -n "$progdir" || progdir=`pwd`
2067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet     progpath="$progdir/$progname"
2077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet     ;;
2087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetesac
2097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
2107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Sed substitution that helps us do robust quoting.  It backslashifies
2117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# metacharacters that are still active within double-quoted strings.
2127c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetXsed="${SED}"' -e 1s/^X//'
2137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetsed_quote_subst='s/\([`"$\\]\)/\\\1/g'
2147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
2157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Same as above, but do not quote variable references.
2167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetdouble_quote_subst='s/\(["`\\]\)/\\\1/g'
2177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
2187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Re-`\' parameter expansions in output of double_quote_subst that were
2197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# `\'-ed in input to the same.  If an odd number of `\' preceded a '$'
2207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# in input to double_quote_subst, that '$' was protected from expansion.
2217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Since each input `\' is now two `\'s, look for any number of runs of
2227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# four `\'s followed by two `\'s and then a '$'.  `\' that '$'.
2237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetbs='\\'
2247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetbs2='\\\\'
2257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetbs4='\\\\\\\\'
2267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetdollar='\$'
2277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetsed_double_backslash="\
2287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  s/$bs4/&\\
2297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet/g
2307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  s/^$bs2$dollar/$bs&/
2317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
2327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  s/\n//g"
2337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
2347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Standard options:
2357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetopt_dry_run=false
2367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetopt_help=false
2377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetopt_quiet=false
2387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetopt_verbose=false
2397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetopt_warning=:
2407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
2417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_echo arg...
2427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Echo program name prefixed message, along with the current mode
2437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# name if it has been set yet.
2447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_echo ()
2457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{
2467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    $ECHO "$progname${mode+: }$mode: $*"
2477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
2487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
2497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_verbose arg...
2507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Echo program name prefixed message in verbose mode only.
2517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_verbose ()
2527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{
2537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    $opt_verbose && func_echo ${1+"$@"}
2547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
2557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    # A bug in bash halts the script if the last line of a function
2567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    # fails when set -e is in force, so we need another command to
2577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    # work around that:
2587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    :
2597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
2607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
2617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_error arg...
2627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Echo program name prefixed message to standard error.
2637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_error ()
2647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{
2657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2
2667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
2677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
2687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_warning arg...
2697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Echo program name prefixed warning message to standard error.
2707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_warning ()
2717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{
2727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2
2737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
2747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    # bash bug again:
2757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    :
2767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
2777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
2787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_fatal_error arg...
2797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Echo program name prefixed message to standard error, and exit.
2807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_fatal_error ()
2817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{
2827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    func_error ${1+"$@"}
2837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    exit $EXIT_FAILURE
2847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
2857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
2867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_fatal_help arg...
2877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Echo program name prefixed message to standard error, followed by
2887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# a help hint, and exit.
2897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_fatal_help ()
2907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{
2917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    func_error ${1+"$@"}
2927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    func_fatal_error "$help"
2937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
2947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichethelp="Try \`$progname --help' for more information."  ## default
2957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
2967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
2977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_grep expression filename
2987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Check whether EXPRESSION matches any line of FILENAME, without output.
2997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_grep ()
3007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{
3017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    $GREP "$1" "$2" >/dev/null 2>&1
3027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
3037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
3047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
3057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_mkdir_p directory-path
3067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Make sure the entire path to DIRECTORY-PATH is available.
3077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_mkdir_p ()
3087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{
3097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    my_directory_path="$1"
3107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    my_dir_list=
3117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
3127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
3137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
3147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # Protect directory names starting with `-'
3157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      case $my_directory_path in
3167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        -*) my_directory_path="./$my_directory_path" ;;
3177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      esac
3187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
3197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # While some portion of DIR does not yet exist...
3207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      while test ! -d "$my_directory_path"; do
3217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        # ...make a list in topmost first order.  Use a colon delimited
3227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# list incase some portion of path contains whitespace.
3237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        my_dir_list="$my_directory_path:$my_dir_list"
3247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
3257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        # If the last portion added has no slash in it, the list is done
3267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        case $my_directory_path in */*) ;; *) break ;; esac
3277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
3287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        # ...otherwise throw away the child directory and loop
3297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"`
3307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      done
3317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'`
3327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
3337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      save_mkdir_p_IFS="$IFS"; IFS=':'
3347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      for my_dir in $my_dir_list; do
3357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	IFS="$save_mkdir_p_IFS"
3367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        # mkdir can fail with a `File exist' error if two processes
3377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        # try to create one of the directories concurrently.  Don't
3387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        # stop in that case!
3397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        $MKDIR "$my_dir" 2>/dev/null || :
3407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      done
3417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      IFS="$save_mkdir_p_IFS"
3427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
3437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # Bail out if we (or some other process) failed to create a directory.
3447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      test -d "$my_directory_path" || \
3457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        func_fatal_error "Failed to create \`$1'"
3467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    fi
3477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
3487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
3497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
3507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_mktempdir [string]
3517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Make a temporary directory that won't clash with other running
3527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# libtool processes, and avoids race conditions if possible.  If
3537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# given, STRING is the basename for that directory.
3547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_mktempdir ()
3557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{
3567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    my_template="${TMPDIR-/tmp}/${1-$progname}"
3577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
3587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    if test "$opt_dry_run" = ":"; then
3597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # Return a directory name, but don't create it in dry-run mode
3607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      my_tmpdir="${my_template}-$$"
3617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    else
3627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
3637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # If mktemp works, use that first and foremost
3647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
3657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
3667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if test ! -d "$my_tmpdir"; then
3677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        # Failing that, at least try and use $RANDOM to avoid a race
3687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        my_tmpdir="${my_template}-${RANDOM-0}$$"
3697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
3707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        save_mktempdir_umask=`umask`
3717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        umask 0077
3727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        $MKDIR "$my_tmpdir"
3737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        umask $save_mktempdir_umask
3747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      fi
3757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
3767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # If we're not in dry-run mode, bomb out on failure
3777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      test -d "$my_tmpdir" || \
3787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
3797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    fi
3807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
3817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    $ECHO "X$my_tmpdir" | $Xsed
3827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
3837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
3847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
3857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_quote_for_eval arg
3867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Aesthetically quote ARG to be evaled later.
3877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
3887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# is double-quoted, suitable for a subsequent eval, whereas
3897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
3907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# which are still active within double quotes backslashified.
3917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_quote_for_eval ()
3927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{
3937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    case $1 in
3947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      *[\\\`\"\$]*)
3957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;;
3967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      *)
3977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        func_quote_for_eval_unquoted_result="$1" ;;
3987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    esac
3997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
4007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    case $func_quote_for_eval_unquoted_result in
4017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # Double-quote args containing shell metacharacters to delay
4027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # word splitting, command substitution and and variable
4037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # expansion for a subsequent eval.
4047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # Many Bourne shells cannot handle close brackets correctly
4057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # in scan sets, so we specify it separately.
4067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
4077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
4087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        ;;
4097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      *)
4107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
4117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    esac
4127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
4137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
4147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
4157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_quote_for_expand arg
4167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Aesthetically quote ARG to be evaled later; same as above,
4177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# but do not quote variable references.
4187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_quote_for_expand ()
4197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{
4207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    case $1 in
4217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      *[\\\`\"]*)
4227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	my_arg=`$ECHO "X$1" | $Xsed \
4237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
4247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      *)
4257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        my_arg="$1" ;;
4267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    esac
4277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
4287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    case $my_arg in
4297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # Double-quote args containing shell metacharacters to delay
4307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # word splitting and command substitution for a subsequent eval.
4317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # Many Bourne shells cannot handle close brackets correctly
4327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # in scan sets, so we specify it separately.
4337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
4347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        my_arg="\"$my_arg\""
4357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        ;;
4367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    esac
4377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
4387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    func_quote_for_expand_result="$my_arg"
4397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
4407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
4417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
4427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_show_eval cmd [fail_exp]
4437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
4447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
4457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# is given, then evaluate it.
4467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_show_eval ()
4477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{
4487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    my_cmd="$1"
4497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    my_fail_exp="${2-:}"
4507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
4517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    ${opt_silent-false} || {
4527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      func_quote_for_expand "$my_cmd"
4537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      eval "func_echo $func_quote_for_expand_result"
4547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    }
4557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
4567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    if ${opt_dry_run-false}; then :; else
4577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      eval "$my_cmd"
4587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      my_status=$?
4597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if test "$my_status" -eq 0; then :; else
4607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	eval "(exit $my_status); $my_fail_exp"
4617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      fi
4627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    fi
4637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
4647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
4657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
4667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_show_eval_locale cmd [fail_exp]
4677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
4687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
4697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# is given, then evaluate it.  Use the saved locale for evaluation.
4707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_show_eval_locale ()
4717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{
4727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    my_cmd="$1"
4737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    my_fail_exp="${2-:}"
4747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
4757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    ${opt_silent-false} || {
4767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      func_quote_for_expand "$my_cmd"
4777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      eval "func_echo $func_quote_for_expand_result"
4787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    }
4797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
4807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    if ${opt_dry_run-false}; then :; else
4817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      eval "$lt_user_locale
4827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    $my_cmd"
4837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      my_status=$?
4847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      eval "$lt_safe_locale"
4857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if test "$my_status" -eq 0; then :; else
4867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	eval "(exit $my_status); $my_fail_exp"
4877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      fi
4887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    fi
4897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
4907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
4917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
4927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
4937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
4947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
4957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_version
4967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Echo version message to standard output and exit.
4977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_version ()
4987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{
4997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / {
5007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        s/^# //
5017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	s/^# *$//
5027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
5037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        p
5047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet     }' < "$progpath"
5057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet     exit $?
5067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
5077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
5087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_usage
5097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Echo short help message to standard output and exit.
5107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_usage ()
5117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{
5127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    $SED -n '/^# Usage:/,/# -h/ {
5137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        s/^# //
5147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	s/^# *$//
5157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	s/\$progname/'$progname'/
5167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	p
5177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    }' < "$progpath"
5187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    $ECHO
5197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    $ECHO "run \`$progname --help | more' for full usage"
5207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    exit $?
5217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
5227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
5237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_help
5247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Echo long help message to standard output and exit.
5257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_help ()
5267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{
5277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    $SED -n '/^# Usage:/,/# Report bugs to/ {
5287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        s/^# //
5297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	s/^# *$//
5307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	s*\$progname*'$progname'*
5317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	s*\$host*'"$host"'*
5327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	s*\$SHELL*'"$SHELL"'*
5337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	s*\$LTCC*'"$LTCC"'*
5347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	s*\$LTCFLAGS*'"$LTCFLAGS"'*
5357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	s*\$LD*'"$LD"'*
5367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	s/\$with_gnu_ld/'"$with_gnu_ld"'/
5377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/
5387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/
5397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	p
5407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet     }' < "$progpath"
5417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    exit $?
5427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
5437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
5447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_missing_arg argname
5457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Echo program name prefixed message to standard error and set global
5467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# exit_cmd.
5477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_missing_arg ()
5487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{
5497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    func_error "missing argument for $1"
5507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    exit_cmd=exit
5517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
5527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
5537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetexit_cmd=:
5547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
5557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
5567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
5577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
5587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
5597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Check that we have a working $ECHO.
5607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetif test "X$1" = X--no-reexec; then
5617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  # Discard the --no-reexec flag, and continue.
5627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  shift
5637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetelif test "X$1" = X--fallback-echo; then
5647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  # Avoid inline document here, it may be left over
5657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  :
5667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetelif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then
5677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  # Yippee, $ECHO works!
5687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  :
5697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetelse
5707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  # Restart under the correct shell, and then maybe $ECHO will work.
5717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  exec $SHELL "$progpath" --no-reexec ${1+"$@"}
5727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfi
5737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
5747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetif test "X$1" = X--fallback-echo; then
5757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  # used as fallback echo
5767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  shift
5777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  cat <<EOF
5787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet$*
5797c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetEOF
5807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  exit $EXIT_SUCCESS
5817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfi
5827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
5837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetmagic="%%%MAGIC variable%%%"
5847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetmagic_exe="%%%MAGIC EXE variable%%%"
5857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
5867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Global variables.
5877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# $mode is unset
5887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetnonopt=
5897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetexecute_dlfiles=
5907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetpreserve_args=
5917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetlo2o="s/\\.lo\$/.${objext}/"
5927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poicheto2lo="s/\\.${objext}\$/.lo/"
5937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetextracted_archives=
5947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetextracted_serial=0
5957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
5967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetopt_dry_run=false
5977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetopt_duplicate_deps=false
5987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetopt_silent=false
5997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetopt_debug=:
6007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
6017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# If this variable is set in any of the actions, the command in it
6027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# will be execed at the end.  This prevents here-documents from being
6037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# left over by shells.
6047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetexec_cmd=
6057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
6067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_fatal_configuration arg...
6077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Echo program name prefixed message to standard error, followed by
6087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# a configuration failure hint, and exit.
6097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_fatal_configuration ()
6107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{
6117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    func_error ${1+"$@"}
6127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    func_error "See the $PACKAGE documentation for more information."
6137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    func_fatal_error "Fatal configuration error."
6147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
6157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
6167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
6177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_config
6187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Display the configuration for all the tags in this script.
6197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_config ()
6207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{
6217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    re_begincf='^# ### BEGIN LIBTOOL'
6227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    re_endcf='^# ### END LIBTOOL'
6237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
6247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    # Default configuration.
6257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
6267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
6277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    # Now print the configurations for the tags.
6287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    for tagname in $taglist; do
6297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
6307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    done
6317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
6327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    exit $?
6337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
6347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
6357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_features
6367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Display the features supported by this script.
6377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_features ()
6387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{
6397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    $ECHO "host: $host"
6407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    if test "$build_libtool_libs" = yes; then
6417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      $ECHO "enable shared libraries"
6427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    else
6437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      $ECHO "disable shared libraries"
6447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    fi
6457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    if test "$build_old_libs" = yes; then
6467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      $ECHO "enable static libraries"
6477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    else
6487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      $ECHO "disable static libraries"
6497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    fi
6507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
6517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    exit $?
6527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
6537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
6547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_enable_tag tagname
6557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Verify that TAGNAME is valid, and either flag an error and exit, or
6567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# enable the TAGNAME tag.  We also add TAGNAME to the global $taglist
6577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# variable here.
6587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_enable_tag ()
6597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{
6607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  # Global variable:
6617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  tagname="$1"
6627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
6637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
6647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
6657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  sed_extractcf="/$re_begincf/,/$re_endcf/p"
6667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
6677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  # Validate tagname.
6687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  case $tagname in
6697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    *[!-_A-Za-z0-9,/]*)
6707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      func_fatal_error "invalid tag name: $tagname"
6717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      ;;
6727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  esac
6737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
6747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  # Don't test for the "default" C tag, as we know it's
6757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  # there but not specially marked.
6767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  case $tagname in
6777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    CC) ;;
6787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    *)
6797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
6807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	taglist="$taglist $tagname"
6817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
6827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Evaluate the configuration.  Be careful to quote the path
6837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# and the sed script, to avoid splitting on whitespace, but
6847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# also don't use non-portable quotes within backquotes within
6857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# quotes we have to do it in 2 steps:
6867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
6877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	eval "$extractedcf"
6887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      else
6897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_error "ignoring unknown tag $tagname"
6907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      fi
6917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      ;;
6927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  esac
6937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
6947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
6957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Parse options once, thoroughly.  This comes as soon as possible in
6967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# the script to make things like `libtool --version' happen quickly.
6977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{
6987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
6997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  # Shorthand for --mode=foo, only valid as the first argument
7007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  case $1 in
7017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  clean|clea|cle|cl)
7027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    shift; set dummy --mode clean ${1+"$@"}; shift
7037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    ;;
7047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  compile|compil|compi|comp|com|co|c)
7057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    shift; set dummy --mode compile ${1+"$@"}; shift
7067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    ;;
7077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  execute|execut|execu|exec|exe|ex|e)
7087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    shift; set dummy --mode execute ${1+"$@"}; shift
7097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    ;;
7107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  finish|finis|fini|fin|fi|f)
7117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    shift; set dummy --mode finish ${1+"$@"}; shift
7127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    ;;
7137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  install|instal|insta|inst|ins|in|i)
7147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    shift; set dummy --mode install ${1+"$@"}; shift
7157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    ;;
7167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  link|lin|li|l)
7177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    shift; set dummy --mode link ${1+"$@"}; shift
7187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    ;;
7197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
7207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    shift; set dummy --mode uninstall ${1+"$@"}; shift
7217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    ;;
7227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  esac
7237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
7247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  # Parse non-mode specific arguments:
7257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  while test "$#" -gt 0; do
7267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    opt="$1"
7277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    shift
7287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
7297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    case $opt in
7307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      --config)		func_config					;;
7317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
7327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      --debug)		preserve_args="$preserve_args $opt"
7337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet			func_echo "enabling shell trace mode"
7347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet			opt_debug='set -x'
7357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet			$opt_debug
7367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet			;;
7377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
7387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      -dlopen)		test "$#" -eq 0 && func_missing_arg "$opt" && break
7397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet			execute_dlfiles="$execute_dlfiles $1"
7407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet			shift
7417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet			;;
7427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
7437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      --dry-run | -n)	opt_dry_run=:					;;
7447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      --features)       func_features					;;
7457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      --finish)		mode="finish"					;;
7467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
7477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      --mode)		test "$#" -eq 0 && func_missing_arg "$opt" && break
7487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet			case $1 in
7497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet			  # Valid mode arguments:
7507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet			  clean)	;;
7517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet			  compile)	;;
7527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet			  execute)	;;
7537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet			  finish)	;;
7547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet			  install)	;;
7557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet			  link)		;;
7567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet			  relink)	;;
7577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet			  uninstall)	;;
7587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
7597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet			  # Catch anything else as an error
7607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet			  *) func_error "invalid argument for $opt"
7617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet			     exit_cmd=exit
7627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet			     break
7637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet			     ;;
7647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		        esac
7657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
7667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet			mode="$1"
7677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet			shift
7687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet			;;
7697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
7707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      --preserve-dup-deps)
7717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet			opt_duplicate_deps=:				;;
7727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
7737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      --quiet|--silent)	preserve_args="$preserve_args $opt"
7747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet			opt_silent=:
7757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet			;;
7767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
7777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      --verbose| -v)	preserve_args="$preserve_args $opt"
7787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet			opt_silent=false
7797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet			;;
7807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
7817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      --tag)		test "$#" -eq 0 && func_missing_arg "$opt" && break
7827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet			preserve_args="$preserve_args $opt $1"
7837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet			func_enable_tag "$1"	# tagname is set here
7847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet			shift
7857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet			;;
7867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
7877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # Separate optargs to long options:
7887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      -dlopen=*|--mode=*|--tag=*)
7897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet			func_opt_split "$opt"
7907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet			set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"}
7917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet			shift
7927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet			;;
7937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
7947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      -\?|-h)		func_usage					;;
7957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      --help)		opt_help=:					;;
7967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      --version)	func_version					;;
7977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
7987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      -*)		func_fatal_help "unrecognized option \`$opt'"	;;
7997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
8007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      *)		nonopt="$opt"
8017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet			break
8027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet			;;
8037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    esac
8047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  done
8057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
8067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
8077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  case $host in
8087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    *cygwin* | *mingw* | *pw32* | *cegcc*)
8097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # don't eliminate duplications in $postdeps and $predeps
8107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      opt_duplicate_compiler_generated_deps=:
8117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      ;;
8127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    *)
8137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      opt_duplicate_compiler_generated_deps=$opt_duplicate_deps
8147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      ;;
8157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  esac
8167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
8177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  # Having warned about all mis-specified options, bail out if
8187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  # anything was wrong.
8197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  $exit_cmd $EXIT_FAILURE
8207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
8217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
8227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_check_version_match
8237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Ensure that we are using m4 macros, and libtool script from the same
8247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# release of libtool.
8257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_check_version_match ()
8267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{
8277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  if test "$package_revision" != "$macro_revision"; then
8287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    if test "$VERSION" != "$macro_version"; then
8297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if test -z "$macro_version"; then
8307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        cat >&2 <<_LT_EOF
8317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
8327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet$progname: definition of this LT_INIT comes from an older release.
8337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
8347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet$progname: and run autoconf again.
8357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet_LT_EOF
8367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      else
8377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        cat >&2 <<_LT_EOF
8387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
8397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
8407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
8417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet$progname: and run autoconf again.
8427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet_LT_EOF
8437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      fi
8447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    else
8457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      cat >&2 <<_LT_EOF
8467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet$progname: Version mismatch error.  This is $PACKAGE $VERSION, revision $package_revision,
8477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet$progname: but the definition of this LT_INIT comes from revision $macro_revision.
8487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet$progname: You should recreate aclocal.m4 with macros from revision $package_revision
8497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet$progname: of $PACKAGE $VERSION and run autoconf again.
8507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet_LT_EOF
8517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    fi
8527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
8537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    exit $EXIT_MISMATCH
8547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  fi
8557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
8567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
8577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
8587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet## ----------- ##
8597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet##    Main.    ##
8607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet## ----------- ##
8617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
8627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet$opt_help || {
8637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  # Sanity checks first:
8647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  func_check_version_match
8657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
8667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
8677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    func_fatal_configuration "not configured to build any kind of library"
8687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  fi
8697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
8707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  test -z "$mode" && func_fatal_error "error: you must specify a MODE."
8717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
8727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
8737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  # Darwin sucks
8747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  eval std_shrext=\"$shrext_cmds\"
8757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
8767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
8777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  # Only execute mode is allowed to have -dlopen flags.
8787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  if test -n "$execute_dlfiles" && test "$mode" != execute; then
8797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    func_error "unrecognized option \`-dlopen'"
8807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    $ECHO "$help" 1>&2
8817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    exit $EXIT_FAILURE
8827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  fi
8837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
8847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  # Change the help message to a mode-specific one.
8857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  generic_help="$help"
8867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  help="Try \`$progname --help --mode=$mode' for more information."
8877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
8887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
8897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
8907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_lalib_p file
8917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# True iff FILE is a libtool `.la' library or `.lo' object file.
8927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# This function is only a basic sanity check; it will hardly flush out
8937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# determined imposters.
8947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_lalib_p ()
8957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{
8967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    test -f "$1" &&
8977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      $SED -e 4q "$1" 2>/dev/null \
8987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
8997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
9007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
9017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_lalib_unsafe_p file
9027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# True iff FILE is a libtool `.la' library or `.lo' object file.
9037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# This function implements the same check as func_lalib_p without
9047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# resorting to external programs.  To this end, it redirects stdin and
9057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# closes it afterwards, without saving the original file descriptor.
9067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# As a safety measure, use it only where a negative result would be
9077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# fatal anyway.  Works if `file' does not exist.
9087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_lalib_unsafe_p ()
9097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{
9107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    lalib_p=no
9117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then
9127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	for lalib_p_l in 1 2 3 4
9137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	do
9147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    read lalib_p_line
9157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    case "$lalib_p_line" in
9167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		\#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
9177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    esac
9187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	done
9197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	exec 0<&5 5<&-
9207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    fi
9217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    test "$lalib_p" = yes
9227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
9237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
9247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_ltwrapper_script_p file
9257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# True iff FILE is a libtool wrapper script
9267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# This function is only a basic sanity check; it will hardly flush out
9277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# determined imposters.
9287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_ltwrapper_script_p ()
9297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{
9307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    func_lalib_p "$1"
9317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
9327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
9337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_ltwrapper_executable_p file
9347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# True iff FILE is a libtool wrapper executable
9357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# This function is only a basic sanity check; it will hardly flush out
9367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# determined imposters.
9377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_ltwrapper_executable_p ()
9387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{
9397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    func_ltwrapper_exec_suffix=
9407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    case $1 in
9417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    *.exe) ;;
9427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    *) func_ltwrapper_exec_suffix=.exe ;;
9437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    esac
9447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1
9457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
9467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
9477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_ltwrapper_scriptname file
9487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Assumes file is an ltwrapper_executable
9497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# uses $file to determine the appropriate filename for a
9507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# temporary ltwrapper_script.
9517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_ltwrapper_scriptname ()
9527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{
9537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    func_ltwrapper_scriptname_result=""
9547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    if func_ltwrapper_executable_p "$1"; then
9557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_dirname_and_basename "$1" "" "."
9567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_stripname '' '.exe' "$func_basename_result"
9577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
9587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    fi
9597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
9607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
9617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_ltwrapper_p file
9627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# True iff FILE is a libtool wrapper script or wrapper executable
9637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# This function is only a basic sanity check; it will hardly flush out
9647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# determined imposters.
9657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_ltwrapper_p ()
9667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{
9677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1"
9687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
9697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
9707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
9717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_execute_cmds commands fail_cmd
9727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Execute tilde-delimited COMMANDS.
9737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# If FAIL_CMD is given, eval that upon failure.
9747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# FAIL_CMD may read-access the current command in variable CMD!
9757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_execute_cmds ()
9767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{
9777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    $opt_debug
9787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    save_ifs=$IFS; IFS='~'
9797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    for cmd in $1; do
9807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      IFS=$save_ifs
9817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      eval cmd=\"$cmd\"
9827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      func_show_eval "$cmd" "${2-:}"
9837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    done
9847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    IFS=$save_ifs
9857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
9867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
9877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
9887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_source file
9897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Source FILE, adding directory component if necessary.
9907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Note that it is not necessary on cygwin/mingw to append a dot to
9917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
9927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# behavior happens only for exec(3), not for open(2)!  Also, sourcing
9937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# `FILE.' does not work on cygwin managed mounts.
9947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_source ()
9957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{
9967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    $opt_debug
9977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    case $1 in
9987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    */* | *\\*)	. "$1" ;;
9997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    *)		. "./$1" ;;
10007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    esac
10017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
10027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
10037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
10047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_infer_tag arg
10057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Infer tagged configuration to use if any are available and
10067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# if one wasn't chosen via the "--tag" command line option.
10077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Only attempt this if the compiler in the base compile
10087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# command doesn't match the default compiler.
10097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# arg is usually of the form 'gcc ...'
10107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_infer_tag ()
10117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{
10127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    $opt_debug
10137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    if test -n "$available_tags" && test -z "$tagname"; then
10147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      CC_quoted=
10157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      for arg in $CC; do
10167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        func_quote_for_eval "$arg"
10177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	CC_quoted="$CC_quoted $func_quote_for_eval_result"
10187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      done
10197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      case $@ in
10207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # Blanks in the command may have been stripped by the calling shell,
10217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # but not from the CC environment variable when configure was run.
10227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;;
10237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # Blanks at the start of $base_compile will cause this to fail
10247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # if we don't check for them as well.
10257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      *)
10267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	for z in $available_tags; do
10277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
10287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # Evaluate the configuration.
10297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
10307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    CC_quoted=
10317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    for arg in $CC; do
10327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      # Double-quote args containing other shell metacharacters.
10337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      func_quote_for_eval "$arg"
10347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      CC_quoted="$CC_quoted $func_quote_for_eval_result"
10357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    done
10367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    case "$@ " in
10377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*)
10387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      # The compiler in the base compile command matches
10397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      # the one in the tagged configuration.
10407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      # Assume this is the tagged configuration we want.
10417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      tagname=$z
10427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      break
10437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      ;;
10447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    esac
10457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
10467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	done
10477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# If $tagname still isn't set, then no tagged configuration
10487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# was found and let the user know that the "--tag" command
10497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# line option must be used.
10507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test -z "$tagname"; then
10517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_echo "unable to infer tagged configuration"
10527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_fatal_error "specify a tag with \`--tag'"
10537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#	else
10547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#	  func_verbose "using $tagname tagged configuration"
10557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
10567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
10577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      esac
10587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    fi
10597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
10607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
10617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
10627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
10637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_write_libtool_object output_name pic_name nonpic_name
10647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Create a libtool object file (analogous to a ".la" file),
10657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# but don't create it if we're doing a dry run.
10667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_write_libtool_object ()
10677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{
10687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    write_libobj=${1}
10697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    if test "$build_libtool_libs" = yes; then
10707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      write_lobj=\'${2}\'
10717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    else
10727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      write_lobj=none
10737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    fi
10747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
10757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    if test "$build_old_libs" = yes; then
10767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      write_oldobj=\'${3}\'
10777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    else
10787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      write_oldobj=none
10797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    fi
10807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
10817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    $opt_dry_run || {
10827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      cat >${write_libobj}T <<EOF
10837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# $write_libobj - a libtool object file
10847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
10857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#
10867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Please DO NOT delete this file!
10877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# It is necessary for linking the library.
10887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
10897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Name of the PIC object.
10907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetpic_object=$write_lobj
10917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
10927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Name of the non-PIC object
10937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetnon_pic_object=$write_oldobj
10947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
10957c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetEOF
10967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      $MV "${write_libobj}T" "${write_libobj}"
10977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    }
10987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
10997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
11007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_mode_compile arg...
11017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_mode_compile ()
11027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{
11037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    $opt_debug
11047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    # Get the compilation command and the source file.
11057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    base_compile=
11067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    srcfile="$nonopt"  #  always keep a non-empty value in "srcfile"
11077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    suppress_opt=yes
11087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    suppress_output=
11097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    arg_mode=normal
11107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    libobj=
11117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    later=
11127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    pie_flag=
11137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
11147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    for arg
11157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    do
11167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      case $arg_mode in
11177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      arg  )
11187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# do not "continue".  Instead, add this to base_compile
11197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	lastarg="$arg"
11207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	arg_mode=normal
11217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
11227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
11237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      target )
11247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	libobj="$arg"
11257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	arg_mode=normal
11267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	continue
11277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
11287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
11297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      normal )
11307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Accept any command-line options.
11317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	case $arg in
11327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	-o)
11337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  test -n "$libobj" && \
11347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    func_fatal_error "you cannot specify \`-o' more than once"
11357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  arg_mode=target
11367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  continue
11377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
11387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
11397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	-pie | -fpie | -fPIE)
11407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet          pie_flag="$pie_flag $arg"
11417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  continue
11427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
11437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
11447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	-shared | -static | -prefer-pic | -prefer-non-pic)
11457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  later="$later $arg"
11467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  continue
11477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
11487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
11497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	-no-suppress)
11507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  suppress_opt=no
11517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  continue
11527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
11537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
11547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	-Xcompiler)
11557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  arg_mode=arg  #  the next one goes into the "base_compile" arg list
11567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  continue      #  The current "srcfile" will either be retained or
11577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;            #  replaced later.  I would guess that would be a bug.
11587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
11597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	-Wc,*)
11607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_stripname '-Wc,' '' "$arg"
11617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  args=$func_stripname_result
11627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  lastarg=
11637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  save_ifs="$IFS"; IFS=','
11647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  for arg in $args; do
11657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    IFS="$save_ifs"
11667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    func_quote_for_eval "$arg"
11677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    lastarg="$lastarg $func_quote_for_eval_result"
11687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  done
11697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  IFS="$save_ifs"
11707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_stripname ' ' '' "$lastarg"
11717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  lastarg=$func_stripname_result
11727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
11737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # Add the arguments to base_compile.
11747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  base_compile="$base_compile $lastarg"
11757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  continue
11767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
11777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
11787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	*)
11797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # Accept the current argument as the source file.
11807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # The previous "srcfile" becomes the current argument.
11817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  #
11827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  lastarg="$srcfile"
11837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  srcfile="$arg"
11847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
11857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	esac  #  case $arg
11867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
11877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      esac    #  case $arg_mode
11887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
11897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # Aesthetically quote the previous argument.
11907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      func_quote_for_eval "$lastarg"
11917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      base_compile="$base_compile $func_quote_for_eval_result"
11927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    done # for arg
11937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
11947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    case $arg_mode in
11957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    arg)
11967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      func_fatal_error "you must specify an argument for -Xcompile"
11977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      ;;
11987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    target)
11997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      func_fatal_error "you must specify a target with \`-o'"
12007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      ;;
12017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    *)
12027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # Get the name of the library object.
12037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      test -z "$libobj" && {
12047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_basename "$srcfile"
12057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	libobj="$func_basename_result"
12067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      }
12077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      ;;
12087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    esac
12097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
12107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    # Recognize several different file suffixes.
12117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    # If the user specifies -o file.o, it is replaced with file.lo
12127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    case $libobj in
12137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    *.[cCFSifmso] | \
12147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    *.ada | *.adb | *.ads | *.asm | \
12157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
12167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    *.[fF][09]? | *.for | *.java | *.obj | *.sx)
12177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      func_xform "$libobj"
12187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      libobj=$func_xform_result
12197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      ;;
12207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    esac
12217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
12227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    case $libobj in
12237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
12247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    *)
12257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      func_fatal_error "cannot determine name of library object from \`$libobj'"
12267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      ;;
12277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    esac
12287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
12297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    func_infer_tag $base_compile
12307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
12317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    for arg in $later; do
12327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      case $arg in
12337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      -shared)
12347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	test "$build_libtool_libs" != yes && \
12357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_fatal_configuration "can not build a shared library"
12367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	build_old_libs=no
12377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	continue
12387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
12397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
12407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      -static)
12417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	build_libtool_libs=no
12427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	build_old_libs=yes
12437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	continue
12447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
12457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
12467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      -prefer-pic)
12477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	pic_mode=yes
12487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	continue
12497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
12507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
12517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      -prefer-non-pic)
12527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	pic_mode=no
12537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	continue
12547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
12557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      esac
12567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    done
12577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
12587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    func_quote_for_eval "$libobj"
12597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    test "X$libobj" != "X$func_quote_for_eval_result" \
12607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"'	 &()|`$[]' \
12617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      && func_warning "libobj name \`$libobj' may not contain shell special characters."
12627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    func_dirname_and_basename "$obj" "/" ""
12637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    objname="$func_basename_result"
12647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    xdir="$func_dirname_result"
12657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    lobj=${xdir}$objdir/$objname
12667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
12677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    test -z "$base_compile" && \
12687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      func_fatal_help "you must specify a compilation command"
12697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
12707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    # Delete any leftover library objects.
12717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    if test "$build_old_libs" = yes; then
12727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      removelist="$obj $lobj $libobj ${libobj}T"
12737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    else
12747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      removelist="$lobj $libobj ${libobj}T"
12757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    fi
12767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
12777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    # On Cygwin there's no "real" PIC flag so we must build both object types
12787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    case $host_os in
12797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    cygwin* | mingw* | pw32* | os2* | cegcc*)
12807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      pic_mode=default
12817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      ;;
12827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    esac
12837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
12847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # non-PIC code in shared libraries is not supported
12857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      pic_mode=default
12867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    fi
12877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
12887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    # Calculate the filename of the output object if compiler does
12897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    # not support -o with -c
12907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    if test "$compiler_c_o" = no; then
12917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      output_obj=`$ECHO "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
12927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      lockfile="$output_obj.lock"
12937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    else
12947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      output_obj=
12957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      need_locks=no
12967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      lockfile=
12977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    fi
12987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
12997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    # Lock this critical section if it is needed
13007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    # We use this script file to make the link, it avoids creating a new file
13017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    if test "$need_locks" = yes; then
13027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
13037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_echo "Waiting for $lockfile to be removed"
13047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	sleep 2
13057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      done
13067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    elif test "$need_locks" = warn; then
13077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if test -f "$lockfile"; then
13087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	$ECHO "\
13097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet*** ERROR, $lockfile exists and contains:
13107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet`cat $lockfile 2>/dev/null`
13117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
13127c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetThis indicates that another process is trying to use the same
13137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichettemporary object file, and libtool could not work around it because
13147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetyour compiler does not support \`-c' and \`-o' together.  If you
13157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetrepeat this compilation, it may succeed, by chance, but you had better
13167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetavoid parallel builds (make -j) in this platform, or get a better
13177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetcompiler."
13187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
13197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	$opt_dry_run || $RM $removelist
13207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	exit $EXIT_FAILURE
13217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      fi
13227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      removelist="$removelist $output_obj"
13237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      $ECHO "$srcfile" > "$lockfile"
13247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    fi
13257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
13267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    $opt_dry_run || $RM $removelist
13277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    removelist="$removelist $lockfile"
13287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
13297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
13307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    if test -n "$fix_srcfile_path"; then
13317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      eval srcfile=\"$fix_srcfile_path\"
13327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    fi
13337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    func_quote_for_eval "$srcfile"
13347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    qsrcfile=$func_quote_for_eval_result
13357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
13367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    # Only build a PIC object if we are building libtool libraries.
13377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    if test "$build_libtool_libs" = yes; then
13387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # Without this assignment, base_compile gets emptied.
13397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      fbsd_hideous_sh_bug=$base_compile
13407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
13417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if test "$pic_mode" != no; then
13427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	command="$base_compile $qsrcfile $pic_flag"
13437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      else
13447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Don't build PIC code
13457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	command="$base_compile $qsrcfile"
13467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      fi
13477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
13487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      func_mkdir_p "$xdir$objdir"
13497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
13507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if test -z "$output_obj"; then
13517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Place PIC objects in $objdir
13527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	command="$command -o $lobj"
13537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      fi
13547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
13557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      func_show_eval_locale "$command"	\
13567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet          'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
13577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
13587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if test "$need_locks" = warn &&
13597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
13607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	$ECHO "\
13617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet*** ERROR, $lockfile contains:
13627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet`cat $lockfile 2>/dev/null`
13637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
13647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetbut it should contain:
13657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet$srcfile
13667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
13677c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetThis indicates that another process is trying to use the same
13687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichettemporary object file, and libtool could not work around it because
13697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetyour compiler does not support \`-c' and \`-o' together.  If you
13707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetrepeat this compilation, it may succeed, by chance, but you had better
13717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetavoid parallel builds (make -j) in this platform, or get a better
13727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetcompiler."
13737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
13747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	$opt_dry_run || $RM $removelist
13757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	exit $EXIT_FAILURE
13767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      fi
13777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
13787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # Just move the object if needed, then go on to compile the next one
13797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
13807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_show_eval '$MV "$output_obj" "$lobj"' \
13817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
13827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      fi
13837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
13847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # Allow error messages only from the first compilation.
13857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if test "$suppress_opt" = yes; then
13867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	suppress_output=' >/dev/null 2>&1'
13877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      fi
13887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    fi
13897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
13907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    # Only build a position-dependent object if we build old libraries.
13917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    if test "$build_old_libs" = yes; then
13927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if test "$pic_mode" != yes; then
13937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Don't build PIC code
13947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	command="$base_compile $qsrcfile$pie_flag"
13957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      else
13967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	command="$base_compile $qsrcfile $pic_flag"
13977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      fi
13987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if test "$compiler_c_o" = yes; then
13997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	command="$command -o $obj"
14007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      fi
14017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
14027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # Suppress compiler output if we already did a PIC compilation.
14037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      command="$command$suppress_output"
14047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      func_show_eval_locale "$command" \
14057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
14067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
14077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if test "$need_locks" = warn &&
14087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
14097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	$ECHO "\
14107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet*** ERROR, $lockfile contains:
14117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet`cat $lockfile 2>/dev/null`
14127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
14137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetbut it should contain:
14147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet$srcfile
14157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
14167c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetThis indicates that another process is trying to use the same
14177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichettemporary object file, and libtool could not work around it because
14187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetyour compiler does not support \`-c' and \`-o' together.  If you
14197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetrepeat this compilation, it may succeed, by chance, but you had better
14207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetavoid parallel builds (make -j) in this platform, or get a better
14217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetcompiler."
14227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
14237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	$opt_dry_run || $RM $removelist
14247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	exit $EXIT_FAILURE
14257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      fi
14267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
14277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # Just move the object if needed
14287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
14297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_show_eval '$MV "$output_obj" "$obj"' \
14307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
14317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      fi
14327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    fi
14337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
14347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    $opt_dry_run || {
14357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
14367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
14377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # Unlock the critical section if it was locked
14387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if test "$need_locks" != no; then
14397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	removelist=$lockfile
14407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        $RM "$lockfile"
14417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      fi
14427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    }
14437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
14447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    exit $EXIT_SUCCESS
14457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
14467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
14477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet$opt_help || {
14487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichettest "$mode" = compile && func_mode_compile ${1+"$@"}
14497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
14507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
14517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_mode_help ()
14527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{
14537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    # We need to display help for each of the modes.
14547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    case $mode in
14557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      "")
14567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        # Generic help is extracted from the usage comments
14577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        # at the start of this file.
14587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        func_help
14597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        ;;
14607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
14617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      clean)
14627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        $ECHO \
14637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
14647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
14657c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetRemove files from the build directory.
14667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
14677c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetRM is the name of the program to use to delete files associated with each FILE
14687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
14697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetto RM.
14707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
14717c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetIf FILE is a libtool library, object or program, all the files associated
14727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetwith it are deleted. Otherwise, only FILE itself is deleted using RM."
14737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        ;;
14747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
14757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      compile)
14767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      $ECHO \
14777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
14787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
14797c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetCompile a source file into a libtool library object.
14807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
14817c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetThis mode accepts the following additional options:
14827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
14837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
14847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  -no-suppress      do not suppress compiler output for multiple passes
14857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  -prefer-pic       try to building PIC objects only
14867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  -prefer-non-pic   try to building non-PIC objects only
14877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  -shared           do not build a \`.o' file suitable for static linking
14887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  -static           only build a \`.o' file suitable for static linking
14897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
14907c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetCOMPILE-COMMAND is a command to be used in creating a \`standard' object file
14917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfrom the given SOURCEFILE.
14927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
14937c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetThe output file name is determined by removing the directory component from
14947c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetSOURCEFILE, then substituting the C source code suffix \`.c' with the
14957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetlibrary object suffix, \`.lo'."
14967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        ;;
14977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
14987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      execute)
14997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        $ECHO \
15007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
15017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
15027c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetAutomatically set library path, then run a program.
15037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
15047c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetThis mode accepts the following additional options:
15057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
15067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  -dlopen FILE      add the directory containing FILE to the library path
15077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
15087c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetThis mode sets the library path environment variable according to \`-dlopen'
15097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetflags.
15107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
15117c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetIf any of the ARGS are libtool executable wrappers, then they are translated
15127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetinto their corresponding uninstalled binary, and any of their required library
15137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetdirectories are added to the library path.
15147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
15157c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetThen, COMMAND is executed, with ARGS as arguments."
15167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        ;;
15177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
15187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      finish)
15197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        $ECHO \
15207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet"Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
15217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
15227c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetComplete the installation of libtool libraries.
15237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
15247c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetEach LIBDIR is a directory that contains libtool libraries.
15257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
15267c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetThe commands that this mode executes may require superuser privileges.  Use
15277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetthe \`--dry-run' option if you just want to see what would be executed."
15287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        ;;
15297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
15307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      install)
15317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        $ECHO \
15327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
15337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
15347c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetInstall executables or libraries.
15357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
15367c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetINSTALL-COMMAND is the installation command.  The first component should be
15377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poicheteither the \`install' or \`cp' program.
15387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
15397c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetThe following components of INSTALL-COMMAND are treated specially:
15407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
15417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  -inst-prefix PREFIX-DIR  Use PREFIX-DIR as a staging area for installation
15427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
15437c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetThe rest of the components are interpreted as arguments to that command (only
15447c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetBSD-compatible install options are recognized)."
15457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        ;;
15467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
15477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      link)
15487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        $ECHO \
15497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet"Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
15507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
15517c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetLink object files or libraries together to form another library, or to
15527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetcreate an executable program.
15537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
15547c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetLINK-COMMAND is a command using the C compiler that you would use to create
15557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poicheta program from several object files.
15567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
15577c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetThe following components of LINK-COMMAND are treated specially:
15587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
15597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  -all-static       do not do any dynamic linking at all
15607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  -avoid-version    do not add a version suffix if possible
15617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
15627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
15637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
15647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  -export-symbols SYMFILE
15657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet                    try to export only the symbols listed in SYMFILE
15667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  -export-symbols-regex REGEX
15677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet                    try to export only the symbols matching REGEX
15687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  -LLIBDIR          search LIBDIR for required installed libraries
15697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  -lNAME            OUTPUT-FILE requires the installed library libNAME
15707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  -module           build a library that can dlopened
15717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  -no-fast-install  disable the fast-install mode
15727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  -no-install       link a not-installable executable
15737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  -no-undefined     declare that a library does not refer to external symbols
15747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
15757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  -objectlist FILE  Use a list of object files found in FILE to specify objects
15767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  -precious-files-regex REGEX
15777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet                    don't remove output files matching REGEX
15787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  -release RELEASE  specify package release information
15797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
15807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
15817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  -shared           only do dynamic linking of libtool libraries
15827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  -shrext SUFFIX    override the standard shared library file extension
15837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  -static           do not do any dynamic linking of uninstalled libtool libraries
15847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  -static-libtool-libs
15857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet                    do not do any dynamic linking of libtool libraries
15867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  -version-info CURRENT[:REVISION[:AGE]]
15877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet                    specify library version info [each variable defaults to 0]
15887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  -weak LIBNAME     declare that the target provides the LIBNAME interface
15897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
15907c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetAll other options (arguments beginning with \`-') are ignored.
15917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
15927c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetEvery other argument is treated as a filename.  Files ending in \`.la' are
15937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichettreated as uninstalled libtool libraries, other files are standard or library
15947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetobject files.
15957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
15967c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetIf the OUTPUT-FILE ends in \`.la', then a libtool library is created,
15977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetonly library objects (\`.lo' files) may be specified, and \`-rpath' is
15987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetrequired, except when creating a convenience library.
15997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
16007c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetIf OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
16017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetusing \`ar' and \`ranlib', or on Windows using \`lib'.
16027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
16037c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetIf OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
16047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetis created, otherwise an executable program is created."
16057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        ;;
16067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
16077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      uninstall)
16087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        $ECHO \
16097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
16107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
16117c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetRemove libraries from an installation directory.
16127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
16137c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetRM is the name of the program to use to delete files associated with each FILE
16147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
16157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetto RM.
16167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
16177c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetIf FILE is a libtool library, all the files associated with it are deleted.
16187c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetOtherwise, only FILE itself is deleted using RM."
16197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        ;;
16207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
16217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      *)
16227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        func_fatal_help "invalid operation mode \`$mode'"
16237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        ;;
16247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    esac
16257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
16267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    $ECHO
16277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    $ECHO "Try \`$progname --help' for more information about other modes."
16287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
16297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    exit $?
16307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
16317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
16327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  # Now that we've collected a possible --mode arg, show help if necessary
16337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  $opt_help && func_mode_help
16347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
16357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
16367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_mode_execute arg...
16377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_mode_execute ()
16387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{
16397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    $opt_debug
16407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    # The first argument is the command name.
16417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    cmd="$nonopt"
16427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    test -z "$cmd" && \
16437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      func_fatal_help "you must specify a COMMAND"
16447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
16457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    # Handle -dlopen flags immediately.
16467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    for file in $execute_dlfiles; do
16477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      test -f "$file" \
16487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	|| func_fatal_help "\`$file' is not a file"
16497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
16507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      dir=
16517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      case $file in
16527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      *.la)
16537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Check to see that this really is a libtool archive.
16547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_lalib_unsafe_p "$file" \
16557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  || func_fatal_help "\`$lib' is not a valid libtool archive"
16567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
16577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Read the libtool library.
16587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	dlname=
16597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	library_names=
16607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_source "$file"
16617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
16627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Skip this library if it cannot be dlopened.
16637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test -z "$dlname"; then
16647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # Warn if it was a shared library.
16657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  test -n "$library_names" && \
16667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    func_warning "\`$file' was not linked with \`-export-dynamic'"
16677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  continue
16687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
16697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
16707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_dirname "$file" "" "."
16717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	dir="$func_dirname_result"
16727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
16737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test -f "$dir/$objdir/$dlname"; then
16747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  dir="$dir/$objdir"
16757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	else
16767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test ! -f "$dir/$dlname"; then
16777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
16787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
16797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
16807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
16817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
16827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      *.lo)
16837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Just add the directory containing the .lo file.
16847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_dirname "$file" "" "."
16857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	dir="$func_dirname_result"
16867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
16877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
16887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      *)
16897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
16907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	continue
16917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
16927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      esac
16937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
16947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # Get the absolute pathname.
16957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      absdir=`cd "$dir" && pwd`
16967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      test -n "$absdir" && dir="$absdir"
16977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
16987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # Now add the directory to shlibpath_var.
16997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if eval "test -z \"\$$shlibpath_var\""; then
17007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	eval "$shlibpath_var=\"\$dir\""
17017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      else
17027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
17037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      fi
17047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    done
17057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
17067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    # This variable tells wrapper scripts just to set shlibpath_var
17077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    # rather than running their programs.
17087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    libtool_execute_magic="$magic"
17097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
17107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    # Check if any of the arguments is a wrapper script.
17117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    args=
17127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    for file
17137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    do
17147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      case $file in
17157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      -*) ;;
17167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      *)
17177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Do a test to see if this is really a libtool program.
17187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if func_ltwrapper_script_p "$file"; then
17197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_source "$file"
17207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # Transform arg to wrapped name.
17217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  file="$progdir/$program"
17227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	elif func_ltwrapper_executable_p "$file"; then
17237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_ltwrapper_scriptname "$file"
17247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_source "$func_ltwrapper_scriptname_result"
17257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # Transform arg to wrapped name.
17267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  file="$progdir/$program"
17277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
17287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
17297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      esac
17307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # Quote arguments (to preserve shell metacharacters).
17317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      func_quote_for_eval "$file"
17327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      args="$args $func_quote_for_eval_result"
17337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    done
17347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
17357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    if test "X$opt_dry_run" = Xfalse; then
17367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if test -n "$shlibpath_var"; then
17377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Export the shlibpath_var.
17387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	eval "export $shlibpath_var"
17397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      fi
17407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
17417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # Restore saved environment variables
17427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
17437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      do
17447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	eval "if test \"\${save_$lt_var+set}\" = set; then
17457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet                $lt_var=\$save_$lt_var; export $lt_var
17467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      else
17477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		$lt_unset $lt_var
17487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      fi"
17497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      done
17507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
17517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # Now prepare to actually exec the command.
17527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      exec_cmd="\$cmd$args"
17537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    else
17547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # Display what would be done.
17557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if test -n "$shlibpath_var"; then
17567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
17577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	$ECHO "export $shlibpath_var"
17587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      fi
17597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      $ECHO "$cmd$args"
17607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      exit $EXIT_SUCCESS
17617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    fi
17627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
17637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
17647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichettest "$mode" = execute && func_mode_execute ${1+"$@"}
17657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
17667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
17677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_mode_finish arg...
17687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_mode_finish ()
17697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{
17707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    $opt_debug
17717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    libdirs="$nonopt"
17727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    admincmds=
17737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
17747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
17757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      for dir
17767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      do
17777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	libdirs="$libdirs $dir"
17787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      done
17797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
17807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      for libdir in $libdirs; do
17817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test -n "$finish_cmds"; then
17827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # Do each command in the finish commands.
17837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
17847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet'"$cmd"'"'
17857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
17867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test -n "$finish_eval"; then
17877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # Do the single finish_eval.
17887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  eval cmds=\"$finish_eval\"
17897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  $opt_dry_run || eval "$cmds" || admincmds="$admincmds
17907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet       $cmds"
17917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
17927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      done
17937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    fi
17947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
17957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    # Exit here if they wanted silent mode.
17967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    $opt_silent && exit $EXIT_SUCCESS
17977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
17987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    $ECHO "X----------------------------------------------------------------------" | $Xsed
17997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    $ECHO "Libraries have been installed in:"
18007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    for libdir in $libdirs; do
18017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      $ECHO "   $libdir"
18027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    done
18037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    $ECHO
18047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    $ECHO "If you ever happen to want to link against installed libraries"
18057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    $ECHO "in a given directory, LIBDIR, you must either use libtool, and"
18067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    $ECHO "specify the full pathname of the library, or use the \`-LLIBDIR'"
18077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    $ECHO "flag during linking and do at least one of the following:"
18087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    if test -n "$shlibpath_var"; then
18097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      $ECHO "   - add LIBDIR to the \`$shlibpath_var' environment variable"
18107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      $ECHO "     during execution"
18117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    fi
18127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    if test -n "$runpath_var"; then
18137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      $ECHO "   - add LIBDIR to the \`$runpath_var' environment variable"
18147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      $ECHO "     during linking"
18157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    fi
18167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    if test -n "$hardcode_libdir_flag_spec"; then
18177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      libdir=LIBDIR
18187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      eval flag=\"$hardcode_libdir_flag_spec\"
18197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
18207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      $ECHO "   - use the \`$flag' linker flag"
18217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    fi
18227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    if test -n "$admincmds"; then
18237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      $ECHO "   - have your system administrator run these commands:$admincmds"
18247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    fi
18257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    if test -f /etc/ld.so.conf; then
18267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      $ECHO "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
18277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    fi
18287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    $ECHO
18297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
18307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    $ECHO "See any operating system documentation about shared libraries for"
18317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    case $host in
18327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      solaris2.[6789]|solaris2.1[0-9])
18337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        $ECHO "more information, such as the ld(1), crle(1) and ld.so(8) manual"
18347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	$ECHO "pages."
18357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
18367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      *)
18377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        $ECHO "more information, such as the ld(1) and ld.so(8) manual pages."
18387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        ;;
18397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    esac
18407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    $ECHO "X----------------------------------------------------------------------" | $Xsed
18417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    exit $EXIT_SUCCESS
18427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
18437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
18447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichettest "$mode" = finish && func_mode_finish ${1+"$@"}
18457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
18467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
18477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_mode_install arg...
18487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_mode_install ()
18497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{
18507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    $opt_debug
18517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    # There may be an optional sh(1) argument at the beginning of
18527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    # install_prog (especially on Windows NT).
18537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
18547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet       # Allow the use of GNU shtool's install command.
18557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet       $ECHO "X$nonopt" | $GREP shtool >/dev/null; then
18567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # Aesthetically quote it.
18577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      func_quote_for_eval "$nonopt"
18587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      install_prog="$func_quote_for_eval_result "
18597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      arg=$1
18607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      shift
18617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    else
18627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      install_prog=
18637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      arg=$nonopt
18647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    fi
18657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
18667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    # The real first argument should be the name of the installation program.
18677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    # Aesthetically quote it.
18687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    func_quote_for_eval "$arg"
18697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    install_prog="$install_prog$func_quote_for_eval_result"
18707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
18717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    # We need to accept at least all the BSD install flags.
18727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    dest=
18737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    files=
18747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    opts=
18757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    prev=
18767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    install_type=
18777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    isdir=no
18787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    stripme=
18797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    for arg
18807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    do
18817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if test -n "$dest"; then
18827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	files="$files $dest"
18837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	dest=$arg
18847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	continue
18857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      fi
18867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
18877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      case $arg in
18887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      -d) isdir=yes ;;
18897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      -f)
18907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	case " $install_prog " in
18917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	*[\\\ /]cp\ *) ;;
18927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	*) prev=$arg ;;
18937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	esac
18947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
18957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      -g | -m | -o)
18967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	prev=$arg
18977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
18987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      -s)
18997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	stripme=" -s"
19007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	continue
19017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
19027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      -*)
19037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
19047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      *)
19057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# If the previous option needed an argument, then skip it.
19067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test -n "$prev"; then
19077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  prev=
19087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	else
19097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  dest=$arg
19107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  continue
19117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
19127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
19137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      esac
19147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
19157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # Aesthetically quote the argument.
19167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      func_quote_for_eval "$arg"
19177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      install_prog="$install_prog $func_quote_for_eval_result"
19187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    done
19197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
19207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    test -z "$install_prog" && \
19217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      func_fatal_help "you must specify an install program"
19227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
19237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    test -n "$prev" && \
19247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      func_fatal_help "the \`$prev' option requires an argument"
19257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
19267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    if test -z "$files"; then
19277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if test -z "$dest"; then
19287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_fatal_help "no file or destination specified"
19297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      else
19307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_fatal_help "you must specify a destination"
19317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      fi
19327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    fi
19337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
19347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    # Strip any trailing slash from the destination.
19357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    func_stripname '' '/' "$dest"
19367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    dest=$func_stripname_result
19377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
19387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    # Check to see that the destination is a directory.
19397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    test -d "$dest" && isdir=yes
19407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    if test "$isdir" = yes; then
19417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      destdir="$dest"
19427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      destname=
19437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    else
19447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      func_dirname_and_basename "$dest" "" "."
19457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      destdir="$func_dirname_result"
19467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      destname="$func_basename_result"
19477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
19487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # Not a directory, so check to see that there is only one file specified.
19497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      set dummy $files; shift
19507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      test "$#" -gt 1 && \
19517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_fatal_help "\`$dest' is not a directory"
19527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    fi
19537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    case $destdir in
19547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    [\\/]* | [A-Za-z]:[\\/]*) ;;
19557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    *)
19567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      for file in $files; do
19577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	case $file in
19587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	*.lo) ;;
19597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	*)
19607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_fatal_help "\`$destdir' must be an absolute directory name"
19617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
19627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	esac
19637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      done
19647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      ;;
19657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    esac
19667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
19677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    # This variable tells wrapper scripts just to set variables rather
19687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    # than running their programs.
19697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    libtool_install_magic="$magic"
19707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
19717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    staticlibs=
19727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    future_libdirs=
19737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    current_libdirs=
19747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    for file in $files; do
19757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
19767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # Do each installation.
19777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      case $file in
19787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      *.$libext)
19797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Do the static libraries later.
19807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	staticlibs="$staticlibs $file"
19817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
19827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
19837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      *.la)
19847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Check to see that this really is a libtool archive.
19857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_lalib_unsafe_p "$file" \
19867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  || func_fatal_help "\`$file' is not a valid libtool archive"
19877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
19887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	library_names=
19897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	old_library=
19907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	relink_command=
19917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_source "$file"
19927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
19937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Add the libdir to current_libdirs if it is the destination.
19947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test "X$destdir" = "X$libdir"; then
19957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  case "$current_libdirs " in
19967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  *" $libdir "*) ;;
19977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  *) current_libdirs="$current_libdirs $libdir" ;;
19987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  esac
19997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	else
20007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # Note the libdir as a future libdir.
20017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  case "$future_libdirs " in
20027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  *" $libdir "*) ;;
20037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  *) future_libdirs="$future_libdirs $libdir" ;;
20047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  esac
20057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
20067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
20077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_dirname "$file" "/" ""
20087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	dir="$func_dirname_result"
20097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	dir="$dir$objdir"
20107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
20117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test -n "$relink_command"; then
20127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # Determine the prefix the user has applied to our future dir.
20137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"`
20147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
20157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # Don't allow the user to place us outside of our expected
20167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # location b/c this prevents finding dependent libraries that
20177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # are installed to the same prefix.
20187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # At present, this check doesn't affect windows .dll's that
20197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # are installed into $libdir/../bin (currently, that works fine)
20207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # but it's something to keep an eye on.
20217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  test "$inst_prefix_dir" = "$destdir" && \
20227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
20237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
20247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test -n "$inst_prefix_dir"; then
20257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # Stick the inst_prefix_dir data into the link command.
20267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
20277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  else
20287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"`
20297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
20307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
20317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_warning "relinking \`$file'"
20327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_show_eval "$relink_command" \
20337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
20347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
20357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
20367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# See the names of the shared library.
20377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	set dummy $library_names; shift
20387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test -n "$1"; then
20397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  realname="$1"
20407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  shift
20417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
20427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  srcname="$realname"
20437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  test -n "$relink_command" && srcname="$realname"T
20447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
20457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # Install the shared library and build the symlinks.
20467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \
20477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      'exit $?'
20487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  tstripme="$stripme"
20497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  case $host_os in
20507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  cygwin* | mingw* | pw32* | cegcc*)
20517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    case $realname in
20527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    *.dll.a)
20537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      tstripme=""
20547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      ;;
20557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    esac
20567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    ;;
20577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  esac
20587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test -n "$tstripme" && test -n "$striplib"; then
20597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    func_show_eval "$striplib $destdir/$realname" 'exit $?'
20607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
20617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
20627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test "$#" -gt 0; then
20637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # Delete the old symlinks, and create new ones.
20647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # Try `ln -sf' first, because the `ln' binary might depend on
20657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # the symlink we replace!  Solaris /bin/ln does not understand -f,
20667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # so we also need to try rm && ln -s.
20677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    for linkname
20687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    do
20697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      test "$linkname" != "$realname" \
20707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		&& func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
20717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    done
20727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
20737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
20747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # Do each command in the postinstall commands.
20757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  lib="$destdir/$realname"
20767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_execute_cmds "$postinstall_cmds" 'exit $?'
20777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
20787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
20797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Install the pseudo-library for information purposes.
20807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_basename "$file"
20817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	name="$func_basename_result"
20827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	instname="$dir/$name"i
20837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
20847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
20857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Maybe install the static library, too.
20867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
20877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
20887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
20897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      *.lo)
20907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Install (i.e. copy) a libtool object.
20917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
20927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Figure out destination file name, if it wasn't already specified.
20937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test -n "$destname"; then
20947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  destfile="$destdir/$destname"
20957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	else
20967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_basename "$file"
20977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  destfile="$func_basename_result"
20987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  destfile="$destdir/$destfile"
20997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
21007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
21017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Deduce the name of the destination old-style object file.
21027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	case $destfile in
21037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	*.lo)
21047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_lo2o "$destfile"
21057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  staticdest=$func_lo2o_result
21067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
21077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	*.$objext)
21087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  staticdest="$destfile"
21097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  destfile=
21107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
21117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	*)
21127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_fatal_help "cannot copy a libtool object to \`$destfile'"
21137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
21147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	esac
21157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
21167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Install the libtool object if requested.
21177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	test -n "$destfile" && \
21187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_show_eval "$install_prog $file $destfile" 'exit $?'
21197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
21207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Install the old object if enabled.
21217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test "$build_old_libs" = yes; then
21227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # Deduce the name of the old-style object file.
21237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_lo2o "$file"
21247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  staticobj=$func_lo2o_result
21257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
21267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
21277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	exit $EXIT_SUCCESS
21287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
21297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
21307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      *)
21317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Figure out destination file name, if it wasn't already specified.
21327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test -n "$destname"; then
21337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  destfile="$destdir/$destname"
21347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	else
21357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_basename "$file"
21367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  destfile="$func_basename_result"
21377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  destfile="$destdir/$destfile"
21387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
21397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
21407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# If the file is missing, and there is a .exe on the end, strip it
21417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# because it is most likely a libtool script we actually want to
21427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# install
21437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	stripped_ext=""
21447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	case $file in
21457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  *.exe)
21467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    if test ! -f "$file"; then
21477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      func_stripname '' '.exe' "$file"
21487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      file=$func_stripname_result
21497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      stripped_ext=".exe"
21507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    fi
21517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    ;;
21527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	esac
21537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
21547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Do a test to see if this is really a libtool program.
21557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	case $host in
21567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	*cygwin* | *mingw*)
21577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    if func_ltwrapper_executable_p "$file"; then
21587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      func_ltwrapper_scriptname "$file"
21597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      wrapper=$func_ltwrapper_scriptname_result
21607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    else
21617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      func_stripname '' '.exe' "$file"
21627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      wrapper=$func_stripname_result
21637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    fi
21647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    ;;
21657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	*)
21667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    wrapper=$file
21677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    ;;
21687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	esac
21697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if func_ltwrapper_script_p "$wrapper"; then
21707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  notinst_deplibs=
21717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  relink_command=
21727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
21737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_source "$wrapper"
21747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
21757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # Check the variables that should have been set.
21767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  test -z "$generated_by_libtool_version" && \
21777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    func_fatal_error "invalid libtool wrapper script \`$wrapper'"
21787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
21797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  finalize=yes
21807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  for lib in $notinst_deplibs; do
21817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # Check to see that each library is installed.
21827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    libdir=
21837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    if test -f "$lib"; then
21847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      func_source "$lib"
21857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    fi
21867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
21877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    if test -n "$libdir" && test ! -f "$libfile"; then
21887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      func_warning "\`$lib' has not been installed in \`$libdir'"
21897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      finalize=no
21907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    fi
21917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  done
21927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
21937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  relink_command=
21947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_source "$wrapper"
21957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
21967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  outputname=
21977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test "$fast_install" = no && test -n "$relink_command"; then
21987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    $opt_dry_run || {
21997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      if test "$finalize" = yes; then
22007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	        tmpdir=`func_mktempdir`
22017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		func_basename "$file$stripped_ext"
22027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		file="$func_basename_result"
22037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	        outputname="$tmpdir/$file"
22047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	        # Replace the output file specification.
22057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	        relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
22067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
22077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	        $opt_silent || {
22087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	          func_quote_for_expand "$relink_command"
22097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  eval "func_echo $func_quote_for_expand_result"
22107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	        }
22117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	        if eval "$relink_command"; then :
22127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	          else
22137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  func_error "error: relink \`$file' with the above command before installing it"
22147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  $opt_dry_run || ${RM}r "$tmpdir"
22157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  continue
22167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	        fi
22177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	        file="$outputname"
22187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      else
22197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	        func_warning "cannot relink \`$file'"
22207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      fi
22217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    }
22227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  else
22237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # Install the binary that we compiled earlier.
22247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
22257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
22267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
22277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
22287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# remove .exe since cygwin /usr/bin/install will append another
22297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# one anyway
22307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	case $install_prog,$host in
22317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	*/usr/bin/install*,*cygwin*)
22327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  case $file:$destfile in
22337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  *.exe:*.exe)
22347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # this is ok
22357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    ;;
22367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  *.exe:*)
22377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    destfile=$destfile.exe
22387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    ;;
22397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  *:*.exe)
22407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    func_stripname '' '.exe' "$destfile"
22417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    destfile=$func_stripname_result
22427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    ;;
22437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  esac
22447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
22457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	esac
22467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
22477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	$opt_dry_run || if test -n "$outputname"; then
22487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ${RM}r "$tmpdir"
22497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
22507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
22517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      esac
22527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    done
22537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
22547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    for file in $staticlibs; do
22557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      func_basename "$file"
22567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      name="$func_basename_result"
22577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
22587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # Set up the ranlib parameters.
22597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      oldlib="$destdir/$name"
22607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
22617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
22627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
22637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if test -n "$stripme" && test -n "$old_striplib"; then
22647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_show_eval "$old_striplib $oldlib" 'exit $?'
22657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      fi
22667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
22677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # Do each command in the postinstall commands.
22687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      func_execute_cmds "$old_postinstall_cmds" 'exit $?'
22697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    done
22707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
22717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    test -n "$future_libdirs" && \
22727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      func_warning "remember to run \`$progname --finish$future_libdirs'"
22737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
22747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    if test -n "$current_libdirs"; then
22757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # Maybe just do a dry run.
22767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      $opt_dry_run && current_libdirs=" -n$current_libdirs"
22777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
22787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    else
22797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      exit $EXIT_SUCCESS
22807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    fi
22817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
22827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
22837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichettest "$mode" = install && func_mode_install ${1+"$@"}
22847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
22857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
22867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_generate_dlsyms outputname originator pic_p
22877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Extract symbols from dlprefiles and create ${outputname}S.o with
22887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# a dlpreopen symbol table.
22897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_generate_dlsyms ()
22907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{
22917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    $opt_debug
22927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    my_outputname="$1"
22937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    my_originator="$2"
22947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    my_pic_p="${3-no}"
22957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
22967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    my_dlsyms=
22977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
22987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
22997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if test -n "$NM" && test -n "$global_symbol_pipe"; then
23007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	my_dlsyms="${my_outputname}S.c"
23017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      else
23027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_error "not configured to extract global symbols from dlpreopened files"
23037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      fi
23047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    fi
23057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
23067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    if test -n "$my_dlsyms"; then
23077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      case $my_dlsyms in
23087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      "") ;;
23097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      *.c)
23107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Discover the nlist of each of the dlfiles.
23117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	nlist="$output_objdir/${my_outputname}.nm"
23127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
23137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
23147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
23157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Parse the name list into a source file.
23167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_verbose "creating $output_objdir/$my_dlsyms"
23177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
23187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	$opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
23197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
23207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
23217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
23227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#ifdef __cplusplus
23237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetextern \"C\" {
23247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#endif
23257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
23267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet/* External symbol declarations for the compiler. */\
23277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet"
23287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
23297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test "$dlself" = yes; then
23307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_verbose "generating symbol list for \`$output'"
23317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
23327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
23337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
23347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # Add our own program objects to the symbol list.
23357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
23367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  for progfile in $progfiles; do
23377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    func_verbose "extracting global C symbols from \`$progfile'"
23387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'"
23397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  done
23407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
23417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test -n "$exclude_expsyms"; then
23427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    $opt_dry_run || {
23437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
23447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      eval '$MV "$nlist"T "$nlist"'
23457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    }
23467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
23477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
23487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test -n "$export_symbols_regex"; then
23497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    $opt_dry_run || {
23507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
23517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      eval '$MV "$nlist"T "$nlist"'
23527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    }
23537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
23547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
23557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # Prepare the list of exported symbols
23567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test -z "$export_symbols"; then
23577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    export_symbols="$output_objdir/$outputname.exp"
23587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    $opt_dry_run || {
23597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      $RM $export_symbols
23607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
23617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      case $host in
23627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      *cygwin* | *mingw* | *cegcc* )
23637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet                eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
23647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet                eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
23657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	        ;;
23667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      esac
23677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    }
23687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  else
23697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    $opt_dry_run || {
23707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
23717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
23727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      eval '$MV "$nlist"T "$nlist"'
23737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      case $host in
23747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	        *cygwin | *mingw* | *cegcc* )
23757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	          eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
23767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	          eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
23777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	          ;;
23787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      esac
23797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    }
23807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
23817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
23827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
23837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	for dlprefile in $dlprefiles; do
23847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_verbose "extracting global C symbols from \`$dlprefile'"
23857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_basename "$dlprefile"
23867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  name="$func_basename_result"
23877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  $opt_dry_run || {
23887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    eval '$ECHO ": $name " >> "$nlist"'
23897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'"
23907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  }
23917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	done
23927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
23937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	$opt_dry_run || {
23947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # Make sure we have at least an empty file.
23957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  test -f "$nlist" || : > "$nlist"
23967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
23977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test -n "$exclude_expsyms"; then
23987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
23997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    $MV "$nlist"T "$nlist"
24007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
24017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
24027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # Try sorting and uniquifying the output.
24037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if $GREP -v "^: " < "$nlist" |
24047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      if sort -k 3 </dev/null >/dev/null 2>&1; then
24057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		sort -k 3
24067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      else
24077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		sort +2
24087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      fi |
24097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      uniq > "$nlist"S; then
24107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    :
24117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  else
24127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    $GREP -v "^: " < "$nlist" > "$nlist"S
24137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
24147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
24157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test -f "$nlist"S; then
24167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
24177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  else
24187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms"
24197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
24207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
24217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  $ECHO >> "$output_objdir/$my_dlsyms" "\
24227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
24237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet/* The mapping between symbol names and symbols.  */
24247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichettypedef struct {
24257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  const char *name;
24267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  void *address;
24277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} lt_dlsymlist;
24287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet"
24297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  case $host in
24307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  *cygwin* | *mingw* | *cegcc* )
24317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    $ECHO >> "$output_objdir/$my_dlsyms" "\
24327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet/* DATA imports from DLLs on WIN32 con't be const, because
24337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet   runtime relocations are performed -- see ld's documentation
24347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet   on pseudo-relocs.  */"
24357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    lt_dlsym_const= ;;
24367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  *osf5*)
24377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    echo >> "$output_objdir/$my_dlsyms" "\
24387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet/* This system does not cope well with relocations in const data */"
24397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    lt_dlsym_const= ;;
24407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  *)
24417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    lt_dlsym_const=const ;;
24427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  esac
24437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
24447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  $ECHO >> "$output_objdir/$my_dlsyms" "\
24457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetextern $lt_dlsym_const lt_dlsymlist
24467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetlt_${my_prefix}_LTX_preloaded_symbols[];
24477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet$lt_dlsym_const lt_dlsymlist
24487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetlt_${my_prefix}_LTX_preloaded_symbols[] =
24497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{\
24507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  { \"$my_originator\", (void *) 0 },"
24517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
24527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  case $need_lib_prefix in
24537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  no)
24547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
24557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    ;;
24567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  *)
24577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
24587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    ;;
24597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  esac
24607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  $ECHO >> "$output_objdir/$my_dlsyms" "\
24617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  {0, (void *) 0}
24627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet};
24637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
24647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet/* This works around a problem in FreeBSD linker */
24657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#ifdef FREEBSD_WORKAROUND
24667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetstatic const void *lt_preloaded_setup() {
24677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  return lt_${my_prefix}_LTX_preloaded_symbols;
24687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
24697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#endif
24707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
24717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#ifdef __cplusplus
24727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
24737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#endif\
24747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet"
24757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	} # !$opt_dry_run
24767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
24777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	pic_flag_for_symtable=
24787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	case "$compile_command " in
24797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	*" -static "*) ;;
24807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	*)
24817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  case $host in
24827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # compiling the symbol table file with pic_flag works around
24837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # a FreeBSD bug that causes programs to crash when -lm is
24847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # linked before any other PIC object.  But we must not use
24857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # pic_flag when linking with -static.  The problem exists in
24867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
24877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
24887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
24897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  *-*-hpux*)
24907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    pic_flag_for_symtable=" $pic_flag"  ;;
24917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  *)
24927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    if test "X$my_pic_p" != Xno; then
24937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      pic_flag_for_symtable=" $pic_flag"
24947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    fi
24957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    ;;
24967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  esac
24977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
24987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	esac
24997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	symtab_cflags=
25007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	for arg in $LTCFLAGS; do
25017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  case $arg in
25027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  -pie | -fpie | -fPIE) ;;
25037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  *) symtab_cflags="$symtab_cflags $arg" ;;
25047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  esac
25057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	done
25067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
25077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Now compile the dynamic symbol file.
25087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
25097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
25107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Clean up the generated files.
25117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
25127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
25137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Transform the symbol file into the correct name.
25147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	symfileobj="$output_objdir/${my_outputname}S.$objext"
25157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	case $host in
25167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	*cygwin* | *mingw* | *cegcc* )
25177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test -f "$output_objdir/$my_outputname.def"; then
25187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
25197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
25207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  else
25217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
25227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
25237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
25247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
25257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	*)
25267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
25277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
25287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
25297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	esac
25307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
25317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      *)
25327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_fatal_error "unknown suffix for \`$my_dlsyms'"
25337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
25347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      esac
25357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    else
25367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # We keep going just in case the user didn't refer to
25377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
25387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # really was required.
25397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
25407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # Nullify the symbol file.
25417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
25427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
25437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    fi
25447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
25457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
25467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_win32_libid arg
25477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# return the library type of file 'arg'
25487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#
25497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Need a lot of goo to handle *both* DLLs and import libs
25507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Has to be a shell function in order to 'eat' the argument
25517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# that is supplied when $file_magic_command is called.
25527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_win32_libid ()
25537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{
25547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  $opt_debug
25557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  win32_libid_type="unknown"
25567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  win32_fileres=`file -L $1 2>/dev/null`
25577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  case $win32_fileres in
25587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  *ar\ archive\ import\ library*) # definitely import
25597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    win32_libid_type="x86 archive import"
25607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    ;;
25617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  *ar\ archive*) # could be an import, or static
25627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
25637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet       $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
25647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      win32_nmres=`eval $NM -f posix -A $1 |
25657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	$SED -n -e '
25667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    1,100{
25677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		/ I /{
25687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    s,.*,import,
25697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    p
25707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    q
25717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		}
25727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    }'`
25737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      case $win32_nmres in
25747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      import*)  win32_libid_type="x86 archive import";;
25757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      *)        win32_libid_type="x86 archive static";;
25767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      esac
25777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    fi
25787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    ;;
25797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  *DLL*)
25807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    win32_libid_type="x86 DLL"
25817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    ;;
25827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  *executable*) # but shell scripts are "executable" too...
25837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    case $win32_fileres in
25847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    *MS\ Windows\ PE\ Intel*)
25857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      win32_libid_type="x86 DLL"
25867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      ;;
25877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    esac
25887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    ;;
25897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  esac
25907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  $ECHO "$win32_libid_type"
25917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
25927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
25937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
25947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
25957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_extract_an_archive dir oldlib
25967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_extract_an_archive ()
25977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{
25987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    $opt_debug
25997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    f_ex_an_ar_dir="$1"; shift
26007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    f_ex_an_ar_oldlib="$1"
26017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" 'exit $?'
26027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
26037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet     :
26047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    else
26057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
26067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    fi
26077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
26087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
26097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
26107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_extract_archives gentop oldlib ...
26117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_extract_archives ()
26127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{
26137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    $opt_debug
26147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    my_gentop="$1"; shift
26157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    my_oldlibs=${1+"$@"}
26167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    my_oldobjs=""
26177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    my_xlib=""
26187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    my_xabs=""
26197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    my_xdir=""
26207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
26217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    for my_xlib in $my_oldlibs; do
26227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # Extract the objects.
26237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      case $my_xlib in
26247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	[\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
26257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	*) my_xabs=`pwd`"/$my_xlib" ;;
26267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      esac
26277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      func_basename "$my_xlib"
26287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      my_xlib="$func_basename_result"
26297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      my_xlib_u=$my_xlib
26307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      while :; do
26317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        case " $extracted_archives " in
26327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	*" $my_xlib_u "*)
26337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_arith $extracted_serial + 1
26347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  extracted_serial=$func_arith_result
26357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  my_xlib_u=lt$extracted_serial-$my_xlib ;;
26367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	*) break ;;
26377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	esac
26387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      done
26397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      extracted_archives="$extracted_archives $my_xlib_u"
26407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      my_xdir="$my_gentop/$my_xlib_u"
26417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
26427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      func_mkdir_p "$my_xdir"
26437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
26447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      case $host in
26457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      *-darwin*)
26467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_verbose "Extracting $my_xabs"
26477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Do not bother doing anything if just a dry run
26487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	$opt_dry_run || {
26497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  darwin_orig_dir=`pwd`
26507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  cd $my_xdir || exit $?
26517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  darwin_archive=$my_xabs
26527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  darwin_curdir=`pwd`
26537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  darwin_base_archive=`basename "$darwin_archive"`
26547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
26557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test -n "$darwin_arches"; then
26567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
26577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    darwin_arch=
26587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
26597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    for darwin_arch in  $darwin_arches ; do
26607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
26617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
26627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
26637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      func_extract_an_archive "`pwd`" "${darwin_base_archive}"
26647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      cd "$darwin_curdir"
26657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
26667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    done # $darwin_arches
26677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet            ## Okay now we've a bunch of thin objects, gotta fatten them up :)
26687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u`
26697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    darwin_file=
26707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    darwin_files=
26717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    for darwin_file in $darwin_filelist; do
26727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
26737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      $LIPO -create -output "$darwin_file" $darwin_files
26747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    done # $darwin_filelist
26757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    $RM -rf unfat-$$
26767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    cd "$darwin_orig_dir"
26777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  else
26787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    cd $darwin_orig_dir
26797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    func_extract_an_archive "$my_xdir" "$my_xabs"
26807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi # $darwin_arches
26817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	} # !$opt_dry_run
26827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
26837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      *)
26847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        func_extract_an_archive "$my_xdir" "$my_xabs"
26857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
26867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      esac
26877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
26887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    done
26897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
26907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    func_extract_archives_result="$my_oldobjs"
26917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
26927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
26937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
26947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
26957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_emit_wrapper_part1 [arg=no]
26967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#
26977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Emit the first part of a libtool wrapper script on stdout.
26987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# For more information, see the description associated with
26997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_emit_wrapper(), below.
27007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_emit_wrapper_part1 ()
27017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{
27027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_emit_wrapper_part1_arg1=no
27037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test -n "$1" ; then
27047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_emit_wrapper_part1_arg1=$1
27057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
27067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
27077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	$ECHO "\
27087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#! $SHELL
27097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
27107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# $output - temporary wrapper script for $objdir/$outputname
27117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
27127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#
27137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# The $output program cannot be directly executed until all the libtool
27147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# libraries that it depends on are installed.
27157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#
27167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# This wrapper script should never be moved out of the build directory.
27177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# If it is, it will not operate correctly.
27187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
27197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Sed substitution that helps us do robust quoting.  It backslashifies
27207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# metacharacters that are still active within double-quoted strings.
27217c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetXsed='${SED} -e 1s/^X//'
27227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetsed_quote_subst='$sed_quote_subst'
27237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
27247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Be Bourne compatible
27257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetif test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
27267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  emulate sh
27277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  NULLCMD=:
27287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
27297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  # is contrary to our usage.  Disable this feature.
27307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  alias -g '\${1+\"\$@\"}'='\"\$@\"'
27317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  setopt NO_GLOB_SUBST
27327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetelse
27337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
27347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfi
27357c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetBIN_SH=xpg4; export BIN_SH # for Tru64
27367c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetDUALCASE=1; export DUALCASE # for MKS sh
27377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
27387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# The HP-UX ksh and POSIX shell print the target directory to stdout
27397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# if CDPATH is set.
27407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
27417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
27427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetrelink_command=\"$relink_command\"
27437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
27447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# This environment variable determines our operation mode.
27457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetif test \"\$libtool_install_magic\" = \"$magic\"; then
27467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  # install mode needs the following variables:
27477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  generated_by_libtool_version='$macro_version'
27487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  notinst_deplibs='$notinst_deplibs'
27497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetelse
27507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  # When we are sourced in execute mode, \$file and \$ECHO are already set.
27517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  if test \"\$libtool_execute_magic\" != \"$magic\"; then
27527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    ECHO=\"$qecho\"
27537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    file=\"\$0\"
27547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    # Make sure echo works.
27557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    if test \"X\$1\" = X--no-reexec; then
27567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # Discard the --no-reexec flag, and continue.
27577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      shift
27587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then
27597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # Yippee, \$ECHO works!
27607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      :
27617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    else
27627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # Restart under the correct shell, and then maybe \$ECHO will work.
27637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
27647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    fi
27657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  fi\
27667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet"
27677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	$ECHO "\
27687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
27697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  # Find the directory that this script lives in.
27707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
27717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
27727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
27737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  # Follow symbolic links until we get to the real thisdir.
27747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
27757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  while test -n \"\$file\"; do
27767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
27777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
27787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    # If there was a directory component, then change thisdir.
27797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    if test \"x\$destdir\" != \"x\$file\"; then
27807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      case \"\$destdir\" in
27817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
27827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      *) thisdir=\"\$thisdir/\$destdir\" ;;
27837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      esac
27847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    fi
27857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
27867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
27877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
27887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  done
27897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet"
27907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
27917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# end: func_emit_wrapper_part1
27927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
27937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_emit_wrapper_part2 [arg=no]
27947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#
27957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Emit the second part of a libtool wrapper script on stdout.
27967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# For more information, see the description associated with
27977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_emit_wrapper(), below.
27987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_emit_wrapper_part2 ()
27997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{
28007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_emit_wrapper_part2_arg1=no
28017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test -n "$1" ; then
28027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_emit_wrapper_part2_arg1=$1
28037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
28047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
28057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	$ECHO "\
28067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
28077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  # Usually 'no', except on cygwin/mingw when embedded into
28087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  # the cwrapper.
28097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_part2_arg1
28107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
28117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    # special case for '.'
28127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    if test \"\$thisdir\" = \".\"; then
28137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      thisdir=\`pwd\`
28147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    fi
28157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    # remove .libs from thisdir
28167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    case \"\$thisdir\" in
28177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    *[\\\\/]$objdir ) thisdir=\`\$ECHO \"X\$thisdir\" | \$Xsed -e 's%[\\\\/][^\\\\/]*$%%'\` ;;
28187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    $objdir )   thisdir=. ;;
28197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    esac
28207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  fi
28217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
28227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  # Try to get the absolute directory name.
28237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  absdir=\`cd \"\$thisdir\" && pwd\`
28247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  test -n \"\$absdir\" && thisdir=\"\$absdir\"
28257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet"
28267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
28277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test "$fast_install" = yes; then
28287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  $ECHO "\
28297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  program=lt-'$outputname'$exeext
28307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  progdir=\"\$thisdir/$objdir\"
28317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
28327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  if test ! -f \"\$progdir/\$program\" ||
28337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
28347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
28357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
28367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    file=\"\$\$-\$program\"
28377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
28387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    if test ! -d \"\$progdir\"; then
28397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      $MKDIR \"\$progdir\"
28407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    else
28417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      $RM \"\$progdir/\$file\"
28427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    fi"
28437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
28447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  $ECHO "\
28457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
28467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    # relink executable if necessary
28477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    if test -n \"\$relink_command\"; then
28487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
28497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      else
28507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	$ECHO \"\$relink_command_output\" >&2
28517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	$RM \"\$progdir/\$file\"
28527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	exit 1
28537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      fi
28547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    fi
28557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
28567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
28577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    { $RM \"\$progdir/\$program\";
28587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
28597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    $RM \"\$progdir/\$file\"
28607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  fi"
28617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	else
28627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  $ECHO "\
28637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  program='$outputname'
28647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  progdir=\"\$thisdir/$objdir\"
28657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet"
28667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
28677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
28687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	$ECHO "\
28697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
28707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  if test -f \"\$progdir/\$program\"; then"
28717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
28727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Export our shlibpath_var if we have one.
28737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
28747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  $ECHO "\
28757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    # Add our own library path to $shlibpath_var
28767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
28777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
28787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    # Some systems cannot cope with colon-terminated $shlibpath_var
28797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    # The second colon is a workaround for a bug in BeOS R4 sed
28807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    $shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
28817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
28827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    export $shlibpath_var
28837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet"
28847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
28857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
28867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# fixup the dll searchpath if we need to.
28877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test -n "$dllsearchpath"; then
28887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  $ECHO "\
28897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    # Add the dll search path components to the executable PATH
28907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    PATH=$dllsearchpath:\$PATH
28917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet"
28927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
28937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
28947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	$ECHO "\
28957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    if test \"\$libtool_execute_magic\" != \"$magic\"; then
28967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # Run the actual program with our arguments.
28977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet"
28987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	case $host in
28997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Backslashes separate directories on plain windows
29007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	*-*-mingw | *-*-os2* | *-cegcc*)
29017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  $ECHO "\
29027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
29037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet"
29047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
29057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
29067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	*)
29077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  $ECHO "\
29087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      exec \"\$progdir/\$program\" \${1+\"\$@\"}
29097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet"
29107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
29117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	esac
29127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	$ECHO "\
29137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
29147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      exit 1
29157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    fi
29167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  else
29177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    # The program doesn't exist.
29187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
29197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
29207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    $ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
29217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    exit 1
29227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  fi
29237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfi\
29247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet"
29257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
29267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# end: func_emit_wrapper_part2
29277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
29287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
29297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_emit_wrapper [arg=no]
29307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#
29317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Emit a libtool wrapper script on stdout.
29327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Don't directly open a file because we may want to
29337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# incorporate the script contents within a cygwin/mingw
29347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# wrapper executable.  Must ONLY be called from within
29357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_mode_link because it depends on a number of variables
29367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# set therein.
29377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#
29387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
29397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# variable will take.  If 'yes', then the emitted script
29407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# will assume that the directory in which it is stored is
29417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# the $objdir directory.  This is a cygwin/mingw-specific
29427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# behavior.
29437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_emit_wrapper ()
29447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{
29457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_emit_wrapper_arg1=no
29467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test -n "$1" ; then
29477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_emit_wrapper_arg1=$1
29487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
29497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
29507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# split this up so that func_emit_cwrapperexe_src
29517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# can call each part independently.
29527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_emit_wrapper_part1 "${func_emit_wrapper_arg1}"
29537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_emit_wrapper_part2 "${func_emit_wrapper_arg1}"
29547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
29557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
29567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
29577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_to_host_path arg
29587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#
29597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Convert paths to host format when used with build tools.
29607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Intended for use with "native" mingw (where libtool itself
29617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# is running under the msys shell), or in the following cross-
29627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# build environments:
29637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#    $build          $host
29647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#    mingw (msys)    mingw  [e.g. native]
29657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#    cygwin          mingw
29667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#    *nix + wine     mingw
29677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# where wine is equipped with the `winepath' executable.
29687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# In the native mingw case, the (msys) shell automatically
29697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# converts paths for any non-msys applications it launches,
29707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# but that facility isn't available from inside the cwrapper.
29717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Similar accommodations are necessary for $host mingw and
29727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# $build cygwin.  Calling this function does no harm for other
29737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# $host/$build combinations not listed above.
29747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#
29757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# ARG is the path (on $build) that should be converted to
29767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# the proper representation for $host. The result is stored
29777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# in $func_to_host_path_result.
29787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_to_host_path ()
29797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{
29807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  func_to_host_path_result="$1"
29817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  if test -n "$1" ; then
29827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    case $host in
29837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      *mingw* )
29847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
29857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        case $build in
29867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet          *mingw* ) # actually, msys
29877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet            # awkward: cmd appends spaces to result
29887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet            lt_sed_strip_trailing_spaces="s/[ ]*\$//"
29897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet            func_to_host_path_tmp1=`( cmd //c echo "$1" |\
29907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet              $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""`
29917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet            func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
29927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet              $SED -e "$lt_sed_naive_backslashify"`
29937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet            ;;
29947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet          *cygwin* )
29957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet            func_to_host_path_tmp1=`cygpath -w "$1"`
29967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet            func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
29977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet              $SED -e "$lt_sed_naive_backslashify"`
29987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet            ;;
29997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet          * )
30007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet            # Unfortunately, winepath does not exit with a non-zero
30017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet            # error code, so we are forced to check the contents of
30027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet            # stdout. On the other hand, if the command is not
30037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet            # found, the shell will set an exit code of 127 and print
30047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet            # *an error message* to stdout. So we must check for both
30057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet            # error code of zero AND non-empty stdout, which explains
30067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet            # the odd construction:
30077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet            func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null`
30087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet            if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then
30097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet              func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
30107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet                $SED -e "$lt_sed_naive_backslashify"`
30117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet            else
30127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet              # Allow warning below.
30137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet              func_to_host_path_result=""
30147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet            fi
30157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet            ;;
30167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        esac
30177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        if test -z "$func_to_host_path_result" ; then
30187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet          func_error "Could not determine host path corresponding to"
30197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet          func_error "  '$1'"
30207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet          func_error "Continuing, but uninstalled executables may not work."
30217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet          # Fallback:
30227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet          func_to_host_path_result="$1"
30237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        fi
30247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        ;;
30257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    esac
30267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  fi
30277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
30287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# end: func_to_host_path
30297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
30307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_to_host_pathlist arg
30317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#
30327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Convert pathlists to host format when used with build tools.
30337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# See func_to_host_path(), above. This function supports the
30347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# following $build/$host combinations (but does no harm for
30357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# combinations not listed here):
30367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#    $build          $host
30377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#    mingw (msys)    mingw  [e.g. native]
30387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#    cygwin          mingw
30397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#    *nix + wine     mingw
30407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#
30417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Path separators are also converted from $build format to
30427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# $host format. If ARG begins or ends with a path separator
30437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# character, it is preserved (but converted to $host format)
30447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# on output.
30457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#
30467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# ARG is a pathlist (on $build) that should be converted to
30477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# the proper representation on $host. The result is stored
30487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# in $func_to_host_pathlist_result.
30497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_to_host_pathlist ()
30507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{
30517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  func_to_host_pathlist_result="$1"
30527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  if test -n "$1" ; then
30537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    case $host in
30547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      *mingw* )
30557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
30567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        # Remove leading and trailing path separator characters from
30577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        # ARG. msys behavior is inconsistent here, cygpath turns them
30587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        # into '.;' and ';.', and winepath ignores them completely.
30597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        func_to_host_pathlist_tmp2="$1"
30607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        # Once set for this call, this variable should not be
30617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        # reassigned. It is used in tha fallback case.
30627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        func_to_host_pathlist_tmp1=`echo "$func_to_host_pathlist_tmp2" |\
30637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet          $SED -e 's|^:*||' -e 's|:*$||'`
30647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        case $build in
30657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet          *mingw* ) # Actually, msys.
30667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet            # Awkward: cmd appends spaces to result.
30677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet            lt_sed_strip_trailing_spaces="s/[ ]*\$//"
30687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet            func_to_host_pathlist_tmp2=`( cmd //c echo "$func_to_host_pathlist_tmp1" |\
30697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet              $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""`
30707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet            func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\
30717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet              $SED -e "$lt_sed_naive_backslashify"`
30727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet            ;;
30737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet          *cygwin* )
30747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet            func_to_host_pathlist_tmp2=`cygpath -w -p "$func_to_host_pathlist_tmp1"`
30757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet            func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\
30767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet              $SED -e "$lt_sed_naive_backslashify"`
30777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet            ;;
30787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet          * )
30797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet            # unfortunately, winepath doesn't convert pathlists
30807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet            func_to_host_pathlist_result=""
30817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet            func_to_host_pathlist_oldIFS=$IFS
30827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet            IFS=:
30837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet            for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do
30847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet              IFS=$func_to_host_pathlist_oldIFS
30857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet              if test -n "$func_to_host_pathlist_f" ; then
30867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet                func_to_host_path "$func_to_host_pathlist_f"
30877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet                if test -n "$func_to_host_path_result" ; then
30887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet                  if test -z "$func_to_host_pathlist_result" ; then
30897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet                    func_to_host_pathlist_result="$func_to_host_path_result"
30907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet                  else
30917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet                    func_to_host_pathlist_result="$func_to_host_pathlist_result;$func_to_host_path_result"
30927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet                  fi
30937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet                fi
30947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet              fi
30957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet              IFS=:
30967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet            done
30977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet            IFS=$func_to_host_pathlist_oldIFS
30987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet            ;;
30997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        esac
31007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        if test -z "$func_to_host_pathlist_result" ; then
31017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet          func_error "Could not determine the host path(s) corresponding to"
31027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet          func_error "  '$1'"
31037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet          func_error "Continuing, but uninstalled executables may not work."
31047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet          # Fallback. This may break if $1 contains DOS-style drive
31057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet          # specifications. The fix is not to complicate the expression
31067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet          # below, but for the user to provide a working wine installation
31077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet          # with winepath so that path translation in the cross-to-mingw
31087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet          # case works properly.
31097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet          lt_replace_pathsep_nix_to_dos="s|:|;|g"
31107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet          func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\
31117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet            $SED -e "$lt_replace_pathsep_nix_to_dos"`
31127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        fi
31137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        # Now, add the leading and trailing path separators back
31147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        case "$1" in
31157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet          :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result"
31167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet            ;;
31177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        esac
31187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        case "$1" in
31197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet          *: ) func_to_host_pathlist_result="$func_to_host_pathlist_result;"
31207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet            ;;
31217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        esac
31227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        ;;
31237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    esac
31247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  fi
31257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
31267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# end: func_to_host_pathlist
31277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
31287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_emit_cwrapperexe_src
31297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# emit the source code for a wrapper executable on stdout
31307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Must ONLY be called from within func_mode_link because
31317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# it depends on a number of variable set therein.
31327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_emit_cwrapperexe_src ()
31337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{
31347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	cat <<EOF
31357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
31367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
31377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet   Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
31387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
31397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet   The $output program cannot be directly executed until all the libtool
31407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet   libraries that it depends on are installed.
31417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
31427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet   This wrapper executable should never be moved out of the build directory.
31437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet   If it is, it will not operate correctly.
31447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
31457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet   Currently, it simply execs the wrapper *script* "$SHELL $output",
31467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet   but could eventually absorb all of the scripts functionality and
31477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet   exec $objdir/$outputname directly.
31487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet*/
31497c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetEOF
31507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    cat <<"EOF"
31517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#include <stdio.h>
31527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#include <stdlib.h>
31537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#ifdef _MSC_VER
31547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# include <direct.h>
31557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# include <process.h>
31567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# include <io.h>
31577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# define setmode _setmode
31587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#else
31597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# include <unistd.h>
31607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# include <stdint.h>
31617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# ifdef __CYGWIN__
31627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#  include <io.h>
31637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#  define HAVE_SETENV
31647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#  ifdef __STRICT_ANSI__
31657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetchar *realpath (const char *, char *);
31667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetint putenv (char *);
31677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetint setenv (const char *, const char *, int);
31687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#  endif
31697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# endif
31707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#endif
31717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#include <malloc.h>
31727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#include <stdarg.h>
31737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#include <assert.h>
31747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#include <string.h>
31757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#include <ctype.h>
31767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#include <errno.h>
31777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#include <fcntl.h>
31787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#include <sys/stat.h>
31797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
31807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#if defined(PATH_MAX)
31817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# define LT_PATHMAX PATH_MAX
31827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#elif defined(MAXPATHLEN)
31837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# define LT_PATHMAX MAXPATHLEN
31847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#else
31857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# define LT_PATHMAX 1024
31867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#endif
31877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
31887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#ifndef S_IXOTH
31897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# define S_IXOTH 0
31907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#endif
31917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#ifndef S_IXGRP
31927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# define S_IXGRP 0
31937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#endif
31947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
31957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#ifdef _MSC_VER
31967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# define S_IXUSR _S_IEXEC
31977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# define stat _stat
31987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# ifndef _INTPTR_T_DEFINED
31997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#  define intptr_t int
32007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# endif
32017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#endif
32027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
32037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#ifndef DIR_SEPARATOR
32047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# define DIR_SEPARATOR '/'
32057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# define PATH_SEPARATOR ':'
32067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#endif
32077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
32087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
32097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  defined (__OS2__)
32107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# define HAVE_DOS_BASED_FILE_SYSTEM
32117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# define FOPEN_WB "wb"
32127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# ifndef DIR_SEPARATOR_2
32137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#  define DIR_SEPARATOR_2 '\\'
32147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# endif
32157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# ifndef PATH_SEPARATOR_2
32167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#  define PATH_SEPARATOR_2 ';'
32177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# endif
32187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#endif
32197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
32207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#ifndef DIR_SEPARATOR_2
32217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
32227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#else /* DIR_SEPARATOR_2 */
32237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# define IS_DIR_SEPARATOR(ch) \
32247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	(((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
32257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#endif /* DIR_SEPARATOR_2 */
32267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
32277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#ifndef PATH_SEPARATOR_2
32287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
32297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#else /* PATH_SEPARATOR_2 */
32307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
32317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#endif /* PATH_SEPARATOR_2 */
32327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
32337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#ifdef __CYGWIN__
32347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# define FOPEN_WB "wb"
32357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#endif
32367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
32377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#ifndef FOPEN_WB
32387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# define FOPEN_WB "w"
32397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#endif
32407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#ifndef _O_BINARY
32417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# define _O_BINARY 0
32427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#endif
32437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
32447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
32457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#define XFREE(stale) do { \
32467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  if (stale) { free ((void *) stale); stale = 0; } \
32477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet} while (0)
32487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
32497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#undef LTWRAPPER_DEBUGPRINTF
32507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#if defined DEBUGWRAPPER
32517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# define LTWRAPPER_DEBUGPRINTF(args) ltwrapper_debugprintf args
32527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetstatic void
32537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetltwrapper_debugprintf (const char *fmt, ...)
32547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{
32557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    va_list args;
32567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    va_start (args, fmt);
32577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    (void) vfprintf (stderr, fmt, args);
32587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    va_end (args);
32597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
32607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#else
32617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# define LTWRAPPER_DEBUGPRINTF(args)
32627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#endif
32637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
32647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetconst char *program_name = NULL;
32657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
32667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetvoid *xmalloc (size_t num);
32677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetchar *xstrdup (const char *string);
32687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetconst char *base_name (const char *name);
32697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetchar *find_executable (const char *wrapper);
32707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetchar *chase_symlinks (const char *pathspec);
32717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetint make_executable (const char *path);
32727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetint check_executable (const char *path);
32737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetchar *strendzap (char *str, const char *pat);
32747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetvoid lt_fatal (const char *message, ...);
32757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetvoid lt_setenv (const char *name, const char *value);
32767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetchar *lt_extend_str (const char *orig_value, const char *add, int to_end);
32777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetvoid lt_opt_process_env_set (const char *arg);
32787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetvoid lt_opt_process_env_prepend (const char *arg);
32797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetvoid lt_opt_process_env_append (const char *arg);
32807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetint lt_split_name_value (const char *arg, char** name, char** value);
32817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetvoid lt_update_exe_path (const char *name, const char *value);
32827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetvoid lt_update_lib_path (const char *name, const char *value);
32837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
32847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetstatic const char *script_text_part1 =
32857c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetEOF
32867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
32877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    func_emit_wrapper_part1 yes |
32887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	        $SED -e 's/\([\\"]\)/\\\1/g' \
32897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	             -e 's/^/  "/' -e 's/$/\\n"/'
32907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    echo ";"
32917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    cat <<EOF
32927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
32937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetstatic const char *script_text_part2 =
32947c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetEOF
32957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    func_emit_wrapper_part2 yes |
32967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	        $SED -e 's/\([\\"]\)/\\\1/g' \
32977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	             -e 's/^/  "/' -e 's/$/\\n"/'
32987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    echo ";"
32997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
33007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    cat <<EOF
33017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetconst char * MAGIC_EXE = "$magic_exe";
33027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetconst char * LIB_PATH_VARNAME = "$shlibpath_var";
33037c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetEOF
33047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
33057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
33067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet              func_to_host_pathlist "$temp_rpath"
33077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      cat <<EOF
33087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetconst char * LIB_PATH_VALUE   = "$func_to_host_pathlist_result";
33097c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetEOF
33107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    else
33117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      cat <<"EOF"
33127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetconst char * LIB_PATH_VALUE   = "";
33137c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetEOF
33147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    fi
33157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
33167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    if test -n "$dllsearchpath"; then
33177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet              func_to_host_pathlist "$dllsearchpath:"
33187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      cat <<EOF
33197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetconst char * EXE_PATH_VARNAME = "PATH";
33207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetconst char * EXE_PATH_VALUE   = "$func_to_host_pathlist_result";
33217c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetEOF
33227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    else
33237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      cat <<"EOF"
33247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetconst char * EXE_PATH_VARNAME = "";
33257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetconst char * EXE_PATH_VALUE   = "";
33267c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetEOF
33277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    fi
33287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
33297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    if test "$fast_install" = yes; then
33307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      cat <<EOF
33317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetconst char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
33327c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetEOF
33337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    else
33347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      cat <<EOF
33357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetconst char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
33367c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetEOF
33377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    fi
33387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
33397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
33407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    cat <<"EOF"
33417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
33427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#define LTWRAPPER_OPTION_PREFIX         "--lt-"
33437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#define LTWRAPPER_OPTION_PREFIX_LENGTH  5
33447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
33457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetstatic const size_t opt_prefix_len         = LTWRAPPER_OPTION_PREFIX_LENGTH;
33467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetstatic const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
33477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
33487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetstatic const char *dumpscript_opt       = LTWRAPPER_OPTION_PREFIX "dump-script";
33497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
33507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetstatic const size_t env_set_opt_len     = LTWRAPPER_OPTION_PREFIX_LENGTH + 7;
33517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetstatic const char *env_set_opt          = LTWRAPPER_OPTION_PREFIX "env-set";
33527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  /* argument is putenv-style "foo=bar", value of foo is set to bar */
33537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
33547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetstatic const size_t env_prepend_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 11;
33557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetstatic const char *env_prepend_opt      = LTWRAPPER_OPTION_PREFIX "env-prepend";
33567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  /* argument is putenv-style "foo=bar", new value of foo is bar${foo} */
33577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
33587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetstatic const size_t env_append_opt_len  = LTWRAPPER_OPTION_PREFIX_LENGTH + 10;
33597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetstatic const char *env_append_opt       = LTWRAPPER_OPTION_PREFIX "env-append";
33607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  /* argument is putenv-style "foo=bar", new value of foo is ${foo}bar */
33617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
33627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetint
33637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetmain (int argc, char *argv[])
33647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{
33657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  char **newargz;
33667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  int  newargc;
33677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  char *tmp_pathspec;
33687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  char *actual_cwrapper_path;
33697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  char *actual_cwrapper_name;
33707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  char *target_name;
33717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  char *lt_argv_zero;
33727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  intptr_t rval = 127;
33737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
33747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  int i;
33757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
33767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  program_name = (char *) xstrdup (base_name (argv[0]));
33777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  LTWRAPPER_DEBUGPRINTF (("(main) argv[0]      : %s\n", argv[0]));
33787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  LTWRAPPER_DEBUGPRINTF (("(main) program_name : %s\n", program_name));
33797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
33807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  /* very simple arg parsing; don't want to rely on getopt */
33817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  for (i = 1; i < argc; i++)
33827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    {
33837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if (strcmp (argv[i], dumpscript_opt) == 0)
33847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	{
33857c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetEOF
33867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    case "$host" in
33877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      *mingw* | *cygwin* )
33887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		# make stdout use "unix" line endings
33897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		echo "          setmode(1,_O_BINARY);"
33907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		;;
33917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      esac
33927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
33937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    cat <<"EOF"
33947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  printf ("%s", script_text_part1);
33957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  printf ("%s", script_text_part2);
33967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  return 0;
33977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	}
33987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    }
33997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
34007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  newargz = XMALLOC (char *, argc + 1);
34017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  tmp_pathspec = find_executable (argv[0]);
34027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  if (tmp_pathspec == NULL)
34037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    lt_fatal ("Couldn't find %s", argv[0]);
34047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  LTWRAPPER_DEBUGPRINTF (("(main) found exe (before symlink chase) at : %s\n",
34057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet			  tmp_pathspec));
34067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
34077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  actual_cwrapper_path = chase_symlinks (tmp_pathspec);
34087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  LTWRAPPER_DEBUGPRINTF (("(main) found exe (after symlink chase) at : %s\n",
34097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet			  actual_cwrapper_path));
34107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  XFREE (tmp_pathspec);
34117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
34127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  actual_cwrapper_name = xstrdup( base_name (actual_cwrapper_path));
34137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  strendzap (actual_cwrapper_path, actual_cwrapper_name);
34147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
34157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  /* wrapper name transforms */
34167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  strendzap (actual_cwrapper_name, ".exe");
34177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
34187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  XFREE (actual_cwrapper_name);
34197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  actual_cwrapper_name = tmp_pathspec;
34207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  tmp_pathspec = 0;
34217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
34227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  /* target_name transforms -- use actual target program name; might have lt- prefix */
34237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
34247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  strendzap (target_name, ".exe");
34257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
34267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  XFREE (target_name);
34277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  target_name = tmp_pathspec;
34287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  tmp_pathspec = 0;
34297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
34307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  LTWRAPPER_DEBUGPRINTF (("(main) libtool target name: %s\n",
34317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet			  target_name));
34327c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetEOF
34337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
34347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    cat <<EOF
34357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  newargz[0] =
34367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    XMALLOC (char, (strlen (actual_cwrapper_path) +
34377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
34387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  strcpy (newargz[0], actual_cwrapper_path);
34397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  strcat (newargz[0], "$objdir");
34407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  strcat (newargz[0], "/");
34417c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetEOF
34427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
34437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    cat <<"EOF"
34447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  /* stop here, and copy so we don't have to do this twice */
34457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  tmp_pathspec = xstrdup (newargz[0]);
34467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
34477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  /* do NOT want the lt- prefix here, so use actual_cwrapper_name */
34487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  strcat (newargz[0], actual_cwrapper_name);
34497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
34507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  /* DO want the lt- prefix here if it exists, so use target_name */
34517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1);
34527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  XFREE (tmp_pathspec);
34537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  tmp_pathspec = NULL;
34547c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetEOF
34557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
34567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    case $host_os in
34577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      mingw*)
34587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    cat <<"EOF"
34597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  {
34607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    char* p;
34617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    while ((p = strchr (newargz[0], '\\')) != NULL)
34627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      {
34637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	*p = '/';
34647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      }
34657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    while ((p = strchr (lt_argv_zero, '\\')) != NULL)
34667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      {
34677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	*p = '/';
34687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      }
34697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  }
34707c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetEOF
34717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    ;;
34727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    esac
34737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
34747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    cat <<"EOF"
34757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  XFREE (target_name);
34767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  XFREE (actual_cwrapper_path);
34777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  XFREE (actual_cwrapper_name);
34787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
34797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
34807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  lt_setenv ("DUALCASE", "1");  /* for MSK sh */
34817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
34827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
34837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
34847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  newargc=0;
34857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  for (i = 1; i < argc; i++)
34867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    {
34877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if (strncmp (argv[i], env_set_opt, env_set_opt_len) == 0)
34887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        {
34897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet          if (argv[i][env_set_opt_len] == '=')
34907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet            {
34917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet              const char *p = argv[i] + env_set_opt_len + 1;
34927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet              lt_opt_process_env_set (p);
34937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet            }
34947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet          else if (argv[i][env_set_opt_len] == '\0' && i + 1 < argc)
34957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet            {
34967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet              lt_opt_process_env_set (argv[++i]); /* don't copy */
34977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet            }
34987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet          else
34997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet            lt_fatal ("%s missing required argument", env_set_opt);
35007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet          continue;
35017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        }
35027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if (strncmp (argv[i], env_prepend_opt, env_prepend_opt_len) == 0)
35037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        {
35047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet          if (argv[i][env_prepend_opt_len] == '=')
35057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet            {
35067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet              const char *p = argv[i] + env_prepend_opt_len + 1;
35077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet              lt_opt_process_env_prepend (p);
35087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet            }
35097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet          else if (argv[i][env_prepend_opt_len] == '\0' && i + 1 < argc)
35107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet            {
35117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet              lt_opt_process_env_prepend (argv[++i]); /* don't copy */
35127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet            }
35137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet          else
35147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet            lt_fatal ("%s missing required argument", env_prepend_opt);
35157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet          continue;
35167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        }
35177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if (strncmp (argv[i], env_append_opt, env_append_opt_len) == 0)
35187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        {
35197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet          if (argv[i][env_append_opt_len] == '=')
35207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet            {
35217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet              const char *p = argv[i] + env_append_opt_len + 1;
35227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet              lt_opt_process_env_append (p);
35237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet            }
35247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet          else if (argv[i][env_append_opt_len] == '\0' && i + 1 < argc)
35257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet            {
35267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet              lt_opt_process_env_append (argv[++i]); /* don't copy */
35277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet            }
35287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet          else
35297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet            lt_fatal ("%s missing required argument", env_append_opt);
35307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet          continue;
35317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        }
35327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if (strncmp (argv[i], ltwrapper_option_prefix, opt_prefix_len) == 0)
35337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        {
35347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet          /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
35357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet             namespace, but it is not one of the ones we know about and
35367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet             have already dealt with, above (inluding dump-script), then
35377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet             report an error. Otherwise, targets might begin to believe
35387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet             they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
35397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet             namespace. The first time any user complains about this, we'll
35407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet             need to make LTWRAPPER_OPTION_PREFIX a configure-time option
35417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet             or a configure.ac-settable value.
35427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet           */
35437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet          lt_fatal ("Unrecognized option in %s namespace: '%s'",
35447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet                    ltwrapper_option_prefix, argv[i]);
35457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        }
35467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      /* otherwise ... */
35477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      newargz[++newargc] = xstrdup (argv[i]);
35487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    }
35497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  newargz[++newargc] = NULL;
35507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
35517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  LTWRAPPER_DEBUGPRINTF     (("(main) lt_argv_zero : %s\n", (lt_argv_zero ? lt_argv_zero : "<NULL>")));
35527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  for (i = 0; i < newargc; i++)
35537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    {
35547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d]   : %s\n", i, (newargz[i] ? newargz[i] : "<NULL>")));
35557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    }
35567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
35577c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetEOF
35587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
35597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    case $host_os in
35607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      mingw*)
35617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		cat <<"EOF"
35627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  /* execv doesn't actually work on mingw as expected on unix */
35637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
35647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  if (rval == -1)
35657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    {
35667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      /* failed to start process */
35677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"%s\": errno = %d\n", lt_argv_zero, errno));
35687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      return 127;
35697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    }
35707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  return rval;
35717c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetEOF
35727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		;;
35737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      *)
35747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		cat <<"EOF"
35757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  execv (lt_argv_zero, newargz);
35767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  return rval; /* =127, but avoids unused variable warning */
35777c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetEOF
35787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		;;
35797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    esac
35807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
35817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    cat <<"EOF"
35827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
35837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
35847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetvoid *
35857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetxmalloc (size_t num)
35867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{
35877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  void *p = (void *) malloc (num);
35887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  if (!p)
35897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    lt_fatal ("Memory exhausted");
35907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
35917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  return p;
35927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
35937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
35947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetchar *
35957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetxstrdup (const char *string)
35967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{
35977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
35987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet			  string) : NULL;
35997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
36007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
36017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetconst char *
36027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetbase_name (const char *name)
36037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{
36047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  const char *base;
36057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
36067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
36077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  /* Skip over the disk name in MSDOS pathnames. */
36087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  if (isalpha ((unsigned char) name[0]) && name[1] == ':')
36097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    name += 2;
36107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#endif
36117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
36127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  for (base = name; *name; name++)
36137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    if (IS_DIR_SEPARATOR (*name))
36147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      base = name + 1;
36157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  return base;
36167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
36177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
36187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetint
36197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetcheck_executable (const char *path)
36207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{
36217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  struct stat st;
36227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
36237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  LTWRAPPER_DEBUGPRINTF (("(check_executable)  : %s\n",
36247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet			  path ? (*path ? path : "EMPTY!") : "NULL!"));
36257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  if ((!path) || (!*path))
36267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    return 0;
36277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
36287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  if ((stat (path, &st) >= 0)
36297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
36307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    return 1;
36317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  else
36327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    return 0;
36337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
36347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
36357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetint
36367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetmake_executable (const char *path)
36377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{
36387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  int rval = 0;
36397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  struct stat st;
36407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
36417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  LTWRAPPER_DEBUGPRINTF (("(make_executable)   : %s\n",
36427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet			  path ? (*path ? path : "EMPTY!") : "NULL!"));
36437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  if ((!path) || (!*path))
36447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    return 0;
36457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
36467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  if (stat (path, &st) >= 0)
36477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    {
36487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR);
36497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    }
36507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  return rval;
36517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
36527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
36537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet/* Searches for the full path of the wrapper.  Returns
36547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet   newly allocated full path name if found, NULL otherwise
36557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet   Does not chase symlinks, even on platforms that support them.
36567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet*/
36577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetchar *
36587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfind_executable (const char *wrapper)
36597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{
36607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  int has_slash = 0;
36617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  const char *p;
36627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  const char *p_next;
36637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  /* static buffer for getcwd */
36647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  char tmp[LT_PATHMAX + 1];
36657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  int tmp_len;
36667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  char *concat_name;
36677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
36687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  LTWRAPPER_DEBUGPRINTF (("(find_executable)   : %s\n",
36697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet			  wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!"));
36707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
36717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  if ((wrapper == NULL) || (*wrapper == '\0'))
36727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    return NULL;
36737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
36747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  /* Absolute path? */
36757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
36767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
36777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    {
36787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      concat_name = xstrdup (wrapper);
36797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if (check_executable (concat_name))
36807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	return concat_name;
36817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      XFREE (concat_name);
36827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    }
36837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  else
36847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    {
36857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#endif
36867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if (IS_DIR_SEPARATOR (wrapper[0]))
36877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	{
36887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  concat_name = xstrdup (wrapper);
36897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if (check_executable (concat_name))
36907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    return concat_name;
36917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  XFREE (concat_name);
36927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	}
36937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
36947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    }
36957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#endif
36967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
36977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  for (p = wrapper; *p; p++)
36987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    if (*p == '/')
36997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      {
37007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	has_slash = 1;
37017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	break;
37027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      }
37037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  if (!has_slash)
37047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    {
37057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      /* no slashes; search PATH */
37067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      const char *path = getenv ("PATH");
37077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if (path != NULL)
37087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	{
37097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  for (p = path; *p; p = p_next)
37107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    {
37117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      const char *q;
37127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      size_t p_len;
37137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      for (q = p; *q; q++)
37147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		if (IS_PATH_SEPARATOR (*q))
37157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  break;
37167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      p_len = q - p;
37177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      p_next = (*q == '\0' ? q : q + 1);
37187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      if (p_len == 0)
37197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		{
37207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  /* empty path: current directory */
37217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  if (getcwd (tmp, LT_PATHMAX) == NULL)
37227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    lt_fatal ("getcwd failed");
37237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  tmp_len = strlen (tmp);
37247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  concat_name =
37257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
37267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  memcpy (concat_name, tmp, tmp_len);
37277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  concat_name[tmp_len] = '/';
37287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  strcpy (concat_name + tmp_len + 1, wrapper);
37297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		}
37307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      else
37317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		{
37327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  concat_name =
37337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    XMALLOC (char, p_len + 1 + strlen (wrapper) + 1);
37347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  memcpy (concat_name, p, p_len);
37357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  concat_name[p_len] = '/';
37367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  strcpy (concat_name + p_len + 1, wrapper);
37377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		}
37387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      if (check_executable (concat_name))
37397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		return concat_name;
37407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      XFREE (concat_name);
37417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    }
37427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	}
37437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      /* not found in PATH; assume curdir */
37447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    }
37457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  /* Relative path | not found in path: prepend cwd */
37467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  if (getcwd (tmp, LT_PATHMAX) == NULL)
37477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    lt_fatal ("getcwd failed");
37487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  tmp_len = strlen (tmp);
37497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
37507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  memcpy (concat_name, tmp, tmp_len);
37517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  concat_name[tmp_len] = '/';
37527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  strcpy (concat_name + tmp_len + 1, wrapper);
37537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
37547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  if (check_executable (concat_name))
37557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    return concat_name;
37567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  XFREE (concat_name);
37577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  return NULL;
37587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
37597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
37607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetchar *
37617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetchase_symlinks (const char *pathspec)
37627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{
37637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#ifndef S_ISLNK
37647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  return xstrdup (pathspec);
37657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#else
37667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  char buf[LT_PATHMAX];
37677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  struct stat s;
37687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  char *tmp_pathspec = xstrdup (pathspec);
37697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  char *p;
37707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  int has_symlinks = 0;
37717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  while (strlen (tmp_pathspec) && !has_symlinks)
37727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    {
37737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      LTWRAPPER_DEBUGPRINTF (("checking path component for symlinks: %s\n",
37747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet			      tmp_pathspec));
37757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if (lstat (tmp_pathspec, &s) == 0)
37767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	{
37777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if (S_ISLNK (s.st_mode) != 0)
37787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    {
37797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      has_symlinks = 1;
37807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      break;
37817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    }
37827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
37837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  /* search backwards for last DIR_SEPARATOR */
37847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  p = tmp_pathspec + strlen (tmp_pathspec) - 1;
37857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
37867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    p--;
37877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
37887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    {
37897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      /* no more DIR_SEPARATORS left */
37907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      break;
37917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    }
37927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  *p = '\0';
37937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	}
37947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      else
37957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	{
37967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  char *errstr = strerror (errno);
37977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  lt_fatal ("Error accessing file %s (%s)", tmp_pathspec, errstr);
37987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	}
37997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    }
38007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  XFREE (tmp_pathspec);
38017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
38027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  if (!has_symlinks)
38037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    {
38047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      return xstrdup (pathspec);
38057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    }
38067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
38077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  tmp_pathspec = realpath (pathspec, buf);
38087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  if (tmp_pathspec == 0)
38097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    {
38107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      lt_fatal ("Could not follow symlinks for %s", pathspec);
38117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    }
38127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  return xstrdup (tmp_pathspec);
38137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#endif
38147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
38157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
38167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetchar *
38177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetstrendzap (char *str, const char *pat)
38187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{
38197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  size_t len, patlen;
38207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
38217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  assert (str != NULL);
38227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  assert (pat != NULL);
38237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
38247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  len = strlen (str);
38257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  patlen = strlen (pat);
38267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
38277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  if (patlen <= len)
38287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    {
38297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      str += len - patlen;
38307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if (strcmp (str, pat) == 0)
38317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	*str = '\0';
38327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    }
38337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  return str;
38347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
38357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
38367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetstatic void
38377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetlt_error_core (int exit_status, const char *mode,
38387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	       const char *message, va_list ap)
38397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{
38407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  fprintf (stderr, "%s: %s: ", program_name, mode);
38417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  vfprintf (stderr, message, ap);
38427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  fprintf (stderr, ".\n");
38437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
38447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  if (exit_status >= 0)
38457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    exit (exit_status);
38467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
38477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
38487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetvoid
38497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetlt_fatal (const char *message, ...)
38507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{
38517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  va_list ap;
38527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  va_start (ap, message);
38537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
38547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  va_end (ap);
38557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
38567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
38577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetvoid
38587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetlt_setenv (const char *name, const char *value)
38597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{
38607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  LTWRAPPER_DEBUGPRINTF (("(lt_setenv) setting '%s' to '%s'\n",
38617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet                          (name ? name : "<NULL>"),
38627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet                          (value ? value : "<NULL>")));
38637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  {
38647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#ifdef HAVE_SETENV
38657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    /* always make a copy, for consistency with !HAVE_SETENV */
38667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    char *str = xstrdup (value);
38677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    setenv (name, str, 1);
38687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#else
38697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    int len = strlen (name) + 1 + strlen (value) + 1;
38707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    char *str = XMALLOC (char, len);
38717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    sprintf (str, "%s=%s", name, value);
38727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    if (putenv (str) != EXIT_SUCCESS)
38737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      {
38747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        XFREE (str);
38757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      }
38767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#endif
38777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  }
38787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
38797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
38807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetchar *
38817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetlt_extend_str (const char *orig_value, const char *add, int to_end)
38827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{
38837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  char *new_value;
38847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  if (orig_value && *orig_value)
38857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    {
38867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      int orig_value_len = strlen (orig_value);
38877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      int add_len = strlen (add);
38887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      new_value = XMALLOC (char, add_len + orig_value_len + 1);
38897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if (to_end)
38907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        {
38917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet          strcpy (new_value, orig_value);
38927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet          strcpy (new_value + orig_value_len, add);
38937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        }
38947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      else
38957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        {
38967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet          strcpy (new_value, add);
38977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet          strcpy (new_value + add_len, orig_value);
38987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        }
38997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    }
39007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  else
39017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    {
39027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      new_value = xstrdup (add);
39037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    }
39047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  return new_value;
39057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
39067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
39077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetint
39087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetlt_split_name_value (const char *arg, char** name, char** value)
39097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{
39107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  const char *p;
39117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  int len;
39127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  if (!arg || !*arg)
39137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    return 1;
39147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
39157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  p = strchr (arg, (int)'=');
39167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
39177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  if (!p)
39187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    return 1;
39197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
39207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  *value = xstrdup (++p);
39217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
39227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  len = strlen (arg) - strlen (*value);
39237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  *name = XMALLOC (char, len);
39247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  strncpy (*name, arg, len-1);
39257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  (*name)[len - 1] = '\0';
39267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
39277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  return 0;
39287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
39297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
39307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetvoid
39317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetlt_opt_process_env_set (const char *arg)
39327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{
39337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  char *name = NULL;
39347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  char *value = NULL;
39357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
39367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  if (lt_split_name_value (arg, &name, &value) != 0)
39377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    {
39387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      XFREE (name);
39397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      XFREE (value);
39407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      lt_fatal ("bad argument for %s: '%s'", env_set_opt, arg);
39417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    }
39427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
39437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  lt_setenv (name, value);
39447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  XFREE (name);
39457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  XFREE (value);
39467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
39477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
39487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetvoid
39497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetlt_opt_process_env_prepend (const char *arg)
39507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{
39517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  char *name = NULL;
39527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  char *value = NULL;
39537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  char *new_value = NULL;
39547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
39557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  if (lt_split_name_value (arg, &name, &value) != 0)
39567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    {
39577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      XFREE (name);
39587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      XFREE (value);
39597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      lt_fatal ("bad argument for %s: '%s'", env_prepend_opt, arg);
39607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    }
39617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
39627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  new_value = lt_extend_str (getenv (name), value, 0);
39637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  lt_setenv (name, new_value);
39647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  XFREE (new_value);
39657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  XFREE (name);
39667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  XFREE (value);
39677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
39687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
39697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetvoid
39707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetlt_opt_process_env_append (const char *arg)
39717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{
39727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  char *name = NULL;
39737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  char *value = NULL;
39747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  char *new_value = NULL;
39757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
39767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  if (lt_split_name_value (arg, &name, &value) != 0)
39777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    {
39787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      XFREE (name);
39797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      XFREE (value);
39807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      lt_fatal ("bad argument for %s: '%s'", env_append_opt, arg);
39817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    }
39827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
39837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  new_value = lt_extend_str (getenv (name), value, 1);
39847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  lt_setenv (name, new_value);
39857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  XFREE (new_value);
39867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  XFREE (name);
39877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  XFREE (value);
39887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
39897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
39907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetvoid
39917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetlt_update_exe_path (const char *name, const char *value)
39927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{
39937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  LTWRAPPER_DEBUGPRINTF (("(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
39947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet                          (name ? name : "<NULL>"),
39957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet                          (value ? value : "<NULL>")));
39967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
39977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  if (name && *name && value && *value)
39987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    {
39997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      char *new_value = lt_extend_str (getenv (name), value, 0);
40007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      /* some systems can't cope with a ':'-terminated path #' */
40017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      int len = strlen (new_value);
40027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
40037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        {
40047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet          new_value[len-1] = '\0';
40057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        }
40067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      lt_setenv (name, new_value);
40077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      XFREE (new_value);
40087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    }
40097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
40107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
40117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetvoid
40127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetlt_update_lib_path (const char *name, const char *value)
40137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{
40147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  LTWRAPPER_DEBUGPRINTF (("(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
40157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet                          (name ? name : "<NULL>"),
40167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet                          (value ? value : "<NULL>")));
40177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
40187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  if (name && *name && value && *value)
40197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    {
40207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      char *new_value = lt_extend_str (getenv (name), value, 0);
40217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      lt_setenv (name, new_value);
40227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      XFREE (new_value);
40237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    }
40247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
40257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
40267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
40277c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetEOF
40287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
40297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# end: func_emit_cwrapperexe_src
40307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
40317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_mode_link arg...
40327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_mode_link ()
40337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{
40347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    $opt_debug
40357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    case $host in
40367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
40377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # It is impossible to link a dll without this setting, and
40387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # we shouldn't force the makefile maintainer to figure out
40397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # which system we are compiling for in order to pass an extra
40407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # flag for every libtool invocation.
40417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # allow_undefined=no
40427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
40437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # FIXME: Unfortunately, there are problems with the above when trying
40447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # to make a dll which has undefined symbols, in which case not
40457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # even a static library is built.  For now, we need to specify
40467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # -no-undefined on the libtool link line when we can be certain
40477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # that all symbols are satisfied, otherwise we get a static library.
40487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      allow_undefined=yes
40497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      ;;
40507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    *)
40517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      allow_undefined=yes
40527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      ;;
40537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    esac
40547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    libtool_args=$nonopt
40557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    base_compile="$nonopt $@"
40567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    compile_command=$nonopt
40577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    finalize_command=$nonopt
40587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
40597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    compile_rpath=
40607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    finalize_rpath=
40617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    compile_shlibpath=
40627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    finalize_shlibpath=
40637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    convenience=
40647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    old_convenience=
40657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    deplibs=
40667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    old_deplibs=
40677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    compiler_flags=
40687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    linker_flags=
40697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    dllsearchpath=
40707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    lib_search_path=`pwd`
40717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    inst_prefix_dir=
40727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    new_inherited_linker_flags=
40737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
40747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    avoid_version=no
40757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    dlfiles=
40767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    dlprefiles=
40777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    dlself=no
40787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    export_dynamic=no
40797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    export_symbols=
40807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    export_symbols_regex=
40817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    generated=
40827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    libobjs=
40837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    ltlibs=
40847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    module=no
40857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    no_install=no
40867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    objs=
40877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    non_pic_objects=
40887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    precious_files_regex=
40897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    prefer_static_libs=no
40907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    preload=no
40917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    prev=
40927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    prevarg=
40937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    release=
40947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    rpath=
40957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    xrpath=
40967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    perm_rpath=
40977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    temp_rpath=
40987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    thread_safe=no
40997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    vinfo=
41007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    vinfo_number=no
41017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    weak_libs=
41027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    single_module="${wl}-single_module"
41037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    func_infer_tag $base_compile
41047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
41057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    # We need to know -static, to get the right output filenames.
41067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    for arg
41077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    do
41087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      case $arg in
41097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      -shared)
41107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	test "$build_libtool_libs" != yes && \
41117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_fatal_configuration "can not build a shared library"
41127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	build_old_libs=no
41137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	break
41147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
41157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      -all-static | -static | -static-libtool-libs)
41167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	case $arg in
41177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	-all-static)
41187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
41197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    func_warning "complete static linking is impossible in this configuration"
41207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
41217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test -n "$link_static_flag"; then
41227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    dlopen_self=$dlopen_self_static
41237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
41247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  prefer_static_libs=yes
41257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
41267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	-static)
41277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
41287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    dlopen_self=$dlopen_self_static
41297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
41307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  prefer_static_libs=built
41317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
41327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	-static-libtool-libs)
41337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
41347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    dlopen_self=$dlopen_self_static
41357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
41367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  prefer_static_libs=yes
41377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
41387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	esac
41397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	build_libtool_libs=no
41407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	build_old_libs=yes
41417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	break
41427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
41437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      esac
41447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    done
41457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
41467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    # See if our shared archives depend on static archives.
41477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
41487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
41497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    # Go through the arguments, transforming them on the way.
41507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    while test "$#" -gt 0; do
41517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      arg="$1"
41527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      shift
41537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      func_quote_for_eval "$arg"
41547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      qarg=$func_quote_for_eval_unquoted_result
41557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      func_append libtool_args " $func_quote_for_eval_result"
41567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
41577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # If the previous option needs an argument, assign it.
41587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if test -n "$prev"; then
41597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	case $prev in
41607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	output)
41617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_append compile_command " @OUTPUT@"
41627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_append finalize_command " @OUTPUT@"
41637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
41647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	esac
41657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
41667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	case $prev in
41677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	dlfiles|dlprefiles)
41687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test "$preload" = no; then
41697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # Add the symbol object into the linking commands.
41707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    func_append compile_command " @SYMFILE@"
41717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    func_append finalize_command " @SYMFILE@"
41727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    preload=yes
41737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
41747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  case $arg in
41757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  *.la | *.lo) ;;  # We handle these cases below.
41767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  force)
41777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    if test "$dlself" = no; then
41787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      dlself=needless
41797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      export_dynamic=yes
41807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    fi
41817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    prev=
41827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    continue
41837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    ;;
41847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  self)
41857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    if test "$prev" = dlprefiles; then
41867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      dlself=yes
41877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
41887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      dlself=yes
41897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    else
41907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      dlself=needless
41917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      export_dynamic=yes
41927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    fi
41937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    prev=
41947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    continue
41957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    ;;
41967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  *)
41977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    if test "$prev" = dlfiles; then
41987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      dlfiles="$dlfiles $arg"
41997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    else
42007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      dlprefiles="$dlprefiles $arg"
42017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    fi
42027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    prev=
42037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    continue
42047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    ;;
42057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  esac
42067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
42077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	expsyms)
42087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  export_symbols="$arg"
42097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  test -f "$arg" \
42107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    || func_fatal_error "symbol file \`$arg' does not exist"
42117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  prev=
42127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  continue
42137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
42147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	expsyms_regex)
42157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  export_symbols_regex="$arg"
42167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  prev=
42177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  continue
42187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
42197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	framework)
42207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  case $host in
42217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    *-*-darwin*)
42227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      case "$deplibs " in
42237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		*" $qarg.ltframework "*) ;;
42247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		*) deplibs="$deplibs $qarg.ltframework" # this is fixed later
42257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		   ;;
42267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      esac
42277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      ;;
42287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  esac
42297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  prev=
42307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  continue
42317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
42327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	inst_prefix)
42337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  inst_prefix_dir="$arg"
42347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  prev=
42357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  continue
42367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
42377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	objectlist)
42387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test -f "$arg"; then
42397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    save_arg=$arg
42407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    moreargs=
42417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    for fil in `cat "$save_arg"`
42427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    do
42437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#	      moreargs="$moreargs $fil"
42447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      arg=$fil
42457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      # A libtool-controlled object.
42467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
42477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      # Check to see that this really is a libtool object.
42487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      if func_lalib_unsafe_p "$arg"; then
42497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		pic_object=
42507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		non_pic_object=
42517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
42527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		# Read the .lo file
42537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		func_source "$arg"
42547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
42557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		if test -z "$pic_object" ||
42567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		   test -z "$non_pic_object" ||
42577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		   test "$pic_object" = none &&
42587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		   test "$non_pic_object" = none; then
42597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  func_fatal_error "cannot find name of object for \`$arg'"
42607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		fi
42617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
42627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		# Extract subdirectory from the argument.
42637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		func_dirname "$arg" "/" ""
42647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		xdir="$func_dirname_result"
42657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
42667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		if test "$pic_object" != none; then
42677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  # Prepend the subdirectory the object is found in.
42687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  pic_object="$xdir$pic_object"
42697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
42707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  if test "$prev" = dlfiles; then
42717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
42727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		      dlfiles="$dlfiles $pic_object"
42737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		      prev=
42747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		      continue
42757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    else
42767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		      # If libtool objects are unsupported, then we need to preload.
42777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		      prev=dlprefiles
42787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    fi
42797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  fi
42807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
42817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  # CHECK ME:  I think I busted this.  -Ossama
42827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  if test "$prev" = dlprefiles; then
42837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    # Preload the old-style object.
42847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    dlprefiles="$dlprefiles $pic_object"
42857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    prev=
42867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  fi
42877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
42887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  # A PIC object.
42897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  func_append libobjs " $pic_object"
42907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  arg="$pic_object"
42917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		fi
42927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
42937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		# Non-PIC object.
42947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		if test "$non_pic_object" != none; then
42957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  # Prepend the subdirectory the object is found in.
42967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  non_pic_object="$xdir$non_pic_object"
42977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
42987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  # A standard non-PIC object
42997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  func_append non_pic_objects " $non_pic_object"
43007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  if test -z "$pic_object" || test "$pic_object" = none ; then
43017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    arg="$non_pic_object"
43027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  fi
43037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		else
43047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  # If the PIC object exists, use it instead.
43057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  # $xdir was prepended to $pic_object above.
43067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  non_pic_object="$pic_object"
43077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  func_append non_pic_objects " $non_pic_object"
43087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		fi
43097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      else
43107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		# Only an error if not doing a dry-run.
43117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		if $opt_dry_run; then
43127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  # Extract subdirectory from the argument.
43137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  func_dirname "$arg" "/" ""
43147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  xdir="$func_dirname_result"
43157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
43167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  func_lo2o "$arg"
43177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  pic_object=$xdir$objdir/$func_lo2o_result
43187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  non_pic_object=$xdir$func_lo2o_result
43197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  func_append libobjs " $pic_object"
43207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  func_append non_pic_objects " $non_pic_object"
43217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	        else
43227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  func_fatal_error "\`$arg' is not a valid libtool object"
43237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		fi
43247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      fi
43257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    done
43267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  else
43277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    func_fatal_error "link input file \`$arg' does not exist"
43287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
43297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  arg=$save_arg
43307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  prev=
43317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  continue
43327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
43337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	precious_regex)
43347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  precious_files_regex="$arg"
43357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  prev=
43367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  continue
43377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
43387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	release)
43397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  release="-$arg"
43407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  prev=
43417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  continue
43427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
43437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	rpath | xrpath)
43447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # We need an absolute path.
43457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  case $arg in
43467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  [\\/]* | [A-Za-z]:[\\/]*) ;;
43477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  *)
43487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    func_fatal_error "only absolute run-paths are allowed"
43497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    ;;
43507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  esac
43517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test "$prev" = rpath; then
43527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    case "$rpath " in
43537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    *" $arg "*) ;;
43547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    *) rpath="$rpath $arg" ;;
43557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    esac
43567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  else
43577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    case "$xrpath " in
43587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    *" $arg "*) ;;
43597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    *) xrpath="$xrpath $arg" ;;
43607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    esac
43617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
43627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  prev=
43637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  continue
43647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
43657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	shrext)
43667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  shrext_cmds="$arg"
43677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  prev=
43687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  continue
43697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
43707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	weak)
43717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  weak_libs="$weak_libs $arg"
43727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  prev=
43737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  continue
43747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
43757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	xcclinker)
43767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  linker_flags="$linker_flags $qarg"
43777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  compiler_flags="$compiler_flags $qarg"
43787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  prev=
43797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_append compile_command " $qarg"
43807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_append finalize_command " $qarg"
43817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  continue
43827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
43837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	xcompiler)
43847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  compiler_flags="$compiler_flags $qarg"
43857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  prev=
43867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_append compile_command " $qarg"
43877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_append finalize_command " $qarg"
43887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  continue
43897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
43907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	xlinker)
43917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  linker_flags="$linker_flags $qarg"
43927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  compiler_flags="$compiler_flags $wl$qarg"
43937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  prev=
43947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_append compile_command " $wl$qarg"
43957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_append finalize_command " $wl$qarg"
43967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  continue
43977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
43987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	*)
43997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  eval "$prev=\"\$arg\""
44007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  prev=
44017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  continue
44027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
44037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	esac
44047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      fi # test -n "$prev"
44057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
44067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      prevarg="$arg"
44077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
44087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      case $arg in
44097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      -all-static)
44107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test -n "$link_static_flag"; then
44117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # See comment for -static flag below, for more details.
44127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_append compile_command " $link_static_flag"
44137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_append finalize_command " $link_static_flag"
44147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
44157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	continue
44167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
44177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
44187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      -allow-undefined)
44197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# FIXME: remove this flag sometime in the future.
44207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_fatal_error "\`-allow-undefined' must not be used because it is the default"
44217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
44227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
44237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      -avoid-version)
44247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	avoid_version=yes
44257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	continue
44267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
44277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
44287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      -dlopen)
44297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	prev=dlfiles
44307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	continue
44317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
44327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
44337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      -dlpreopen)
44347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	prev=dlprefiles
44357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	continue
44367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
44377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
44387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      -export-dynamic)
44397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	export_dynamic=yes
44407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	continue
44417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
44427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
44437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      -export-symbols | -export-symbols-regex)
44447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
44457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_fatal_error "more than one -exported-symbols argument is not allowed"
44467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
44477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test "X$arg" = "X-export-symbols"; then
44487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  prev=expsyms
44497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	else
44507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  prev=expsyms_regex
44517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
44527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	continue
44537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
44547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
44557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      -framework)
44567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	prev=framework
44577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	continue
44587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
44597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
44607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      -inst-prefix-dir)
44617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	prev=inst_prefix
44627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	continue
44637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
44647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
44657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
44667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # so, if we see these flags be careful not to treat them like -L
44677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      -L[A-Z][A-Z]*:*)
44687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	case $with_gcc/$host in
44697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	no/*-*-irix* | /*-*-irix*)
44707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_append compile_command " $arg"
44717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_append finalize_command " $arg"
44727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
44737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	esac
44747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	continue
44757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
44767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
44777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      -L*)
44787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_stripname '-L' '' "$arg"
44797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	dir=$func_stripname_result
44807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test -z "$dir"; then
44817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test "$#" -gt 0; then
44827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    func_fatal_error "require no space between \`-L' and \`$1'"
44837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  else
44847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    func_fatal_error "need path for \`-L' option"
44857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
44867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
44877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# We need an absolute path.
44887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	case $dir in
44897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	[\\/]* | [A-Za-z]:[\\/]*) ;;
44907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	*)
44917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  absdir=`cd "$dir" && pwd`
44927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  test -z "$absdir" && \
44937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    func_fatal_error "cannot determine absolute directory name of \`$dir'"
44947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  dir="$absdir"
44957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
44967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	esac
44977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	case "$deplibs " in
44987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	*" -L$dir "*) ;;
44997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	*)
45007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  deplibs="$deplibs -L$dir"
45017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  lib_search_path="$lib_search_path $dir"
45027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
45037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	esac
45047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	case $host in
45057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
45067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'`
45077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  case :$dllsearchpath: in
45087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  *":$dir:"*) ;;
45097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ::) dllsearchpath=$dir;;
45107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  *) dllsearchpath="$dllsearchpath:$dir";;
45117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  esac
45127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  case :$dllsearchpath: in
45137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  *":$testbindir:"*) ;;
45147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ::) dllsearchpath=$testbindir;;
45157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  *) dllsearchpath="$dllsearchpath:$testbindir";;
45167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  esac
45177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
45187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	esac
45197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	continue
45207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
45217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
45227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      -l*)
45237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
45247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  case $host in
45257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc*)
45267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # These systems don't actually have a C or math library (as such)
45277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    continue
45287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    ;;
45297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  *-*-os2*)
45307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # These systems don't actually have a C library (as such)
45317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    test "X$arg" = "X-lc" && continue
45327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    ;;
45337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
45347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # Do not include libc due to us having libc/libc_r.
45357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    test "X$arg" = "X-lc" && continue
45367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    ;;
45377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  *-*-rhapsody* | *-*-darwin1.[012])
45387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # Rhapsody C and math libraries are in the System framework
45397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    deplibs="$deplibs System.ltframework"
45407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    continue
45417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    ;;
45427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  *-*-sco3.2v5* | *-*-sco5v6*)
45437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # Causes problems with __ctype
45447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    test "X$arg" = "X-lc" && continue
45457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    ;;
45467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
45477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # Compiler inserts libc in the correct place for threads to work
45487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    test "X$arg" = "X-lc" && continue
45497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    ;;
45507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  esac
45517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	elif test "X$arg" = "X-lc_r"; then
45527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	 case $host in
45537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
45547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	   # Do not include libc_r directly, use -pthread flag.
45557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	   continue
45567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	   ;;
45577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	 esac
45587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
45597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	deplibs="$deplibs $arg"
45607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	continue
45617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
45627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
45637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      -module)
45647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	module=yes
45657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	continue
45667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
45677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
45687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # Tru64 UNIX uses -model [arg] to determine the layout of C++
45697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # classes, name mangling, and exception handling.
45707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # Darwin uses the -arch flag to determine output architecture.
45717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      -model|-arch|-isysroot)
45727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	compiler_flags="$compiler_flags $arg"
45737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_append compile_command " $arg"
45747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_append finalize_command " $arg"
45757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	prev=xcompiler
45767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	continue
45777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
45787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
45797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
45807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	compiler_flags="$compiler_flags $arg"
45817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_append compile_command " $arg"
45827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_append finalize_command " $arg"
45837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	case "$new_inherited_linker_flags " in
45847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    *" $arg "*) ;;
45857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;;
45867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	esac
45877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	continue
45887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
45897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
45907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      -multi_module)
45917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	single_module="${wl}-multi_module"
45927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	continue
45937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
45947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
45957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      -no-fast-install)
45967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fast_install=no
45977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	continue
45987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
45997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
46007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      -no-install)
46017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	case $host in
46027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
46037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # The PATH hackery in wrapper scripts is required on Windows
46047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # and Darwin in order for the loader to find any dlls it needs.
46057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_warning "\`-no-install' is ignored for $host"
46067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_warning "assuming \`-no-fast-install' instead"
46077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fast_install=no
46087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
46097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	*) no_install=yes ;;
46107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	esac
46117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	continue
46127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
46137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
46147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      -no-undefined)
46157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	allow_undefined=no
46167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	continue
46177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
46187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
46197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      -objectlist)
46207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	prev=objectlist
46217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	continue
46227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
46237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
46247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      -o) prev=output ;;
46257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
46267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      -precious-files-regex)
46277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	prev=precious_regex
46287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	continue
46297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
46307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
46317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      -release)
46327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	prev=release
46337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	continue
46347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
46357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
46367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      -rpath)
46377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	prev=rpath
46387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	continue
46397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
46407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
46417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      -R)
46427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	prev=xrpath
46437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	continue
46447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
46457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
46467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      -R*)
46477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_stripname '-R' '' "$arg"
46487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	dir=$func_stripname_result
46497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# We need an absolute path.
46507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	case $dir in
46517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	[\\/]* | [A-Za-z]:[\\/]*) ;;
46527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	*)
46537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_fatal_error "only absolute run-paths are allowed"
46547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
46557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	esac
46567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	case "$xrpath " in
46577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	*" $dir "*) ;;
46587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	*) xrpath="$xrpath $dir" ;;
46597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	esac
46607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	continue
46617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
46627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
46637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      -shared)
46647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# The effects of -shared are defined in a previous loop.
46657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	continue
46667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
46677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
46687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      -shrext)
46697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	prev=shrext
46707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	continue
46717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
46727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
46737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      -static | -static-libtool-libs)
46747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# The effects of -static are defined in a previous loop.
46757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# We used to do the same as -all-static on platforms that
46767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# didn't have a PIC flag, but the assumption that the effects
46777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# would be equivalent was wrong.  It would break on at least
46787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Digital Unix and AIX.
46797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	continue
46807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
46817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
46827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      -thread-safe)
46837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	thread_safe=yes
46847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	continue
46857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
46867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
46877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      -version-info)
46887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	prev=vinfo
46897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	continue
46907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
46917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
46927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      -version-number)
46937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	prev=vinfo
46947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	vinfo_number=yes
46957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	continue
46967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
46977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
46987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      -weak)
46997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        prev=weak
47007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	continue
47017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
47027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
47037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      -Wc,*)
47047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_stripname '-Wc,' '' "$arg"
47057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	args=$func_stripname_result
47067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	arg=
47077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	save_ifs="$IFS"; IFS=','
47087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	for flag in $args; do
47097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  IFS="$save_ifs"
47107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet          func_quote_for_eval "$flag"
47117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  arg="$arg $wl$func_quote_for_eval_result"
47127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  compiler_flags="$compiler_flags $func_quote_for_eval_result"
47137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	done
47147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	IFS="$save_ifs"
47157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_stripname ' ' '' "$arg"
47167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	arg=$func_stripname_result
47177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
47187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
47197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      -Wl,*)
47207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_stripname '-Wl,' '' "$arg"
47217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	args=$func_stripname_result
47227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	arg=
47237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	save_ifs="$IFS"; IFS=','
47247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	for flag in $args; do
47257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  IFS="$save_ifs"
47267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet          func_quote_for_eval "$flag"
47277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  arg="$arg $wl$func_quote_for_eval_result"
47287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  compiler_flags="$compiler_flags $wl$func_quote_for_eval_result"
47297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  linker_flags="$linker_flags $func_quote_for_eval_result"
47307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	done
47317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	IFS="$save_ifs"
47327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_stripname ' ' '' "$arg"
47337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	arg=$func_stripname_result
47347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
47357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
47367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      -Xcompiler)
47377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	prev=xcompiler
47387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	continue
47397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
47407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
47417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      -Xlinker)
47427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	prev=xlinker
47437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	continue
47447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
47457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
47467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      -XCClinker)
47477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	prev=xcclinker
47487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	continue
47497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
47507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
47517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # -msg_* for osf cc
47527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      -msg_*)
47537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_quote_for_eval "$arg"
47547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	arg="$func_quote_for_eval_result"
47557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
47567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
47577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # -64, -mips[0-9] enable 64-bit mode on the SGI compiler
47587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # -r[0-9][0-9]* specifies the processor on the SGI compiler
47597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler
47607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # +DA*, +DD* enable 64-bit mode on the HP compiler
47617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # -q* pass through compiler args for the IBM compiler
47627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # -m*, -t[45]*, -txscale* pass through architecture-specific
47637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # compiler args for GCC
47647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # -F/path gives path to uninstalled frameworks, gcc on darwin
47657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC
47667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # @file GCC response files
47677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
47687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*)
47697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        func_quote_for_eval "$arg"
47707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	arg="$func_quote_for_eval_result"
47717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        func_append compile_command " $arg"
47727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        func_append finalize_command " $arg"
47737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        compiler_flags="$compiler_flags $arg"
47747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        continue
47757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        ;;
47767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
47777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # Some other compiler flag.
47787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      -* | +*)
47797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        func_quote_for_eval "$arg"
47807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	arg="$func_quote_for_eval_result"
47817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
47827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
47837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      *.$objext)
47847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# A standard object.
47857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	objs="$objs $arg"
47867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
47877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
47887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      *.lo)
47897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# A libtool-controlled object.
47907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
47917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Check to see that this really is a libtool object.
47927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if func_lalib_unsafe_p "$arg"; then
47937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  pic_object=
47947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  non_pic_object=
47957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
47967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # Read the .lo file
47977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_source "$arg"
47987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
47997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test -z "$pic_object" ||
48007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	     test -z "$non_pic_object" ||
48017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	     test "$pic_object" = none &&
48027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	     test "$non_pic_object" = none; then
48037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    func_fatal_error "cannot find name of object for \`$arg'"
48047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
48057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
48067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # Extract subdirectory from the argument.
48077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_dirname "$arg" "/" ""
48087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  xdir="$func_dirname_result"
48097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
48107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test "$pic_object" != none; then
48117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # Prepend the subdirectory the object is found in.
48127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    pic_object="$xdir$pic_object"
48137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
48147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    if test "$prev" = dlfiles; then
48157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
48167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		dlfiles="$dlfiles $pic_object"
48177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		prev=
48187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		continue
48197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      else
48207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		# If libtool objects are unsupported, then we need to preload.
48217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		prev=dlprefiles
48227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      fi
48237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    fi
48247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
48257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # CHECK ME:  I think I busted this.  -Ossama
48267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    if test "$prev" = dlprefiles; then
48277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      # Preload the old-style object.
48287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      dlprefiles="$dlprefiles $pic_object"
48297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      prev=
48307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    fi
48317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
48327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # A PIC object.
48337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    func_append libobjs " $pic_object"
48347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    arg="$pic_object"
48357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
48367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
48377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # Non-PIC object.
48387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test "$non_pic_object" != none; then
48397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # Prepend the subdirectory the object is found in.
48407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    non_pic_object="$xdir$non_pic_object"
48417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
48427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # A standard non-PIC object
48437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    func_append non_pic_objects " $non_pic_object"
48447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    if test -z "$pic_object" || test "$pic_object" = none ; then
48457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      arg="$non_pic_object"
48467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    fi
48477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  else
48487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # If the PIC object exists, use it instead.
48497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # $xdir was prepended to $pic_object above.
48507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    non_pic_object="$pic_object"
48517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    func_append non_pic_objects " $non_pic_object"
48527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
48537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	else
48547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # Only an error if not doing a dry-run.
48557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if $opt_dry_run; then
48567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # Extract subdirectory from the argument.
48577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    func_dirname "$arg" "/" ""
48587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    xdir="$func_dirname_result"
48597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
48607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    func_lo2o "$arg"
48617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    pic_object=$xdir$objdir/$func_lo2o_result
48627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    non_pic_object=$xdir$func_lo2o_result
48637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    func_append libobjs " $pic_object"
48647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    func_append non_pic_objects " $non_pic_object"
48657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  else
48667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    func_fatal_error "\`$arg' is not a valid libtool object"
48677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
48687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
48697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
48707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
48717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      *.$libext)
48727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# An archive.
48737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	deplibs="$deplibs $arg"
48747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	old_deplibs="$old_deplibs $arg"
48757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	continue
48767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
48777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
48787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      *.la)
48797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# A libtool-controlled library.
48807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
48817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test "$prev" = dlfiles; then
48827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # This library was specified with -dlopen.
48837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  dlfiles="$dlfiles $arg"
48847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  prev=
48857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	elif test "$prev" = dlprefiles; then
48867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # The library was specified with -dlpreopen.
48877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  dlprefiles="$dlprefiles $arg"
48887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  prev=
48897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	else
48907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  deplibs="$deplibs $arg"
48917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
48927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	continue
48937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
48947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
48957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # Some other compiler argument.
48967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      *)
48977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Unknown arguments in both finalize_command and compile_command need
48987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# to be aesthetically quoted because they are evaled later.
48997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_quote_for_eval "$arg"
49007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	arg="$func_quote_for_eval_result"
49017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
49027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      esac # arg
49037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
49047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # Now actually substitute the argument into the commands.
49057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if test -n "$arg"; then
49067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_append compile_command " $arg"
49077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_append finalize_command " $arg"
49087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      fi
49097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    done # argument parsing loop
49107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
49117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    test -n "$prev" && \
49127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      func_fatal_help "the \`$prevarg' option requires an argument"
49137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
49147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
49157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      eval arg=\"$export_dynamic_flag_spec\"
49167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      func_append compile_command " $arg"
49177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      func_append finalize_command " $arg"
49187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    fi
49197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
49207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    oldlibs=
49217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    # calculate the name of the file, without its directory
49227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    func_basename "$output"
49237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    outputname="$func_basename_result"
49247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    libobjs_save="$libobjs"
49257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
49267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    if test -n "$shlibpath_var"; then
49277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # get the directories listed in $shlibpath_var
49287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
49297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    else
49307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      shlib_search_path=
49317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    fi
49327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
49337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
49347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
49357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    func_dirname "$output" "/" ""
49367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    output_objdir="$func_dirname_result$objdir"
49377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    # Create the object directory.
49387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    func_mkdir_p "$output_objdir"
49397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
49407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    # Determine the type of output
49417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    case $output in
49427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    "")
49437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      func_fatal_help "you must specify an output file"
49447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      ;;
49457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    *.$libext) linkmode=oldlib ;;
49467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    *.lo | *.$objext) linkmode=obj ;;
49477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    *.la) linkmode=lib ;;
49487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    *) linkmode=prog ;; # Anything else should be a program.
49497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    esac
49507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
49517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    specialdeplibs=
49527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
49537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    libs=
49547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    # Find all interdependent deplibs by searching for libraries
49557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    # that are linked more than once (e.g. -la -lb -la)
49567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    for deplib in $deplibs; do
49577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if $opt_duplicate_deps ; then
49587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	case "$libs " in
49597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	*" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
49607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	esac
49617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      fi
49627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      libs="$libs $deplib"
49637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    done
49647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
49657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    if test "$linkmode" = lib; then
49667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      libs="$predeps $libs $compiler_lib_search_path $postdeps"
49677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
49687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # Compute libraries that are listed more than once in $predeps
49697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # $postdeps and mark them as special (i.e., whose duplicates are
49707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # not to be eliminated).
49717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      pre_post_deps=
49727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if $opt_duplicate_compiler_generated_deps; then
49737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	for pre_post_dep in $predeps $postdeps; do
49747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  case "$pre_post_deps " in
49757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
49767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  esac
49777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  pre_post_deps="$pre_post_deps $pre_post_dep"
49787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	done
49797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      fi
49807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      pre_post_deps=
49817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    fi
49827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
49837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    deplibs=
49847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    newdependency_libs=
49857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    newlib_search_path=
49867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    need_relink=no # whether we're linking any uninstalled libtool libraries
49877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    notinst_deplibs= # not-installed libtool libraries
49887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    notinst_path= # paths that contain not-installed libtool libraries
49897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
49907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    case $linkmode in
49917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    lib)
49927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	passes="conv dlpreopen link"
49937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	for file in $dlfiles $dlprefiles; do
49947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  case $file in
49957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  *.la) ;;
49967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  *)
49977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
49987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    ;;
49997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  esac
50007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	done
50017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
50027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    prog)
50037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	compile_deplibs=
50047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	finalize_deplibs=
50057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	alldeplibs=no
50067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	newdlfiles=
50077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	newdlprefiles=
50087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	passes="conv scan dlopen dlpreopen link"
50097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
50107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    *)  passes="conv"
50117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
50127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    esac
50137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
50147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    for pass in $passes; do
50157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # The preopen pass in lib mode reverses $deplibs; put it back here
50167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # so that -L comes before libs that need it for instance...
50177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if test "$linkmode,$pass" = "lib,link"; then
50187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	## FIXME: Find the place where the list is rebuilt in the wrong
50197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	##        order, and fix it there properly
50207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        tmp_deplibs=
50217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	for deplib in $deplibs; do
50227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  tmp_deplibs="$deplib $tmp_deplibs"
50237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	done
50247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	deplibs="$tmp_deplibs"
50257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      fi
50267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
50277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if test "$linkmode,$pass" = "lib,link" ||
50287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	 test "$linkmode,$pass" = "prog,scan"; then
50297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	libs="$deplibs"
50307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	deplibs=
50317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      fi
50327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if test "$linkmode" = prog; then
50337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	case $pass in
50347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	dlopen) libs="$dlfiles" ;;
50357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	dlpreopen) libs="$dlprefiles" ;;
50367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	link)
50377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  libs="$deplibs %DEPLIBS%"
50387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs"
50397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
50407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	esac
50417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      fi
50427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if test "$linkmode,$pass" = "lib,dlpreopen"; then
50437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Collect and forward deplibs of preopened libtool libs
50447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	for lib in $dlprefiles; do
50457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # Ignore non-libtool-libs
50467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  dependency_libs=
50477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  case $lib in
50487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  *.la)	func_source "$lib" ;;
50497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  esac
50507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
50517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # Collect preopened libtool deplibs, except any this library
50527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # has declared as weak libs
50537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  for deplib in $dependency_libs; do
50547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet            deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"`
50557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    case " $weak_libs " in
50567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    *" $deplib_base "*) ;;
50577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    *) deplibs="$deplibs $deplib" ;;
50587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    esac
50597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  done
50607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	done
50617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	libs="$dlprefiles"
50627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      fi
50637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if test "$pass" = dlopen; then
50647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Collect dlpreopened libraries
50657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	save_deplibs="$deplibs"
50667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	deplibs=
50677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      fi
50687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
50697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      for deplib in $libs; do
50707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	lib=
50717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	found=no
50727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	case $deplib in
50737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
50747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test "$linkmode,$pass" = "prog,link"; then
50757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    compile_deplibs="$deplib $compile_deplibs"
50767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    finalize_deplibs="$deplib $finalize_deplibs"
50777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  else
50787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    compiler_flags="$compiler_flags $deplib"
50797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    if test "$linkmode" = lib ; then
50807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		case "$new_inherited_linker_flags " in
50817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    *" $deplib "*) ;;
50827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
50837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		esac
50847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    fi
50857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
50867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  continue
50877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
50887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	-l*)
50897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test "$linkmode" != lib && test "$linkmode" != prog; then
50907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    func_warning "\`-l' is ignored for archives/objects"
50917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    continue
50927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
50937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_stripname '-l' '' "$deplib"
50947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  name=$func_stripname_result
50957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test "$linkmode" = lib; then
50967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
50977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  else
50987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
50997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
51007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  for searchdir in $searchdirs; do
51017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    for search_ext in .la $std_shrext .so .a; do
51027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      # Search the libtool library
51037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      lib="$searchdir/lib${name}${search_ext}"
51047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      if test -f "$lib"; then
51057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		if test "$search_ext" = ".la"; then
51067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  found=yes
51077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		else
51087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  found=no
51097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		fi
51107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		break 2
51117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      fi
51127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    done
51137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  done
51147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test "$found" != yes; then
51157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # deplib doesn't seem to be a libtool library
51167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    if test "$linkmode,$pass" = "prog,link"; then
51177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      compile_deplibs="$deplib $compile_deplibs"
51187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      finalize_deplibs="$deplib $finalize_deplibs"
51197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    else
51207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      deplibs="$deplib $deplibs"
51217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
51227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    fi
51237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    continue
51247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  else # deplib is a libtool library
51257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
51267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # We need to do some special things here, and not later.
51277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
51287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      case " $predeps $postdeps " in
51297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      *" $deplib "*)
51307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		if func_lalib_p "$lib"; then
51317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  library_names=
51327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  old_library=
51337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  func_source "$lib"
51347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  for l in $old_library $library_names; do
51357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    ll="$l"
51367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  done
51377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  if test "X$ll" = "X$old_library" ; then # only static version available
51387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    found=no
51397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    func_dirname "$lib" "" "."
51407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    ladir="$func_dirname_result"
51417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    lib=$ladir/$old_library
51427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    if test "$linkmode,$pass" = "prog,link"; then
51437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		      compile_deplibs="$deplib $compile_deplibs"
51447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		      finalize_deplibs="$deplib $finalize_deplibs"
51457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    else
51467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		      deplibs="$deplib $deplibs"
51477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
51487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    fi
51497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    continue
51507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  fi
51517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		fi
51527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		;;
51537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      *) ;;
51547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      esac
51557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    fi
51567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
51577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;; # -l
51587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	*.ltframework)
51597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test "$linkmode,$pass" = "prog,link"; then
51607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    compile_deplibs="$deplib $compile_deplibs"
51617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    finalize_deplibs="$deplib $finalize_deplibs"
51627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  else
51637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    deplibs="$deplib $deplibs"
51647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    if test "$linkmode" = lib ; then
51657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		case "$new_inherited_linker_flags " in
51667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    *" $deplib "*) ;;
51677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
51687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		esac
51697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    fi
51707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
51717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  continue
51727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
51737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	-L*)
51747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  case $linkmode in
51757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  lib)
51767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    deplibs="$deplib $deplibs"
51777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    test "$pass" = conv && continue
51787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    newdependency_libs="$deplib $newdependency_libs"
51797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    func_stripname '-L' '' "$deplib"
51807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    newlib_search_path="$newlib_search_path $func_stripname_result"
51817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    ;;
51827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  prog)
51837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    if test "$pass" = conv; then
51847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      deplibs="$deplib $deplibs"
51857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      continue
51867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    fi
51877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    if test "$pass" = scan; then
51887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      deplibs="$deplib $deplibs"
51897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    else
51907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      compile_deplibs="$deplib $compile_deplibs"
51917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      finalize_deplibs="$deplib $finalize_deplibs"
51927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    fi
51937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    func_stripname '-L' '' "$deplib"
51947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    newlib_search_path="$newlib_search_path $func_stripname_result"
51957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    ;;
51967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  *)
51977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    func_warning "\`-L' is ignored for archives/objects"
51987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    ;;
51997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  esac # linkmode
52007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  continue
52017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;; # -L
52027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	-R*)
52037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test "$pass" = link; then
52047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    func_stripname '-R' '' "$deplib"
52057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    dir=$func_stripname_result
52067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # Make sure the xrpath contains only unique directories.
52077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    case "$xrpath " in
52087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    *" $dir "*) ;;
52097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    *) xrpath="$xrpath $dir" ;;
52107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    esac
52117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
52127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  deplibs="$deplib $deplibs"
52137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  continue
52147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
52157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	*.la) lib="$deplib" ;;
52167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	*.$libext)
52177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test "$pass" = conv; then
52187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    deplibs="$deplib $deplibs"
52197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    continue
52207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
52217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  case $linkmode in
52227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  lib)
52237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # Linking convenience modules into shared libraries is allowed,
52247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # but linking other static libraries is non-portable.
52257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    case " $dlpreconveniencelibs " in
52267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    *" $deplib "*) ;;
52277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    *)
52287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      valid_a_lib=no
52297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      case $deplibs_check_method in
52307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		match_pattern*)
52317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  set dummy $deplibs_check_method; shift
52327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
52337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \
52347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    | $EGREP "$match_pattern_regex" > /dev/null; then
52357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    valid_a_lib=yes
52367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  fi
52377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		;;
52387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		pass_all)
52397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  valid_a_lib=yes
52407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		;;
52417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      esac
52427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      if test "$valid_a_lib" != yes; then
52437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		$ECHO
52447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		$ECHO "*** Warning: Trying to link with static lib archive $deplib."
52457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		$ECHO "*** I have the capability to make that library automatically link in when"
52467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		$ECHO "*** you link to this library.  But I can only do this if you have a"
52477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		$ECHO "*** shared version of the library, which you do not appear to have"
52487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		$ECHO "*** because the file extensions .$libext of this argument makes me believe"
52497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		$ECHO "*** that it is just a static archive that I should not use here."
52507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      else
52517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		$ECHO
52527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		$ECHO "*** Warning: Linking the shared library $output against the"
52537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		$ECHO "*** static library $deplib is not portable!"
52547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		deplibs="$deplib $deplibs"
52557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      fi
52567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      ;;
52577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    esac
52587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    continue
52597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    ;;
52607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  prog)
52617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    if test "$pass" != link; then
52627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      deplibs="$deplib $deplibs"
52637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    else
52647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      compile_deplibs="$deplib $compile_deplibs"
52657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      finalize_deplibs="$deplib $finalize_deplibs"
52667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    fi
52677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    continue
52687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    ;;
52697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  esac # linkmode
52707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;; # *.$libext
52717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	*.lo | *.$objext)
52727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test "$pass" = conv; then
52737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    deplibs="$deplib $deplibs"
52747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  elif test "$linkmode" = prog; then
52757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
52767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      # If there is no dlopen support or we're linking statically,
52777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      # we need to preload.
52787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      newdlprefiles="$newdlprefiles $deplib"
52797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      compile_deplibs="$deplib $compile_deplibs"
52807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      finalize_deplibs="$deplib $finalize_deplibs"
52817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    else
52827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      newdlfiles="$newdlfiles $deplib"
52837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    fi
52847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
52857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  continue
52867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
52877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	%DEPLIBS%)
52887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  alldeplibs=yes
52897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  continue
52907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
52917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	esac # case $deplib
52927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
52937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test "$found" = yes || test -f "$lib"; then :
52947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	else
52957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
52967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
52977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
52987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Check to see that this really is a libtool archive.
52997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_lalib_unsafe_p "$lib" \
53007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  || func_fatal_error "\`$lib' is not a valid libtool archive"
53017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
53027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_dirname "$lib" "" "."
53037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	ladir="$func_dirname_result"
53047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
53057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	dlname=
53067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	dlopen=
53077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	dlpreopen=
53087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	libdir=
53097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	library_names=
53107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	old_library=
53117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	inherited_linker_flags=
53127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# If the library was installed with an old release of libtool,
53137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# it will not redefine variables installed, or shouldnotlink
53147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	installed=yes
53157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	shouldnotlink=no
53167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	avoidtemprpath=
53177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
53187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
53197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Read the .la file
53207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_source "$lib"
53217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
53227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Convert "-framework foo" to "foo.ltframework"
53237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test -n "$inherited_linker_flags"; then
53247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'`
53257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
53267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    case " $new_inherited_linker_flags " in
53277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      *" $tmp_inherited_linker_flag "*) ;;
53287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";;
53297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    esac
53307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  done
53317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
53327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
53337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test "$linkmode,$pass" = "lib,link" ||
53347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	   test "$linkmode,$pass" = "prog,scan" ||
53357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	   { test "$linkmode" != prog && test "$linkmode" != lib; }; then
53367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
53377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
53387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
53397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
53407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test "$pass" = conv; then
53417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # Only check for convenience libraries
53427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  deplibs="$lib $deplibs"
53437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test -z "$libdir"; then
53447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    if test -z "$old_library"; then
53457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      func_fatal_error "cannot find name of link library for \`$lib'"
53467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    fi
53477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # It is a libtool convenience library, so add in its objects.
53487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    convenience="$convenience $ladir/$objdir/$old_library"
53497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    old_convenience="$old_convenience $ladir/$objdir/$old_library"
53507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    tmp_libs=
53517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    for deplib in $dependency_libs; do
53527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      deplibs="$deplib $deplibs"
53537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      if $opt_duplicate_deps ; then
53547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		case "$tmp_libs " in
53557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		*" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
53567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		esac
53577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      fi
53587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      tmp_libs="$tmp_libs $deplib"
53597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    done
53607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  elif test "$linkmode" != prog && test "$linkmode" != lib; then
53617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    func_fatal_error "\`$lib' is not a convenience library"
53627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
53637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  continue
53647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi # $pass = conv
53657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
53667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
53677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Get the name of the library we link against.
53687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	linklib=
53697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	for l in $old_library $library_names; do
53707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  linklib="$l"
53717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	done
53727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test -z "$linklib"; then
53737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_fatal_error "cannot find name of link library for \`$lib'"
53747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
53757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
53767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# This library was specified with -dlopen.
53777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test "$pass" = dlopen; then
53787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test -z "$libdir"; then
53797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
53807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
53817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test -z "$dlname" ||
53827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	     test "$dlopen_support" != yes ||
53837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	     test "$build_libtool_libs" = no; then
53847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # If there is no dlname, no dlopen support or we're linking
53857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # statically, we need to preload.  We also need to preload any
53867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # dependent libraries so libltdl's deplib preloader doesn't
53877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # bomb out in the load deplibs phase.
53887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    dlprefiles="$dlprefiles $lib $dependency_libs"
53897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  else
53907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    newdlfiles="$newdlfiles $lib"
53917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
53927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  continue
53937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi # $pass = dlopen
53947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
53957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# We need an absolute path.
53967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	case $ladir in
53977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
53987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	*)
53997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  abs_ladir=`cd "$ladir" && pwd`
54007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test -z "$abs_ladir"; then
54017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    func_warning "cannot determine absolute directory name of \`$ladir'"
54027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    func_warning "passing it literally to the linker, although it might fail"
54037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    abs_ladir="$ladir"
54047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
54057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
54067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	esac
54077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_basename "$lib"
54087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	laname="$func_basename_result"
54097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
54107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Find the relevant object directory and library name.
54117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test "X$installed" = Xyes; then
54127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
54137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    func_warning "library \`$lib' was moved."
54147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    dir="$ladir"
54157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    absdir="$abs_ladir"
54167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    libdir="$abs_ladir"
54177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  else
54187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    dir="$libdir"
54197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    absdir="$libdir"
54207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
54217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
54227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	else
54237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
54247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    dir="$ladir"
54257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    absdir="$abs_ladir"
54267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # Remove this search path later
54277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    notinst_path="$notinst_path $abs_ladir"
54287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  else
54297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    dir="$ladir/$objdir"
54307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    absdir="$abs_ladir/$objdir"
54317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # Remove this search path later
54327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    notinst_path="$notinst_path $abs_ladir"
54337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
54347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi # $installed = yes
54357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_stripname 'lib' '.la' "$laname"
54367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	name=$func_stripname_result
54377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
54387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# This library was specified with -dlpreopen.
54397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test "$pass" = dlpreopen; then
54407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test -z "$libdir" && test "$linkmode" = prog; then
54417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
54427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
54437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # Prefer using a static library (so that no silly _DYNAMIC symbols
54447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # are required to link).
54457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test -n "$old_library"; then
54467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    newdlprefiles="$newdlprefiles $dir/$old_library"
54477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # Keep a list of preopened convenience libraries to check
54487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # that they are being used correctly in the link pass.
54497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    test -z "$libdir" && \
54507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library"
54517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # Otherwise, use the dlname, so that lt_dlopen finds it.
54527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  elif test -n "$dlname"; then
54537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    newdlprefiles="$newdlprefiles $dir/$dlname"
54547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  else
54557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    newdlprefiles="$newdlprefiles $dir/$linklib"
54567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
54577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi # $pass = dlpreopen
54587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
54597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test -z "$libdir"; then
54607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # Link the convenience library
54617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test "$linkmode" = lib; then
54627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    deplibs="$dir/$old_library $deplibs"
54637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  elif test "$linkmode,$pass" = "prog,link"; then
54647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    compile_deplibs="$dir/$old_library $compile_deplibs"
54657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    finalize_deplibs="$dir/$old_library $finalize_deplibs"
54667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  else
54677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    deplibs="$lib $deplibs" # used for prog,scan pass
54687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
54697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  continue
54707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
54717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
54727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
54737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test "$linkmode" = prog && test "$pass" != link; then
54747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  newlib_search_path="$newlib_search_path $ladir"
54757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  deplibs="$lib $deplibs"
54767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
54777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  linkalldeplibs=no
54787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test "$link_all_deplibs" != no || test -z "$library_names" ||
54797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	     test "$build_libtool_libs" = no; then
54807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    linkalldeplibs=yes
54817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
54827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
54837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  tmp_libs=
54847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  for deplib in $dependency_libs; do
54857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    case $deplib in
54867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    -L*) func_stripname '-L' '' "$deplib"
54877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	         newlib_search_path="$newlib_search_path $func_stripname_result"
54887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		 ;;
54897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    esac
54907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # Need to link against all dependency_libs?
54917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    if test "$linkalldeplibs" = yes; then
54927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      deplibs="$deplib $deplibs"
54937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    else
54947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      # Need to hardcode shared library paths
54957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      # or/and link against static libraries
54967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      newdependency_libs="$deplib $newdependency_libs"
54977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    fi
54987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    if $opt_duplicate_deps ; then
54997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      case "$tmp_libs " in
55007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
55017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      esac
55027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    fi
55037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    tmp_libs="$tmp_libs $deplib"
55047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  done # for deplib
55057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  continue
55067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi # $linkmode = prog...
55077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
55087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test "$linkmode,$pass" = "prog,link"; then
55097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test -n "$library_names" &&
55107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	     { { test "$prefer_static_libs" = no ||
55117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	         test "$prefer_static_libs,$installed" = "built,yes"; } ||
55127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	       test -z "$old_library"; }; then
55137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # We need to hardcode the library path
55147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
55157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      # Make sure the rpath contains only unique directories.
55167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      case "$temp_rpath:" in
55177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      *"$absdir:"*) ;;
55187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      *) temp_rpath="$temp_rpath$absdir:" ;;
55197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      esac
55207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    fi
55217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
55227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # Hardcode the library path.
55237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # Skip directories that are in the system default run-time
55247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # search path.
55257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    case " $sys_lib_dlsearch_path " in
55267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    *" $absdir "*) ;;
55277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    *)
55287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      case "$compile_rpath " in
55297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      *" $absdir "*) ;;
55307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      *) compile_rpath="$compile_rpath $absdir"
55317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      esac
55327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      ;;
55337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    esac
55347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    case " $sys_lib_dlsearch_path " in
55357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    *" $libdir "*) ;;
55367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    *)
55377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      case "$finalize_rpath " in
55387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      *" $libdir "*) ;;
55397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      *) finalize_rpath="$finalize_rpath $libdir"
55407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      esac
55417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      ;;
55427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    esac
55437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi # $linkmode,$pass = prog,link...
55447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
55457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test "$alldeplibs" = yes &&
55467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	     { test "$deplibs_check_method" = pass_all ||
55477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	       { test "$build_libtool_libs" = yes &&
55487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		 test -n "$library_names"; }; }; then
55497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # We only need to search for static libraries
55507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    continue
55517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
55527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
55537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
55547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	link_static=no # Whether the deplib will be linked statically
55557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	use_static_libs=$prefer_static_libs
55567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test "$use_static_libs" = built && test "$installed" = yes; then
55577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  use_static_libs=no
55587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
55597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test -n "$library_names" &&
55607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	   { test "$use_static_libs" = no || test -z "$old_library"; }; then
55617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  case $host in
55627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  *cygwin* | *mingw* | *cegcc*)
55637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      # No point in relinking DLLs because paths are not encoded
55647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      notinst_deplibs="$notinst_deplibs $lib"
55657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      need_relink=no
55667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    ;;
55677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  *)
55687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    if test "$installed" = no; then
55697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      notinst_deplibs="$notinst_deplibs $lib"
55707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      need_relink=yes
55717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    fi
55727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    ;;
55737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  esac
55747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # This is a shared library
55757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
55767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # Warn about portability, can't link against -module's on some
55777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # systems (darwin).  Don't bleat about dlopened modules though!
55787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  dlopenmodule=""
55797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  for dlpremoduletest in $dlprefiles; do
55807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    if test "X$dlpremoduletest" = "X$lib"; then
55817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      dlopenmodule="$dlpremoduletest"
55827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      break
55837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    fi
55847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  done
55857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
55867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    $ECHO
55877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    if test "$linkmode" = prog; then
55887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      $ECHO "*** Warning: Linking the executable $output against the loadable module"
55897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    else
55907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      $ECHO "*** Warning: Linking the shared library $output against the loadable module"
55917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    fi
55927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    $ECHO "*** $linklib is not portable!"
55937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
55947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test "$linkmode" = lib &&
55957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	     test "$hardcode_into_libs" = yes; then
55967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # Hardcode the library path.
55977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # Skip directories that are in the system default run-time
55987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # search path.
55997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    case " $sys_lib_dlsearch_path " in
56007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    *" $absdir "*) ;;
56017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    *)
56027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      case "$compile_rpath " in
56037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      *" $absdir "*) ;;
56047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      *) compile_rpath="$compile_rpath $absdir"
56057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      esac
56067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      ;;
56077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    esac
56087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    case " $sys_lib_dlsearch_path " in
56097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    *" $libdir "*) ;;
56107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    *)
56117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      case "$finalize_rpath " in
56127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      *" $libdir "*) ;;
56137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      *) finalize_rpath="$finalize_rpath $libdir"
56147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      esac
56157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      ;;
56167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    esac
56177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
56187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
56197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test -n "$old_archive_from_expsyms_cmds"; then
56207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # figure out the soname
56217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    set dummy $library_names
56227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    shift
56237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    realname="$1"
56247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    shift
56257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    libname=`eval "\\$ECHO \"$libname_spec\""`
56267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # use dlname if we got it. it's perfectly good, no?
56277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    if test -n "$dlname"; then
56287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      soname="$dlname"
56297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    elif test -n "$soname_spec"; then
56307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      # bleh windows
56317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      case $host in
56327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      *cygwin* | mingw* | *cegcc*)
56337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	        func_arith $current - $age
56347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		major=$func_arith_result
56357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		versuffix="-$major"
56367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		;;
56377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      esac
56387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      eval soname=\"$soname_spec\"
56397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    else
56407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      soname="$realname"
56417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    fi
56427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
56437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # Make a new name for the extract_expsyms_cmds to use
56447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    soroot="$soname"
56457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    func_basename "$soroot"
56467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    soname="$func_basename_result"
56477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    func_stripname 'lib' '.dll' "$soname"
56487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    newlib=libimp-$func_stripname_result.a
56497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
56507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # If the library has no export list, then create one now
56517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    if test -f "$output_objdir/$soname-def"; then :
56527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    else
56537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      func_verbose "extracting exported symbol list from \`$soname'"
56547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
56557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    fi
56567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
56577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # Create $newlib
56587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    if test -f "$output_objdir/$newlib"; then :; else
56597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      func_verbose "generating import library for \`$soname'"
56607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
56617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    fi
56627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # make sure the library variables are pointing to the new library
56637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    dir=$output_objdir
56647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    linklib=$newlib
56657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi # test -n "$old_archive_from_expsyms_cmds"
56667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
56677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test "$linkmode" = prog || test "$mode" != relink; then
56687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    add_shlibpath=
56697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    add_dir=
56707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    add=
56717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    lib_linked=yes
56727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    case $hardcode_action in
56737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    immediate | unsupported)
56747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      if test "$hardcode_direct" = no; then
56757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		add="$dir/$linklib"
56767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		case $host in
56777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
56787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  *-*-sysv4*uw2*) add_dir="-L$dir" ;;
56797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
56807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    *-*-unixware7*) add_dir="-L$dir" ;;
56817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  *-*-darwin* )
56827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    # if the lib is a (non-dlopened) module then we can not
56837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    # link against it, someone is ignoring the earlier warnings
56847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    if /usr/bin/file -L $add 2> /dev/null |
56857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet			 $GREP ": [^:]* bundle" >/dev/null ; then
56867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		      if test "X$dlopenmodule" != "X$lib"; then
56877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet			$ECHO "*** Warning: lib $linklib is a module, not a shared library"
56887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet			if test -z "$old_library" ; then
56897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet			  $ECHO
56907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet			  $ECHO "*** And there doesn't seem to be a static archive available"
56917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet			  $ECHO "*** The link will probably fail, sorry"
56927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet			else
56937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet			  add="$dir/$old_library"
56947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet			fi
56957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		      elif test -n "$old_library"; then
56967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet			add="$dir/$old_library"
56977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		      fi
56987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    fi
56997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		esac
57007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      elif test "$hardcode_minus_L" = no; then
57017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		case $host in
57027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		*-*-sunos*) add_shlibpath="$dir" ;;
57037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		esac
57047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		add_dir="-L$dir"
57057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		add="-l$name"
57067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      elif test "$hardcode_shlibpath_var" = no; then
57077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		add_shlibpath="$dir"
57087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		add="-l$name"
57097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      else
57107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		lib_linked=no
57117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      fi
57127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      ;;
57137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    relink)
57147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      if test "$hardcode_direct" = yes &&
57157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	         test "$hardcode_direct_absolute" = no; then
57167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		add="$dir/$linklib"
57177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      elif test "$hardcode_minus_L" = yes; then
57187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		add_dir="-L$dir"
57197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		# Try looking first in the location we're being installed to.
57207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		if test -n "$inst_prefix_dir"; then
57217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  case $libdir in
57227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    [\\/]*)
57237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		      add_dir="$add_dir -L$inst_prefix_dir$libdir"
57247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		      ;;
57257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  esac
57267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		fi
57277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		add="-l$name"
57287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      elif test "$hardcode_shlibpath_var" = yes; then
57297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		add_shlibpath="$dir"
57307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		add="-l$name"
57317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      else
57327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		lib_linked=no
57337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      fi
57347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      ;;
57357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    *) lib_linked=no ;;
57367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    esac
57377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
57387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    if test "$lib_linked" != yes; then
57397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      func_fatal_configuration "unsupported hardcode properties"
57407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    fi
57417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
57427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    if test -n "$add_shlibpath"; then
57437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      case :$compile_shlibpath: in
57447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      *":$add_shlibpath:"*) ;;
57457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
57467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      esac
57477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    fi
57487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    if test "$linkmode" = prog; then
57497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
57507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
57517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    else
57527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
57537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      test -n "$add" && deplibs="$add $deplibs"
57547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      if test "$hardcode_direct" != yes &&
57557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		 test "$hardcode_minus_L" != yes &&
57567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		 test "$hardcode_shlibpath_var" = yes; then
57577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		case :$finalize_shlibpath: in
57587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		*":$libdir:"*) ;;
57597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		*) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
57607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		esac
57617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      fi
57627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    fi
57637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
57647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
57657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test "$linkmode" = prog || test "$mode" = relink; then
57667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    add_shlibpath=
57677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    add_dir=
57687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    add=
57697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # Finalize command for both is simple: just hardcode it.
57707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    if test "$hardcode_direct" = yes &&
57717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	       test "$hardcode_direct_absolute" = no; then
57727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      add="$libdir/$linklib"
57737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    elif test "$hardcode_minus_L" = yes; then
57747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      add_dir="-L$libdir"
57757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      add="-l$name"
57767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    elif test "$hardcode_shlibpath_var" = yes; then
57777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      case :$finalize_shlibpath: in
57787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      *":$libdir:"*) ;;
57797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
57807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      esac
57817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      add="-l$name"
57827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    elif test "$hardcode_automatic" = yes; then
57837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      if test -n "$inst_prefix_dir" &&
57847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		 test -f "$inst_prefix_dir$libdir/$linklib" ; then
57857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		add="$inst_prefix_dir$libdir/$linklib"
57867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      else
57877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		add="$libdir/$linklib"
57887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      fi
57897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    else
57907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      # We cannot seem to hardcode it, guess we'll fake it.
57917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      add_dir="-L$libdir"
57927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      # Try looking first in the location we're being installed to.
57937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      if test -n "$inst_prefix_dir"; then
57947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		case $libdir in
57957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  [\\/]*)
57967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    add_dir="$add_dir -L$inst_prefix_dir$libdir"
57977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    ;;
57987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		esac
57997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      fi
58007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      add="-l$name"
58017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    fi
58027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
58037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    if test "$linkmode" = prog; then
58047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
58057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
58067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    else
58077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
58087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      test -n "$add" && deplibs="$add $deplibs"
58097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    fi
58107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
58117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	elif test "$linkmode" = prog; then
58127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # Here we assume that one of hardcode_direct or hardcode_minus_L
58137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # is not unsupported.  This is valid on all known static and
58147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # shared platforms.
58157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test "$hardcode_direct" != unsupported; then
58167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    test -n "$old_library" && linklib="$old_library"
58177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    compile_deplibs="$dir/$linklib $compile_deplibs"
58187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    finalize_deplibs="$dir/$linklib $finalize_deplibs"
58197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  else
58207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    compile_deplibs="-l$name -L$dir $compile_deplibs"
58217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
58227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
58237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	elif test "$build_libtool_libs" = yes; then
58247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # Not a shared library
58257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test "$deplibs_check_method" != pass_all; then
58267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # We're trying link a shared library against a static one
58277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # but the system doesn't support it.
58287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
58297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # Just print a warning and add the library to dependency_libs so
58307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # that the program can be linked against the static library.
58317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    $ECHO
58327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    $ECHO "*** Warning: This system can not link to static lib archive $lib."
58337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    $ECHO "*** I have the capability to make that library automatically link in when"
58347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    $ECHO "*** you link to this library.  But I can only do this if you have a"
58357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    $ECHO "*** shared version of the library, which you do not appear to have."
58367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    if test "$module" = yes; then
58377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      $ECHO "*** But as you try to build a module library, libtool will still create "
58387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      $ECHO "*** a static module, that should work as long as the dlopening application"
58397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime."
58407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      if test -z "$global_symbol_pipe"; then
58417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		$ECHO
58427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		$ECHO "*** However, this would only work if libtool was able to extract symbol"
58437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		$ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
58447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		$ECHO "*** not find such a program.  So, this module is probably useless."
58457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		$ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
58467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      fi
58477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      if test "$build_old_libs" = no; then
58487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		build_libtool_libs=module
58497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		build_old_libs=yes
58507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      else
58517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		build_libtool_libs=no
58527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      fi
58537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    fi
58547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  else
58557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    deplibs="$dir/$old_library $deplibs"
58567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    link_static=yes
58577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
58587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi # link shared/static library?
58597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
58607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test "$linkmode" = lib; then
58617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test -n "$dependency_libs" &&
58627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	     { test "$hardcode_into_libs" != yes ||
58637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	       test "$build_old_libs" = yes ||
58647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	       test "$link_static" = yes; }; then
58657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # Extract -R from dependency_libs
58667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    temp_deplibs=
58677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    for libdir in $dependency_libs; do
58687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      case $libdir in
58697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      -R*) func_stripname '-R' '' "$libdir"
58707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	           temp_xrpath=$func_stripname_result
58717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		   case " $xrpath " in
58727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		   *" $temp_xrpath "*) ;;
58737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		   *) xrpath="$xrpath $temp_xrpath";;
58747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		   esac;;
58757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      *) temp_deplibs="$temp_deplibs $libdir";;
58767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      esac
58777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    done
58787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    dependency_libs="$temp_deplibs"
58797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
58807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
58817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  newlib_search_path="$newlib_search_path $absdir"
58827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # Link against this library
58837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
58847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # ... and its dependency_libs
58857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  tmp_libs=
58867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  for deplib in $dependency_libs; do
58877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    newdependency_libs="$deplib $newdependency_libs"
58887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    if $opt_duplicate_deps ; then
58897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      case "$tmp_libs " in
58907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
58917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      esac
58927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    fi
58937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    tmp_libs="$tmp_libs $deplib"
58947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  done
58957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
58967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test "$link_all_deplibs" != no; then
58977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # Add the search paths of all dependency libraries
58987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    for deplib in $dependency_libs; do
58997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      path=
59007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      case $deplib in
59017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      -L*) path="$deplib" ;;
59027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      *.la)
59037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	        func_dirname "$deplib" "" "."
59047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		dir="$func_dirname_result"
59057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		# We need an absolute path.
59067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		case $dir in
59077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
59087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		*)
59097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  absdir=`cd "$dir" && pwd`
59107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  if test -z "$absdir"; then
59117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    func_warning "cannot determine absolute directory name of \`$dir'"
59127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    absdir="$dir"
59137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  fi
59147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  ;;
59157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		esac
59167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		if $GREP "^installed=no" $deplib > /dev/null; then
59177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		case $host in
59187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		*-*-darwin*)
59197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  depdepl=
59207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
59217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  if test -n "$deplibrary_names" ; then
59227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    for tmp in $deplibrary_names ; do
59237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		      depdepl=$tmp
59247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    done
59257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    if test -f "$absdir/$objdir/$depdepl" ; then
59267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		      depdepl="$absdir/$objdir/$depdepl"
59277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		      darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
59287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet                      if test -z "$darwin_install_name"; then
59297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet                          darwin_install_name=`${OTOOL64} -L $depdepl  | awk '{if (NR == 2) {print $1;exit}}'`
59307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet                      fi
59317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		      compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
59327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		      linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}"
59337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		      path=
59347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    fi
59357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  fi
59367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  ;;
59377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		*)
59387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  path="-L$absdir/$objdir"
59397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  ;;
59407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		esac
59417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		else
59427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
59437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  test -z "$libdir" && \
59447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    func_fatal_error "\`$deplib' is not a valid libtool archive"
59457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  test "$absdir" != "$libdir" && \
59467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    func_warning "\`$deplib' seems to be moved"
59477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
59487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  path="-L$absdir"
59497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		fi
59507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		;;
59517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      esac
59527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      case " $deplibs " in
59537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      *" $path "*) ;;
59547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      *) deplibs="$path $deplibs" ;;
59557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      esac
59567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    done
59577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi # link_all_deplibs != no
59587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi # linkmode = lib
59597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      done # for deplib in $libs
59607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if test "$pass" = link; then
59617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test "$linkmode" = "prog"; then
59627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
59637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
59647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	else
59657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  compiler_flags="$compiler_flags "`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
59667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
59677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      fi
59687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      dependency_libs="$newdependency_libs"
59697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if test "$pass" = dlpreopen; then
59707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Link the dlpreopened libraries before other libraries
59717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	for deplib in $save_deplibs; do
59727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  deplibs="$deplib $deplibs"
59737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	done
59747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      fi
59757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if test "$pass" != dlopen; then
59767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test "$pass" != conv; then
59777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # Make sure lib_search_path contains only unique directories.
59787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  lib_search_path=
59797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  for dir in $newlib_search_path; do
59807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    case "$lib_search_path " in
59817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    *" $dir "*) ;;
59827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    *) lib_search_path="$lib_search_path $dir" ;;
59837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    esac
59847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  done
59857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  newlib_search_path=
59867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
59877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
59887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test "$linkmode,$pass" != "prog,link"; then
59897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  vars="deplibs"
59907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	else
59917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  vars="compile_deplibs finalize_deplibs"
59927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
59937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	for var in $vars dependency_libs; do
59947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # Add libraries to $var in reverse order
59957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  eval tmp_libs=\"\$$var\"
59967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  new_libs=
59977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  for deplib in $tmp_libs; do
59987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # FIXME: Pedantically, this is the right thing to do, so
59997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    #        that some nasty dependency loop isn't accidentally
60007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    #        broken:
60017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    #new_libs="$deplib $new_libs"
60027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # Pragmatically, this seems to cause very few problems in
60037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # practice:
60047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    case $deplib in
60057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    -L*) new_libs="$deplib $new_libs" ;;
60067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    -R*) ;;
60077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    *)
60087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      # And here is the reason: when a library appears more
60097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      # than once as an explicit dependence of a library, or
60107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      # is implicitly linked in more than once by the
60117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      # compiler, it is considered special, and multiple
60127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      # occurrences thereof are not removed.  Compare this
60137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      # with having the same library being listed as a
60147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      # dependency of multiple other libraries: in this case,
60157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      # we know (pedantically, we assume) the library does not
60167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      # need to be listed more than once, so we keep only the
60177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      # last copy.  This is not always right, but it is rare
60187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      # enough that we require users that really mean to play
60197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      # such unportable linking tricks to link the library
60207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      # using -Wl,-lname, so that libtool does not consider it
60217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      # for duplicate removal.
60227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      case " $specialdeplibs " in
60237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      *" $deplib "*) new_libs="$deplib $new_libs" ;;
60247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      *)
60257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		case " $new_libs " in
60267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		*" $deplib "*) ;;
60277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		*) new_libs="$deplib $new_libs" ;;
60287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		esac
60297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		;;
60307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      esac
60317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      ;;
60327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    esac
60337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  done
60347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  tmp_libs=
60357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  for deplib in $new_libs; do
60367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    case $deplib in
60377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    -L*)
60387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      case " $tmp_libs " in
60397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      *" $deplib "*) ;;
60407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      *) tmp_libs="$tmp_libs $deplib" ;;
60417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      esac
60427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      ;;
60437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    *) tmp_libs="$tmp_libs $deplib" ;;
60447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    esac
60457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  done
60467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  eval $var=\"$tmp_libs\"
60477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	done # for var
60487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      fi
60497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # Last step: remove runtime libs from dependency_libs
60507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # (they stay in deplibs)
60517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      tmp_libs=
60527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      for i in $dependency_libs ; do
60537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	case " $predeps $postdeps $compiler_lib_search_path " in
60547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	*" $i "*)
60557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  i=""
60567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
60577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	esac
60587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test -n "$i" ; then
60597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  tmp_libs="$tmp_libs $i"
60607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
60617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      done
60627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      dependency_libs=$tmp_libs
60637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    done # for pass
60647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    if test "$linkmode" = prog; then
60657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      dlfiles="$newdlfiles"
60667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    fi
60677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    if test "$linkmode" = prog || test "$linkmode" = lib; then
60687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      dlprefiles="$newdlprefiles"
60697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    fi
60707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
60717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    case $linkmode in
60727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    oldlib)
60737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
60747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_warning "\`-dlopen' is ignored for archives"
60757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      fi
60767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
60777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      case " $deplibs" in
60787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      *\ -l* | *\ -L*)
60797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_warning "\`-l' and \`-L' are ignored for archives" ;;
60807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      esac
60817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
60827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      test -n "$rpath" && \
60837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_warning "\`-rpath' is ignored for archives"
60847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
60857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      test -n "$xrpath" && \
60867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_warning "\`-R' is ignored for archives"
60877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
60887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      test -n "$vinfo" && \
60897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_warning "\`-version-info/-version-number' is ignored for archives"
60907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
60917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      test -n "$release" && \
60927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_warning "\`-release' is ignored for archives"
60937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
60947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      test -n "$export_symbols$export_symbols_regex" && \
60957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_warning "\`-export-symbols' is ignored for archives"
60967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
60977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # Now set the variables for building old libraries.
60987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      build_libtool_libs=no
60997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      oldlibs="$output"
61007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      objs="$objs$old_deplibs"
61017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      ;;
61027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
61037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    lib)
61047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # Make sure we only generate libraries of the form `libNAME.la'.
61057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      case $outputname in
61067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      lib*)
61077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_stripname 'lib' '.la' "$outputname"
61087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	name=$func_stripname_result
61097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	eval shared_ext=\"$shrext_cmds\"
61107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	eval libname=\"$libname_spec\"
61117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
61127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      *)
61137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	test "$module" = no && \
61147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_fatal_help "libtool library \`$output' must begin with \`lib'"
61157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
61167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test "$need_lib_prefix" != no; then
61177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # Add the "lib" prefix for modules if required
61187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_stripname '' '.la' "$outputname"
61197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  name=$func_stripname_result
61207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  eval shared_ext=\"$shrext_cmds\"
61217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  eval libname=\"$libname_spec\"
61227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	else
61237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_stripname '' '.la' "$outputname"
61247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  libname=$func_stripname_result
61257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
61267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
61277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      esac
61287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
61297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if test -n "$objs"; then
61307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test "$deplibs_check_method" != pass_all; then
61317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
61327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	else
61337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  $ECHO
61347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
61357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  $ECHO "*** objects $objs is not portable!"
61367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  libobjs="$libobjs $objs"
61377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
61387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      fi
61397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
61407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      test "$dlself" != no && \
61417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_warning "\`-dlopen self' is ignored for libtool libraries"
61427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
61437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      set dummy $rpath
61447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      shift
61457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      test "$#" -gt 1 && \
61467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_warning "ignoring multiple \`-rpath's for a libtool library"
61477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
61487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      install_libdir="$1"
61497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
61507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      oldlibs=
61517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if test -z "$rpath"; then
61527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test "$build_libtool_libs" = yes; then
61537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # Building a libtool convenience library.
61547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # Some compilers have problems with a `.al' extension so
61557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # convenience libraries should have the same extension an
61567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # archive normally would.
61577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
61587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  build_libtool_libs=convenience
61597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  build_old_libs=yes
61607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
61617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
61627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	test -n "$vinfo" && \
61637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
61647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
61657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	test -n "$release" && \
61667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_warning "\`-release' is ignored for convenience libraries"
61677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      else
61687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
61697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Parse the version information argument.
61707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	save_ifs="$IFS"; IFS=':'
61717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	set dummy $vinfo 0 0 0
61727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	shift
61737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	IFS="$save_ifs"
61747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
61757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	test -n "$7" && \
61767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_fatal_help "too many parameters to \`-version-info'"
61777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
61787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# convert absolute version numbers to libtool ages
61797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# this retains compatibility with .la files and attempts
61807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# to make the code below a bit more comprehensible
61817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
61827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	case $vinfo_number in
61837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	yes)
61847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  number_major="$1"
61857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  number_minor="$2"
61867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  number_revision="$3"
61877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  #
61887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # There are really only two kinds -- those that
61897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # use the current revision as the major version
61907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # and those that subtract age and use age as
61917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # a minor version.  But, then there is irix
61927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # which has an extra 1 added just for fun
61937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  #
61947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  case $version_type in
61957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  darwin|linux|osf|windows|none)
61967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    func_arith $number_major + $number_minor
61977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    current=$func_arith_result
61987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    age="$number_minor"
61997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    revision="$number_revision"
62007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    ;;
62017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  freebsd-aout|freebsd-elf|sunos)
62027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    current="$number_major"
62037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    revision="$number_minor"
62047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    age="0"
62057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    ;;
62067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  irix|nonstopux)
62077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    func_arith $number_major + $number_minor
62087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    current=$func_arith_result
62097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    age="$number_minor"
62107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    revision="$number_minor"
62117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    lt_irix_increment=no
62127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    ;;
62137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  *)
62147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    func_fatal_configuration "$modename: unknown library version type \`$version_type'"
62157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    ;;
62167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  esac
62177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
62187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	no)
62197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  current="$1"
62207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  revision="$2"
62217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  age="$3"
62227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
62237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	esac
62247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
62257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Check that each of the things are valid numbers.
62267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	case $current in
62277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	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]) ;;
62287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	*)
62297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_error "CURRENT \`$current' must be a nonnegative integer"
62307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_fatal_error "\`$vinfo' is not valid version information"
62317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
62327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	esac
62337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
62347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	case $revision in
62357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	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]) ;;
62367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	*)
62377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_error "REVISION \`$revision' must be a nonnegative integer"
62387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_fatal_error "\`$vinfo' is not valid version information"
62397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
62407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	esac
62417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
62427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	case $age in
62437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	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]) ;;
62447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	*)
62457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_error "AGE \`$age' must be a nonnegative integer"
62467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_fatal_error "\`$vinfo' is not valid version information"
62477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
62487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	esac
62497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
62507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test "$age" -gt "$current"; then
62517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_error "AGE \`$age' is greater than the current interface number \`$current'"
62527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_fatal_error "\`$vinfo' is not valid version information"
62537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
62547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
62557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Calculate the version variables.
62567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	major=
62577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	versuffix=
62587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	verstring=
62597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	case $version_type in
62607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	none) ;;
62617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
62627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	darwin)
62637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # Like Linux, but with the current version available in
62647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # verstring for coding it into the library header
62657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_arith $current - $age
62667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  major=.$func_arith_result
62677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  versuffix="$major.$age.$revision"
62687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # Darwin ld doesn't like 0 for these options...
62697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_arith $current + 1
62707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  minor_current=$func_arith_result
62717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
62727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
62737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
62747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
62757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	freebsd-aout)
62767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  major=".$current"
62777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  versuffix=".$current.$revision";
62787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
62797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
62807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	freebsd-elf)
62817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  major=".$current"
62827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  versuffix=".$current"
62837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
62847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
62857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	irix | nonstopux)
62867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test "X$lt_irix_increment" = "Xno"; then
62877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    func_arith $current - $age
62887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  else
62897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    func_arith $current - $age + 1
62907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
62917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  major=$func_arith_result
62927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
62937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  case $version_type in
62947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    nonstopux) verstring_prefix=nonstopux ;;
62957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    *)         verstring_prefix=sgi ;;
62967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  esac
62977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  verstring="$verstring_prefix$major.$revision"
62987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
62997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # Add in all the interfaces that we are compatible with.
63007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  loop=$revision
63017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  while test "$loop" -ne 0; do
63027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    func_arith $revision - $loop
63037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    iface=$func_arith_result
63047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    func_arith $loop - 1
63057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    loop=$func_arith_result
63067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    verstring="$verstring_prefix$major.$iface:$verstring"
63077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  done
63087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
63097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # Before this point, $major must not contain `.'.
63107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  major=.$major
63117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  versuffix="$major.$revision"
63127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
63137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
63147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	linux)
63157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_arith $current - $age
63167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  major=.$func_arith_result
63177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  versuffix="$major.$age.$revision"
63187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
63197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
63207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	osf)
63217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_arith $current - $age
63227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  major=.$func_arith_result
63237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  versuffix=".$current.$age.$revision"
63247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  verstring="$current.$age.$revision"
63257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
63267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # Add in all the interfaces that we are compatible with.
63277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  loop=$age
63287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  while test "$loop" -ne 0; do
63297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    func_arith $current - $loop
63307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    iface=$func_arith_result
63317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    func_arith $loop - 1
63327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    loop=$func_arith_result
63337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    verstring="$verstring:${iface}.0"
63347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  done
63357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
63367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # Make executables depend on our current version.
63377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  verstring="$verstring:${current}.0"
63387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
63397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
63407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	qnx)
63417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  major=".$current"
63427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  versuffix=".$current"
63437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
63447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
63457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	sunos)
63467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  major=".$current"
63477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  versuffix=".$current.$revision"
63487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
63497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
63507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	windows)
63517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # Use '-' rather than '.', since we only want one
63527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # extension on DOS 8.3 filesystems.
63537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_arith $current - $age
63547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  major=$func_arith_result
63557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  versuffix="-$major"
63567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
63577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
63587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	*)
63597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_fatal_configuration "unknown library version type \`$version_type'"
63607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
63617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	esac
63627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
63637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Clear the version info if we defaulted, and they specified a release.
63647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test -z "$vinfo" && test -n "$release"; then
63657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  major=
63667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  case $version_type in
63677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  darwin)
63687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # we can't check for "0.0" in archive_cmds due to quoting
63697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # problems, so we reset it completely
63707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    verstring=
63717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    ;;
63727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  *)
63737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    verstring="0.0"
63747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    ;;
63757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  esac
63767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test "$need_version" = no; then
63777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    versuffix=
63787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  else
63797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    versuffix=".0.0"
63807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
63817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
63827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
63837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Remove version info from name if versioning should be avoided
63847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test "$avoid_version" = yes && test "$need_version" = no; then
63857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  major=
63867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  versuffix=
63877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  verstring=""
63887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
63897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
63907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Check to see if the archive will have undefined symbols.
63917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test "$allow_undefined" = yes; then
63927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test "$allow_undefined_flag" = unsupported; then
63937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    func_warning "undefined symbols not allowed in $host shared libraries"
63947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    build_libtool_libs=no
63957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    build_old_libs=yes
63967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
63977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	else
63987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # Don't allow undefined symbols.
63997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  allow_undefined_flag="$no_undefined_flag"
64007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
64017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
64027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      fi
64037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
64047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      func_generate_dlsyms "$libname" "$libname" "yes"
64057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      libobjs="$libobjs $symfileobj"
64067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      test "X$libobjs" = "X " && libobjs=
64077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
64087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if test "$mode" != relink; then
64097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Remove our outputs, but don't remove object files since they
64107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# may have been created when compiling PIC objects.
64117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	removelist=
64127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	tempremovelist=`$ECHO "$output_objdir/*"`
64137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	for p in $tempremovelist; do
64147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  case $p in
64157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    *.$objext | *.gcno)
64167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	       ;;
64177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
64187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	       if test "X$precious_files_regex" != "X"; then
64197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		 if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
64207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		 then
64217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		   continue
64227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		 fi
64237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	       fi
64247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	       removelist="$removelist $p"
64257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	       ;;
64267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    *) ;;
64277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  esac
64287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	done
64297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	test -n "$removelist" && \
64307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_show_eval "${RM}r \$removelist"
64317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      fi
64327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
64337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # Now set the variables for building old libraries.
64347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
64357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	oldlibs="$oldlibs $output_objdir/$libname.$libext"
64367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
64377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Transform .lo files to .o files.
64387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
64397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      fi
64407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
64417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # Eliminate all temporary directories.
64427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      #for path in $notinst_path; do
64437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      #	lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"`
64447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      #	deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"`
64457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      #	dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "s% -L$path % %g"`
64467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      #done
64477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
64487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if test -n "$xrpath"; then
64497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# If the user specified any rpath flags, then add them.
64507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	temp_xrpath=
64517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	for libdir in $xrpath; do
64527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  temp_xrpath="$temp_xrpath -R$libdir"
64537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  case "$finalize_rpath " in
64547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  *" $libdir "*) ;;
64557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  *) finalize_rpath="$finalize_rpath $libdir" ;;
64567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  esac
64577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	done
64587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
64597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  dependency_libs="$temp_xrpath $dependency_libs"
64607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
64617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      fi
64627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
64637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # Make sure dlfiles contains only unique files that won't be dlpreopened
64647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      old_dlfiles="$dlfiles"
64657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      dlfiles=
64667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      for lib in $old_dlfiles; do
64677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	case " $dlprefiles $dlfiles " in
64687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	*" $lib "*) ;;
64697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	*) dlfiles="$dlfiles $lib" ;;
64707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	esac
64717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      done
64727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
64737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # Make sure dlprefiles contains only unique files
64747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      old_dlprefiles="$dlprefiles"
64757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      dlprefiles=
64767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      for lib in $old_dlprefiles; do
64777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	case "$dlprefiles " in
64787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	*" $lib "*) ;;
64797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	*) dlprefiles="$dlprefiles $lib" ;;
64807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	esac
64817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      done
64827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
64837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if test "$build_libtool_libs" = yes; then
64847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test -n "$rpath"; then
64857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  case $host in
64867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc*)
64877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # these systems don't actually have a c library (as such)!
64887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    ;;
64897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  *-*-rhapsody* | *-*-darwin1.[012])
64907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # Rhapsody C library is in the System framework
64917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    deplibs="$deplibs System.ltframework"
64927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    ;;
64937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  *-*-netbsd*)
64947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # Don't link with libc until the a.out ld.so is fixed.
64957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    ;;
64967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
64977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # Do not include libc due to us having libc/libc_r.
64987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    ;;
64997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  *-*-sco3.2v5* | *-*-sco5v6*)
65007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # Causes problems with __ctype
65017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    ;;
65027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
65037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # Compiler inserts libc in the correct place for threads to work
65047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    ;;
65057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  *)
65067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # Add libc to deplibs on all other systems if necessary.
65077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    if test "$build_libtool_need_lc" = "yes"; then
65087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      deplibs="$deplibs -lc"
65097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    fi
65107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    ;;
65117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  esac
65127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
65137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
65147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Transform deplibs into only deplibs that can be linked in shared.
65157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	name_save=$name
65167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	libname_save=$libname
65177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	release_save=$release
65187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	versuffix_save=$versuffix
65197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	major_save=$major
65207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# I'm not sure if I'm treating the release correctly.  I think
65217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# release should show up in the -l (ie -lgmp5) so we don't want to
65227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# add it in twice.  Is that correct?
65237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	release=""
65247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	versuffix=""
65257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	major=""
65267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	newdeplibs=
65277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	droppeddeps=no
65287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	case $deplibs_check_method in
65297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	pass_all)
65307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # Don't check for shared/static.  Everything works.
65317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # This might be a little naive.  We might want to check
65327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # whether the library exists or not.  But this is on
65337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # osf3 & osf4 and I'm not really sure... Just
65347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # implementing what was already the behavior.
65357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  newdeplibs=$deplibs
65367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
65377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	test_compile)
65387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # This code stresses the "libraries are programs" paradigm to its
65397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # limits. Maybe even breaks it.  We compile a program, linking it
65407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # against the deplibs as a proxy for the library.  Then we can check
65417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # whether they linked in statically or dynamically with ldd.
65427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  $opt_dry_run || $RM conftest.c
65437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  cat > conftest.c <<EOF
65447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  int main() { return 0; }
65457c9978567a202d6aa98beac5da5e1b3b34792862Jerome PoichetEOF
65467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  $opt_dry_run || $RM conftest
65477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
65487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    ldd_output=`ldd conftest`
65497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    for i in $deplibs; do
65507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      case $i in
65517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      -l*)
65527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		func_stripname -l '' "$i"
65537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		name=$func_stripname_result
65547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
65557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  case " $predeps $postdeps " in
65567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  *" $i "*)
65577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    newdeplibs="$newdeplibs $i"
65587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    i=""
65597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    ;;
65607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  esac
65617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		fi
65627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		if test -n "$i" ; then
65637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  libname=`eval "\\$ECHO \"$libname_spec\""`
65647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
65657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  set dummy $deplib_matches; shift
65667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  deplib_match=$1
65677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
65687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    newdeplibs="$newdeplibs $i"
65697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  else
65707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    droppeddeps=yes
65717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    $ECHO
65727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    $ECHO "*** Warning: dynamic linker does not accept needed library $i."
65737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    $ECHO "*** I have the capability to make that library automatically link in when"
65747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    $ECHO "*** you link to this library.  But I can only do this if you have a"
65757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    $ECHO "*** shared version of the library, which I believe you do not have"
65767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    $ECHO "*** because a test_compile did reveal that the linker did not use it for"
65777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    $ECHO "*** its dynamic dependency list that programs get resolved with at runtime."
65787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  fi
65797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		fi
65807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		;;
65817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      *)
65827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		newdeplibs="$newdeplibs $i"
65837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		;;
65847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      esac
65857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    done
65867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  else
65877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # Error occurred in the first compile.  Let's try to salvage
65887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # the situation: Compile a separate program for each library.
65897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    for i in $deplibs; do
65907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      case $i in
65917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      -l*)
65927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		func_stripname -l '' "$i"
65937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		name=$func_stripname_result
65947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		$opt_dry_run || $RM conftest
65957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
65967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  ldd_output=`ldd conftest`
65977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
65987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    case " $predeps $postdeps " in
65997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    *" $i "*)
66007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		      newdeplibs="$newdeplibs $i"
66017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		      i=""
66027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		      ;;
66037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    esac
66047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  fi
66057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  if test -n "$i" ; then
66067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    libname=`eval "\\$ECHO \"$libname_spec\""`
66077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
66087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    set dummy $deplib_matches; shift
66097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    deplib_match=$1
66107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
66117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		      newdeplibs="$newdeplibs $i"
66127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    else
66137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		      droppeddeps=yes
66147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		      $ECHO
66157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		      $ECHO "*** Warning: dynamic linker does not accept needed library $i."
66167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		      $ECHO "*** I have the capability to make that library automatically link in when"
66177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		      $ECHO "*** you link to this library.  But I can only do this if you have a"
66187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		      $ECHO "*** shared version of the library, which you do not appear to have"
66197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		      $ECHO "*** because a test_compile did reveal that the linker did not use this one"
66207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		      $ECHO "*** as a dynamic dependency that programs can get resolved with at runtime."
66217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    fi
66227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  fi
66237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		else
66247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  droppeddeps=yes
66257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  $ECHO
66267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  $ECHO "*** Warning!  Library $i is needed by this library but I was not able to"
66277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  $ECHO "*** make it link in!  You will probably need to install it or some"
66287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  $ECHO "*** library that it depends on before this library will be fully"
66297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  $ECHO "*** functional.  Installing it before continuing would be even better."
66307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		fi
66317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		;;
66327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      *)
66337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		newdeplibs="$newdeplibs $i"
66347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		;;
66357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      esac
66367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    done
66377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
66387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
66397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	file_magic*)
66407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  set dummy $deplibs_check_method; shift
66417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
66427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  for a_deplib in $deplibs; do
66437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    case $a_deplib in
66447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    -l*)
66457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      func_stripname -l '' "$a_deplib"
66467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      name=$func_stripname_result
66477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
66487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		case " $predeps $postdeps " in
66497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		*" $a_deplib "*)
66507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  newdeplibs="$newdeplibs $a_deplib"
66517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  a_deplib=""
66527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  ;;
66537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		esac
66547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      fi
66557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      if test -n "$a_deplib" ; then
66567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		libname=`eval "\\$ECHO \"$libname_spec\""`
66577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
66587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
66597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  for potent_lib in $potential_libs; do
66607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		      # Follow soft links.
66617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		      if ls -lLd "$potent_lib" 2>/dev/null |
66627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet			 $GREP " -> " >/dev/null; then
66637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet			continue
66647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		      fi
66657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		      # The statement above tries to avoid entering an
66667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		      # endless loop below, in case of cyclic links.
66677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		      # We might still enter an endless loop, since a link
66687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		      # loop can be closed while we follow links,
66697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		      # but so what?
66707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		      potlib="$potent_lib"
66717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		      while test -h "$potlib" 2>/dev/null; do
66727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet			potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
66737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet			case $potliblink in
66747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet			[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
66757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet			*) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
66767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet			esac
66777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		      done
66787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
66797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet			 $SED -e 10q |
66807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet			 $EGREP "$file_magic_regex" > /dev/null; then
66817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet			newdeplibs="$newdeplibs $a_deplib"
66827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet			a_deplib=""
66837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet			break 2
66847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		      fi
66857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  done
66867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		done
66877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      fi
66887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      if test -n "$a_deplib" ; then
66897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		droppeddeps=yes
66907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		$ECHO
66917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
66927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		$ECHO "*** I have the capability to make that library automatically link in when"
66937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		$ECHO "*** you link to this library.  But I can only do this if you have a"
66947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		$ECHO "*** shared version of the library, which you do not appear to have"
66957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		$ECHO "*** because I did check the linker path looking for a file starting"
66967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		if test -z "$potlib" ; then
66977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
66987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		else
66997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  $ECHO "*** with $libname and none of the candidates passed a file format test"
67007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  $ECHO "*** using a file magic. Last file checked: $potlib"
67017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		fi
67027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      fi
67037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      ;;
67047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    *)
67057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      # Add a -L argument.
67067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      newdeplibs="$newdeplibs $a_deplib"
67077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      ;;
67087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    esac
67097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  done # Gone through all deplibs.
67107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
67117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	match_pattern*)
67127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  set dummy $deplibs_check_method; shift
67137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
67147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  for a_deplib in $deplibs; do
67157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    case $a_deplib in
67167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    -l*)
67177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      func_stripname -l '' "$a_deplib"
67187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      name=$func_stripname_result
67197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
67207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		case " $predeps $postdeps " in
67217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		*" $a_deplib "*)
67227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  newdeplibs="$newdeplibs $a_deplib"
67237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  a_deplib=""
67247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  ;;
67257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		esac
67267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      fi
67277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      if test -n "$a_deplib" ; then
67287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		libname=`eval "\\$ECHO \"$libname_spec\""`
67297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
67307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
67317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  for potent_lib in $potential_libs; do
67327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    potlib="$potent_lib" # see symlink-check above in file_magic test
67337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \
67347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		       $EGREP "$match_pattern_regex" > /dev/null; then
67357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		      newdeplibs="$newdeplibs $a_deplib"
67367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		      a_deplib=""
67377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		      break 2
67387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    fi
67397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  done
67407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		done
67417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      fi
67427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      if test -n "$a_deplib" ; then
67437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		droppeddeps=yes
67447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		$ECHO
67457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
67467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		$ECHO "*** I have the capability to make that library automatically link in when"
67477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		$ECHO "*** you link to this library.  But I can only do this if you have a"
67487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		$ECHO "*** shared version of the library, which you do not appear to have"
67497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		$ECHO "*** because I did check the linker path looking for a file starting"
67507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		if test -z "$potlib" ; then
67517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
67527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		else
67537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  $ECHO "*** with $libname and none of the candidates passed a file format test"
67547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  $ECHO "*** using a regex pattern. Last file checked: $potlib"
67557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		fi
67567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      fi
67577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      ;;
67587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    *)
67597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      # Add a -L argument.
67607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      newdeplibs="$newdeplibs $a_deplib"
67617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      ;;
67627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    esac
67637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  done # Gone through all deplibs.
67647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
67657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	none | unknown | *)
67667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  newdeplibs=""
67677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \
67687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'`
67697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
67707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    for i in $predeps $postdeps ; do
67717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      # can't use Xsed below, because $i might contain '/'
67727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"`
67737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    done
67747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
67757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[	 ]//g' |
67767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	     $GREP . >/dev/null; then
67777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    $ECHO
67787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    if test "X$deplibs_check_method" = "Xnone"; then
67797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      $ECHO "*** Warning: inter-library dependencies are not supported in this platform."
67807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    else
67817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      $ECHO "*** Warning: inter-library dependencies are not known to be supported."
67827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    fi
67837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    $ECHO "*** All declared inter-library dependencies are being dropped."
67847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    droppeddeps=yes
67857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
67867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
67877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	esac
67887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	versuffix=$versuffix_save
67897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	major=$major_save
67907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	release=$release_save
67917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	libname=$libname_save
67927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	name=$name_save
67937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
67947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	case $host in
67957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	*-*-rhapsody* | *-*-darwin1.[012])
67967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # On Rhapsody replace the C library with the System framework
67977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
67987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
67997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	esac
68007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
68017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test "$droppeddeps" = yes; then
68027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test "$module" = yes; then
68037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    $ECHO
68047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    $ECHO "*** Warning: libtool could not satisfy all declared inter-library"
68057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    $ECHO "*** dependencies of module $libname.  Therefore, libtool will create"
68067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    $ECHO "*** a static module, that should work as long as the dlopening"
68077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    $ECHO "*** application is linked with the -dlopen flag."
68087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    if test -z "$global_symbol_pipe"; then
68097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      $ECHO
68107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      $ECHO "*** However, this would only work if libtool was able to extract symbol"
68117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
68127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      $ECHO "*** not find such a program.  So, this module is probably useless."
68137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      $ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
68147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    fi
68157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    if test "$build_old_libs" = no; then
68167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      oldlibs="$output_objdir/$libname.$libext"
68177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      build_libtool_libs=module
68187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      build_old_libs=yes
68197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    else
68207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      build_libtool_libs=no
68217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    fi
68227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  else
68237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    $ECHO "*** The inter-library dependencies that have been dropped here will be"
68247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    $ECHO "*** automatically added whenever a program is linked with this library"
68257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    $ECHO "*** or is declared to -dlopen it."
68267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
68277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    if test "$allow_undefined" = no; then
68287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      $ECHO
68297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      $ECHO "*** Since this library must not contain undefined symbols,"
68307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      $ECHO "*** because either the platform does not support them or"
68317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      $ECHO "*** it was explicitly requested with -no-undefined,"
68327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      $ECHO "*** libtool will only create a static version of it."
68337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      if test "$build_old_libs" = no; then
68347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		oldlibs="$output_objdir/$libname.$libext"
68357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		build_libtool_libs=module
68367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		build_old_libs=yes
68377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      else
68387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		build_libtool_libs=no
68397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      fi
68407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    fi
68417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
68427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
68437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Done checking deplibs!
68447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	deplibs=$newdeplibs
68457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      fi
68467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # Time to change all our "foo.ltframework" stuff back to "-framework foo"
68477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      case $host in
68487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	*-*-darwin*)
68497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
68507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
68517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
68527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
68537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      esac
68547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
68557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # move library search paths that coincide with paths to not yet
68567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # installed libraries to the beginning of the library search list
68577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      new_libs=
68587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      for path in $notinst_path; do
68597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	case " $new_libs " in
68607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	*" -L$path/$objdir "*) ;;
68617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	*)
68627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  case " $deplibs " in
68637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  *" -L$path/$objdir "*)
68647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    new_libs="$new_libs -L$path/$objdir" ;;
68657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  esac
68667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
68677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	esac
68687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      done
68697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      for deplib in $deplibs; do
68707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	case $deplib in
68717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	-L*)
68727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  case " $new_libs " in
68737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  *" $deplib "*) ;;
68747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  *) new_libs="$new_libs $deplib" ;;
68757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  esac
68767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
68777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	*) new_libs="$new_libs $deplib" ;;
68787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	esac
68797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      done
68807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      deplibs="$new_libs"
68817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
68827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # All the library-specific variables (install_libdir is set above).
68837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      library_names=
68847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      old_library=
68857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      dlname=
68867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
68877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # Test again, we may have decided not to build it any more
68887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if test "$build_libtool_libs" = yes; then
68897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test "$hardcode_into_libs" = yes; then
68907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # Hardcode the library paths
68917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  hardcode_libdirs=
68927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  dep_rpath=
68937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  rpath="$finalize_rpath"
68947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  test "$mode" != relink && rpath="$compile_rpath$rpath"
68957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  for libdir in $rpath; do
68967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    if test -n "$hardcode_libdir_flag_spec"; then
68977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      if test -n "$hardcode_libdir_separator"; then
68987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		if test -z "$hardcode_libdirs"; then
68997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  hardcode_libdirs="$libdir"
69007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		else
69017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  # Just accumulate the unique libdirs.
69027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
69037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
69047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    ;;
69057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  *)
69067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
69077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    ;;
69087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  esac
69097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		fi
69107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      else
69117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		eval flag=\"$hardcode_libdir_flag_spec\"
69127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		dep_rpath="$dep_rpath $flag"
69137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      fi
69147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    elif test -n "$runpath_var"; then
69157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      case "$perm_rpath " in
69167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      *" $libdir "*) ;;
69177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      *) perm_rpath="$perm_rpath $libdir" ;;
69187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      esac
69197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    fi
69207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  done
69217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # Substitute the hardcoded libdirs into the rpath.
69227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test -n "$hardcode_libdir_separator" &&
69237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	     test -n "$hardcode_libdirs"; then
69247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    libdir="$hardcode_libdirs"
69257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    if test -n "$hardcode_libdir_flag_spec_ld"; then
69267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
69277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    else
69287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      eval dep_rpath=\"$hardcode_libdir_flag_spec\"
69297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    fi
69307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
69317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
69327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # We should set the runpath_var.
69337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    rpath=
69347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    for dir in $perm_rpath; do
69357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      rpath="$rpath$dir:"
69367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    done
69377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
69387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
69397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
69407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
69417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
69427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	shlibpath="$finalize_shlibpath"
69437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
69447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test -n "$shlibpath"; then
69457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
69467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
69477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
69487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Get the real and link names of the library.
69497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	eval shared_ext=\"$shrext_cmds\"
69507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	eval library_names=\"$library_names_spec\"
69517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	set dummy $library_names
69527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	shift
69537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	realname="$1"
69547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	shift
69557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
69567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test -n "$soname_spec"; then
69577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  eval soname=\"$soname_spec\"
69587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	else
69597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  soname="$realname"
69607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
69617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test -z "$dlname"; then
69627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  dlname=$soname
69637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
69647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
69657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	lib="$output_objdir/$realname"
69667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	linknames=
69677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	for link
69687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	do
69697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  linknames="$linknames $link"
69707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	done
69717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
69727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Use standard objects if they are pic
69737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
69747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	test "X$libobjs" = "X " && libobjs=
69757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
69767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	delfiles=
69777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test -n "$export_symbols" && test -n "$include_expsyms"; then
69787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
69797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  export_symbols="$output_objdir/$libname.uexp"
69807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  delfiles="$delfiles $export_symbols"
69817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
69827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
69837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	orig_export_symbols=
69847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	case $host_os in
69857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	cygwin* | mingw* | cegcc*)
69867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
69877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # exporting using user supplied symfile
69887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
69897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      # and it's NOT already a .def file. Must figure out
69907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      # which of the given symbols are data symbols and tag
69917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      # them as such. So, trigger use of export_symbols_cmds.
69927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      # export_symbols gets reassigned inside the "prepare
69937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      # the list of exported symbols" if statement, so the
69947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      # include_expsyms logic still works.
69957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      orig_export_symbols="$export_symbols"
69967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      export_symbols=
69977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      always_export_symbols=yes
69987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    fi
69997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
70007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
70017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	esac
70027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
70037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Prepare the list of exported symbols
70047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test -z "$export_symbols"; then
70057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
70067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    func_verbose "generating symbol list for \`$libname.la'"
70077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    export_symbols="$output_objdir/$libname.exp"
70087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    $opt_dry_run || $RM $export_symbols
70097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    cmds=$export_symbols_cmds
70107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    save_ifs="$IFS"; IFS='~'
70117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    for cmd in $cmds; do
70127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      IFS="$save_ifs"
70137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      eval cmd=\"$cmd\"
70147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      func_len " $cmd"
70157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      len=$func_len_result
70167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
70177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		func_show_eval "$cmd" 'exit $?'
70187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		skipped_export=false
70197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      else
70207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		# The command line is too long to execute in one step.
70217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		func_verbose "using reloadable object file for export list..."
70227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		skipped_export=:
70237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		# Break out early, otherwise skipped_export may be
70247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		# set to false by a later but shorter cmd.
70257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		break
70267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      fi
70277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    done
70287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    IFS="$save_ifs"
70297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then
70307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
70317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
70327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    fi
70337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
70347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
70357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
70367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test -n "$export_symbols" && test -n "$include_expsyms"; then
70377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  tmp_export_symbols="$export_symbols"
70387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
70397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
70407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
70417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
70427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
70437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # The given exports_symbols file has to be filtered, so filter it.
70447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
70457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # FIXME: $output_objdir/$libname.filter potentially contains lots of
70467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # 's' commands which not all seds can handle. GNU sed should be fine
70477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # though. Also, the filter scales superlinearly with the number of
70487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # global variables. join(1) would be nice here, but unfortunately
70497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # isn't a blessed tool.
70507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
70517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
70527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  export_symbols=$output_objdir/$libname.def
70537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
70547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
70557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
70567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	tmp_deplibs=
70577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	for test_deplib in $deplibs; do
70587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  case " $convenience " in
70597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  *" $test_deplib "*) ;;
70607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  *)
70617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    tmp_deplibs="$tmp_deplibs $test_deplib"
70627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    ;;
70637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  esac
70647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	done
70657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	deplibs="$tmp_deplibs"
70667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
70677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test -n "$convenience"; then
70687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test -n "$whole_archive_flag_spec" &&
70697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    test "$compiler_needs_object" = yes &&
70707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    test -z "$libobjs"; then
70717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # extract the archives, so we have objects to list.
70727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # TODO: could optimize this to just extract one archive.
70737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    whole_archive_flag_spec=
70747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
70757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test -n "$whole_archive_flag_spec"; then
70767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    save_libobjs=$libobjs
70777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
70787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    test "X$libobjs" = "X " && libobjs=
70797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  else
70807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    gentop="$output_objdir/${outputname}x"
70817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    generated="$generated $gentop"
70827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
70837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    func_extract_archives $gentop $convenience
70847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    libobjs="$libobjs $func_extract_archives_result"
70857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    test "X$libobjs" = "X " && libobjs=
70867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
70877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
70887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
70897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
70907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  eval flag=\"$thread_safe_flag_spec\"
70917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  linker_flags="$linker_flags $flag"
70927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
70937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
70947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Make a backup of the uninstalled library when relinking
70957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test "$mode" = relink; then
70967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
70977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
70987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
70997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Do each of the archive commands.
71007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test "$module" = yes && test -n "$module_cmds" ; then
71017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
71027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    eval test_cmds=\"$module_expsym_cmds\"
71037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    cmds=$module_expsym_cmds
71047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  else
71057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    eval test_cmds=\"$module_cmds\"
71067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    cmds=$module_cmds
71077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
71087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	else
71097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
71107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    eval test_cmds=\"$archive_expsym_cmds\"
71117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    cmds=$archive_expsym_cmds
71127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  else
71137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    eval test_cmds=\"$archive_cmds\"
71147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    cmds=$archive_cmds
71157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
71167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
71177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
71187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test "X$skipped_export" != "X:" &&
71197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	   func_len " $test_cmds" &&
71207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	   len=$func_len_result &&
71217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	   test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
71227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  :
71237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	else
71247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # The command line is too long to link in one step, link piecewise
71257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # or, if using GNU ld and skipped_export is not :, use a linker
71267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # script.
71277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
71287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # Save the value of $output and $libobjs because we want to
71297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # use them later.  If we have whole_archive_flag_spec, we
71307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # want to use save_libobjs as it was before
71317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # whole_archive_flag_spec was expanded, because we can't
71327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # assume the linker understands whole_archive_flag_spec.
71337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # This may have to be revisited, in case too many
71347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # convenience libraries get linked in and end up exceeding
71357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # the spec.
71367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
71377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    save_libobjs=$libobjs
71387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
71397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  save_output=$output
71407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  output_la=`$ECHO "X$output" | $Xsed -e "$basename"`
71417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
71427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # Clear the reloadable object creation command queue and
71437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # initialize k to one.
71447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  test_cmds=
71457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  concat_cmds=
71467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  objlist=
71477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  last_robj=
71487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  k=1
71497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
71507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
71517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    output=${output_objdir}/${output_la}.lnkscript
71527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    func_verbose "creating GNU ld script: $output"
71537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    $ECHO 'INPUT (' > $output
71547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    for obj in $save_libobjs
71557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    do
71567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      $ECHO "$obj" >> $output
71577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    done
71587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    $ECHO ')' >> $output
71597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    delfiles="$delfiles $output"
71607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
71617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    output=${output_objdir}/${output_la}.lnk
71627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    func_verbose "creating linker input file list: $output"
71637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    : > $output
71647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    set x $save_libobjs
71657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    shift
71667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    firstobj=
71677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    if test "$compiler_needs_object" = yes; then
71687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      firstobj="$1 "
71697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      shift
71707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    fi
71717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    for obj
71727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    do
71737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      $ECHO "$obj" >> $output
71747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    done
71757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    delfiles="$delfiles $output"
71767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    output=$firstobj\"$file_list_spec$output\"
71777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  else
71787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    if test -n "$save_libobjs"; then
71797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      func_verbose "creating reloadable object files..."
71807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      output=$output_objdir/$output_la-${k}.$objext
71817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      eval test_cmds=\"$reload_cmds\"
71827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      func_len " $test_cmds"
71837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      len0=$func_len_result
71847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      len=$len0
71857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
71867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      # Loop over the list of objects to be linked.
71877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      for obj in $save_libobjs
71887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      do
71897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		func_len " $obj"
71907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		func_arith $len + $func_len_result
71917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		len=$func_arith_result
71927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		if test "X$objlist" = X ||
71937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		   test "$len" -lt "$max_cmd_len"; then
71947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  func_append objlist " $obj"
71957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		else
71967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  # The command $test_cmds is almost too long, add a
71977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  # command to the queue.
71987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  if test "$k" -eq 1 ; then
71997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    # The first file doesn't have a previous command to add.
72007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
72017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  else
72027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    # All subsequent reloadable object files will link in
72037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    # the last one created.
72047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj~\$RM $last_robj\"
72057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  fi
72067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  last_robj=$output_objdir/$output_la-${k}.$objext
72077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  func_arith $k + 1
72087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  k=$func_arith_result
72097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  output=$output_objdir/$output_la-${k}.$objext
72107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  objlist=$obj
72117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  func_len " $last_robj"
72127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  func_arith $len0 + $func_len_result
72137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  len=$func_arith_result
72147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		fi
72157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      done
72167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      # Handle the remaining objects by creating one last
72177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      # reloadable object file.  All subsequent reloadable object
72187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      # files will link in the last one created.
72197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
72207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
72217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      if test -n "$last_robj"; then
72227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	        eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
72237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      fi
72247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      delfiles="$delfiles $output"
72257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
72267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    else
72277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      output=
72287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    fi
72297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
72307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    if ${skipped_export-false}; then
72317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      func_verbose "generating symbol list for \`$libname.la'"
72327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      export_symbols="$output_objdir/$libname.exp"
72337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      $opt_dry_run || $RM $export_symbols
72347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      libobjs=$output
72357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      # Append the command to create the export file.
72367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
72377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
72387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      if test -n "$last_robj"; then
72397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
72407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      fi
72417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    fi
72427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
72437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    test -n "$save_libobjs" &&
72447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      func_verbose "creating a temporary reloadable object file: $output"
72457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
72467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # Loop through the commands generated above and execute them.
72477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    save_ifs="$IFS"; IFS='~'
72487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    for cmd in $concat_cmds; do
72497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      IFS="$save_ifs"
72507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      $opt_silent || {
72517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  func_quote_for_expand "$cmd"
72527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  eval "func_echo $func_quote_for_expand_result"
72537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      }
72547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      $opt_dry_run || eval "$cmd" || {
72557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		lt_exit=$?
72567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
72577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		# Restore the uninstalled library and exit
72587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		if test "$mode" = relink; then
72597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  ( cd "$output_objdir" && \
72607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    $RM "${realname}T" && \
72617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		    $MV "${realname}U" "$realname" )
72627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		fi
72637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
72647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		exit $lt_exit
72657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      }
72667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    done
72677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    IFS="$save_ifs"
72687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
72697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    if test -n "$export_symbols_regex" && ${skipped_export-false}; then
72707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
72717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
72727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    fi
72737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
72747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
72757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet          if ${skipped_export-false}; then
72767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    if test -n "$export_symbols" && test -n "$include_expsyms"; then
72777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      tmp_export_symbols="$export_symbols"
72787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
72797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
72807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    fi
72817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
72827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    if test -n "$orig_export_symbols"; then
72837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      # The given exports_symbols file has to be filtered, so filter it.
72847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
72857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      # FIXME: $output_objdir/$libname.filter potentially contains lots of
72867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      # 's' commands which not all seds can handle. GNU sed should be fine
72877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      # though. Also, the filter scales superlinearly with the number of
72887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      # global variables. join(1) would be nice here, but unfortunately
72897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      # isn't a blessed tool.
72907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
72917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
72927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      export_symbols=$output_objdir/$libname.def
72937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
72947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    fi
72957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
72967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
72977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  libobjs=$output
72987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # Restore the value of output.
72997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  output=$save_output
73007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
73017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
73027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
73037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    test "X$libobjs" = "X " && libobjs=
73047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
73057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # Expand the library linking commands again to reset the
73067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # value of $libobjs for piecewise linking.
73077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
73087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # Do each of the archive commands.
73097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test "$module" = yes && test -n "$module_cmds" ; then
73107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
73117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      cmds=$module_expsym_cmds
73127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    else
73137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      cmds=$module_cmds
73147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    fi
73157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  else
73167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
73177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      cmds=$archive_expsym_cmds
73187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    else
73197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      cmds=$archive_cmds
73207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    fi
73217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
73227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
73237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
73247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test -n "$delfiles"; then
73257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # Append the command to remove temporary files to $cmds.
73267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  eval cmds=\"\$cmds~\$RM $delfiles\"
73277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
73287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
73297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Add any objects from preloaded convenience libraries
73307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test -n "$dlprefiles"; then
73317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  gentop="$output_objdir/${outputname}x"
73327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  generated="$generated $gentop"
73337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
73347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_extract_archives $gentop $dlprefiles
73357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  libobjs="$libobjs $func_extract_archives_result"
73367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  test "X$libobjs" = "X " && libobjs=
73377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
73387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
73397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	save_ifs="$IFS"; IFS='~'
73407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	for cmd in $cmds; do
73417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  IFS="$save_ifs"
73427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  eval cmd=\"$cmd\"
73437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  $opt_silent || {
73447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    func_quote_for_expand "$cmd"
73457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    eval "func_echo $func_quote_for_expand_result"
73467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  }
73477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  $opt_dry_run || eval "$cmd" || {
73487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    lt_exit=$?
73497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
73507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # Restore the uninstalled library and exit
73517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    if test "$mode" = relink; then
73527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      ( cd "$output_objdir" && \
73537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	        $RM "${realname}T" && \
73547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		$MV "${realname}U" "$realname" )
73557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    fi
73567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
73577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    exit $lt_exit
73587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  }
73597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	done
73607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	IFS="$save_ifs"
73617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
73627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Restore the uninstalled library and exit
73637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test "$mode" = relink; then
73647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
73657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
73667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test -n "$convenience"; then
73677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    if test -z "$whole_archive_flag_spec"; then
73687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      func_show_eval '${RM}r "$gentop"'
73697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    fi
73707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
73717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
73727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  exit $EXIT_SUCCESS
73737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
73747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
73757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Create links to the real library.
73767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	for linkname in $linknames; do
73777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test "$realname" != "$linkname"; then
73787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
73797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
73807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	done
73817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
73827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# If -module or -export-dynamic was specified, set the dlname.
73837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test "$module" = yes || test "$export_dynamic" = yes; then
73847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # On all known operating systems, these are identical.
73857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  dlname="$soname"
73867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
73877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      fi
73887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      ;;
73897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
73907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    obj)
73917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
73927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_warning "\`-dlopen' is ignored for objects"
73937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      fi
73947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
73957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      case " $deplibs" in
73967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      *\ -l* | *\ -L*)
73977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_warning "\`-l' and \`-L' are ignored for objects" ;;
73987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      esac
73997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
74007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      test -n "$rpath" && \
74017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_warning "\`-rpath' is ignored for objects"
74027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
74037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      test -n "$xrpath" && \
74047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_warning "\`-R' is ignored for objects"
74057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
74067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      test -n "$vinfo" && \
74077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_warning "\`-version-info' is ignored for objects"
74087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
74097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      test -n "$release" && \
74107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_warning "\`-release' is ignored for objects"
74117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
74127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      case $output in
74137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      *.lo)
74147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	test -n "$objs$old_deplibs" && \
74157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_fatal_error "cannot build library object \`$output' from non-libtool objects"
74167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
74177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	libobj=$output
74187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_lo2o "$libobj"
74197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	obj=$func_lo2o_result
74207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
74217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      *)
74227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	libobj=
74237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	obj="$output"
74247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
74257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      esac
74267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
74277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # Delete the old objects.
74287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      $opt_dry_run || $RM $obj $libobj
74297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
74307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # Objects from convenience libraries.  This assumes
74317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # single-version convenience libraries.  Whenever we create
74327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # different ones for PIC/non-PIC, this we'll have to duplicate
74337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # the extraction.
74347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      reload_conv_objs=
74357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      gentop=
74367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # reload_cmds runs $LD directly, so let us get rid of
74377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # -Wl from whole_archive_flag_spec and hope we can get by with
74387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # turning comma into space..
74397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      wl=
74407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
74417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if test -n "$convenience"; then
74427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test -n "$whole_archive_flag_spec"; then
74437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
74447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  reload_conv_objs=$reload_objs\ `$ECHO "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'`
74457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	else
74467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  gentop="$output_objdir/${obj}x"
74477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  generated="$generated $gentop"
74487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
74497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_extract_archives $gentop $convenience
74507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  reload_conv_objs="$reload_objs $func_extract_archives_result"
74517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
74527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      fi
74537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
74547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # Create the old-style object.
74557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      reload_objs="$objs$old_deplibs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
74567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
74577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      output="$obj"
74587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      func_execute_cmds "$reload_cmds" 'exit $?'
74597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
74607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # Exit if we aren't doing a library object file.
74617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if test -z "$libobj"; then
74627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test -n "$gentop"; then
74637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_show_eval '${RM}r "$gentop"'
74647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
74657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
74667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	exit $EXIT_SUCCESS
74677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      fi
74687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
74697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if test "$build_libtool_libs" != yes; then
74707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test -n "$gentop"; then
74717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_show_eval '${RM}r "$gentop"'
74727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
74737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
74747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Create an invalid libtool object if no PIC, so that we don't
74757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# accidentally link it into a program.
74767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# $show "echo timestamp > $libobj"
74777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
74787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	exit $EXIT_SUCCESS
74797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      fi
74807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
74817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if test -n "$pic_flag" || test "$pic_mode" != default; then
74827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Only do commands if we really have different PIC objects.
74837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	reload_objs="$libobjs $reload_conv_objs"
74847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	output="$libobj"
74857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_execute_cmds "$reload_cmds" 'exit $?'
74867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      fi
74877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
74887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if test -n "$gentop"; then
74897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_show_eval '${RM}r "$gentop"'
74907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      fi
74917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
74927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      exit $EXIT_SUCCESS
74937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      ;;
74947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
74957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    prog)
74967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      case $host in
74977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	*cygwin*) func_stripname '' '.exe' "$output"
74987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	          output=$func_stripname_result.exe;;
74997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      esac
75007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      test -n "$vinfo" && \
75017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_warning "\`-version-info' is ignored for programs"
75027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
75037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      test -n "$release" && \
75047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_warning "\`-release' is ignored for programs"
75057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
75067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      test "$preload" = yes \
75077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        && test "$dlopen_support" = unknown \
75087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	&& test "$dlopen_self" = unknown \
75097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	&& test "$dlopen_self_static" = unknown && \
75107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
75117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
75127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      case $host in
75137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      *-*-rhapsody* | *-*-darwin1.[012])
75147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# On Rhapsody replace the C library is the System framework
75157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
75167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
75177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
75187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      esac
75197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
75207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      case $host in
75217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      *-*-darwin*)
75227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Don't allow lazy linking, it breaks C++ global constructors
75237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# But is supposedly fixed on 10.4 or later (yay!).
75247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test "$tagname" = CXX ; then
75257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
75267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    10.[0123])
75277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      compile_command="$compile_command ${wl}-bind_at_load"
75287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      finalize_command="$finalize_command ${wl}-bind_at_load"
75297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    ;;
75307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  esac
75317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
75327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Time to change all our "foo.ltframework" stuff back to "-framework foo"
75337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
75347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
75357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
75367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      esac
75377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
75387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
75397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # move library search paths that coincide with paths to not yet
75407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # installed libraries to the beginning of the library search list
75417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      new_libs=
75427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      for path in $notinst_path; do
75437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	case " $new_libs " in
75447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	*" -L$path/$objdir "*) ;;
75457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	*)
75467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  case " $compile_deplibs " in
75477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  *" -L$path/$objdir "*)
75487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    new_libs="$new_libs -L$path/$objdir" ;;
75497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  esac
75507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
75517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	esac
75527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      done
75537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      for deplib in $compile_deplibs; do
75547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	case $deplib in
75557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	-L*)
75567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  case " $new_libs " in
75577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  *" $deplib "*) ;;
75587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  *) new_libs="$new_libs $deplib" ;;
75597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  esac
75607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
75617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	*) new_libs="$new_libs $deplib" ;;
75627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	esac
75637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      done
75647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      compile_deplibs="$new_libs"
75657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
75667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
75677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      compile_command="$compile_command $compile_deplibs"
75687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      finalize_command="$finalize_command $finalize_deplibs"
75697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
75707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if test -n "$rpath$xrpath"; then
75717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# If the user specified any rpath flags, then add them.
75727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	for libdir in $rpath $xrpath; do
75737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # This is the magic to use -rpath.
75747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  case "$finalize_rpath " in
75757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  *" $libdir "*) ;;
75767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  *) finalize_rpath="$finalize_rpath $libdir" ;;
75777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  esac
75787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	done
75797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      fi
75807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
75817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # Now hardcode the library paths
75827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      rpath=
75837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      hardcode_libdirs=
75847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      for libdir in $compile_rpath $finalize_rpath; do
75857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test -n "$hardcode_libdir_flag_spec"; then
75867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test -n "$hardcode_libdir_separator"; then
75877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    if test -z "$hardcode_libdirs"; then
75887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      hardcode_libdirs="$libdir"
75897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    else
75907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      # Just accumulate the unique libdirs.
75917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
75927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
75937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		;;
75947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      *)
75957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
75967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		;;
75977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      esac
75987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    fi
75997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  else
76007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    eval flag=\"$hardcode_libdir_flag_spec\"
76017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    rpath="$rpath $flag"
76027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
76037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	elif test -n "$runpath_var"; then
76047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  case "$perm_rpath " in
76057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  *" $libdir "*) ;;
76067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  *) perm_rpath="$perm_rpath $libdir" ;;
76077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  esac
76087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
76097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	case $host in
76107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
76117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
76127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  case :$dllsearchpath: in
76137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  *":$libdir:"*) ;;
76147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ::) dllsearchpath=$libdir;;
76157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  *) dllsearchpath="$dllsearchpath:$libdir";;
76167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  esac
76177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  case :$dllsearchpath: in
76187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  *":$testbindir:"*) ;;
76197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ::) dllsearchpath=$testbindir;;
76207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  *) dllsearchpath="$dllsearchpath:$testbindir";;
76217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  esac
76227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
76237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	esac
76247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      done
76257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # Substitute the hardcoded libdirs into the rpath.
76267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if test -n "$hardcode_libdir_separator" &&
76277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	 test -n "$hardcode_libdirs"; then
76287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	libdir="$hardcode_libdirs"
76297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	eval rpath=\" $hardcode_libdir_flag_spec\"
76307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      fi
76317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      compile_rpath="$rpath"
76327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
76337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      rpath=
76347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      hardcode_libdirs=
76357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      for libdir in $finalize_rpath; do
76367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test -n "$hardcode_libdir_flag_spec"; then
76377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test -n "$hardcode_libdir_separator"; then
76387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    if test -z "$hardcode_libdirs"; then
76397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      hardcode_libdirs="$libdir"
76407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    else
76417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      # Just accumulate the unique libdirs.
76427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
76437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
76447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		;;
76457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      *)
76467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
76477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		;;
76487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      esac
76497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    fi
76507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  else
76517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    eval flag=\"$hardcode_libdir_flag_spec\"
76527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    rpath="$rpath $flag"
76537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
76547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	elif test -n "$runpath_var"; then
76557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  case "$finalize_perm_rpath " in
76567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  *" $libdir "*) ;;
76577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
76587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  esac
76597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
76607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      done
76617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # Substitute the hardcoded libdirs into the rpath.
76627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if test -n "$hardcode_libdir_separator" &&
76637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	 test -n "$hardcode_libdirs"; then
76647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	libdir="$hardcode_libdirs"
76657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	eval rpath=\" $hardcode_libdir_flag_spec\"
76667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      fi
76677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      finalize_rpath="$rpath"
76687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
76697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if test -n "$libobjs" && test "$build_old_libs" = yes; then
76707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Transform all the library objects into standard objects.
76717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	compile_command=`$ECHO "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
76727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
76737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      fi
76747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
76757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
76767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
76777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # template prelinking step
76787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if test -n "$prelink_cmds"; then
76797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_execute_cmds "$prelink_cmds" 'exit $?'
76807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      fi
76817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
76827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      wrappers_required=yes
76837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      case $host in
76847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      *cygwin* | *mingw* )
76857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        if test "$build_libtool_libs" != yes; then
76867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet          wrappers_required=no
76877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        fi
76887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        ;;
76897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      *cegcc)
76907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        # Disable wrappers for cegcc, we are cross compiling anyway.
76917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        wrappers_required=no
76927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        ;;
76937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      *)
76947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
76957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet          wrappers_required=no
76967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        fi
76977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet        ;;
76987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      esac
76997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if test "$wrappers_required" = no; then
77007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Replace the output file specification.
77017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	compile_command=`$ECHO "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
77027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	link_command="$compile_command$compile_rpath"
77037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
77047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# We have no uninstalled library dependencies, so finalize right now.
77057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	exit_status=0
77067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_show_eval "$link_command" 'exit_status=$?'
77077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
77087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Delete the generated files.
77097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test -f "$output_objdir/${outputname}S.${objext}"; then
77107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
77117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
77127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
77137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	exit $exit_status
77147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      fi
77157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
77167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if test -n "$compile_shlibpath$finalize_shlibpath"; then
77177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
77187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      fi
77197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if test -n "$finalize_shlibpath"; then
77207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
77217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      fi
77227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
77237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      compile_var=
77247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      finalize_var=
77257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if test -n "$runpath_var"; then
77267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test -n "$perm_rpath"; then
77277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # We should set the runpath_var.
77287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  rpath=
77297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  for dir in $perm_rpath; do
77307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    rpath="$rpath$dir:"
77317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  done
77327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
77337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
77347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test -n "$finalize_perm_rpath"; then
77357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # We should set the runpath_var.
77367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  rpath=
77377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  for dir in $finalize_perm_rpath; do
77387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    rpath="$rpath$dir:"
77397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  done
77407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
77417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
77427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      fi
77437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
77447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if test "$no_install" = yes; then
77457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# We don't need to create a wrapper script.
77467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	link_command="$compile_var$compile_command$compile_rpath"
77477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Replace the output file specification.
77487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
77497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Delete the old output file.
77507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	$opt_dry_run || $RM $output
77517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Link the executable and exit
77527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_show_eval "$link_command" 'exit $?'
77537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	exit $EXIT_SUCCESS
77547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      fi
77557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
77567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if test "$hardcode_action" = relink; then
77577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Fast installation is not supported
77587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	link_command="$compile_var$compile_command$compile_rpath"
77597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	relink_command="$finalize_var$finalize_command$finalize_rpath"
77607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
77617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_warning "this platform does not like uninstalled shared libraries"
77627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_warning "\`$output' will be relinked during installation"
77637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      else
77647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test "$fast_install" != no; then
77657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  link_command="$finalize_var$compile_command$finalize_rpath"
77667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test "$fast_install" = yes; then
77677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    relink_command=`$ECHO "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
77687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  else
77697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # fast_install is set to needless
77707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    relink_command=
77717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
77727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	else
77737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  link_command="$compile_var$compile_command$compile_rpath"
77747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  relink_command="$finalize_var$finalize_command$finalize_rpath"
77757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
77767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      fi
77777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
77787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # Replace the output file specification.
77797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
77807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
77817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # Delete the old output files.
77827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
77837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
77847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      func_show_eval "$link_command" 'exit $?'
77857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
77867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # Now create the wrapper script.
77877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      func_verbose "creating $output"
77887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
77897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # Quote the relink command for shipping.
77907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if test -n "$relink_command"; then
77917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Preserve any variables that may affect compiler behavior
77927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	for var in $variables_saved_for_relink; do
77937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if eval test -z \"\${$var+set}\"; then
77947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
77957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  elif eval var_value=\$$var; test -z "$var_value"; then
77967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    relink_command="$var=; export $var; $relink_command"
77977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  else
77987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    func_quote_for_eval "$var_value"
77997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
78007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
78017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	done
78027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	relink_command="(cd `pwd`; $relink_command)"
78037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
78047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      fi
78057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
78067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # Quote $ECHO for shipping.
78077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then
78087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	case $progpath in
78097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	[\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";;
78107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	*) qecho="$SHELL `pwd`/$progpath --fallback-echo";;
78117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	esac
78127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"`
78137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      else
78147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	qecho=`$ECHO "X$ECHO" | $Xsed -e "$sed_quote_subst"`
78157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      fi
78167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
78177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # Only actually do things if not in dry run mode.
78187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      $opt_dry_run || {
78197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# win32 will think the script is a binary if it has
78207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# a .exe suffix, so we strip it off here.
78217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	case $output in
78227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  *.exe) func_stripname '' '.exe' "$output"
78237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	         output=$func_stripname_result ;;
78247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	esac
78257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# test for cygwin because mv fails w/o .exe extensions
78267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	case $host in
78277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  *cygwin*)
78287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    exeext=.exe
78297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    func_stripname '' '.exe' "$outputname"
78307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    outputname=$func_stripname_result ;;
78317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  *) exeext= ;;
78327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	esac
78337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	case $host in
78347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  *cygwin* | *mingw* )
78357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    func_dirname_and_basename "$output" "" "."
78367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    output_name=$func_basename_result
78377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    output_path=$func_dirname_result
78387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    cwrappersource="$output_path/$objdir/lt-$output_name.c"
78397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    cwrapper="$output_path/$output_name.exe"
78407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    $RM $cwrappersource $cwrapper
78417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
78427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
78437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    func_emit_cwrapperexe_src > $cwrappersource
78447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
78457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # The wrapper executable is built using the $host compiler,
78467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # because it contains $host paths and files. If cross-
78477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # compiling, it, like the target executable, must be
78487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # executed on the $host or under an emulation environment.
78497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    $opt_dry_run || {
78507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      $LTCC $LTCFLAGS -o $cwrapper $cwrappersource
78517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      $STRIP $cwrapper
78527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    }
78537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
78547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # Now, create the wrapper script for func_source use:
78557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    func_ltwrapper_scriptname $cwrapper
78567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    $RM $func_ltwrapper_scriptname_result
78577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
78587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    $opt_dry_run || {
78597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      # note: this script will not be executed, so do not chmod.
78607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      if test "x$build" = "x$host" ; then
78617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		$cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
78627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      else
78637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		func_emit_wrapper no > $func_ltwrapper_scriptname_result
78647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      fi
78657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    }
78667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
78677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  * )
78687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    $RM $output
78697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
78707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
78717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    func_emit_wrapper no > $output
78727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    chmod +x $output
78737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  ;;
78747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	esac
78757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      }
78767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      exit $EXIT_SUCCESS
78777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      ;;
78787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    esac
78797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
78807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    # See if we need to build an old-fashioned archive.
78817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    for oldlib in $oldlibs; do
78827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
78837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if test "$build_libtool_libs" = convenience; then
78847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	oldobjs="$libobjs_save $symfileobj"
78857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	addlibs="$convenience"
78867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	build_libtool_libs=no
78877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      else
78887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test "$build_libtool_libs" = module; then
78897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  oldobjs="$libobjs_save"
78907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  build_libtool_libs=no
78917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	else
78927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  oldobjs="$old_deplibs $non_pic_objects"
78937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test "$preload" = yes && test -f "$symfileobj"; then
78947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    oldobjs="$oldobjs $symfileobj"
78957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
78967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
78977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	addlibs="$old_convenience"
78987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      fi
78997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
79007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if test -n "$addlibs"; then
79017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	gentop="$output_objdir/${outputname}x"
79027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	generated="$generated $gentop"
79037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
79047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_extract_archives $gentop $addlibs
79057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	oldobjs="$oldobjs $func_extract_archives_result"
79067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      fi
79077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
79087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # Do each command in the archive commands.
79097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
79107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	cmds=$old_archive_from_new_cmds
79117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      else
79127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
79137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Add any objects from preloaded convenience libraries
79147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test -n "$dlprefiles"; then
79157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  gentop="$output_objdir/${outputname}x"
79167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  generated="$generated $gentop"
79177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
79187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_extract_archives $gentop $dlprefiles
79197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  oldobjs="$oldobjs $func_extract_archives_result"
79207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
79217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
79227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# POSIX demands no paths to be encoded in archives.  We have
79237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# to avoid creating archives with duplicate basenames if we
79247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# might have to extract them afterwards, e.g., when creating a
79257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# static archive out of a convenience library, or when linking
79267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# the entirety of a libtool archive into another (currently
79277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# not supported by libtool).
79287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if (for obj in $oldobjs
79297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    do
79307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      func_basename "$obj"
79317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      $ECHO "$func_basename_result"
79327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    done | sort | sort -uc >/dev/null 2>&1); then
79337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  :
79347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	else
79357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  $ECHO "copying selected object files to avoid basename conflicts..."
79367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  gentop="$output_objdir/${outputname}x"
79377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  generated="$generated $gentop"
79387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_mkdir_p "$gentop"
79397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  save_oldobjs=$oldobjs
79407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  oldobjs=
79417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  counter=1
79427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  for obj in $save_oldobjs
79437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  do
79447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    func_basename "$obj"
79457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    objbase="$func_basename_result"
79467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    case " $oldobjs " in
79477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    " ") oldobjs=$obj ;;
79487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    *[\ /]"$objbase "*)
79497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      while :; do
79507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		# Make sure we don't pick an alternate name that also
79517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		# overlaps.
79527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		newobj=lt$counter-$objbase
79537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		func_arith $counter + 1
79547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		counter=$func_arith_result
79557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		case " $oldobjs " in
79567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		*[\ /]"$newobj "*) ;;
79577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		*) if test ! -f "$gentop/$newobj"; then break; fi ;;
79587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		esac
79597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      done
79607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
79617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      oldobjs="$oldobjs $gentop/$newobj"
79627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      ;;
79637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    *) oldobjs="$oldobjs $obj" ;;
79647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    esac
79657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  done
79667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
79677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	eval cmds=\"$old_archive_cmds\"
79687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
79697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_len " $cmds"
79707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	len=$func_len_result
79717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
79727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  cmds=$old_archive_cmds
79737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	else
79747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # the command line is too long to link in one step, link in parts
79757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_verbose "using piecewise archive linking..."
79767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  save_RANLIB=$RANLIB
79777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  RANLIB=:
79787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  objlist=
79797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  concat_cmds=
79807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  save_oldobjs=$oldobjs
79817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  oldobjs=
79827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # Is there a better way of finding the last object in the list?
79837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  for obj in $save_oldobjs
79847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  do
79857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    last_oldobj=$obj
79867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  done
79877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  eval test_cmds=\"$old_archive_cmds\"
79887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_len " $test_cmds"
79897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  len0=$func_len_result
79907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  len=$len0
79917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  for obj in $save_oldobjs
79927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  do
79937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    func_len " $obj"
79947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    func_arith $len + $func_len_result
79957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    len=$func_arith_result
79967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    func_append objlist " $obj"
79977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    if test "$len" -lt "$max_cmd_len"; then
79987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      :
79997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    else
80007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      # the above command should be used before it gets too long
80017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      oldobjs=$objlist
80027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      if test "$obj" = "$last_oldobj" ; then
80037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		RANLIB=$save_RANLIB
80047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      fi
80057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
80067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
80077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      objlist=
80087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      len=$len0
80097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    fi
80107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  done
80117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  RANLIB=$save_RANLIB
80127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  oldobjs=$objlist
80137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test "X$oldobjs" = "X" ; then
80147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    eval cmds=\"\$concat_cmds\"
80157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  else
80167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
80177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
80187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
80197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      fi
80207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      func_execute_cmds "$cmds" 'exit $?'
80217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    done
80227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
80237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    test -n "$generated" && \
80247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      func_show_eval "${RM}r$generated"
80257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
80267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    # Now create the libtool archive.
80277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    case $output in
80287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    *.la)
80297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      old_library=
80307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      test "$build_old_libs" = yes && old_library="$libname.$libext"
80317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      func_verbose "creating $output"
80327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
80337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # Preserve any variables that may affect compiler behavior
80347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      for var in $variables_saved_for_relink; do
80357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if eval test -z \"\${$var+set}\"; then
80367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
80377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	elif eval var_value=\$$var; test -z "$var_value"; then
80387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  relink_command="$var=; export $var; $relink_command"
80397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	else
80407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_quote_for_eval "$var_value"
80417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
80427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
80437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      done
80447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # Quote the link command for shipping.
80457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
80467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
80477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if test "$hardcode_automatic" = yes ; then
80487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	relink_command=
80497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      fi
80507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
80517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # Only create the output if not a dry run.
80527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      $opt_dry_run || {
80537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	for installed in no yes; do
80547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test "$installed" = yes; then
80557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    if test -z "$install_libdir"; then
80567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      break
80577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    fi
80587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    output="$output_objdir/$outputname"i
80597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # Replace all uninstalled libtool libraries with the installed ones
80607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    newdependency_libs=
80617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    for deplib in $dependency_libs; do
80627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      case $deplib in
80637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      *.la)
80647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		func_basename "$deplib"
80657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		name="$func_basename_result"
80667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
80677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		test -z "$libdir" && \
80687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  func_fatal_error "\`$deplib' is not a valid libtool archive"
80697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		newdependency_libs="$newdependency_libs $libdir/$name"
80707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		;;
80717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      *) newdependency_libs="$newdependency_libs $deplib" ;;
80727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      esac
80737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    done
80747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    dependency_libs="$newdependency_libs"
80757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    newdlfiles=
80767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
80777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    for lib in $dlfiles; do
80787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      case $lib in
80797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      *.la)
80807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	        func_basename "$lib"
80817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		name="$func_basename_result"
80827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
80837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		test -z "$libdir" && \
80847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  func_fatal_error "\`$lib' is not a valid libtool archive"
80857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		newdlfiles="$newdlfiles $libdir/$name"
80867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		;;
80877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      *) newdlfiles="$newdlfiles $lib" ;;
80887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      esac
80897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    done
80907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    dlfiles="$newdlfiles"
80917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    newdlprefiles=
80927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    for lib in $dlprefiles; do
80937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      case $lib in
80947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      *.la)
80957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		# Only pass preopened files to the pseudo-archive (for
80967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		# eventual linking with the app. that links it) if we
80977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		# didn't already link the preopened objects directly into
80987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		# the library:
80997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		func_basename "$lib"
81007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		name="$func_basename_result"
81017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
81027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		test -z "$libdir" && \
81037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		  func_fatal_error "\`$lib' is not a valid libtool archive"
81047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		newdlprefiles="$newdlprefiles $libdir/$name"
81057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		;;
81067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      esac
81077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    done
81087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    dlprefiles="$newdlprefiles"
81097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  else
81107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    newdlfiles=
81117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    for lib in $dlfiles; do
81127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      case $lib in
81137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
81147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		*) abs=`pwd`"/$lib" ;;
81157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      esac
81167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      newdlfiles="$newdlfiles $abs"
81177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    done
81187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    dlfiles="$newdlfiles"
81197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    newdlprefiles=
81207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    for lib in $dlprefiles; do
81217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      case $lib in
81227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
81237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet		*) abs=`pwd`"/$lib" ;;
81247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      esac
81257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      newdlprefiles="$newdlprefiles $abs"
81267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    done
81277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    dlprefiles="$newdlprefiles"
81287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
81297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  $RM $output
81307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # place dlname in correct position for cygwin
81317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  tdlname=$dlname
81327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  case $host,$output,$installed,$module,$dlname in
81337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
81347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  esac
81357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  $ECHO > $output "\
81367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# $outputname - a libtool library file
81377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
81387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet#
81397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Please DO NOT delete this file!
81407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# It is necessary for linking the library.
81417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
81427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# The name that we can dlopen(3).
81437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetdlname='$tdlname'
81447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
81457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Names of this library.
81467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetlibrary_names='$library_names'
81477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
81487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# The name of the static archive.
81497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetold_library='$old_library'
81507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
81517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Linker flags that can not go in dependency_libs.
81527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetinherited_linker_flags='$new_inherited_linker_flags'
81537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
81547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Libraries that this one depends upon.
81557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetdependency_libs='$dependency_libs'
81567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
81577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Names of additional weak libraries provided by this library
81587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetweak_library_names='$weak_libs'
81597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
81607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Version information for $libname.
81617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetcurrent=$current
81627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetage=$age
81637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetrevision=$revision
81647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
81657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Is this an already installed library?
81667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetinstalled=$installed
81677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
81687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Should we warn about portability when linking against -modules?
81697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetshouldnotlink=$module
81707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
81717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Files to dlopen/dlpreopen
81727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetdlopen='$dlfiles'
81737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetdlpreopen='$dlprefiles'
81747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
81757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Directory that this library needs to be installed in:
81767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetlibdir='$install_libdir'"
81777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test "$installed" = no && test "$need_relink" = yes; then
81787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    $ECHO >> $output "\
81797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetrelink_command=\"$relink_command\""
81807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
81817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	done
81827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      }
81837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
81847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # Do a symbolic link so that the libtool archive can be found in
81857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # LD_LIBRARY_PATH before the program is installed.
81867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
81877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      ;;
81887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    esac
81897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    exit $EXIT_SUCCESS
81907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
81917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
81927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ test "$mode" = link || test "$mode" = relink; } &&
81937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    func_mode_link ${1+"$@"}
81947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
81957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
81967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# func_mode_uninstall arg...
81977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfunc_mode_uninstall ()
81987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{
81997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    $opt_debug
82007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    RM="$nonopt"
82017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    files=
82027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    rmforce=
82037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    exit_status=0
82047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
82057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    # This variable tells wrapper scripts just to set variables rather
82067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    # than running their programs.
82077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    libtool_install_magic="$magic"
82087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
82097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    for arg
82107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    do
82117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      case $arg in
82127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      -f) RM="$RM $arg"; rmforce=yes ;;
82137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      -*) RM="$RM $arg" ;;
82147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      *) files="$files $arg" ;;
82157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      esac
82167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    done
82177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
82187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    test -z "$RM" && \
82197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      func_fatal_help "you must specify an RM program"
82207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
82217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    rmdirs=
82227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
82237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    origobjdir="$objdir"
82247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    for file in $files; do
82257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      func_dirname "$file" "" "."
82267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      dir="$func_dirname_result"
82277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if test "X$dir" = X.; then
82287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	objdir="$origobjdir"
82297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      else
82307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	objdir="$dir/$origobjdir"
82317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      fi
82327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      func_basename "$file"
82337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      name="$func_basename_result"
82347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      test "$mode" = uninstall && objdir="$dir"
82357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
82367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # Remember objdir for removal later, being careful to avoid duplicates
82377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if test "$mode" = clean; then
82387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	case " $rmdirs " in
82397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  *" $objdir "*) ;;
82407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  *) rmdirs="$rmdirs $objdir" ;;
82417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	esac
82427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      fi
82437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
82447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      # Don't error if the file doesn't exist and rm -f was used.
82457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if { test -L "$file"; } >/dev/null 2>&1 ||
82467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	 { test -h "$file"; } >/dev/null 2>&1 ||
82477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	 test -f "$file"; then
82487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	:
82497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      elif test -d "$file"; then
82507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	exit_status=1
82517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	continue
82527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      elif test "$rmforce" = yes; then
82537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	continue
82547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      fi
82557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
82567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      rmfiles="$file"
82577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
82587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      case $name in
82597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      *.la)
82607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Possibly a libtool archive, so verify it.
82617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if func_lalib_p "$file"; then
82627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_source $dir/$name
82637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
82647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # Delete the libtool libraries and symlinks.
82657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  for n in $library_names; do
82667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    rmfiles="$rmfiles $objdir/$n"
82677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  done
82687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
82697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
82707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  case "$mode" in
82717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  clean)
82727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    case "  $library_names " in
82737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # "  " in the beginning catches empty $dlname
82747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    *" $dlname "*) ;;
82757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    *) rmfiles="$rmfiles $objdir/$dlname" ;;
82767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    esac
82777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
82787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    ;;
82797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  uninstall)
82807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    if test -n "$library_names"; then
82817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      # Do each command in the postuninstall commands.
82827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
82837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    fi
82847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
82857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    if test -n "$old_library"; then
82867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      # Do each command in the old_postuninstall commands.
82877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
82887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    fi
82897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # FIXME: should reinstall the best remaining shared library.
82907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    ;;
82917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  esac
82927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
82937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
82947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
82957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      *.lo)
82967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	# Possibly a libtool object, so verify it.
82977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if func_lalib_p "$file"; then
82987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
82997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # Read the .lo file
83007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  func_source $dir/$name
83017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
83027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # Add PIC object to the list of files to remove.
83037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test -n "$pic_object" &&
83047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	     test "$pic_object" != none; then
83057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    rmfiles="$rmfiles $dir/$pic_object"
83067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
83077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
83087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # Add non-PIC object to the list of files to remove.
83097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if test -n "$non_pic_object" &&
83107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	     test "$non_pic_object" != none; then
83117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    rmfiles="$rmfiles $dir/$non_pic_object"
83127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
83137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
83147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
83157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
83167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      *)
83177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	if test "$mode" = clean ; then
83187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  noexename=$name
83197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  case $file in
83207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  *.exe)
83217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    func_stripname '' '.exe' "$file"
83227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    file=$func_stripname_result
83237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    func_stripname '' '.exe' "$name"
83247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    noexename=$func_stripname_result
83257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # $file with .exe has already been added to rmfiles,
83267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # add $file without .exe
83277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    rmfiles="$rmfiles $file"
83287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    ;;
83297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  esac
83307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  # Do a test to see if this is a libtool program.
83317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  if func_ltwrapper_p "$file"; then
83327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    if func_ltwrapper_executable_p "$file"; then
83337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      func_ltwrapper_scriptname "$file"
83347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      relink_command=
83357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      func_source $func_ltwrapper_scriptname_result
83367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      rmfiles="$rmfiles $func_ltwrapper_scriptname_result"
83377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    else
83387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      relink_command=
83397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      func_source $dir/$noexename
83407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    fi
83417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
83427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # note $name still contains .exe if it was in $file originally
83437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    # as does the version of $file that was added into $rmfiles
83447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
83457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    if test "$fast_install" = yes && test -n "$relink_command"; then
83467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      rmfiles="$rmfiles $objdir/lt-$name"
83477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    fi
83487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    if test "X$noexename" != "X$name" ; then
83497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	      rmfiles="$rmfiles $objdir/lt-${noexename}.c"
83507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	    fi
83517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	  fi
83527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	fi
83537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	;;
83547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      esac
83557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      func_show_eval "$RM $rmfiles" 'exit_status=1'
83567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    done
83577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    objdir="$origobjdir"
83587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
83597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    # Try to remove the ${objdir}s in the directories where we deleted files
83607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    for dir in $rmdirs; do
83617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      if test -d "$dir"; then
83627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet	func_show_eval "rmdir $dir >/dev/null 2>&1"
83637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      fi
83647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    done
83657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
83667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    exit $exit_status
83677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
83687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
83697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet{ test "$mode" = uninstall || test "$mode" = clean; } &&
83707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    func_mode_uninstall ${1+"$@"}
83717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
83727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichettest -z "$mode" && {
83737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  help="$generic_help"
83747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  func_fatal_help "you must specify a MODE"
83757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
83767c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
83777c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichettest -z "$exec_cmd" && \
83787c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  func_fatal_help "invalid operation mode \`$mode'"
83797c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
83807c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetif test -n "$exec_cmd"; then
83817c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  eval exec "$exec_cmd"
83827c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  exit $EXIT_FAILURE
83837c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetfi
83847c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
83857c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetexit $exit_status
83867c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
83877c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
83887c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# The TAGs below are defined such that we never get into a situation
83897c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# in which we disable both kinds of libraries.  Given conflicting
83907c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# choices, we go for a static library, that is the most portable,
83917c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# since we can't tell whether shared libraries were disabled because
83927c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# the user asked for that or because the platform doesn't support
83937c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# them.  This is particularly important on AIX, because we don't
83947c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# support having both static and shared libraries enabled at the same
83957c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# time on that platform, so we default to a shared-only configuration.
83967c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# If a disable-shared tag is given, we'll fallback to a static-only
83977c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# configuration.  But we'll never go from static-only to shared-only.
83987c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
83997c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
84007c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetbuild_libtool_libs=no
84017c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetbuild_old_libs=yes
84027c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# ### END LIBTOOL TAG CONFIG: disable-shared
84037c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
84047c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# ### BEGIN LIBTOOL TAG CONFIG: disable-static
84057c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetbuild_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
84067c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# ### END LIBTOOL TAG CONFIG: disable-static
84077c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
84087c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# Local Variables:
84097c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# mode:shell-script
84107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# sh-indentation:2
84117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# End:
84127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet# vi:sw=2
84137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
8414