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