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