1#! /bin/bash 2# Generated automatically by config.status () 3# NOTE: Changes made to this file will be lost: look at ltmain.sh. 4 5# Provide generalized library-building support services. 6# Written by Gordon Matzigkeit, 1996 7 8# Copyright (C) 2014 Free Software Foundation, Inc. 9# This is free software; see the source for copying conditions. There is NO 10# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 11 12# GNU Libtool is free software; you can redistribute it and/or modify 13# it under the terms of the GNU General Public License as published by 14# the Free Software Foundation; either version 2 of of the License, or 15# (at your option) any later version. 16# 17# As a special exception to the GNU General Public License, if you 18# distribute this file as part of a program or library that is built 19# using GNU Libtool, you may include this file under the same 20# distribution terms that you use for the rest of that program. 21# 22# GNU Libtool is distributed in the hope that it will be useful, but 23# WITHOUT ANY WARRANTY; without even the implied warranty of 24# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 25# GNU General Public License for more details. 26# 27# You should have received a copy of the GNU General Public License 28# along with this program. If not, see <http://www.gnu.org/licenses/>. 29 30 31# The names of the tagged configurations supported by this script. 32available_tags='CXX ' 33 34# Configured defaults for sys_lib_dlsearch_path munging. 35: ${LT_SYS_LIBRARY_PATH=""} 36 37# ### BEGIN LIBTOOL CONFIG 38 39# Which release of libtool.m4 was used? 40macro_version=2.4.6 41macro_revision=2.4.6 42 43# Whether or not to build shared libraries. 44build_libtool_libs=yes 45 46# Whether or not to build static libraries. 47build_old_libs=yes 48 49# What type of objects to build. 50pic_mode=default 51 52# Whether or not to optimize for fast installation. 53fast_install=needless 54 55# Shared archive member basename,for filename based shared library versioning on AIX. 56shared_archive_member_spec= 57 58# Shell to use when invoking shell scripts. 59SHELL="/bin/bash" 60 61# An echo program that protects backslashes. 62ECHO="printf %s\\n" 63 64# The PATH separator for the build system. 65PATH_SEPARATOR=":" 66 67# The host system. 68host_alias= 69host=x86_64-pc-linux-gnu 70host_os=linux-gnu 71 72# The build system. 73build_alias= 74build=x86_64-pc-linux-gnu 75build_os=linux-gnu 76 77# A sed program that does not truncate output. 78SED="/bin/sed" 79 80# Sed that helps us avoid accidentally triggering echo(1) options like -n. 81Xsed="$SED -e 1s/^X//" 82 83# A grep program that handles long lines. 84GREP="/bin/grep" 85 86# An ERE matcher. 87EGREP="/bin/grep -E" 88 89# A literal string matcher. 90FGREP="/bin/grep -F" 91 92# A BSD- or MS-compatible name lister. 93NM="/usr/bin/nm -B" 94 95# Whether we need soft or hard links. 96LN_S="ln -s" 97 98# What is the maximum length of a command? 99max_cmd_len=1572864 100 101# Object file suffix (normally "o"). 102objext=o 103 104# Executable file suffix (normally ""). 105exeext= 106 107# whether the shell understands "unset". 108lt_unset=unset 109 110# turn spaces into newlines. 111SP2NL="tr \\040 \\012" 112 113# turn newlines into spaces. 114NL2SP="tr \\015\\012 \\040\\040" 115 116# convert $build file names to $host format. 117to_host_file_cmd=func_convert_file_noop 118 119# convert $build files to toolchain format. 120to_tool_file_cmd=func_convert_file_noop 121 122# An object symbol dumper. 123OBJDUMP="objdump" 124 125# Method to check whether dependent libraries are shared objects. 126deplibs_check_method="pass_all" 127 128# Command to use when deplibs_check_method = "file_magic". 129file_magic_cmd="\$MAGIC_CMD" 130 131# How to find potential files when deplibs_check_method = "file_magic". 132file_magic_glob="" 133 134# Find potential files using nocaseglob when deplibs_check_method = "file_magic". 135want_nocaseglob="no" 136 137# DLL creation program. 138DLLTOOL="false" 139 140# Command to associate shared and link libraries. 141sharedlib_from_linklib_cmd="printf %s\\n" 142 143# The archiver. 144AR="ar" 145 146# Flags to create an archive. 147AR_FLAGS="cr" 148 149# How to feed a file listing to the archiver. 150archiver_list_spec="@" 151 152# A symbol stripping program. 153STRIP="strip" 154 155# Commands used to install an old-style archive. 156RANLIB="ranlib" 157old_postinstall_cmds="chmod 644 \$oldlib~\$RANLIB \$tool_oldlib" 158old_postuninstall_cmds="" 159 160# Whether to use a lock for old archive extraction. 161lock_old_archive_extraction=no 162 163# A C compiler. 164LTCC="gcc" 165 166# LTCC compiler flags. 167LTCFLAGS="-std=gnu99 -g -O2 -fno-math-errno -fno-signed-zeros -Wall" 168 169# Take the output of nm and produce a listing of raw symbols and C names. 170global_symbol_pipe="sed -n -e 's/^.*[ ]\\([ABCDGIRSTW][ABCDGIRSTW]*\\)[ ][ ]*\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1 \\2 \\2/p' | sed '/ __gnu_lto/d'" 171 172# Transform the output of nm in a proper C declaration. 173global_symbol_to_cdecl="sed -n -e 's/^T .* \\(.*\\)\$/extern int \\1();/p' -e 's/^[ABCDGIRSTW][ABCDGIRSTW]* .* \\(.*\\)\$/extern char \\1;/p'" 174 175# Transform the output of nm into a list of symbols to manually relocate. 176global_symbol_to_import="" 177 178# Transform the output of nm in a C name address pair. 179global_symbol_to_c_name_address="sed -n -e 's/^: \\(.*\\) .*\$/ {\"\\1\", (void *) 0},/p' -e 's/^[ABCDGIRSTW][ABCDGIRSTW]* .* \\(.*\\)\$/ {\"\\1\", (void *) \\&\\1},/p'" 180 181# Transform the output of nm in a C name address pair when lib prefix is needed. 182global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \\(.*\\) .*\$/ {\"\\1\", (void *) 0},/p' -e 's/^[ABCDGIRSTW][ABCDGIRSTW]* .* \\(lib.*\\)\$/ {\"\\1\", (void *) \\&\\1},/p' -e 's/^[ABCDGIRSTW][ABCDGIRSTW]* .* \\(.*\\)\$/ {\"lib\\1\", (void *) \\&\\1},/p'" 183 184# The name lister interface. 185nm_interface="BSD nm" 186 187# Specify filename containing input files for $NM. 188nm_file_list_spec="@" 189 190# The root where to search for dependent libraries,and where our libraries should be installed. 191lt_sysroot= 192 193# Command to truncate a binary pipe. 194lt_truncate_bin="/bin/dd bs=4096 count=1" 195 196# The name of the directory that contains temporary libtool files. 197objdir=.libs 198 199# Used to examine libraries when file_magic_cmd begins with "file". 200MAGIC_CMD=file 201 202# Must we lock files when doing compilation? 203need_locks="no" 204 205# Manifest tool. 206MANIFEST_TOOL=":" 207 208# Tool to manipulate archived DWARF debug symbol files on Mac OS X. 209DSYMUTIL="" 210 211# Tool to change global to local symbols on Mac OS X. 212NMEDIT="" 213 214# Tool to manipulate fat objects and archives on Mac OS X. 215LIPO="" 216 217# ldd/readelf like tool for Mach-O binaries on Mac OS X. 218OTOOL="" 219 220# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. 221OTOOL64="" 222 223# Old archive suffix (normally "a"). 224libext=a 225 226# Shared library suffix (normally ".so"). 227shrext_cmds=".so" 228 229# The commands to extract the exported symbol list from a shared archive. 230extract_expsyms_cmds="" 231 232# Variables whose values should be saved in libtool wrapper scripts and 233# restored at link time. 234variables_saved_for_relink="PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" 235 236# Do we need the "lib" prefix for modules? 237need_lib_prefix=no 238 239# Do we need a version for libraries? 240need_version=no 241 242# Library versioning type. 243version_type=linux 244 245# Shared library runtime path variable. 246runpath_var=LD_RUN_PATH 247 248# Shared library path variable. 249shlibpath_var=LD_LIBRARY_PATH 250 251# Is shlibpath searched before the hard-coded library search path? 252shlibpath_overrides_runpath=yes 253 254# Format of library name prefix. 255libname_spec="lib\$name" 256 257# List of archive names. First name is the real one, the rest are links. 258# The last name is the one that the linker finds with -lNAME 259library_names_spec="\$libname\$release\$shared_ext\$versuffix \$libname\$release\$shared_ext\$major \$libname\$shared_ext" 260 261# The coded name of the library, if different from the real name. 262soname_spec="\$libname\$release\$shared_ext\$major" 263 264# Permission mode override for installation of shared libraries. 265install_override_mode="" 266 267# Command to use after installation of a shared archive. 268postinstall_cmds="" 269 270# Command to use after uninstallation of a shared archive. 271postuninstall_cmds="" 272 273# Commands used to finish a libtool library installation in a directory. 274finish_cmds="PATH=\\\"\\\$PATH:/sbin\\\" ldconfig -n \$libdir" 275 276# As "finish_cmds", except a single script fragment to be evaled but 277# not shown. 278finish_eval="" 279 280# Whether we should hardcode library paths into libraries. 281hardcode_into_libs=yes 282 283# Compile-time system search path for libraries. 284sys_lib_search_path_spec="/usr/lib/gcc/x86_64-linux-gnu/10 /usr/lib/x86_64-linux-gnu /usr/lib /lib/x86_64-linux-gnu /lib " 285 286# Detected run-time system search path for libraries. 287sys_lib_dlsearch_path_spec="/lib /usr/lib /usr/lib/x86_64-linux-gnu/libfakeroot /usr/local/lib /usr/local/lib/x86_64-linux-gnu /lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu " 288 289# Explicit LT_SYS_LIBRARY_PATH set during ./configure time. 290configure_time_lt_sys_library_path="" 291 292# Whether dlopen is supported. 293dlopen_support=unknown 294 295# Whether dlopen of programs is supported. 296dlopen_self=unknown 297 298# Whether dlopen of statically linked programs is supported. 299dlopen_self_static=unknown 300 301# Commands to strip libraries. 302old_striplib="strip --strip-debug" 303striplib="strip --strip-unneeded" 304 305 306# The linker used to build libraries. 307LD="/usr/bin/ld -m elf_x86_64" 308 309# How to create reloadable object files. 310reload_flag=" -r" 311reload_cmds="\$LD\$reload_flag -o \$output\$reload_objs" 312 313# Commands used to build an old-style archive. 314old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs~\$RANLIB \$tool_oldlib" 315 316# A language specific compiler. 317CC="gcc" 318 319# Is the compiler the GNU compiler? 320with_gcc=yes 321 322# Compiler flag to turn off builtin functions. 323no_builtin_flag=" -fno-builtin" 324 325# Additional compiler flags for building library objects. 326pic_flag=" -fPIC -DPIC" 327 328# How to pass a linker flag through the compiler. 329wl="-Wl," 330 331# Compiler flag to prevent dynamic linking. 332link_static_flag="-static" 333 334# Does compiler simultaneously support -c and -o options? 335compiler_c_o="yes" 336 337# Whether or not to add -lc for building shared libraries. 338build_libtool_need_lc=no 339 340# Whether or not to disallow shared libs when runtime libs are static. 341allow_libtool_libs_with_static_runtimes=no 342 343# Compiler flag to allow reflexive dlopens. 344export_dynamic_flag_spec="\$wl--export-dynamic" 345 346# Compiler flag to generate shared objects directly from archives. 347whole_archive_flag_spec="\$wl--whole-archive\$convenience \$wl--no-whole-archive" 348 349# Whether the compiler copes with passing no objects directly. 350compiler_needs_object="no" 351 352# Create an old-style archive from a shared archive. 353old_archive_from_new_cmds="" 354 355# Create a temporary old-style archive to link instead of a shared archive. 356old_archive_from_expsyms_cmds="" 357 358# Commands used to build a shared archive. 359archive_cmds="\$CC -shared \$pic_flag \$libobjs \$deplibs \$compiler_flags \$wl-soname \$wl\$soname -o \$lib" 360archive_expsym_cmds="echo \\\"{ global:\\\" > \$output_objdir/\$libname.ver~ 361 cat \$export_symbols | sed -e \\\"s/\\\\(.*\\\\)/\\\\1;/\\\" >> \$output_objdir/\$libname.ver~ 362 echo \\\"local: *; };\\\" >> \$output_objdir/\$libname.ver~ 363 \$CC -shared \$pic_flag \$libobjs \$deplibs \$compiler_flags \$wl-soname \$wl\$soname \$wl-version-script \$wl\$output_objdir/\$libname.ver -o \$lib" 364 365# Commands used to build a loadable module if different from building 366# a shared archive. 367module_cmds="" 368module_expsym_cmds="" 369 370# Whether we are building with GNU ld or not. 371with_gnu_ld="yes" 372 373# Flag that allows shared libraries with undefined symbols to be built. 374allow_undefined_flag="" 375 376# Flag that enforces no undefined symbols. 377no_undefined_flag="" 378 379# Flag to hardcode $libdir into a binary during linking. 380# This must work even if $libdir does not exist 381hardcode_libdir_flag_spec="\$wl-rpath \$wl\$libdir" 382 383# Whether we need a single "-rpath" flag with a separated argument. 384hardcode_libdir_separator="" 385 386# Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes 387# DIR into the resulting binary. 388hardcode_direct=no 389 390# Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes 391# DIR into the resulting binary and the resulting library dependency is 392# "absolute",i.e impossible to change by setting $shlibpath_var if the 393# library is relocated. 394hardcode_direct_absolute=no 395 396# Set to "yes" if using the -LDIR flag during linking hardcodes DIR 397# into the resulting binary. 398hardcode_minus_L=no 399 400# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR 401# into the resulting binary. 402hardcode_shlibpath_var=unsupported 403 404# Set to "yes" if building a shared library automatically hardcodes DIR 405# into the library and all subsequent libraries and executables linked 406# against it. 407hardcode_automatic=no 408 409# Set to yes if linker adds runtime paths of dependent libraries 410# to runtime path list. 411inherit_rpath=no 412 413# Whether libtool must link a program against all its dependency libraries. 414link_all_deplibs=no 415 416# Set to "yes" if exported symbols are required. 417always_export_symbols=no 418 419# The commands to list exported symbols. 420export_symbols_cmds="\$NM \$libobjs \$convenience | \$global_symbol_pipe | \$SED 's/.* //' | sort | uniq > \$export_symbols" 421 422# Symbols that should not be listed in the preloaded symbols. 423exclude_expsyms="_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*" 424 425# Symbols that must always be exported. 426include_expsyms="" 427 428# Commands necessary for linking programs (against libraries) with templates. 429prelink_cmds="" 430 431# Commands necessary for finishing linking programs. 432postlink_cmds="" 433 434# Specify filename containing input files. 435file_list_spec="" 436 437# How to hardcode a shared library path into an executable. 438hardcode_action=immediate 439 440# The directories searched by this compiler when creating a shared library. 441compiler_lib_search_dirs="" 442 443# Dependencies to place before and after the objects being linked to 444# create a shared library. 445predep_objects="" 446postdep_objects="" 447predeps="" 448postdeps="" 449 450# The library search path used internally by the compiler when linking 451# a shared library. 452compiler_lib_search_path="" 453 454# ### END LIBTOOL CONFIG 455 456 457# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE 458 459# func_munge_path_list VARIABLE PATH 460# ----------------------------------- 461# VARIABLE is name of variable containing _space_ separated list of 462# directories to be munged by the contents of PATH, which is string 463# having a format: 464# "DIR[:DIR]:" 465# string "DIR[ DIR]" will be prepended to VARIABLE 466# ":DIR[:DIR]" 467# string "DIR[ DIR]" will be appended to VARIABLE 468# "DIRP[:DIRP]::[DIRA:]DIRA" 469# string "DIRP[ DIRP]" will be prepended to VARIABLE and string 470# "DIRA[ DIRA]" will be appended to VARIABLE 471# "DIR[:DIR]" 472# VARIABLE will be replaced by "DIR[ DIR]" 473func_munge_path_list () 474{ 475 case x$2 in 476 x) 477 ;; 478 *:) 479 eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" 480 ;; 481 x:*) 482 eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" 483 ;; 484 *::*) 485 eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" 486 eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" 487 ;; 488 *) 489 eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" 490 ;; 491 esac 492} 493 494 495# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. 496func_cc_basename () 497{ 498 for cc_temp in $*""; do 499 case $cc_temp in 500 compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; 501 distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; 502 \-*) ;; 503 *) break;; 504 esac 505 done 506 func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` 507} 508 509 510# ### END FUNCTIONS SHARED WITH CONFIGURE 511 512#! /bin/sh 513## DO NOT EDIT - This file generated from ./build-aux/ltmain.in 514## by inline-source v2014-01-03.01 515 516# libtool (GNU libtool) 2.4.6 517# Provide generalized library-building support services. 518# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 519 520# Copyright (C) 1996-2015 Free Software Foundation, Inc. 521# This is free software; see the source for copying conditions. There is NO 522# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 523 524# GNU Libtool is free software; you can redistribute it and/or modify 525# it under the terms of the GNU General Public License as published by 526# the Free Software Foundation; either version 2 of the License, or 527# (at your option) any later version. 528# 529# As a special exception to the GNU General Public License, 530# if you distribute this file as part of a program or library that 531# is built using GNU Libtool, you may include this file under the 532# same distribution terms that you use for the rest of that program. 533# 534# GNU Libtool is distributed in the hope that it will be useful, but 535# WITHOUT ANY WARRANTY; without even the implied warranty of 536# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 537# General Public License for more details. 538# 539# You should have received a copy of the GNU General Public License 540# along with this program. If not, see <http://www.gnu.org/licenses/>. 541 542 543PROGRAM=libtool 544PACKAGE=libtool 545VERSION="2.4.6 Debian-2.4.6-15" 546package_revision=2.4.6 547 548 549## ------ ## 550## Usage. ## 551## ------ ## 552 553# Run './libtool --help' for help with using this script from the 554# command line. 555 556 557## ------------------------------- ## 558## User overridable command paths. ## 559## ------------------------------- ## 560 561# After configure completes, it has a better idea of some of the 562# shell tools we need than the defaults used by the functions shared 563# with bootstrap, so set those here where they can still be over- 564# ridden by the user, but otherwise take precedence. 565 566: ${AUTOCONF="autoconf"} 567: ${AUTOMAKE="automake"} 568 569 570## -------------------------- ## 571## Source external libraries. ## 572## -------------------------- ## 573 574# Much of our low-level functionality needs to be sourced from external 575# libraries, which are installed to $pkgauxdir. 576 577# Set a version string for this script. 578scriptversion=2015-01-20.17; # UTC 579 580# General shell script boiler plate, and helper functions. 581# Written by Gary V. Vaughan, 2004 582 583# Copyright (C) 2004-2015 Free Software Foundation, Inc. 584# This is free software; see the source for copying conditions. There is NO 585# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 586 587# This program is free software; you can redistribute it and/or modify 588# it under the terms of the GNU General Public License as published by 589# the Free Software Foundation; either version 3 of the License, or 590# (at your option) any later version. 591 592# As a special exception to the GNU General Public License, if you distribute 593# this file as part of a program or library that is built using GNU Libtool, 594# you may include this file under the same distribution terms that you use 595# for the rest of that program. 596 597# This program is distributed in the hope that it will be useful, 598# but WITHOUT ANY WARRANTY; without even the implied warranty of 599# MERCHANTABILITY or FITNES FOR A PARTICULAR PURPOSE. See the GNU 600# General Public License for more details. 601 602# You should have received a copy of the GNU General Public License 603# along with this program. If not, see <http://www.gnu.org/licenses/>. 604 605# Please report bugs or propose patches to gary@gnu.org. 606 607 608## ------ ## 609## Usage. ## 610## ------ ## 611 612# Evaluate this file near the top of your script to gain access to 613# the functions and variables defined here: 614# 615# . `echo "$0" | ${SED-sed} 's|[^/]*$||'`/build-aux/funclib.sh 616# 617# If you need to override any of the default environment variable 618# settings, do that before evaluating this file. 619 620 621## -------------------- ## 622## Shell normalisation. ## 623## -------------------- ## 624 625# Some shells need a little help to be as Bourne compatible as possible. 626# Before doing anything else, make sure all that help has been provided! 627 628DUALCASE=1; export DUALCASE # for MKS sh 629if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : 630 emulate sh 631 NULLCMD=: 632 # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which 633 # is contrary to our usage. Disable this feature. 634 alias -g '${1+"$@"}'='"$@"' 635 setopt NO_GLOB_SUBST 636else 637 case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac 638fi 639 640# NLS nuisances: We save the old values in case they are required later. 641_G_user_locale= 642_G_safe_locale= 643for _G_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 644do 645 eval "if test set = \"\${$_G_var+set}\"; then 646 save_$_G_var=\$$_G_var 647 $_G_var=C 648 export $_G_var 649 _G_user_locale=\"$_G_var=\\\$save_\$_G_var; \$_G_user_locale\" 650 _G_safe_locale=\"$_G_var=C; \$_G_safe_locale\" 651 fi" 652done 653 654# CDPATH. 655(unset CDPATH) >/dev/null 2>&1 && unset CDPATH 656 657# Make sure IFS has a sensible default 658sp=' ' 659nl=' 660' 661IFS="$sp $nl" 662 663# There are apparently some retarded systems that use ';' as a PATH separator! 664if test "${PATH_SEPARATOR+set}" != set; then 665 PATH_SEPARATOR=: 666 (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { 667 (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || 668 PATH_SEPARATOR=';' 669 } 670fi 671 672 673 674## ------------------------- ## 675## Locate command utilities. ## 676## ------------------------- ## 677 678 679# func_executable_p FILE 680# ---------------------- 681# Check that FILE is an executable regular file. 682func_executable_p () 683{ 684 test -f "$1" && test -x "$1" 685} 686 687 688# func_path_progs PROGS_LIST CHECK_FUNC [PATH] 689# -------------------------------------------- 690# Search for either a program that responds to --version with output 691# containing "GNU", or else returned by CHECK_FUNC otherwise, by 692# trying all the directories in PATH with each of the elements of 693# PROGS_LIST. 694# 695# CHECK_FUNC should accept the path to a candidate program, and 696# set $func_check_prog_result if it truncates its output less than 697# $_G_path_prog_max characters. 698func_path_progs () 699{ 700 _G_progs_list=$1 701 _G_check_func=$2 702 _G_PATH=${3-"$PATH"} 703 704 _G_path_prog_max=0 705 _G_path_prog_found=false 706 _G_save_IFS=$IFS; IFS=${PATH_SEPARATOR-:} 707 for _G_dir in $_G_PATH; do 708 IFS=$_G_save_IFS 709 test -z "$_G_dir" && _G_dir=. 710 for _G_prog_name in $_G_progs_list; do 711 for _exeext in '' .EXE; do 712 _G_path_prog=$_G_dir/$_G_prog_name$_exeext 713 func_executable_p "$_G_path_prog" || continue 714 case `"$_G_path_prog" --version 2>&1` in 715 *GNU*) func_path_progs_result=$_G_path_prog _G_path_prog_found=: ;; 716 *) $_G_check_func $_G_path_prog 717 func_path_progs_result=$func_check_prog_result 718 ;; 719 esac 720 $_G_path_prog_found && break 3 721 done 722 done 723 done 724 IFS=$_G_save_IFS 725 test -z "$func_path_progs_result" && { 726 echo "no acceptable sed could be found in \$PATH" >&2 727 exit 1 728 } 729} 730 731 732# We want to be able to use the functions in this file before configure 733# has figured out where the best binaries are kept, which means we have 734# to search for them ourselves - except when the results are already set 735# where we skip the searches. 736 737# Unless the user overrides by setting SED, search the path for either GNU 738# sed, or the sed that truncates its output the least. 739test -z "$SED" && { 740 _G_sed_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ 741 for _G_i in 1 2 3 4 5 6 7; do 742 _G_sed_script=$_G_sed_script$nl$_G_sed_script 743 done 744 echo "$_G_sed_script" 2>/dev/null | sed 99q >conftest.sed 745 _G_sed_script= 746 747 func_check_prog_sed () 748 { 749 _G_path_prog=$1 750 751 _G_count=0 752 printf 0123456789 >conftest.in 753 while : 754 do 755 cat conftest.in conftest.in >conftest.tmp 756 mv conftest.tmp conftest.in 757 cp conftest.in conftest.nl 758 echo '' >> conftest.nl 759 "$_G_path_prog" -f conftest.sed <conftest.nl >conftest.out 2>/dev/null || break 760 diff conftest.out conftest.nl >/dev/null 2>&1 || break 761 _G_count=`expr $_G_count + 1` 762 if test "$_G_count" -gt "$_G_path_prog_max"; then 763 # Best one so far, save it but keep looking for a better one 764 func_check_prog_result=$_G_path_prog 765 _G_path_prog_max=$_G_count 766 fi 767 # 10*(2^10) chars as input seems more than enough 768 test 10 -lt "$_G_count" && break 769 done 770 rm -f conftest.in conftest.tmp conftest.nl conftest.out 771 } 772 773 func_path_progs "sed gsed" func_check_prog_sed $PATH:/usr/xpg4/bin 774 rm -f conftest.sed 775 SED=$func_path_progs_result 776} 777 778 779# Unless the user overrides by setting GREP, search the path for either GNU 780# grep, or the grep that truncates its output the least. 781test -z "$GREP" && { 782 func_check_prog_grep () 783 { 784 _G_path_prog=$1 785 786 _G_count=0 787 _G_path_prog_max=0 788 printf 0123456789 >conftest.in 789 while : 790 do 791 cat conftest.in conftest.in >conftest.tmp 792 mv conftest.tmp conftest.in 793 cp conftest.in conftest.nl 794 echo 'GREP' >> conftest.nl 795 "$_G_path_prog" -e 'GREP$' -e '-(cannot match)-' <conftest.nl >conftest.out 2>/dev/null || break 796 diff conftest.out conftest.nl >/dev/null 2>&1 || break 797 _G_count=`expr $_G_count + 1` 798 if test "$_G_count" -gt "$_G_path_prog_max"; then 799 # Best one so far, save it but keep looking for a better one 800 func_check_prog_result=$_G_path_prog 801 _G_path_prog_max=$_G_count 802 fi 803 # 10*(2^10) chars as input seems more than enough 804 test 10 -lt "$_G_count" && break 805 done 806 rm -f conftest.in conftest.tmp conftest.nl conftest.out 807 } 808 809 func_path_progs "grep ggrep" func_check_prog_grep $PATH:/usr/xpg4/bin 810 GREP=$func_path_progs_result 811} 812 813 814## ------------------------------- ## 815## User overridable command paths. ## 816## ------------------------------- ## 817 818# All uppercase variable names are used for environment variables. These 819# variables can be overridden by the user before calling a script that 820# uses them if a suitable command of that name is not already available 821# in the command search PATH. 822 823: ${CP="cp -f"} 824: ${ECHO="printf %s\n"} 825: ${EGREP="$GREP -E"} 826: ${FGREP="$GREP -F"} 827: ${LN_S="ln -s"} 828: ${MAKE="make"} 829: ${MKDIR="mkdir"} 830: ${MV="mv -f"} 831: ${RM="rm -f"} 832: ${SHELL="${CONFIG_SHELL-/bin/sh}"} 833 834 835## -------------------- ## 836## Useful sed snippets. ## 837## -------------------- ## 838 839sed_dirname='s|/[^/]*$||' 840sed_basename='s|^.*/||' 841 842# Sed substitution that helps us do robust quoting. It backslashifies 843# metacharacters that are still active within double-quoted strings. 844sed_quote_subst='s|\([`"$\\]\)|\\\1|g' 845 846# Same as above, but do not quote variable references. 847sed_double_quote_subst='s/\(["`\\]\)/\\\1/g' 848 849# Sed substitution that turns a string into a regex matching for the 850# string literally. 851sed_make_literal_regex='s|[].[^$\\*\/]|\\&|g' 852 853# Sed substitution that converts a w32 file name or path 854# that contains forward slashes, into one that contains 855# (escaped) backslashes. A very naive implementation. 856sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' 857 858# Re-'\' parameter expansions in output of sed_double_quote_subst that 859# were '\'-ed in input to the same. If an odd number of '\' preceded a 860# '$' in input to sed_double_quote_subst, that '$' was protected from 861# expansion. Since each input '\' is now two '\'s, look for any number 862# of runs of four '\'s followed by two '\'s and then a '$'. '\' that '$'. 863_G_bs='\\' 864_G_bs2='\\\\' 865_G_bs4='\\\\\\\\' 866_G_dollar='\$' 867sed_double_backslash="\ 868 s/$_G_bs4/&\\ 869/g 870 s/^$_G_bs2$_G_dollar/$_G_bs&/ 871 s/\\([^$_G_bs]\\)$_G_bs2$_G_dollar/\\1$_G_bs2$_G_bs$_G_dollar/g 872 s/\n//g" 873 874 875## ----------------- ## 876## Global variables. ## 877## ----------------- ## 878 879# Except for the global variables explicitly listed below, the following 880# functions in the '^func_' namespace, and the '^require_' namespace 881# variables initialised in the 'Resource management' section, sourcing 882# this file will not pollute your global namespace with anything 883# else. There's no portable way to scope variables in Bourne shell 884# though, so actually running these functions will sometimes place 885# results into a variable named after the function, and often use 886# temporary variables in the '^_G_' namespace. If you are careful to 887# avoid using those namespaces casually in your sourcing script, things 888# should continue to work as you expect. And, of course, you can freely 889# overwrite any of the functions or variables defined here before 890# calling anything to customize them. 891 892EXIT_SUCCESS=0 893EXIT_FAILURE=1 894EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. 895EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. 896 897# Allow overriding, eg assuming that you follow the convention of 898# putting '$debug_cmd' at the start of all your functions, you can get 899# bash to show function call trace with: 900# 901# debug_cmd='echo "${FUNCNAME[0]} $*" >&2' bash your-script-name 902debug_cmd=${debug_cmd-":"} 903exit_cmd=: 904 905# By convention, finish your script with: 906# 907# exit $exit_status 908# 909# so that you can set exit_status to non-zero if you want to indicate 910# something went wrong during execution without actually bailing out at 911# the point of failure. 912exit_status=$EXIT_SUCCESS 913 914# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh 915# is ksh but when the shell is invoked as "sh" and the current value of 916# the _XPG environment variable is not equal to 1 (one), the special 917# positional parameter $0, within a function call, is the name of the 918# function. 919progpath=$0 920 921# The name of this program. 922progname=`$ECHO "$progpath" |$SED "$sed_basename"` 923 924# Make sure we have an absolute progpath for reexecution: 925case $progpath in 926 [\\/]*|[A-Za-z]:\\*) ;; 927 *[\\/]*) 928 progdir=`$ECHO "$progpath" |$SED "$sed_dirname"` 929 progdir=`cd "$progdir" && pwd` 930 progpath=$progdir/$progname 931 ;; 932 *) 933 _G_IFS=$IFS 934 IFS=${PATH_SEPARATOR-:} 935 for progdir in $PATH; do 936 IFS=$_G_IFS 937 test -x "$progdir/$progname" && break 938 done 939 IFS=$_G_IFS 940 test -n "$progdir" || progdir=`pwd` 941 progpath=$progdir/$progname 942 ;; 943esac 944 945 946## ----------------- ## 947## Standard options. ## 948## ----------------- ## 949 950# The following options affect the operation of the functions defined 951# below, and should be set appropriately depending on run-time para- 952# meters passed on the command line. 953 954opt_dry_run=false 955opt_quiet=false 956opt_verbose=false 957 958# Categories 'all' and 'none' are always available. Append any others 959# you will pass as the first argument to func_warning from your own 960# code. 961warning_categories= 962 963# By default, display warnings according to 'opt_warning_types'. Set 964# 'warning_func' to ':' to elide all warnings, or func_fatal_error to 965# treat the next displayed warning as a fatal error. 966warning_func=func_warn_and_continue 967 968# Set to 'all' to display all warnings, 'none' to suppress all 969# warnings, or a space delimited list of some subset of 970# 'warning_categories' to display only the listed warnings. 971opt_warning_types=all 972 973 974## -------------------- ## 975## Resource management. ## 976## -------------------- ## 977 978# This section contains definitions for functions that each ensure a 979# particular resource (a file, or a non-empty configuration variable for 980# example) is available, and if appropriate to extract default values 981# from pertinent package files. Call them using their associated 982# 'require_*' variable to ensure that they are executed, at most, once. 983# 984# It's entirely deliberate that calling these functions can set 985# variables that don't obey the namespace limitations obeyed by the rest 986# of this file, in order that that they be as useful as possible to 987# callers. 988 989 990# require_term_colors 991# ------------------- 992# Allow display of bold text on terminals that support it. 993require_term_colors=func_require_term_colors 994func_require_term_colors () 995{ 996 $debug_cmd 997 998 test -t 1 && { 999 # COLORTERM and USE_ANSI_COLORS environment variables take 1000 # precedence, because most terminfo databases neglect to describe 1001 # whether color sequences are supported. 1002 test -n "${COLORTERM+set}" && : ${USE_ANSI_COLORS="1"} 1003 1004 if test 1 = "$USE_ANSI_COLORS"; then 1005 # Standard ANSI escape sequences 1006 tc_reset='[0m' 1007 tc_bold='[1m'; tc_standout='[7m' 1008 tc_red='[31m'; tc_green='[32m' 1009 tc_blue='[34m'; tc_cyan='[36m' 1010 else 1011 # Otherwise trust the terminfo database after all. 1012 test -n "`tput sgr0 2>/dev/null`" && { 1013 tc_reset=`tput sgr0` 1014 test -n "`tput bold 2>/dev/null`" && tc_bold=`tput bold` 1015 tc_standout=$tc_bold 1016 test -n "`tput smso 2>/dev/null`" && tc_standout=`tput smso` 1017 test -n "`tput setaf 1 2>/dev/null`" && tc_red=`tput setaf 1` 1018 test -n "`tput setaf 2 2>/dev/null`" && tc_green=`tput setaf 2` 1019 test -n "`tput setaf 4 2>/dev/null`" && tc_blue=`tput setaf 4` 1020 test -n "`tput setaf 5 2>/dev/null`" && tc_cyan=`tput setaf 5` 1021 } 1022 fi 1023 } 1024 1025 require_term_colors=: 1026} 1027 1028 1029## ----------------- ## 1030## Function library. ## 1031## ----------------- ## 1032 1033# This section contains a variety of useful functions to call in your 1034# scripts. Take note of the portable wrappers for features provided by 1035# some modern shells, which will fall back to slower equivalents on 1036# less featureful shells. 1037 1038 1039# func_append VAR VALUE 1040# --------------------- 1041# Append VALUE onto the existing contents of VAR. 1042 1043 # We should try to minimise forks, especially on Windows where they are 1044 # unreasonably slow, so skip the feature probes when bash or zsh are 1045 # being used: 1046 if test set = "${BASH_VERSION+set}${ZSH_VERSION+set}"; then 1047 : ${_G_HAVE_ARITH_OP="yes"} 1048 : ${_G_HAVE_XSI_OPS="yes"} 1049 # The += operator was introduced in bash 3.1 1050 case $BASH_VERSION in 1051 [12].* | 3.0 | 3.0*) ;; 1052 *) 1053 : ${_G_HAVE_PLUSEQ_OP="yes"} 1054 ;; 1055 esac 1056 fi 1057 1058 # _G_HAVE_PLUSEQ_OP 1059 # Can be empty, in which case the shell is probed, "yes" if += is 1060 # useable or anything else if it does not work. 1061 test -z "$_G_HAVE_PLUSEQ_OP" \ 1062 && (eval 'x=a; x+=" b"; test "a b" = "$x"') 2>/dev/null \ 1063 && _G_HAVE_PLUSEQ_OP=yes 1064 1065if test yes = "$_G_HAVE_PLUSEQ_OP" 1066then 1067 # This is an XSI compatible shell, allowing a faster implementation... 1068 eval 'func_append () 1069 { 1070 $debug_cmd 1071 1072 eval "$1+=\$2" 1073 }' 1074else 1075 # ...otherwise fall back to using expr, which is often a shell builtin. 1076 func_append () 1077 { 1078 $debug_cmd 1079 1080 eval "$1=\$$1\$2" 1081 } 1082fi 1083 1084 1085# func_append_quoted VAR VALUE 1086# ---------------------------- 1087# Quote VALUE and append to the end of shell variable VAR, separated 1088# by a space. 1089if test yes = "$_G_HAVE_PLUSEQ_OP"; then 1090 eval 'func_append_quoted () 1091 { 1092 $debug_cmd 1093 1094 func_quote_for_eval "$2" 1095 eval "$1+=\\ \$func_quote_for_eval_result" 1096 }' 1097else 1098 func_append_quoted () 1099 { 1100 $debug_cmd 1101 1102 func_quote_for_eval "$2" 1103 eval "$1=\$$1\\ \$func_quote_for_eval_result" 1104 } 1105fi 1106 1107 1108# func_append_uniq VAR VALUE 1109# -------------------------- 1110# Append unique VALUE onto the existing contents of VAR, assuming 1111# entries are delimited by the first character of VALUE. For example: 1112# 1113# func_append_uniq options " --another-option option-argument" 1114# 1115# will only append to $options if " --another-option option-argument " 1116# is not already present somewhere in $options already (note spaces at 1117# each end implied by leading space in second argument). 1118func_append_uniq () 1119{ 1120 $debug_cmd 1121 1122 eval _G_current_value='`$ECHO $'$1'`' 1123 _G_delim=`expr "$2" : '\(.\)'` 1124 1125 case $_G_delim$_G_current_value$_G_delim in 1126 *"$2$_G_delim"*) ;; 1127 *) func_append "$@" ;; 1128 esac 1129} 1130 1131 1132# func_arith TERM... 1133# ------------------ 1134# Set func_arith_result to the result of evaluating TERMs. 1135 test -z "$_G_HAVE_ARITH_OP" \ 1136 && (eval 'test 2 = $(( 1 + 1 ))') 2>/dev/null \ 1137 && _G_HAVE_ARITH_OP=yes 1138 1139if test yes = "$_G_HAVE_ARITH_OP"; then 1140 eval 'func_arith () 1141 { 1142 $debug_cmd 1143 1144 func_arith_result=$(( $* )) 1145 }' 1146else 1147 func_arith () 1148 { 1149 $debug_cmd 1150 1151 func_arith_result=`expr "$@"` 1152 } 1153fi 1154 1155 1156# func_basename FILE 1157# ------------------ 1158# Set func_basename_result to FILE with everything up to and including 1159# the last / stripped. 1160if test yes = "$_G_HAVE_XSI_OPS"; then 1161 # If this shell supports suffix pattern removal, then use it to avoid 1162 # forking. Hide the definitions single quotes in case the shell chokes 1163 # on unsupported syntax... 1164 _b='func_basename_result=${1##*/}' 1165 _d='case $1 in 1166 */*) func_dirname_result=${1%/*}$2 ;; 1167 * ) func_dirname_result=$3 ;; 1168 esac' 1169 1170else 1171 # ...otherwise fall back to using sed. 1172 _b='func_basename_result=`$ECHO "$1" |$SED "$sed_basename"`' 1173 _d='func_dirname_result=`$ECHO "$1" |$SED "$sed_dirname"` 1174 if test "X$func_dirname_result" = "X$1"; then 1175 func_dirname_result=$3 1176 else 1177 func_append func_dirname_result "$2" 1178 fi' 1179fi 1180 1181eval 'func_basename () 1182{ 1183 $debug_cmd 1184 1185 '"$_b"' 1186}' 1187 1188 1189# func_dirname FILE APPEND NONDIR_REPLACEMENT 1190# ------------------------------------------- 1191# Compute the dirname of FILE. If nonempty, add APPEND to the result, 1192# otherwise set result to NONDIR_REPLACEMENT. 1193eval 'func_dirname () 1194{ 1195 $debug_cmd 1196 1197 '"$_d"' 1198}' 1199 1200 1201# func_dirname_and_basename FILE APPEND NONDIR_REPLACEMENT 1202# -------------------------------------------------------- 1203# Perform func_basename and func_dirname in a single function 1204# call: 1205# dirname: Compute the dirname of FILE. If nonempty, 1206# add APPEND to the result, otherwise set result 1207# to NONDIR_REPLACEMENT. 1208# value returned in "$func_dirname_result" 1209# basename: Compute filename of FILE. 1210# value retuned in "$func_basename_result" 1211# For efficiency, we do not delegate to the functions above but instead 1212# duplicate the functionality here. 1213eval 'func_dirname_and_basename () 1214{ 1215 $debug_cmd 1216 1217 '"$_b"' 1218 '"$_d"' 1219}' 1220 1221 1222# func_echo ARG... 1223# ---------------- 1224# Echo program name prefixed message. 1225func_echo () 1226{ 1227 $debug_cmd 1228 1229 _G_message=$* 1230 1231 func_echo_IFS=$IFS 1232 IFS=$nl 1233 for _G_line in $_G_message; do 1234 IFS=$func_echo_IFS 1235 $ECHO "$progname: $_G_line" 1236 done 1237 IFS=$func_echo_IFS 1238} 1239 1240 1241# func_echo_all ARG... 1242# -------------------- 1243# Invoke $ECHO with all args, space-separated. 1244func_echo_all () 1245{ 1246 $ECHO "$*" 1247} 1248 1249 1250# func_echo_infix_1 INFIX ARG... 1251# ------------------------------ 1252# Echo program name, followed by INFIX on the first line, with any 1253# additional lines not showing INFIX. 1254func_echo_infix_1 () 1255{ 1256 $debug_cmd 1257 1258 $require_term_colors 1259 1260 _G_infix=$1; shift 1261 _G_indent=$_G_infix 1262 _G_prefix="$progname: $_G_infix: " 1263 _G_message=$* 1264 1265 # Strip color escape sequences before counting printable length 1266 for _G_tc in "$tc_reset" "$tc_bold" "$tc_standout" "$tc_red" "$tc_green" "$tc_blue" "$tc_cyan" 1267 do 1268 test -n "$_G_tc" && { 1269 _G_esc_tc=`$ECHO "$_G_tc" | $SED "$sed_make_literal_regex"` 1270 _G_indent=`$ECHO "$_G_indent" | $SED "s|$_G_esc_tc||g"` 1271 } 1272 done 1273 _G_indent="$progname: "`echo "$_G_indent" | $SED 's|.| |g'`" " ## exclude from sc_prohibit_nested_quotes 1274 1275 func_echo_infix_1_IFS=$IFS 1276 IFS=$nl 1277 for _G_line in $_G_message; do 1278 IFS=$func_echo_infix_1_IFS 1279 $ECHO "$_G_prefix$tc_bold$_G_line$tc_reset" >&2 1280 _G_prefix=$_G_indent 1281 done 1282 IFS=$func_echo_infix_1_IFS 1283} 1284 1285 1286# func_error ARG... 1287# ----------------- 1288# Echo program name prefixed message to standard error. 1289func_error () 1290{ 1291 $debug_cmd 1292 1293 $require_term_colors 1294 1295 func_echo_infix_1 " $tc_standout${tc_red}error$tc_reset" "$*" >&2 1296} 1297 1298 1299# func_fatal_error ARG... 1300# ----------------------- 1301# Echo program name prefixed message to standard error, and exit. 1302func_fatal_error () 1303{ 1304 $debug_cmd 1305 1306 func_error "$*" 1307 exit $EXIT_FAILURE 1308} 1309 1310 1311# func_grep EXPRESSION FILENAME 1312# ----------------------------- 1313# Check whether EXPRESSION matches any line of FILENAME, without output. 1314func_grep () 1315{ 1316 $debug_cmd 1317 1318 $GREP "$1" "$2" >/dev/null 2>&1 1319} 1320 1321 1322# func_len STRING 1323# --------------- 1324# Set func_len_result to the length of STRING. STRING may not 1325# start with a hyphen. 1326 test -z "$_G_HAVE_XSI_OPS" \ 1327 && (eval 'x=a/b/c; 1328 test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ 1329 && _G_HAVE_XSI_OPS=yes 1330 1331if test yes = "$_G_HAVE_XSI_OPS"; then 1332 eval 'func_len () 1333 { 1334 $debug_cmd 1335 1336 func_len_result=${#1} 1337 }' 1338else 1339 func_len () 1340 { 1341 $debug_cmd 1342 1343 func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` 1344 } 1345fi 1346 1347 1348# func_mkdir_p DIRECTORY-PATH 1349# --------------------------- 1350# Make sure the entire path to DIRECTORY-PATH is available. 1351func_mkdir_p () 1352{ 1353 $debug_cmd 1354 1355 _G_directory_path=$1 1356 _G_dir_list= 1357 1358 if test -n "$_G_directory_path" && test : != "$opt_dry_run"; then 1359 1360 # Protect directory names starting with '-' 1361 case $_G_directory_path in 1362 -*) _G_directory_path=./$_G_directory_path ;; 1363 esac 1364 1365 # While some portion of DIR does not yet exist... 1366 while test ! -d "$_G_directory_path"; do 1367 # ...make a list in topmost first order. Use a colon delimited 1368 # list incase some portion of path contains whitespace. 1369 _G_dir_list=$_G_directory_path:$_G_dir_list 1370 1371 # If the last portion added has no slash in it, the list is done 1372 case $_G_directory_path in */*) ;; *) break ;; esac 1373 1374 # ...otherwise throw away the child directory and loop 1375 _G_directory_path=`$ECHO "$_G_directory_path" | $SED -e "$sed_dirname"` 1376 done 1377 _G_dir_list=`$ECHO "$_G_dir_list" | $SED 's|:*$||'` 1378 1379 func_mkdir_p_IFS=$IFS; IFS=: 1380 for _G_dir in $_G_dir_list; do 1381 IFS=$func_mkdir_p_IFS 1382 # mkdir can fail with a 'File exist' error if two processes 1383 # try to create one of the directories concurrently. Don't 1384 # stop in that case! 1385 $MKDIR "$_G_dir" 2>/dev/null || : 1386 done 1387 IFS=$func_mkdir_p_IFS 1388 1389 # Bail out if we (or some other process) failed to create a directory. 1390 test -d "$_G_directory_path" || \ 1391 func_fatal_error "Failed to create '$1'" 1392 fi 1393} 1394 1395 1396# func_mktempdir [BASENAME] 1397# ------------------------- 1398# Make a temporary directory that won't clash with other running 1399# libtool processes, and avoids race conditions if possible. If 1400# given, BASENAME is the basename for that directory. 1401func_mktempdir () 1402{ 1403 $debug_cmd 1404 1405 _G_template=${TMPDIR-/tmp}/${1-$progname} 1406 1407 if test : = "$opt_dry_run"; then 1408 # Return a directory name, but don't create it in dry-run mode 1409 _G_tmpdir=$_G_template-$$ 1410 else 1411 1412 # If mktemp works, use that first and foremost 1413 _G_tmpdir=`mktemp -d "$_G_template-XXXXXXXX" 2>/dev/null` 1414 1415 if test ! -d "$_G_tmpdir"; then 1416 # Failing that, at least try and use $RANDOM to avoid a race 1417 _G_tmpdir=$_G_template-${RANDOM-0}$$ 1418 1419 func_mktempdir_umask=`umask` 1420 umask 0077 1421 $MKDIR "$_G_tmpdir" 1422 umask $func_mktempdir_umask 1423 fi 1424 1425 # If we're not in dry-run mode, bomb out on failure 1426 test -d "$_G_tmpdir" || \ 1427 func_fatal_error "cannot create temporary directory '$_G_tmpdir'" 1428 fi 1429 1430 $ECHO "$_G_tmpdir" 1431} 1432 1433 1434# func_normal_abspath PATH 1435# ------------------------ 1436# Remove doubled-up and trailing slashes, "." path components, 1437# and cancel out any ".." path components in PATH after making 1438# it an absolute path. 1439func_normal_abspath () 1440{ 1441 $debug_cmd 1442 1443 # These SED scripts presuppose an absolute path with a trailing slash. 1444 _G_pathcar='s|^/\([^/]*\).*$|\1|' 1445 _G_pathcdr='s|^/[^/]*||' 1446 _G_removedotparts=':dotsl 1447 s|/\./|/|g 1448 t dotsl 1449 s|/\.$|/|' 1450 _G_collapseslashes='s|/\{1,\}|/|g' 1451 _G_finalslash='s|/*$|/|' 1452 1453 # Start from root dir and reassemble the path. 1454 func_normal_abspath_result= 1455 func_normal_abspath_tpath=$1 1456 func_normal_abspath_altnamespace= 1457 case $func_normal_abspath_tpath in 1458 "") 1459 # Empty path, that just means $cwd. 1460 func_stripname '' '/' "`pwd`" 1461 func_normal_abspath_result=$func_stripname_result 1462 return 1463 ;; 1464 # The next three entries are used to spot a run of precisely 1465 # two leading slashes without using negated character classes; 1466 # we take advantage of case's first-match behaviour. 1467 ///*) 1468 # Unusual form of absolute path, do nothing. 1469 ;; 1470 //*) 1471 # Not necessarily an ordinary path; POSIX reserves leading '//' 1472 # and for example Cygwin uses it to access remote file shares 1473 # over CIFS/SMB, so we conserve a leading double slash if found. 1474 func_normal_abspath_altnamespace=/ 1475 ;; 1476 /*) 1477 # Absolute path, do nothing. 1478 ;; 1479 *) 1480 # Relative path, prepend $cwd. 1481 func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath 1482 ;; 1483 esac 1484 1485 # Cancel out all the simple stuff to save iterations. We also want 1486 # the path to end with a slash for ease of parsing, so make sure 1487 # there is one (and only one) here. 1488 func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ 1489 -e "$_G_removedotparts" -e "$_G_collapseslashes" -e "$_G_finalslash"` 1490 while :; do 1491 # Processed it all yet? 1492 if test / = "$func_normal_abspath_tpath"; then 1493 # If we ascended to the root using ".." the result may be empty now. 1494 if test -z "$func_normal_abspath_result"; then 1495 func_normal_abspath_result=/ 1496 fi 1497 break 1498 fi 1499 func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ 1500 -e "$_G_pathcar"` 1501 func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ 1502 -e "$_G_pathcdr"` 1503 # Figure out what to do with it 1504 case $func_normal_abspath_tcomponent in 1505 "") 1506 # Trailing empty path component, ignore it. 1507 ;; 1508 ..) 1509 # Parent dir; strip last assembled component from result. 1510 func_dirname "$func_normal_abspath_result" 1511 func_normal_abspath_result=$func_dirname_result 1512 ;; 1513 *) 1514 # Actual path component, append it. 1515 func_append func_normal_abspath_result "/$func_normal_abspath_tcomponent" 1516 ;; 1517 esac 1518 done 1519 # Restore leading double-slash if one was found on entry. 1520 func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result 1521} 1522 1523 1524# func_notquiet ARG... 1525# -------------------- 1526# Echo program name prefixed message only when not in quiet mode. 1527func_notquiet () 1528{ 1529 $debug_cmd 1530 1531 $opt_quiet || func_echo ${1+"$@"} 1532 1533 # A bug in bash halts the script if the last line of a function 1534 # fails when set -e is in force, so we need another command to 1535 # work around that: 1536 : 1537} 1538 1539 1540# func_relative_path SRCDIR DSTDIR 1541# -------------------------------- 1542# Set func_relative_path_result to the relative path from SRCDIR to DSTDIR. 1543func_relative_path () 1544{ 1545 $debug_cmd 1546 1547 func_relative_path_result= 1548 func_normal_abspath "$1" 1549 func_relative_path_tlibdir=$func_normal_abspath_result 1550 func_normal_abspath "$2" 1551 func_relative_path_tbindir=$func_normal_abspath_result 1552 1553 # Ascend the tree starting from libdir 1554 while :; do 1555 # check if we have found a prefix of bindir 1556 case $func_relative_path_tbindir in 1557 $func_relative_path_tlibdir) 1558 # found an exact match 1559 func_relative_path_tcancelled= 1560 break 1561 ;; 1562 $func_relative_path_tlibdir*) 1563 # found a matching prefix 1564 func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" 1565 func_relative_path_tcancelled=$func_stripname_result 1566 if test -z "$func_relative_path_result"; then 1567 func_relative_path_result=. 1568 fi 1569 break 1570 ;; 1571 *) 1572 func_dirname $func_relative_path_tlibdir 1573 func_relative_path_tlibdir=$func_dirname_result 1574 if test -z "$func_relative_path_tlibdir"; then 1575 # Have to descend all the way to the root! 1576 func_relative_path_result=../$func_relative_path_result 1577 func_relative_path_tcancelled=$func_relative_path_tbindir 1578 break 1579 fi 1580 func_relative_path_result=../$func_relative_path_result 1581 ;; 1582 esac 1583 done 1584 1585 # Now calculate path; take care to avoid doubling-up slashes. 1586 func_stripname '' '/' "$func_relative_path_result" 1587 func_relative_path_result=$func_stripname_result 1588 func_stripname '/' '/' "$func_relative_path_tcancelled" 1589 if test -n "$func_stripname_result"; then 1590 func_append func_relative_path_result "/$func_stripname_result" 1591 fi 1592 1593 # Normalisation. If bindir is libdir, return '.' else relative path. 1594 if test -n "$func_relative_path_result"; then 1595 func_stripname './' '' "$func_relative_path_result" 1596 func_relative_path_result=$func_stripname_result 1597 fi 1598 1599 test -n "$func_relative_path_result" || func_relative_path_result=. 1600 1601 : 1602} 1603 1604 1605# func_quote_for_eval ARG... 1606# -------------------------- 1607# Aesthetically quote ARGs to be evaled later. 1608# This function returns two values: 1609# i) func_quote_for_eval_result 1610# double-quoted, suitable for a subsequent eval 1611# ii) func_quote_for_eval_unquoted_result 1612# has all characters that are still active within double 1613# quotes backslashified. 1614func_quote_for_eval () 1615{ 1616 $debug_cmd 1617 1618 func_quote_for_eval_unquoted_result= 1619 func_quote_for_eval_result= 1620 while test 0 -lt $#; do 1621 case $1 in 1622 *[\\\`\"\$]*) 1623 _G_unquoted_arg=`printf '%s\n' "$1" |$SED "$sed_quote_subst"` ;; 1624 *) 1625 _G_unquoted_arg=$1 ;; 1626 esac 1627 if test -n "$func_quote_for_eval_unquoted_result"; then 1628 func_append func_quote_for_eval_unquoted_result " $_G_unquoted_arg" 1629 else 1630 func_append func_quote_for_eval_unquoted_result "$_G_unquoted_arg" 1631 fi 1632 1633 case $_G_unquoted_arg in 1634 # Double-quote args containing shell metacharacters to delay 1635 # word splitting, command substitution and variable expansion 1636 # for a subsequent eval. 1637 # Many Bourne shells cannot handle close brackets correctly 1638 # in scan sets, so we specify it separately. 1639 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 1640 _G_quoted_arg=\"$_G_unquoted_arg\" 1641 ;; 1642 *) 1643 _G_quoted_arg=$_G_unquoted_arg 1644 ;; 1645 esac 1646 1647 if test -n "$func_quote_for_eval_result"; then 1648 func_append func_quote_for_eval_result " $_G_quoted_arg" 1649 else 1650 func_append func_quote_for_eval_result "$_G_quoted_arg" 1651 fi 1652 shift 1653 done 1654} 1655 1656 1657# func_quote_for_expand ARG 1658# ------------------------- 1659# Aesthetically quote ARG to be evaled later; same as above, 1660# but do not quote variable references. 1661func_quote_for_expand () 1662{ 1663 $debug_cmd 1664 1665 case $1 in 1666 *[\\\`\"]*) 1667 _G_arg=`$ECHO "$1" | $SED \ 1668 -e "$sed_double_quote_subst" -e "$sed_double_backslash"` ;; 1669 *) 1670 _G_arg=$1 ;; 1671 esac 1672 1673 case $_G_arg in 1674 # Double-quote args containing shell metacharacters to delay 1675 # word splitting and command substitution for a subsequent eval. 1676 # Many Bourne shells cannot handle close brackets correctly 1677 # in scan sets, so we specify it separately. 1678 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 1679 _G_arg=\"$_G_arg\" 1680 ;; 1681 esac 1682 1683 func_quote_for_expand_result=$_G_arg 1684} 1685 1686 1687# func_stripname PREFIX SUFFIX NAME 1688# --------------------------------- 1689# strip PREFIX and SUFFIX from NAME, and store in func_stripname_result. 1690# PREFIX and SUFFIX must not contain globbing or regex special 1691# characters, hashes, percent signs, but SUFFIX may contain a leading 1692# dot (in which case that matches only a dot). 1693if test yes = "$_G_HAVE_XSI_OPS"; then 1694 eval 'func_stripname () 1695 { 1696 $debug_cmd 1697 1698 # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are 1699 # positional parameters, so assign one to ordinary variable first. 1700 func_stripname_result=$3 1701 func_stripname_result=${func_stripname_result#"$1"} 1702 func_stripname_result=${func_stripname_result%"$2"} 1703 }' 1704else 1705 func_stripname () 1706 { 1707 $debug_cmd 1708 1709 case $2 in 1710 .*) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%\\\\$2\$%%"`;; 1711 *) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%$2\$%%"`;; 1712 esac 1713 } 1714fi 1715 1716 1717# func_show_eval CMD [FAIL_EXP] 1718# ----------------------------- 1719# Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is 1720# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP 1721# is given, then evaluate it. 1722func_show_eval () 1723{ 1724 $debug_cmd 1725 1726 _G_cmd=$1 1727 _G_fail_exp=${2-':'} 1728 1729 func_quote_for_expand "$_G_cmd" 1730 eval "func_notquiet $func_quote_for_expand_result" 1731 1732 $opt_dry_run || { 1733 eval "$_G_cmd" 1734 _G_status=$? 1735 if test 0 -ne "$_G_status"; then 1736 eval "(exit $_G_status); $_G_fail_exp" 1737 fi 1738 } 1739} 1740 1741 1742# func_show_eval_locale CMD [FAIL_EXP] 1743# ------------------------------------ 1744# Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is 1745# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP 1746# is given, then evaluate it. Use the saved locale for evaluation. 1747func_show_eval_locale () 1748{ 1749 $debug_cmd 1750 1751 _G_cmd=$1 1752 _G_fail_exp=${2-':'} 1753 1754 $opt_quiet || { 1755 func_quote_for_expand "$_G_cmd" 1756 eval "func_echo $func_quote_for_expand_result" 1757 } 1758 1759 $opt_dry_run || { 1760 eval "$_G_user_locale 1761 $_G_cmd" 1762 _G_status=$? 1763 eval "$_G_safe_locale" 1764 if test 0 -ne "$_G_status"; then 1765 eval "(exit $_G_status); $_G_fail_exp" 1766 fi 1767 } 1768} 1769 1770 1771# func_tr_sh 1772# ---------- 1773# Turn $1 into a string suitable for a shell variable name. 1774# Result is stored in $func_tr_sh_result. All characters 1775# not in the set a-zA-Z0-9_ are replaced with '_'. Further, 1776# if $1 begins with a digit, a '_' is prepended as well. 1777func_tr_sh () 1778{ 1779 $debug_cmd 1780 1781 case $1 in 1782 [0-9]* | *[!a-zA-Z0-9_]*) 1783 func_tr_sh_result=`$ECHO "$1" | $SED -e 's/^\([0-9]\)/_\1/' -e 's/[^a-zA-Z0-9_]/_/g'` 1784 ;; 1785 * ) 1786 func_tr_sh_result=$1 1787 ;; 1788 esac 1789} 1790 1791 1792# func_verbose ARG... 1793# ------------------- 1794# Echo program name prefixed message in verbose mode only. 1795func_verbose () 1796{ 1797 $debug_cmd 1798 1799 $opt_verbose && func_echo "$*" 1800 1801 : 1802} 1803 1804 1805# func_warn_and_continue ARG... 1806# ----------------------------- 1807# Echo program name prefixed warning message to standard error. 1808func_warn_and_continue () 1809{ 1810 $debug_cmd 1811 1812 $require_term_colors 1813 1814 func_echo_infix_1 "${tc_red}warning$tc_reset" "$*" >&2 1815} 1816 1817 1818# func_warning CATEGORY ARG... 1819# ---------------------------- 1820# Echo program name prefixed warning message to standard error. Warning 1821# messages can be filtered according to CATEGORY, where this function 1822# elides messages where CATEGORY is not listed in the global variable 1823# 'opt_warning_types'. 1824func_warning () 1825{ 1826 $debug_cmd 1827 1828 # CATEGORY must be in the warning_categories list! 1829 case " $warning_categories " in 1830 *" $1 "*) ;; 1831 *) func_internal_error "invalid warning category '$1'" ;; 1832 esac 1833 1834 _G_category=$1 1835 shift 1836 1837 case " $opt_warning_types " in 1838 *" $_G_category "*) $warning_func ${1+"$@"} ;; 1839 esac 1840} 1841 1842 1843# func_sort_ver VER1 VER2 1844# ----------------------- 1845# 'sort -V' is not generally available. 1846# Note this deviates from the version comparison in automake 1847# in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a 1848# but this should suffice as we won't be specifying old 1849# version formats or redundant trailing .0 in bootstrap.conf. 1850# If we did want full compatibility then we should probably 1851# use m4_version_compare from autoconf. 1852func_sort_ver () 1853{ 1854 $debug_cmd 1855 1856 printf '%s\n%s\n' "$1" "$2" \ 1857 | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n -k 5,5n -k 6,6n -k 7,7n -k 8,8n -k 9,9n 1858} 1859 1860# func_lt_ver PREV CURR 1861# --------------------- 1862# Return true if PREV and CURR are in the correct order according to 1863# func_sort_ver, otherwise false. Use it like this: 1864# 1865# func_lt_ver "$prev_ver" "$proposed_ver" || func_fatal_error "..." 1866func_lt_ver () 1867{ 1868 $debug_cmd 1869 1870 test "x$1" = x`func_sort_ver "$1" "$2" | $SED 1q` 1871} 1872 1873 1874# Local variables: 1875# mode: shell-script 1876# sh-indentation: 2 1877# eval: (add-hook 'before-save-hook 'time-stamp) 1878# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" 1879# time-stamp-time-zone: "UTC" 1880# End: 1881#! /bin/sh 1882 1883# Set a version string for this script. 1884scriptversion=2015-10-07.11; # UTC 1885 1886# A portable, pluggable option parser for Bourne shell. 1887# Written by Gary V. Vaughan, 2010 1888 1889# Copyright (C) 2010-2015 Free Software Foundation, Inc. 1890# This is free software; see the source for copying conditions. There is NO 1891# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 1892 1893# This program is free software: you can redistribute it and/or modify 1894# it under the terms of the GNU General Public License as published by 1895# the Free Software Foundation, either version 3 of the License, or 1896# (at your option) any later version. 1897 1898# This program is distributed in the hope that it will be useful, 1899# but WITHOUT ANY WARRANTY; without even the implied warranty of 1900# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1901# GNU General Public License for more details. 1902 1903# You should have received a copy of the GNU General Public License 1904# along with this program. If not, see <http://www.gnu.org/licenses/>. 1905 1906# Please report bugs or propose patches to gary@gnu.org. 1907 1908 1909## ------ ## 1910## Usage. ## 1911## ------ ## 1912 1913# This file is a library for parsing options in your shell scripts along 1914# with assorted other useful supporting features that you can make use 1915# of too. 1916# 1917# For the simplest scripts you might need only: 1918# 1919# #!/bin/sh 1920# . relative/path/to/funclib.sh 1921# . relative/path/to/options-parser 1922# scriptversion=1.0 1923# func_options ${1+"$@"} 1924# eval set dummy "$func_options_result"; shift 1925# ...rest of your script... 1926# 1927# In order for the '--version' option to work, you will need to have a 1928# suitably formatted comment like the one at the top of this file 1929# starting with '# Written by ' and ending with '# warranty; '. 1930# 1931# For '-h' and '--help' to work, you will also need a one line 1932# description of your script's purpose in a comment directly above the 1933# '# Written by ' line, like the one at the top of this file. 1934# 1935# The default options also support '--debug', which will turn on shell 1936# execution tracing (see the comment above debug_cmd below for another 1937# use), and '--verbose' and the func_verbose function to allow your script 1938# to display verbose messages only when your user has specified 1939# '--verbose'. 1940# 1941# After sourcing this file, you can plug processing for additional 1942# options by amending the variables from the 'Configuration' section 1943# below, and following the instructions in the 'Option parsing' 1944# section further down. 1945 1946## -------------- ## 1947## Configuration. ## 1948## -------------- ## 1949 1950# You should override these variables in your script after sourcing this 1951# file so that they reflect the customisations you have added to the 1952# option parser. 1953 1954# The usage line for option parsing errors and the start of '-h' and 1955# '--help' output messages. You can embed shell variables for delayed 1956# expansion at the time the message is displayed, but you will need to 1957# quote other shell meta-characters carefully to prevent them being 1958# expanded when the contents are evaled. 1959usage='$progpath [OPTION]...' 1960 1961# Short help message in response to '-h' and '--help'. Add to this or 1962# override it after sourcing this library to reflect the full set of 1963# options your script accepts. 1964usage_message="\ 1965 --debug enable verbose shell tracing 1966 -W, --warnings=CATEGORY 1967 report the warnings falling in CATEGORY [all] 1968 -v, --verbose verbosely report processing 1969 --version print version information and exit 1970 -h, --help print short or long help message and exit 1971" 1972 1973# Additional text appended to 'usage_message' in response to '--help'. 1974long_help_message=" 1975Warning categories include: 1976 'all' show all warnings 1977 'none' turn off all the warnings 1978 'error' warnings are treated as fatal errors" 1979 1980# Help message printed before fatal option parsing errors. 1981fatal_help="Try '\$progname --help' for more information." 1982 1983 1984 1985## ------------------------- ## 1986## Hook function management. ## 1987## ------------------------- ## 1988 1989# This section contains functions for adding, removing, and running hooks 1990# to the main code. A hook is just a named list of of function, that can 1991# be run in order later on. 1992 1993# func_hookable FUNC_NAME 1994# ----------------------- 1995# Declare that FUNC_NAME will run hooks added with 1996# 'func_add_hook FUNC_NAME ...'. 1997func_hookable () 1998{ 1999 $debug_cmd 2000 2001 func_append hookable_fns " $1" 2002} 2003 2004 2005# func_add_hook FUNC_NAME HOOK_FUNC 2006# --------------------------------- 2007# Request that FUNC_NAME call HOOK_FUNC before it returns. FUNC_NAME must 2008# first have been declared "hookable" by a call to 'func_hookable'. 2009func_add_hook () 2010{ 2011 $debug_cmd 2012 2013 case " $hookable_fns " in 2014 *" $1 "*) ;; 2015 *) func_fatal_error "'$1' does not accept hook functions." ;; 2016 esac 2017 2018 eval func_append ${1}_hooks '" $2"' 2019} 2020 2021 2022# func_remove_hook FUNC_NAME HOOK_FUNC 2023# ------------------------------------ 2024# Remove HOOK_FUNC from the list of functions called by FUNC_NAME. 2025func_remove_hook () 2026{ 2027 $debug_cmd 2028 2029 eval ${1}_hooks='`$ECHO "\$'$1'_hooks" |$SED "s| '$2'||"`' 2030} 2031 2032 2033# func_run_hooks FUNC_NAME [ARG]... 2034# --------------------------------- 2035# Run all hook functions registered to FUNC_NAME. 2036# It is assumed that the list of hook functions contains nothing more 2037# than a whitespace-delimited list of legal shell function names, and 2038# no effort is wasted trying to catch shell meta-characters or preserve 2039# whitespace. 2040func_run_hooks () 2041{ 2042 $debug_cmd 2043 2044 _G_rc_run_hooks=false 2045 2046 case " $hookable_fns " in 2047 *" $1 "*) ;; 2048 *) func_fatal_error "'$1' does not support hook funcions.n" ;; 2049 esac 2050 2051 eval _G_hook_fns=\$$1_hooks; shift 2052 2053 for _G_hook in $_G_hook_fns; do 2054 if eval $_G_hook '"$@"'; then 2055 # store returned options list back into positional 2056 # parameters for next 'cmd' execution. 2057 eval _G_hook_result=\$${_G_hook}_result 2058 eval set dummy "$_G_hook_result"; shift 2059 _G_rc_run_hooks=: 2060 fi 2061 done 2062 2063 $_G_rc_run_hooks && func_run_hooks_result=$_G_hook_result 2064} 2065 2066 2067 2068## --------------- ## 2069## Option parsing. ## 2070## --------------- ## 2071 2072# In order to add your own option parsing hooks, you must accept the 2073# full positional parameter list in your hook function, you may remove/edit 2074# any options that you action, and then pass back the remaining unprocessed 2075# options in '<hooked_function_name>_result', escaped suitably for 2076# 'eval'. In this case you also must return $EXIT_SUCCESS to let the 2077# hook's caller know that it should pay attention to 2078# '<hooked_function_name>_result'. Returning $EXIT_FAILURE signalizes that 2079# arguments are left untouched by the hook and therefore caller will ignore the 2080# result variable. 2081# 2082# Like this: 2083# 2084# my_options_prep () 2085# { 2086# $debug_cmd 2087# 2088# # Extend the existing usage message. 2089# usage_message=$usage_message' 2090# -s, --silent don'\''t print informational messages 2091# ' 2092# # No change in '$@' (ignored completely by this hook). There is 2093# # no need to do the equivalent (but slower) action: 2094# # func_quote_for_eval ${1+"$@"} 2095# # my_options_prep_result=$func_quote_for_eval_result 2096# false 2097# } 2098# func_add_hook func_options_prep my_options_prep 2099# 2100# 2101# my_silent_option () 2102# { 2103# $debug_cmd 2104# 2105# args_changed=false 2106# 2107# # Note that for efficiency, we parse as many options as we can 2108# # recognise in a loop before passing the remainder back to the 2109# # caller on the first unrecognised argument we encounter. 2110# while test $# -gt 0; do 2111# opt=$1; shift 2112# case $opt in 2113# --silent|-s) opt_silent=: 2114# args_changed=: 2115# ;; 2116# # Separate non-argument short options: 2117# -s*) func_split_short_opt "$_G_opt" 2118# set dummy "$func_split_short_opt_name" \ 2119# "-$func_split_short_opt_arg" ${1+"$@"} 2120# shift 2121# args_changed=: 2122# ;; 2123# *) # Make sure the first unrecognised option "$_G_opt" 2124# # is added back to "$@", we could need that later 2125# # if $args_changed is true. 2126# set dummy "$_G_opt" ${1+"$@"}; shift; break ;; 2127# esac 2128# done 2129# 2130# if $args_changed; then 2131# func_quote_for_eval ${1+"$@"} 2132# my_silent_option_result=$func_quote_for_eval_result 2133# fi 2134# 2135# $args_changed 2136# } 2137# func_add_hook func_parse_options my_silent_option 2138# 2139# 2140# my_option_validation () 2141# { 2142# $debug_cmd 2143# 2144# $opt_silent && $opt_verbose && func_fatal_help "\ 2145# '--silent' and '--verbose' options are mutually exclusive." 2146# 2147# false 2148# } 2149# func_add_hook func_validate_options my_option_validation 2150# 2151# You'll also need to manually amend $usage_message to reflect the extra 2152# options you parse. It's preferable to append if you can, so that 2153# multiple option parsing hooks can be added safely. 2154 2155 2156# func_options_finish [ARG]... 2157# ---------------------------- 2158# Finishing the option parse loop (call 'func_options' hooks ATM). 2159func_options_finish () 2160{ 2161 $debug_cmd 2162 2163 _G_func_options_finish_exit=false 2164 if func_run_hooks func_options ${1+"$@"}; then 2165 func_options_finish_result=$func_run_hooks_result 2166 _G_func_options_finish_exit=: 2167 fi 2168 2169 $_G_func_options_finish_exit 2170} 2171 2172 2173# func_options [ARG]... 2174# --------------------- 2175# All the functions called inside func_options are hookable. See the 2176# individual implementations for details. 2177func_hookable func_options 2178func_options () 2179{ 2180 $debug_cmd 2181 2182 _G_rc_options=false 2183 2184 for my_func in options_prep parse_options validate_options options_finish 2185 do 2186 if eval func_$my_func '${1+"$@"}'; then 2187 eval _G_res_var='$'"func_${my_func}_result" 2188 eval set dummy "$_G_res_var" ; shift 2189 _G_rc_options=: 2190 fi 2191 done 2192 2193 # Save modified positional parameters for caller. As a top-level 2194 # options-parser function we always need to set the 'func_options_result' 2195 # variable (regardless the $_G_rc_options value). 2196 if $_G_rc_options; then 2197 func_options_result=$_G_res_var 2198 else 2199 func_quote_for_eval ${1+"$@"} 2200 func_options_result=$func_quote_for_eval_result 2201 fi 2202 2203 $_G_rc_options 2204} 2205 2206 2207# func_options_prep [ARG]... 2208# -------------------------- 2209# All initialisations required before starting the option parse loop. 2210# Note that when calling hook functions, we pass through the list of 2211# positional parameters. If a hook function modifies that list, and 2212# needs to propagate that back to rest of this script, then the complete 2213# modified list must be put in 'func_run_hooks_result' before 2214# returning $EXIT_SUCCESS (otherwise $EXIT_FAILURE is returned). 2215func_hookable func_options_prep 2216func_options_prep () 2217{ 2218 $debug_cmd 2219 2220 # Option defaults: 2221 opt_verbose=false 2222 opt_warning_types= 2223 2224 _G_rc_options_prep=false 2225 if func_run_hooks func_options_prep ${1+"$@"}; then 2226 _G_rc_options_prep=: 2227 # save modified positional parameters for caller 2228 func_options_prep_result=$func_run_hooks_result 2229 fi 2230 2231 $_G_rc_options_prep 2232} 2233 2234 2235# func_parse_options [ARG]... 2236# --------------------------- 2237# The main option parsing loop. 2238func_hookable func_parse_options 2239func_parse_options () 2240{ 2241 $debug_cmd 2242 2243 func_parse_options_result= 2244 2245 _G_rc_parse_options=false 2246 # this just eases exit handling 2247 while test $# -gt 0; do 2248 # Defer to hook functions for initial option parsing, so they 2249 # get priority in the event of reusing an option name. 2250 if func_run_hooks func_parse_options ${1+"$@"}; then 2251 eval set dummy "$func_run_hooks_result"; shift 2252 _G_rc_parse_options=: 2253 fi 2254 2255 # Break out of the loop if we already parsed every option. 2256 test $# -gt 0 || break 2257 2258 _G_match_parse_options=: 2259 _G_opt=$1 2260 shift 2261 case $_G_opt in 2262 --debug|-x) debug_cmd='set -x' 2263 func_echo "enabling shell trace mode" 2264 $debug_cmd 2265 ;; 2266 2267 --no-warnings|--no-warning|--no-warn) 2268 set dummy --warnings none ${1+"$@"} 2269 shift 2270 ;; 2271 2272 --warnings|--warning|-W) 2273 if test $# = 0 && func_missing_arg $_G_opt; then 2274 _G_rc_parse_options=: 2275 break 2276 fi 2277 case " $warning_categories $1" in 2278 *" $1 "*) 2279 # trailing space prevents matching last $1 above 2280 func_append_uniq opt_warning_types " $1" 2281 ;; 2282 *all) 2283 opt_warning_types=$warning_categories 2284 ;; 2285 *none) 2286 opt_warning_types=none 2287 warning_func=: 2288 ;; 2289 *error) 2290 opt_warning_types=$warning_categories 2291 warning_func=func_fatal_error 2292 ;; 2293 *) 2294 func_fatal_error \ 2295 "unsupported warning category: '$1'" 2296 ;; 2297 esac 2298 shift 2299 ;; 2300 2301 --verbose|-v) opt_verbose=: ;; 2302 --version) func_version ;; 2303 -\?|-h) func_usage ;; 2304 --help) func_help ;; 2305 2306 # Separate optargs to long options (plugins may need this): 2307 --*=*) func_split_equals "$_G_opt" 2308 set dummy "$func_split_equals_lhs" \ 2309 "$func_split_equals_rhs" ${1+"$@"} 2310 shift 2311 ;; 2312 2313 # Separate optargs to short options: 2314 -W*) 2315 func_split_short_opt "$_G_opt" 2316 set dummy "$func_split_short_opt_name" \ 2317 "$func_split_short_opt_arg" ${1+"$@"} 2318 shift 2319 ;; 2320 2321 # Separate non-argument short options: 2322 -\?*|-h*|-v*|-x*) 2323 func_split_short_opt "$_G_opt" 2324 set dummy "$func_split_short_opt_name" \ 2325 "-$func_split_short_opt_arg" ${1+"$@"} 2326 shift 2327 ;; 2328 2329 --) _G_rc_parse_options=: ; break ;; 2330 -*) func_fatal_help "unrecognised option: '$_G_opt'" ;; 2331 *) set dummy "$_G_opt" ${1+"$@"}; shift 2332 _G_match_parse_options=false 2333 break 2334 ;; 2335 esac 2336 2337 $_G_match_parse_options && _G_rc_parse_options=: 2338 done 2339 2340 2341 if $_G_rc_parse_options; then 2342 # save modified positional parameters for caller 2343 func_quote_for_eval ${1+"$@"} 2344 func_parse_options_result=$func_quote_for_eval_result 2345 fi 2346 2347 $_G_rc_parse_options 2348} 2349 2350 2351# func_validate_options [ARG]... 2352# ------------------------------ 2353# Perform any sanity checks on option settings and/or unconsumed 2354# arguments. 2355func_hookable func_validate_options 2356func_validate_options () 2357{ 2358 $debug_cmd 2359 2360 _G_rc_validate_options=false 2361 2362 # Display all warnings if -W was not given. 2363 test -n "$opt_warning_types" || opt_warning_types=" $warning_categories" 2364 2365 if func_run_hooks func_validate_options ${1+"$@"}; then 2366 # save modified positional parameters for caller 2367 func_validate_options_result=$func_run_hooks_result 2368 _G_rc_validate_options=: 2369 fi 2370 2371 # Bail if the options were screwed! 2372 $exit_cmd $EXIT_FAILURE 2373 2374 $_G_rc_validate_options 2375} 2376 2377 2378 2379## ----------------- ## 2380## Helper functions. ## 2381## ----------------- ## 2382 2383# This section contains the helper functions used by the rest of the 2384# hookable option parser framework in ascii-betical order. 2385 2386 2387# func_fatal_help ARG... 2388# ---------------------- 2389# Echo program name prefixed message to standard error, followed by 2390# a help hint, and exit. 2391func_fatal_help () 2392{ 2393 $debug_cmd 2394 2395 eval \$ECHO \""Usage: $usage"\" 2396 eval \$ECHO \""$fatal_help"\" 2397 func_error ${1+"$@"} 2398 exit $EXIT_FAILURE 2399} 2400 2401 2402# func_help 2403# --------- 2404# Echo long help message to standard output and exit. 2405func_help () 2406{ 2407 $debug_cmd 2408 2409 func_usage_message 2410 $ECHO "$long_help_message" 2411 exit 0 2412} 2413 2414 2415# func_missing_arg ARGNAME 2416# ------------------------ 2417# Echo program name prefixed message to standard error and set global 2418# exit_cmd. 2419func_missing_arg () 2420{ 2421 $debug_cmd 2422 2423 func_error "Missing argument for '$1'." 2424 exit_cmd=exit 2425} 2426 2427 2428# func_split_equals STRING 2429# ------------------------ 2430# Set func_split_equals_lhs and func_split_equals_rhs shell variables after 2431# splitting STRING at the '=' sign. 2432test -z "$_G_HAVE_XSI_OPS" \ 2433 && (eval 'x=a/b/c; 2434 test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ 2435 && _G_HAVE_XSI_OPS=yes 2436 2437if test yes = "$_G_HAVE_XSI_OPS" 2438then 2439 # This is an XSI compatible shell, allowing a faster implementation... 2440 eval 'func_split_equals () 2441 { 2442 $debug_cmd 2443 2444 func_split_equals_lhs=${1%%=*} 2445 func_split_equals_rhs=${1#*=} 2446 test "x$func_split_equals_lhs" = "x$1" \ 2447 && func_split_equals_rhs= 2448 }' 2449else 2450 # ...otherwise fall back to using expr, which is often a shell builtin. 2451 func_split_equals () 2452 { 2453 $debug_cmd 2454 2455 func_split_equals_lhs=`expr "x$1" : 'x\([^=]*\)'` 2456 func_split_equals_rhs= 2457 test "x$func_split_equals_lhs" = "x$1" \ 2458 || func_split_equals_rhs=`expr "x$1" : 'x[^=]*=\(.*\)$'` 2459 } 2460fi #func_split_equals 2461 2462 2463# func_split_short_opt SHORTOPT 2464# ----------------------------- 2465# Set func_split_short_opt_name and func_split_short_opt_arg shell 2466# variables after splitting SHORTOPT after the 2nd character. 2467if test yes = "$_G_HAVE_XSI_OPS" 2468then 2469 # This is an XSI compatible shell, allowing a faster implementation... 2470 eval 'func_split_short_opt () 2471 { 2472 $debug_cmd 2473 2474 func_split_short_opt_arg=${1#??} 2475 func_split_short_opt_name=${1%"$func_split_short_opt_arg"} 2476 }' 2477else 2478 # ...otherwise fall back to using expr, which is often a shell builtin. 2479 func_split_short_opt () 2480 { 2481 $debug_cmd 2482 2483 func_split_short_opt_name=`expr "x$1" : 'x-\(.\)'` 2484 func_split_short_opt_arg=`expr "x$1" : 'x-.\(.*\)$'` 2485 } 2486fi #func_split_short_opt 2487 2488 2489# func_usage 2490# ---------- 2491# Echo short help message to standard output and exit. 2492func_usage () 2493{ 2494 $debug_cmd 2495 2496 func_usage_message 2497 $ECHO "Run '$progname --help |${PAGER-more}' for full usage" 2498 exit 0 2499} 2500 2501 2502# func_usage_message 2503# ------------------ 2504# Echo short help message to standard output. 2505func_usage_message () 2506{ 2507 $debug_cmd 2508 2509 eval \$ECHO \""Usage: $usage"\" 2510 echo 2511 $SED -n 's|^# || 2512 /^Written by/{ 2513 x;p;x 2514 } 2515 h 2516 /^Written by/q' < "$progpath" 2517 echo 2518 eval \$ECHO \""$usage_message"\" 2519} 2520 2521 2522# func_version 2523# ------------ 2524# Echo version message to standard output and exit. 2525func_version () 2526{ 2527 $debug_cmd 2528 2529 printf '%s\n' "$progname $scriptversion" 2530 $SED -n ' 2531 /(C)/!b go 2532 :more 2533 /\./!{ 2534 N 2535 s|\n# | | 2536 b more 2537 } 2538 :go 2539 /^# Written by /,/# warranty; / { 2540 s|^# || 2541 s|^# *$|| 2542 s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2| 2543 p 2544 } 2545 /^# Written by / { 2546 s|^# || 2547 p 2548 } 2549 /^warranty; /q' < "$progpath" 2550 2551 exit $? 2552} 2553 2554 2555# Local variables: 2556# mode: shell-script 2557# sh-indentation: 2 2558# eval: (add-hook 'before-save-hook 'time-stamp) 2559# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" 2560# time-stamp-time-zone: "UTC" 2561# End: 2562 2563# Set a version string. 2564scriptversion='(GNU libtool) 2.4.6' 2565 2566 2567# func_echo ARG... 2568# ---------------- 2569# Libtool also displays the current mode in messages, so override 2570# funclib.sh func_echo with this custom definition. 2571func_echo () 2572{ 2573 $debug_cmd 2574 2575 _G_message=$* 2576 2577 func_echo_IFS=$IFS 2578 IFS=$nl 2579 for _G_line in $_G_message; do 2580 IFS=$func_echo_IFS 2581 $ECHO "$progname${opt_mode+: $opt_mode}: $_G_line" 2582 done 2583 IFS=$func_echo_IFS 2584} 2585 2586 2587# func_warning ARG... 2588# ------------------- 2589# Libtool warnings are not categorized, so override funclib.sh 2590# func_warning with this simpler definition. 2591func_warning () 2592{ 2593 $debug_cmd 2594 2595 $warning_func ${1+"$@"} 2596} 2597 2598 2599## ---------------- ## 2600## Options parsing. ## 2601## ---------------- ## 2602 2603# Hook in the functions to make sure our own options are parsed during 2604# the option parsing loop. 2605 2606usage='$progpath [OPTION]... [MODE-ARG]...' 2607 2608# Short help message in response to '-h'. 2609usage_message="Options: 2610 --config show all configuration variables 2611 --debug enable verbose shell tracing 2612 -n, --dry-run display commands without modifying any files 2613 --features display basic configuration information and exit 2614 --mode=MODE use operation mode MODE 2615 --no-warnings equivalent to '-Wnone' 2616 --preserve-dup-deps don't remove duplicate dependency libraries 2617 --quiet, --silent don't print informational messages 2618 --tag=TAG use configuration variables from tag TAG 2619 -v, --verbose print more informational messages than default 2620 --version print version information 2621 -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all] 2622 -h, --help, --help-all print short, long, or detailed help message 2623" 2624 2625# Additional text appended to 'usage_message' in response to '--help'. 2626func_help () 2627{ 2628 $debug_cmd 2629 2630 func_usage_message 2631 $ECHO "$long_help_message 2632 2633MODE must be one of the following: 2634 2635 clean remove files from the build directory 2636 compile compile a source file into a libtool object 2637 execute automatically set library path, then run a program 2638 finish complete the installation of libtool libraries 2639 install install libraries or executables 2640 link create a library or an executable 2641 uninstall remove libraries from an installed directory 2642 2643MODE-ARGS vary depending on the MODE. When passed as first option, 2644'--mode=MODE' may be abbreviated as 'MODE' or a unique abbreviation of that. 2645Try '$progname --help --mode=MODE' for a more detailed description of MODE. 2646 2647When reporting a bug, please describe a test case to reproduce it and 2648include the following information: 2649 2650 host-triplet: $host 2651 shell: $SHELL 2652 compiler: $LTCC 2653 compiler flags: $LTCFLAGS 2654 linker: $LD (gnu? $with_gnu_ld) 2655 version: $progname $scriptversion Debian-2.4.6-15 2656 automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q` 2657 autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q` 2658 2659Report bugs to <bug-libtool@gnu.org>. 2660GNU libtool home page: <http://www.gnu.org/s/libtool/>. 2661General help using GNU software: <http://www.gnu.org/gethelp/>." 2662 exit 0 2663} 2664 2665 2666# func_lo2o OBJECT-NAME 2667# --------------------- 2668# Transform OBJECT-NAME from a '.lo' suffix to the platform specific 2669# object suffix. 2670 2671lo2o=s/\\.lo\$/.$objext/ 2672o2lo=s/\\.$objext\$/.lo/ 2673 2674if test yes = "$_G_HAVE_XSI_OPS"; then 2675 eval 'func_lo2o () 2676 { 2677 case $1 in 2678 *.lo) func_lo2o_result=${1%.lo}.$objext ;; 2679 * ) func_lo2o_result=$1 ;; 2680 esac 2681 }' 2682 2683 # func_xform LIBOBJ-OR-SOURCE 2684 # --------------------------- 2685 # Transform LIBOBJ-OR-SOURCE from a '.o' or '.c' (or otherwise) 2686 # suffix to a '.lo' libtool-object suffix. 2687 eval 'func_xform () 2688 { 2689 func_xform_result=${1%.*}.lo 2690 }' 2691else 2692 # ...otherwise fall back to using sed. 2693 func_lo2o () 2694 { 2695 func_lo2o_result=`$ECHO "$1" | $SED "$lo2o"` 2696 } 2697 2698 func_xform () 2699 { 2700 func_xform_result=`$ECHO "$1" | $SED 's|\.[^.]*$|.lo|'` 2701 } 2702fi 2703 2704 2705# func_fatal_configuration ARG... 2706# ------------------------------- 2707# Echo program name prefixed message to standard error, followed by 2708# a configuration failure hint, and exit. 2709func_fatal_configuration () 2710{ 2711 func__fatal_error ${1+"$@"} \ 2712 "See the $PACKAGE documentation for more information." \ 2713 "Fatal configuration error." 2714} 2715 2716 2717# func_config 2718# ----------- 2719# Display the configuration for all the tags in this script. 2720func_config () 2721{ 2722 re_begincf='^# ### BEGIN LIBTOOL' 2723 re_endcf='^# ### END LIBTOOL' 2724 2725 # Default configuration. 2726 $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" 2727 2728 # Now print the configurations for the tags. 2729 for tagname in $taglist; do 2730 $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" 2731 done 2732 2733 exit $? 2734} 2735 2736 2737# func_features 2738# ------------- 2739# Display the features supported by this script. 2740func_features () 2741{ 2742 echo "host: $host" 2743 if test yes = "$build_libtool_libs"; then 2744 echo "enable shared libraries" 2745 else 2746 echo "disable shared libraries" 2747 fi 2748 if test yes = "$build_old_libs"; then 2749 echo "enable static libraries" 2750 else 2751 echo "disable static libraries" 2752 fi 2753 2754 exit $? 2755} 2756 2757 2758# func_enable_tag TAGNAME 2759# ----------------------- 2760# Verify that TAGNAME is valid, and either flag an error and exit, or 2761# enable the TAGNAME tag. We also add TAGNAME to the global $taglist 2762# variable here. 2763func_enable_tag () 2764{ 2765 # Global variable: 2766 tagname=$1 2767 2768 re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" 2769 re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" 2770 sed_extractcf=/$re_begincf/,/$re_endcf/p 2771 2772 # Validate tagname. 2773 case $tagname in 2774 *[!-_A-Za-z0-9,/]*) 2775 func_fatal_error "invalid tag name: $tagname" 2776 ;; 2777 esac 2778 2779 # Don't test for the "default" C tag, as we know it's 2780 # there but not specially marked. 2781 case $tagname in 2782 CC) ;; 2783 *) 2784 if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then 2785 taglist="$taglist $tagname" 2786 2787 # Evaluate the configuration. Be careful to quote the path 2788 # and the sed script, to avoid splitting on whitespace, but 2789 # also don't use non-portable quotes within backquotes within 2790 # quotes we have to do it in 2 steps: 2791 extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` 2792 eval "$extractedcf" 2793 else 2794 func_error "ignoring unknown tag $tagname" 2795 fi 2796 ;; 2797 esac 2798} 2799 2800 2801# func_check_version_match 2802# ------------------------ 2803# Ensure that we are using m4 macros, and libtool script from the same 2804# release of libtool. 2805func_check_version_match () 2806{ 2807 if test "$package_revision" != "$macro_revision"; then 2808 if test "$VERSION" != "$macro_version"; then 2809 if test -z "$macro_version"; then 2810 cat >&2 <<_LT_EOF 2811$progname: Version mismatch error. This is $PACKAGE $VERSION, but the 2812$progname: definition of this LT_INIT comes from an older release. 2813$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION 2814$progname: and run autoconf again. 2815_LT_EOF 2816 else 2817 cat >&2 <<_LT_EOF 2818$progname: Version mismatch error. This is $PACKAGE $VERSION, but the 2819$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. 2820$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION 2821$progname: and run autoconf again. 2822_LT_EOF 2823 fi 2824 else 2825 cat >&2 <<_LT_EOF 2826$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, 2827$progname: but the definition of this LT_INIT comes from revision $macro_revision. 2828$progname: You should recreate aclocal.m4 with macros from revision $package_revision 2829$progname: of $PACKAGE $VERSION and run autoconf again. 2830_LT_EOF 2831 fi 2832 2833 exit $EXIT_MISMATCH 2834 fi 2835} 2836 2837 2838# libtool_options_prep [ARG]... 2839# ----------------------------- 2840# Preparation for options parsed by libtool. 2841libtool_options_prep () 2842{ 2843 $debug_mode 2844 2845 # Option defaults: 2846 opt_config=false 2847 opt_dlopen= 2848 opt_dry_run=false 2849 opt_help=false 2850 opt_mode= 2851 opt_preserve_dup_deps=false 2852 opt_quiet=false 2853 2854 nonopt= 2855 preserve_args= 2856 2857 _G_rc_lt_options_prep=: 2858 2859 # Shorthand for --mode=foo, only valid as the first argument 2860 case $1 in 2861 clean|clea|cle|cl) 2862 shift; set dummy --mode clean ${1+"$@"}; shift 2863 ;; 2864 compile|compil|compi|comp|com|co|c) 2865 shift; set dummy --mode compile ${1+"$@"}; shift 2866 ;; 2867 execute|execut|execu|exec|exe|ex|e) 2868 shift; set dummy --mode execute ${1+"$@"}; shift 2869 ;; 2870 finish|finis|fini|fin|fi|f) 2871 shift; set dummy --mode finish ${1+"$@"}; shift 2872 ;; 2873 install|instal|insta|inst|ins|in|i) 2874 shift; set dummy --mode install ${1+"$@"}; shift 2875 ;; 2876 link|lin|li|l) 2877 shift; set dummy --mode link ${1+"$@"}; shift 2878 ;; 2879 uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) 2880 shift; set dummy --mode uninstall ${1+"$@"}; shift 2881 ;; 2882 *) 2883 _G_rc_lt_options_prep=false 2884 ;; 2885 esac 2886 2887 if $_G_rc_lt_options_prep; then 2888 # Pass back the list of options. 2889 func_quote_for_eval ${1+"$@"} 2890 libtool_options_prep_result=$func_quote_for_eval_result 2891 fi 2892 2893 $_G_rc_lt_options_prep 2894} 2895func_add_hook func_options_prep libtool_options_prep 2896 2897 2898# libtool_parse_options [ARG]... 2899# --------------------------------- 2900# Provide handling for libtool specific options. 2901libtool_parse_options () 2902{ 2903 $debug_cmd 2904 2905 _G_rc_lt_parse_options=false 2906 2907 # Perform our own loop to consume as many options as possible in 2908 # each iteration. 2909 while test $# -gt 0; do 2910 _G_match_lt_parse_options=: 2911 _G_opt=$1 2912 shift 2913 case $_G_opt in 2914 --dry-run|--dryrun|-n) 2915 opt_dry_run=: 2916 ;; 2917 2918 --config) func_config ;; 2919 2920 --dlopen|-dlopen) 2921 opt_dlopen="${opt_dlopen+$opt_dlopen 2922}$1" 2923 shift 2924 ;; 2925 2926 --preserve-dup-deps) 2927 opt_preserve_dup_deps=: ;; 2928 2929 --features) func_features ;; 2930 2931 --finish) set dummy --mode finish ${1+"$@"}; shift ;; 2932 2933 --help) opt_help=: ;; 2934 2935 --help-all) opt_help=': help-all' ;; 2936 2937 --mode) test $# = 0 && func_missing_arg $_G_opt && break 2938 opt_mode=$1 2939 case $1 in 2940 # Valid mode arguments: 2941 clean|compile|execute|finish|install|link|relink|uninstall) ;; 2942 2943 # Catch anything else as an error 2944 *) func_error "invalid argument for $_G_opt" 2945 exit_cmd=exit 2946 break 2947 ;; 2948 esac 2949 shift 2950 ;; 2951 2952 --no-silent|--no-quiet) 2953 opt_quiet=false 2954 func_append preserve_args " $_G_opt" 2955 ;; 2956 2957 --no-warnings|--no-warning|--no-warn) 2958 opt_warning=false 2959 func_append preserve_args " $_G_opt" 2960 ;; 2961 2962 --no-verbose) 2963 opt_verbose=false 2964 func_append preserve_args " $_G_opt" 2965 ;; 2966 2967 --silent|--quiet) 2968 opt_quiet=: 2969 opt_verbose=false 2970 func_append preserve_args " $_G_opt" 2971 ;; 2972 2973 --tag) test $# = 0 && func_missing_arg $_G_opt && break 2974 opt_tag=$1 2975 func_append preserve_args " $_G_opt $1" 2976 func_enable_tag "$1" 2977 shift 2978 ;; 2979 2980 --verbose|-v) opt_quiet=false 2981 opt_verbose=: 2982 func_append preserve_args " $_G_opt" 2983 ;; 2984 2985 # An option not handled by this hook function: 2986 *) set dummy "$_G_opt" ${1+"$@"} ; shift 2987 _G_match_lt_parse_options=false 2988 break 2989 ;; 2990 esac 2991 $_G_match_lt_parse_options && _G_rc_lt_parse_options=: 2992 done 2993 2994 if $_G_rc_lt_parse_options; then 2995 # save modified positional parameters for caller 2996 func_quote_for_eval ${1+"$@"} 2997 libtool_parse_options_result=$func_quote_for_eval_result 2998 fi 2999 3000 $_G_rc_lt_parse_options 3001} 3002func_add_hook func_parse_options libtool_parse_options 3003 3004 3005 3006# libtool_validate_options [ARG]... 3007# --------------------------------- 3008# Perform any sanity checks on option settings and/or unconsumed 3009# arguments. 3010libtool_validate_options () 3011{ 3012 # save first non-option argument 3013 if test 0 -lt $#; then 3014 nonopt=$1 3015 shift 3016 fi 3017 3018 # preserve --debug 3019 test : = "$debug_cmd" || func_append preserve_args " --debug" 3020 3021 case $host in 3022 # Solaris2 added to fix http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452 3023 # see also: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788 3024 *cygwin* | *mingw* | *pw32* | *cegcc* | *solaris2* | *os2*) 3025 # don't eliminate duplications in $postdeps and $predeps 3026 opt_duplicate_compiler_generated_deps=: 3027 ;; 3028 *) 3029 opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps 3030 ;; 3031 esac 3032 3033 $opt_help || { 3034 # Sanity checks first: 3035 func_check_version_match 3036 3037 test yes != "$build_libtool_libs" \ 3038 && test yes != "$build_old_libs" \ 3039 && func_fatal_configuration "not configured to build any kind of library" 3040 3041 # Darwin sucks 3042 eval std_shrext=\"$shrext_cmds\" 3043 3044 # Only execute mode is allowed to have -dlopen flags. 3045 if test -n "$opt_dlopen" && test execute != "$opt_mode"; then 3046 func_error "unrecognized option '-dlopen'" 3047 $ECHO "$help" 1>&2 3048 exit $EXIT_FAILURE 3049 fi 3050 3051 # Change the help message to a mode-specific one. 3052 generic_help=$help 3053 help="Try '$progname --help --mode=$opt_mode' for more information." 3054 } 3055 3056 # Pass back the unparsed argument list 3057 func_quote_for_eval ${1+"$@"} 3058 libtool_validate_options_result=$func_quote_for_eval_result 3059} 3060func_add_hook func_validate_options libtool_validate_options 3061 3062 3063# Process options as early as possible so that --help and --version 3064# can return quickly. 3065func_options ${1+"$@"} 3066eval set dummy "$func_options_result"; shift 3067 3068 3069 3070## ----------- ## 3071## Main. ## 3072## ----------- ## 3073 3074magic='%%%MAGIC variable%%%' 3075magic_exe='%%%MAGIC EXE variable%%%' 3076 3077# Global variables. 3078extracted_archives= 3079extracted_serial=0 3080 3081# If this variable is set in any of the actions, the command in it 3082# will be execed at the end. This prevents here-documents from being 3083# left over by shells. 3084exec_cmd= 3085 3086 3087# A function that is used when there is no print builtin or printf. 3088func_fallback_echo () 3089{ 3090 eval 'cat <<_LTECHO_EOF 3091$1 3092_LTECHO_EOF' 3093} 3094 3095# func_generated_by_libtool 3096# True iff stdin has been generated by Libtool. This function is only 3097# a basic sanity check; it will hardly flush out determined imposters. 3098func_generated_by_libtool_p () 3099{ 3100 $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 3101} 3102 3103# func_lalib_p file 3104# True iff FILE is a libtool '.la' library or '.lo' object file. 3105# This function is only a basic sanity check; it will hardly flush out 3106# determined imposters. 3107func_lalib_p () 3108{ 3109 test -f "$1" && 3110 $SED -e 4q "$1" 2>/dev/null | func_generated_by_libtool_p 3111} 3112 3113# func_lalib_unsafe_p file 3114# True iff FILE is a libtool '.la' library or '.lo' object file. 3115# This function implements the same check as func_lalib_p without 3116# resorting to external programs. To this end, it redirects stdin and 3117# closes it afterwards, without saving the original file descriptor. 3118# As a safety measure, use it only where a negative result would be 3119# fatal anyway. Works if 'file' does not exist. 3120func_lalib_unsafe_p () 3121{ 3122 lalib_p=no 3123 if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then 3124 for lalib_p_l in 1 2 3 4 3125 do 3126 read lalib_p_line 3127 case $lalib_p_line in 3128 \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; 3129 esac 3130 done 3131 exec 0<&5 5<&- 3132 fi 3133 test yes = "$lalib_p" 3134} 3135 3136# func_ltwrapper_script_p file 3137# True iff FILE is a libtool wrapper script 3138# This function is only a basic sanity check; it will hardly flush out 3139# determined imposters. 3140func_ltwrapper_script_p () 3141{ 3142 test -f "$1" && 3143 $lt_truncate_bin < "$1" 2>/dev/null | func_generated_by_libtool_p 3144} 3145 3146# func_ltwrapper_executable_p file 3147# True iff FILE is a libtool wrapper executable 3148# This function is only a basic sanity check; it will hardly flush out 3149# determined imposters. 3150func_ltwrapper_executable_p () 3151{ 3152 func_ltwrapper_exec_suffix= 3153 case $1 in 3154 *.exe) ;; 3155 *) func_ltwrapper_exec_suffix=.exe ;; 3156 esac 3157 $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 3158} 3159 3160# func_ltwrapper_scriptname file 3161# Assumes file is an ltwrapper_executable 3162# uses $file to determine the appropriate filename for a 3163# temporary ltwrapper_script. 3164func_ltwrapper_scriptname () 3165{ 3166 func_dirname_and_basename "$1" "" "." 3167 func_stripname '' '.exe' "$func_basename_result" 3168 func_ltwrapper_scriptname_result=$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper 3169} 3170 3171# func_ltwrapper_p file 3172# True iff FILE is a libtool wrapper script or wrapper executable 3173# This function is only a basic sanity check; it will hardly flush out 3174# determined imposters. 3175func_ltwrapper_p () 3176{ 3177 func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" 3178} 3179 3180 3181# func_execute_cmds commands fail_cmd 3182# Execute tilde-delimited COMMANDS. 3183# If FAIL_CMD is given, eval that upon failure. 3184# FAIL_CMD may read-access the current command in variable CMD! 3185func_execute_cmds () 3186{ 3187 $debug_cmd 3188 3189 save_ifs=$IFS; IFS='~' 3190 for cmd in $1; do 3191 IFS=$sp$nl 3192 eval cmd=\"$cmd\" 3193 IFS=$save_ifs 3194 func_show_eval "$cmd" "${2-:}" 3195 done 3196 IFS=$save_ifs 3197} 3198 3199 3200# func_source file 3201# Source FILE, adding directory component if necessary. 3202# Note that it is not necessary on cygwin/mingw to append a dot to 3203# FILE even if both FILE and FILE.exe exist: automatic-append-.exe 3204# behavior happens only for exec(3), not for open(2)! Also, sourcing 3205# 'FILE.' does not work on cygwin managed mounts. 3206func_source () 3207{ 3208 $debug_cmd 3209 3210 case $1 in 3211 */* | *\\*) . "$1" ;; 3212 *) . "./$1" ;; 3213 esac 3214} 3215 3216 3217# func_resolve_sysroot PATH 3218# Replace a leading = in PATH with a sysroot. Store the result into 3219# func_resolve_sysroot_result 3220func_resolve_sysroot () 3221{ 3222 func_resolve_sysroot_result=$1 3223 case $func_resolve_sysroot_result in 3224 =*) 3225 func_stripname '=' '' "$func_resolve_sysroot_result" 3226 func_resolve_sysroot_result=$lt_sysroot$func_stripname_result 3227 ;; 3228 esac 3229} 3230 3231# func_replace_sysroot PATH 3232# If PATH begins with the sysroot, replace it with = and 3233# store the result into func_replace_sysroot_result. 3234func_replace_sysroot () 3235{ 3236 case $lt_sysroot:$1 in 3237 ?*:"$lt_sysroot"*) 3238 func_stripname "$lt_sysroot" '' "$1" 3239 func_replace_sysroot_result='='$func_stripname_result 3240 ;; 3241 *) 3242 # Including no sysroot. 3243 func_replace_sysroot_result=$1 3244 ;; 3245 esac 3246} 3247 3248# func_infer_tag arg 3249# Infer tagged configuration to use if any are available and 3250# if one wasn't chosen via the "--tag" command line option. 3251# Only attempt this if the compiler in the base compile 3252# command doesn't match the default compiler. 3253# arg is usually of the form 'gcc ...' 3254func_infer_tag () 3255{ 3256 $debug_cmd 3257 3258 if test -n "$available_tags" && test -z "$tagname"; then 3259 CC_quoted= 3260 for arg in $CC; do 3261 func_append_quoted CC_quoted "$arg" 3262 done 3263 CC_expanded=`func_echo_all $CC` 3264 CC_quoted_expanded=`func_echo_all $CC_quoted` 3265 case $@ in 3266 # Blanks in the command may have been stripped by the calling shell, 3267 # but not from the CC environment variable when configure was run. 3268 " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ 3269 " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; 3270 # Blanks at the start of $base_compile will cause this to fail 3271 # if we don't check for them as well. 3272 *) 3273 for z in $available_tags; do 3274 if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then 3275 # Evaluate the configuration. 3276 eval "`$SED -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" 3277 CC_quoted= 3278 for arg in $CC; do 3279 # Double-quote args containing other shell metacharacters. 3280 func_append_quoted CC_quoted "$arg" 3281 done 3282 CC_expanded=`func_echo_all $CC` 3283 CC_quoted_expanded=`func_echo_all $CC_quoted` 3284 case "$@ " in 3285 " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ 3286 " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) 3287 # The compiler in the base compile command matches 3288 # the one in the tagged configuration. 3289 # Assume this is the tagged configuration we want. 3290 tagname=$z 3291 break 3292 ;; 3293 esac 3294 fi 3295 done 3296 # If $tagname still isn't set, then no tagged configuration 3297 # was found and let the user know that the "--tag" command 3298 # line option must be used. 3299 if test -z "$tagname"; then 3300 func_echo "unable to infer tagged configuration" 3301 func_fatal_error "specify a tag with '--tag'" 3302# else 3303# func_verbose "using $tagname tagged configuration" 3304 fi 3305 ;; 3306 esac 3307 fi 3308} 3309 3310 3311 3312# func_write_libtool_object output_name pic_name nonpic_name 3313# Create a libtool object file (analogous to a ".la" file), 3314# but don't create it if we're doing a dry run. 3315func_write_libtool_object () 3316{ 3317 write_libobj=$1 3318 if test yes = "$build_libtool_libs"; then 3319 write_lobj=\'$2\' 3320 else 3321 write_lobj=none 3322 fi 3323 3324 if test yes = "$build_old_libs"; then 3325 write_oldobj=\'$3\' 3326 else 3327 write_oldobj=none 3328 fi 3329 3330 $opt_dry_run || { 3331 cat >${write_libobj}T <<EOF 3332# $write_libobj - a libtool object file 3333# Generated by $PROGRAM (GNU $PACKAGE) $VERSION 3334# 3335# Please DO NOT delete this file! 3336# It is necessary for linking the library. 3337 3338# Name of the PIC object. 3339pic_object=$write_lobj 3340 3341# Name of the non-PIC object 3342non_pic_object=$write_oldobj 3343 3344EOF 3345 $MV "${write_libobj}T" "$write_libobj" 3346 } 3347} 3348 3349 3350################################################## 3351# FILE NAME AND PATH CONVERSION HELPER FUNCTIONS # 3352################################################## 3353 3354# func_convert_core_file_wine_to_w32 ARG 3355# Helper function used by file name conversion functions when $build is *nix, 3356# and $host is mingw, cygwin, or some other w32 environment. Relies on a 3357# correctly configured wine environment available, with the winepath program 3358# in $build's $PATH. 3359# 3360# ARG is the $build file name to be converted to w32 format. 3361# Result is available in $func_convert_core_file_wine_to_w32_result, and will 3362# be empty on error (or when ARG is empty) 3363func_convert_core_file_wine_to_w32 () 3364{ 3365 $debug_cmd 3366 3367 func_convert_core_file_wine_to_w32_result=$1 3368 if test -n "$1"; then 3369 # Unfortunately, winepath does not exit with a non-zero error code, so we 3370 # are forced to check the contents of stdout. On the other hand, if the 3371 # command is not found, the shell will set an exit code of 127 and print 3372 # *an error message* to stdout. So we must check for both error code of 3373 # zero AND non-empty stdout, which explains the odd construction: 3374 func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null` 3375 if test "$?" -eq 0 && test -n "$func_convert_core_file_wine_to_w32_tmp"; then 3376 func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | 3377 $SED -e "$sed_naive_backslashify"` 3378 else 3379 func_convert_core_file_wine_to_w32_result= 3380 fi 3381 fi 3382} 3383# end: func_convert_core_file_wine_to_w32 3384 3385 3386# func_convert_core_path_wine_to_w32 ARG 3387# Helper function used by path conversion functions when $build is *nix, and 3388# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly 3389# configured wine environment available, with the winepath program in $build's 3390# $PATH. Assumes ARG has no leading or trailing path separator characters. 3391# 3392# ARG is path to be converted from $build format to win32. 3393# Result is available in $func_convert_core_path_wine_to_w32_result. 3394# Unconvertible file (directory) names in ARG are skipped; if no directory names 3395# are convertible, then the result may be empty. 3396func_convert_core_path_wine_to_w32 () 3397{ 3398 $debug_cmd 3399 3400 # unfortunately, winepath doesn't convert paths, only file names 3401 func_convert_core_path_wine_to_w32_result= 3402 if test -n "$1"; then 3403 oldIFS=$IFS 3404 IFS=: 3405 for func_convert_core_path_wine_to_w32_f in $1; do 3406 IFS=$oldIFS 3407 func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" 3408 if test -n "$func_convert_core_file_wine_to_w32_result"; then 3409 if test -z "$func_convert_core_path_wine_to_w32_result"; then 3410 func_convert_core_path_wine_to_w32_result=$func_convert_core_file_wine_to_w32_result 3411 else 3412 func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" 3413 fi 3414 fi 3415 done 3416 IFS=$oldIFS 3417 fi 3418} 3419# end: func_convert_core_path_wine_to_w32 3420 3421 3422# func_cygpath ARGS... 3423# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when 3424# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) 3425# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or 3426# (2), returns the Cygwin file name or path in func_cygpath_result (input 3427# file name or path is assumed to be in w32 format, as previously converted 3428# from $build's *nix or MSYS format). In case (3), returns the w32 file name 3429# or path in func_cygpath_result (input file name or path is assumed to be in 3430# Cygwin format). Returns an empty string on error. 3431# 3432# ARGS are passed to cygpath, with the last one being the file name or path to 3433# be converted. 3434# 3435# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH 3436# environment variable; do not put it in $PATH. 3437func_cygpath () 3438{ 3439 $debug_cmd 3440 3441 if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then 3442 func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` 3443 if test "$?" -ne 0; then 3444 # on failure, ensure result is empty 3445 func_cygpath_result= 3446 fi 3447 else 3448 func_cygpath_result= 3449 func_error "LT_CYGPATH is empty or specifies non-existent file: '$LT_CYGPATH'" 3450 fi 3451} 3452#end: func_cygpath 3453 3454 3455# func_convert_core_msys_to_w32 ARG 3456# Convert file name or path ARG from MSYS format to w32 format. Return 3457# result in func_convert_core_msys_to_w32_result. 3458func_convert_core_msys_to_w32 () 3459{ 3460 $debug_cmd 3461 3462 # awkward: cmd appends spaces to result 3463 func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | 3464 $SED -e 's/[ ]*$//' -e "$sed_naive_backslashify"` 3465} 3466#end: func_convert_core_msys_to_w32 3467 3468 3469# func_convert_file_check ARG1 ARG2 3470# Verify that ARG1 (a file name in $build format) was converted to $host 3471# format in ARG2. Otherwise, emit an error message, but continue (resetting 3472# func_to_host_file_result to ARG1). 3473func_convert_file_check () 3474{ 3475 $debug_cmd 3476 3477 if test -z "$2" && test -n "$1"; then 3478 func_error "Could not determine host file name corresponding to" 3479 func_error " '$1'" 3480 func_error "Continuing, but uninstalled executables may not work." 3481 # Fallback: 3482 func_to_host_file_result=$1 3483 fi 3484} 3485# end func_convert_file_check 3486 3487 3488# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH 3489# Verify that FROM_PATH (a path in $build format) was converted to $host 3490# format in TO_PATH. Otherwise, emit an error message, but continue, resetting 3491# func_to_host_file_result to a simplistic fallback value (see below). 3492func_convert_path_check () 3493{ 3494 $debug_cmd 3495 3496 if test -z "$4" && test -n "$3"; then 3497 func_error "Could not determine the host path corresponding to" 3498 func_error " '$3'" 3499 func_error "Continuing, but uninstalled executables may not work." 3500 # Fallback. This is a deliberately simplistic "conversion" and 3501 # should not be "improved". See libtool.info. 3502 if test "x$1" != "x$2"; then 3503 lt_replace_pathsep_chars="s|$1|$2|g" 3504 func_to_host_path_result=`echo "$3" | 3505 $SED -e "$lt_replace_pathsep_chars"` 3506 else 3507 func_to_host_path_result=$3 3508 fi 3509 fi 3510} 3511# end func_convert_path_check 3512 3513 3514# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG 3515# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT 3516# and appending REPL if ORIG matches BACKPAT. 3517func_convert_path_front_back_pathsep () 3518{ 3519 $debug_cmd 3520 3521 case $4 in 3522 $1 ) func_to_host_path_result=$3$func_to_host_path_result 3523 ;; 3524 esac 3525 case $4 in 3526 $2 ) func_append func_to_host_path_result "$3" 3527 ;; 3528 esac 3529} 3530# end func_convert_path_front_back_pathsep 3531 3532 3533################################################## 3534# $build to $host FILE NAME CONVERSION FUNCTIONS # 3535################################################## 3536# invoked via '$to_host_file_cmd ARG' 3537# 3538# In each case, ARG is the path to be converted from $build to $host format. 3539# Result will be available in $func_to_host_file_result. 3540 3541 3542# func_to_host_file ARG 3543# Converts the file name ARG from $build format to $host format. Return result 3544# in func_to_host_file_result. 3545func_to_host_file () 3546{ 3547 $debug_cmd 3548 3549 $to_host_file_cmd "$1" 3550} 3551# end func_to_host_file 3552 3553 3554# func_to_tool_file ARG LAZY 3555# converts the file name ARG from $build format to toolchain format. Return 3556# result in func_to_tool_file_result. If the conversion in use is listed 3557# in (the comma separated) LAZY, no conversion takes place. 3558func_to_tool_file () 3559{ 3560 $debug_cmd 3561 3562 case ,$2, in 3563 *,"$to_tool_file_cmd",*) 3564 func_to_tool_file_result=$1 3565 ;; 3566 *) 3567 $to_tool_file_cmd "$1" 3568 func_to_tool_file_result=$func_to_host_file_result 3569 ;; 3570 esac 3571} 3572# end func_to_tool_file 3573 3574 3575# func_convert_file_noop ARG 3576# Copy ARG to func_to_host_file_result. 3577func_convert_file_noop () 3578{ 3579 func_to_host_file_result=$1 3580} 3581# end func_convert_file_noop 3582 3583 3584# func_convert_file_msys_to_w32 ARG 3585# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic 3586# conversion to w32 is not available inside the cwrapper. Returns result in 3587# func_to_host_file_result. 3588func_convert_file_msys_to_w32 () 3589{ 3590 $debug_cmd 3591 3592 func_to_host_file_result=$1 3593 if test -n "$1"; then 3594 func_convert_core_msys_to_w32 "$1" 3595 func_to_host_file_result=$func_convert_core_msys_to_w32_result 3596 fi 3597 func_convert_file_check "$1" "$func_to_host_file_result" 3598} 3599# end func_convert_file_msys_to_w32 3600 3601 3602# func_convert_file_cygwin_to_w32 ARG 3603# Convert file name ARG from Cygwin to w32 format. Returns result in 3604# func_to_host_file_result. 3605func_convert_file_cygwin_to_w32 () 3606{ 3607 $debug_cmd 3608 3609 func_to_host_file_result=$1 3610 if test -n "$1"; then 3611 # because $build is cygwin, we call "the" cygpath in $PATH; no need to use 3612 # LT_CYGPATH in this case. 3613 func_to_host_file_result=`cygpath -m "$1"` 3614 fi 3615 func_convert_file_check "$1" "$func_to_host_file_result" 3616} 3617# end func_convert_file_cygwin_to_w32 3618 3619 3620# func_convert_file_nix_to_w32 ARG 3621# Convert file name ARG from *nix to w32 format. Requires a wine environment 3622# and a working winepath. Returns result in func_to_host_file_result. 3623func_convert_file_nix_to_w32 () 3624{ 3625 $debug_cmd 3626 3627 func_to_host_file_result=$1 3628 if test -n "$1"; then 3629 func_convert_core_file_wine_to_w32 "$1" 3630 func_to_host_file_result=$func_convert_core_file_wine_to_w32_result 3631 fi 3632 func_convert_file_check "$1" "$func_to_host_file_result" 3633} 3634# end func_convert_file_nix_to_w32 3635 3636 3637# func_convert_file_msys_to_cygwin ARG 3638# Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. 3639# Returns result in func_to_host_file_result. 3640func_convert_file_msys_to_cygwin () 3641{ 3642 $debug_cmd 3643 3644 func_to_host_file_result=$1 3645 if test -n "$1"; then 3646 func_convert_core_msys_to_w32 "$1" 3647 func_cygpath -u "$func_convert_core_msys_to_w32_result" 3648 func_to_host_file_result=$func_cygpath_result 3649 fi 3650 func_convert_file_check "$1" "$func_to_host_file_result" 3651} 3652# end func_convert_file_msys_to_cygwin 3653 3654 3655# func_convert_file_nix_to_cygwin ARG 3656# Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed 3657# in a wine environment, working winepath, and LT_CYGPATH set. Returns result 3658# in func_to_host_file_result. 3659func_convert_file_nix_to_cygwin () 3660{ 3661 $debug_cmd 3662 3663 func_to_host_file_result=$1 3664 if test -n "$1"; then 3665 # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. 3666 func_convert_core_file_wine_to_w32 "$1" 3667 func_cygpath -u "$func_convert_core_file_wine_to_w32_result" 3668 func_to_host_file_result=$func_cygpath_result 3669 fi 3670 func_convert_file_check "$1" "$func_to_host_file_result" 3671} 3672# end func_convert_file_nix_to_cygwin 3673 3674 3675############################################# 3676# $build to $host PATH CONVERSION FUNCTIONS # 3677############################################# 3678# invoked via '$to_host_path_cmd ARG' 3679# 3680# In each case, ARG is the path to be converted from $build to $host format. 3681# The result will be available in $func_to_host_path_result. 3682# 3683# Path separators are also converted from $build format to $host format. If 3684# ARG begins or ends with a path separator character, it is preserved (but 3685# converted to $host format) on output. 3686# 3687# All path conversion functions are named using the following convention: 3688# file name conversion function : func_convert_file_X_to_Y () 3689# path conversion function : func_convert_path_X_to_Y () 3690# where, for any given $build/$host combination the 'X_to_Y' value is the 3691# same. If conversion functions are added for new $build/$host combinations, 3692# the two new functions must follow this pattern, or func_init_to_host_path_cmd 3693# will break. 3694 3695 3696# func_init_to_host_path_cmd 3697# Ensures that function "pointer" variable $to_host_path_cmd is set to the 3698# appropriate value, based on the value of $to_host_file_cmd. 3699to_host_path_cmd= 3700func_init_to_host_path_cmd () 3701{ 3702 $debug_cmd 3703 3704 if test -z "$to_host_path_cmd"; then 3705 func_stripname 'func_convert_file_' '' "$to_host_file_cmd" 3706 to_host_path_cmd=func_convert_path_$func_stripname_result 3707 fi 3708} 3709 3710 3711# func_to_host_path ARG 3712# Converts the path ARG from $build format to $host format. Return result 3713# in func_to_host_path_result. 3714func_to_host_path () 3715{ 3716 $debug_cmd 3717 3718 func_init_to_host_path_cmd 3719 $to_host_path_cmd "$1" 3720} 3721# end func_to_host_path 3722 3723 3724# func_convert_path_noop ARG 3725# Copy ARG to func_to_host_path_result. 3726func_convert_path_noop () 3727{ 3728 func_to_host_path_result=$1 3729} 3730# end func_convert_path_noop 3731 3732 3733# func_convert_path_msys_to_w32 ARG 3734# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic 3735# conversion to w32 is not available inside the cwrapper. Returns result in 3736# func_to_host_path_result. 3737func_convert_path_msys_to_w32 () 3738{ 3739 $debug_cmd 3740 3741 func_to_host_path_result=$1 3742 if test -n "$1"; then 3743 # Remove leading and trailing path separator characters from ARG. MSYS 3744 # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; 3745 # and winepath ignores them completely. 3746 func_stripname : : "$1" 3747 func_to_host_path_tmp1=$func_stripname_result 3748 func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" 3749 func_to_host_path_result=$func_convert_core_msys_to_w32_result 3750 func_convert_path_check : ";" \ 3751 "$func_to_host_path_tmp1" "$func_to_host_path_result" 3752 func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" 3753 fi 3754} 3755# end func_convert_path_msys_to_w32 3756 3757 3758# func_convert_path_cygwin_to_w32 ARG 3759# Convert path ARG from Cygwin to w32 format. Returns result in 3760# func_to_host_file_result. 3761func_convert_path_cygwin_to_w32 () 3762{ 3763 $debug_cmd 3764 3765 func_to_host_path_result=$1 3766 if test -n "$1"; then 3767 # See func_convert_path_msys_to_w32: 3768 func_stripname : : "$1" 3769 func_to_host_path_tmp1=$func_stripname_result 3770 func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` 3771 func_convert_path_check : ";" \ 3772 "$func_to_host_path_tmp1" "$func_to_host_path_result" 3773 func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" 3774 fi 3775} 3776# end func_convert_path_cygwin_to_w32 3777 3778 3779# func_convert_path_nix_to_w32 ARG 3780# Convert path ARG from *nix to w32 format. Requires a wine environment and 3781# a working winepath. Returns result in func_to_host_file_result. 3782func_convert_path_nix_to_w32 () 3783{ 3784 $debug_cmd 3785 3786 func_to_host_path_result=$1 3787 if test -n "$1"; then 3788 # See func_convert_path_msys_to_w32: 3789 func_stripname : : "$1" 3790 func_to_host_path_tmp1=$func_stripname_result 3791 func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" 3792 func_to_host_path_result=$func_convert_core_path_wine_to_w32_result 3793 func_convert_path_check : ";" \ 3794 "$func_to_host_path_tmp1" "$func_to_host_path_result" 3795 func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" 3796 fi 3797} 3798# end func_convert_path_nix_to_w32 3799 3800 3801# func_convert_path_msys_to_cygwin ARG 3802# Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. 3803# Returns result in func_to_host_file_result. 3804func_convert_path_msys_to_cygwin () 3805{ 3806 $debug_cmd 3807 3808 func_to_host_path_result=$1 3809 if test -n "$1"; then 3810 # See func_convert_path_msys_to_w32: 3811 func_stripname : : "$1" 3812 func_to_host_path_tmp1=$func_stripname_result 3813 func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" 3814 func_cygpath -u -p "$func_convert_core_msys_to_w32_result" 3815 func_to_host_path_result=$func_cygpath_result 3816 func_convert_path_check : : \ 3817 "$func_to_host_path_tmp1" "$func_to_host_path_result" 3818 func_convert_path_front_back_pathsep ":*" "*:" : "$1" 3819 fi 3820} 3821# end func_convert_path_msys_to_cygwin 3822 3823 3824# func_convert_path_nix_to_cygwin ARG 3825# Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a 3826# a wine environment, working winepath, and LT_CYGPATH set. Returns result in 3827# func_to_host_file_result. 3828func_convert_path_nix_to_cygwin () 3829{ 3830 $debug_cmd 3831 3832 func_to_host_path_result=$1 3833 if test -n "$1"; then 3834 # Remove leading and trailing path separator characters from 3835 # ARG. msys behavior is inconsistent here, cygpath turns them 3836 # into '.;' and ';.', and winepath ignores them completely. 3837 func_stripname : : "$1" 3838 func_to_host_path_tmp1=$func_stripname_result 3839 func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" 3840 func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" 3841 func_to_host_path_result=$func_cygpath_result 3842 func_convert_path_check : : \ 3843 "$func_to_host_path_tmp1" "$func_to_host_path_result" 3844 func_convert_path_front_back_pathsep ":*" "*:" : "$1" 3845 fi 3846} 3847# end func_convert_path_nix_to_cygwin 3848 3849 3850# func_dll_def_p FILE 3851# True iff FILE is a Windows DLL '.def' file. 3852# Keep in sync with _LT_DLL_DEF_P in libtool.m4 3853func_dll_def_p () 3854{ 3855 $debug_cmd 3856 3857 func_dll_def_p_tmp=`$SED -n \ 3858 -e 's/^[ ]*//' \ 3859 -e '/^\(;.*\)*$/d' \ 3860 -e 's/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p' \ 3861 -e q \ 3862 "$1"` 3863 test DEF = "$func_dll_def_p_tmp" 3864} 3865 3866 3867# func_mode_compile arg... 3868func_mode_compile () 3869{ 3870 $debug_cmd 3871 3872 # Get the compilation command and the source file. 3873 base_compile= 3874 srcfile=$nonopt # always keep a non-empty value in "srcfile" 3875 suppress_opt=yes 3876 suppress_output= 3877 arg_mode=normal 3878 libobj= 3879 later= 3880 pie_flag= 3881 3882 for arg 3883 do 3884 case $arg_mode in 3885 arg ) 3886 # do not "continue". Instead, add this to base_compile 3887 lastarg=$arg 3888 arg_mode=normal 3889 ;; 3890 3891 target ) 3892 libobj=$arg 3893 arg_mode=normal 3894 continue 3895 ;; 3896 3897 normal ) 3898 # Accept any command-line options. 3899 case $arg in 3900 -o) 3901 test -n "$libobj" && \ 3902 func_fatal_error "you cannot specify '-o' more than once" 3903 arg_mode=target 3904 continue 3905 ;; 3906 3907 -pie | -fpie | -fPIE) 3908 func_append pie_flag " $arg" 3909 continue 3910 ;; 3911 3912 -shared | -static | -prefer-pic | -prefer-non-pic) 3913 func_append later " $arg" 3914 continue 3915 ;; 3916 3917 -no-suppress) 3918 suppress_opt=no 3919 continue 3920 ;; 3921 3922 -Xcompiler) 3923 arg_mode=arg # the next one goes into the "base_compile" arg list 3924 continue # The current "srcfile" will either be retained or 3925 ;; # replaced later. I would guess that would be a bug. 3926 3927 -Wc,*) 3928 func_stripname '-Wc,' '' "$arg" 3929 args=$func_stripname_result 3930 lastarg= 3931 save_ifs=$IFS; IFS=, 3932 for arg in $args; do 3933 IFS=$save_ifs 3934 func_append_quoted lastarg "$arg" 3935 done 3936 IFS=$save_ifs 3937 func_stripname ' ' '' "$lastarg" 3938 lastarg=$func_stripname_result 3939 3940 # Add the arguments to base_compile. 3941 func_append base_compile " $lastarg" 3942 continue 3943 ;; 3944 3945 *) 3946 # Accept the current argument as the source file. 3947 # The previous "srcfile" becomes the current argument. 3948 # 3949 lastarg=$srcfile 3950 srcfile=$arg 3951 ;; 3952 esac # case $arg 3953 ;; 3954 esac # case $arg_mode 3955 3956 # Aesthetically quote the previous argument. 3957 func_append_quoted base_compile "$lastarg" 3958 done # for arg 3959 3960 case $arg_mode in 3961 arg) 3962 func_fatal_error "you must specify an argument for -Xcompile" 3963 ;; 3964 target) 3965 func_fatal_error "you must specify a target with '-o'" 3966 ;; 3967 *) 3968 # Get the name of the library object. 3969 test -z "$libobj" && { 3970 func_basename "$srcfile" 3971 libobj=$func_basename_result 3972 } 3973 ;; 3974 esac 3975 3976 # Recognize several different file suffixes. 3977 # If the user specifies -o file.o, it is replaced with file.lo 3978 case $libobj in 3979 *.[cCFSifmso] | \ 3980 *.ada | *.adb | *.ads | *.asm | \ 3981 *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ 3982 *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) 3983 func_xform "$libobj" 3984 libobj=$func_xform_result 3985 ;; 3986 esac 3987 3988 case $libobj in 3989 *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; 3990 *) 3991 func_fatal_error "cannot determine name of library object from '$libobj'" 3992 ;; 3993 esac 3994 3995 func_infer_tag $base_compile 3996 3997 for arg in $later; do 3998 case $arg in 3999 -shared) 4000 test yes = "$build_libtool_libs" \ 4001 || func_fatal_configuration "cannot build a shared library" 4002 build_old_libs=no 4003 continue 4004 ;; 4005 4006 -static) 4007 build_libtool_libs=no 4008 build_old_libs=yes 4009 continue 4010 ;; 4011 4012 -prefer-pic) 4013 pic_mode=yes 4014 continue 4015 ;; 4016 4017 -prefer-non-pic) 4018 pic_mode=no 4019 continue 4020 ;; 4021 esac 4022 done 4023 4024 func_quote_for_eval "$libobj" 4025 test "X$libobj" != "X$func_quote_for_eval_result" \ 4026 && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ 4027 && func_warning "libobj name '$libobj' may not contain shell special characters." 4028 func_dirname_and_basename "$obj" "/" "" 4029 objname=$func_basename_result 4030 xdir=$func_dirname_result 4031 lobj=$xdir$objdir/$objname 4032 4033 test -z "$base_compile" && \ 4034 func_fatal_help "you must specify a compilation command" 4035 4036 # Delete any leftover library objects. 4037 if test yes = "$build_old_libs"; then 4038 removelist="$obj $lobj $libobj ${libobj}T" 4039 else 4040 removelist="$lobj $libobj ${libobj}T" 4041 fi 4042 4043 # On Cygwin there's no "real" PIC flag so we must build both object types 4044 case $host_os in 4045 cygwin* | mingw* | pw32* | os2* | cegcc*) 4046 pic_mode=default 4047 ;; 4048 esac 4049 if test no = "$pic_mode" && test pass_all != "$deplibs_check_method"; then 4050 # non-PIC code in shared libraries is not supported 4051 pic_mode=default 4052 fi 4053 4054 # Calculate the filename of the output object if compiler does 4055 # not support -o with -c 4056 if test no = "$compiler_c_o"; then 4057 output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.$objext 4058 lockfile=$output_obj.lock 4059 else 4060 output_obj= 4061 need_locks=no 4062 lockfile= 4063 fi 4064 4065 # Lock this critical section if it is needed 4066 # We use this script file to make the link, it avoids creating a new file 4067 if test yes = "$need_locks"; then 4068 until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do 4069 func_echo "Waiting for $lockfile to be removed" 4070 sleep 2 4071 done 4072 elif test warn = "$need_locks"; then 4073 if test -f "$lockfile"; then 4074 $ECHO "\ 4075*** ERROR, $lockfile exists and contains: 4076`cat $lockfile 2>/dev/null` 4077 4078This indicates that another process is trying to use the same 4079temporary object file, and libtool could not work around it because 4080your compiler does not support '-c' and '-o' together. If you 4081repeat this compilation, it may succeed, by chance, but you had better 4082avoid parallel builds (make -j) in this platform, or get a better 4083compiler." 4084 4085 $opt_dry_run || $RM $removelist 4086 exit $EXIT_FAILURE 4087 fi 4088 func_append removelist " $output_obj" 4089 $ECHO "$srcfile" > "$lockfile" 4090 fi 4091 4092 $opt_dry_run || $RM $removelist 4093 func_append removelist " $lockfile" 4094 trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 4095 4096 func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 4097 srcfile=$func_to_tool_file_result 4098 func_quote_for_eval "$srcfile" 4099 qsrcfile=$func_quote_for_eval_result 4100 4101 # Only build a PIC object if we are building libtool libraries. 4102 if test yes = "$build_libtool_libs"; then 4103 # Without this assignment, base_compile gets emptied. 4104 fbsd_hideous_sh_bug=$base_compile 4105 4106 if test no != "$pic_mode"; then 4107 command="$base_compile $qsrcfile $pic_flag" 4108 else 4109 # Don't build PIC code 4110 command="$base_compile $qsrcfile" 4111 fi 4112 4113 func_mkdir_p "$xdir$objdir" 4114 4115 if test -z "$output_obj"; then 4116 # Place PIC objects in $objdir 4117 func_append command " -o $lobj" 4118 fi 4119 4120 func_show_eval_locale "$command" \ 4121 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' 4122 4123 if test warn = "$need_locks" && 4124 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 4125 $ECHO "\ 4126*** ERROR, $lockfile contains: 4127`cat $lockfile 2>/dev/null` 4128 4129but it should contain: 4130$srcfile 4131 4132This indicates that another process is trying to use the same 4133temporary object file, and libtool could not work around it because 4134your compiler does not support '-c' and '-o' together. If you 4135repeat this compilation, it may succeed, by chance, but you had better 4136avoid parallel builds (make -j) in this platform, or get a better 4137compiler." 4138 4139 $opt_dry_run || $RM $removelist 4140 exit $EXIT_FAILURE 4141 fi 4142 4143 # Just move the object if needed, then go on to compile the next one 4144 if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then 4145 func_show_eval '$MV "$output_obj" "$lobj"' \ 4146 'error=$?; $opt_dry_run || $RM $removelist; exit $error' 4147 fi 4148 4149 # Allow error messages only from the first compilation. 4150 if test yes = "$suppress_opt"; then 4151 suppress_output=' >/dev/null 2>&1' 4152 fi 4153 fi 4154 4155 # Only build a position-dependent object if we build old libraries. 4156 if test yes = "$build_old_libs"; then 4157 if test yes != "$pic_mode"; then 4158 # Don't build PIC code 4159 command="$base_compile $qsrcfile$pie_flag" 4160 else 4161 command="$base_compile $qsrcfile $pic_flag" 4162 fi 4163 if test yes = "$compiler_c_o"; then 4164 func_append command " -o $obj" 4165 fi 4166 4167 # Suppress compiler output if we already did a PIC compilation. 4168 func_append command "$suppress_output" 4169 func_show_eval_locale "$command" \ 4170 '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 4171 4172 if test warn = "$need_locks" && 4173 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 4174 $ECHO "\ 4175*** ERROR, $lockfile contains: 4176`cat $lockfile 2>/dev/null` 4177 4178but it should contain: 4179$srcfile 4180 4181This indicates that another process is trying to use the same 4182temporary object file, and libtool could not work around it because 4183your compiler does not support '-c' and '-o' together. If you 4184repeat this compilation, it may succeed, by chance, but you had better 4185avoid parallel builds (make -j) in this platform, or get a better 4186compiler." 4187 4188 $opt_dry_run || $RM $removelist 4189 exit $EXIT_FAILURE 4190 fi 4191 4192 # Just move the object if needed 4193 if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then 4194 func_show_eval '$MV "$output_obj" "$obj"' \ 4195 'error=$?; $opt_dry_run || $RM $removelist; exit $error' 4196 fi 4197 fi 4198 4199 $opt_dry_run || { 4200 func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" 4201 4202 # Unlock the critical section if it was locked 4203 if test no != "$need_locks"; then 4204 removelist=$lockfile 4205 $RM "$lockfile" 4206 fi 4207 } 4208 4209 exit $EXIT_SUCCESS 4210} 4211 4212$opt_help || { 4213 test compile = "$opt_mode" && func_mode_compile ${1+"$@"} 4214} 4215 4216func_mode_help () 4217{ 4218 # We need to display help for each of the modes. 4219 case $opt_mode in 4220 "") 4221 # Generic help is extracted from the usage comments 4222 # at the start of this file. 4223 func_help 4224 ;; 4225 4226 clean) 4227 $ECHO \ 4228"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... 4229 4230Remove files from the build directory. 4231 4232RM is the name of the program to use to delete files associated with each FILE 4233(typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed 4234to RM. 4235 4236If FILE is a libtool library, object or program, all the files associated 4237with it are deleted. Otherwise, only FILE itself is deleted using RM." 4238 ;; 4239 4240 compile) 4241 $ECHO \ 4242"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE 4243 4244Compile a source file into a libtool library object. 4245 4246This mode accepts the following additional options: 4247 4248 -o OUTPUT-FILE set the output file name to OUTPUT-FILE 4249 -no-suppress do not suppress compiler output for multiple passes 4250 -prefer-pic try to build PIC objects only 4251 -prefer-non-pic try to build non-PIC objects only 4252 -shared do not build a '.o' file suitable for static linking 4253 -static only build a '.o' file suitable for static linking 4254 -Wc,FLAG pass FLAG directly to the compiler 4255 4256COMPILE-COMMAND is a command to be used in creating a 'standard' object file 4257from the given SOURCEFILE. 4258 4259The output file name is determined by removing the directory component from 4260SOURCEFILE, then substituting the C source code suffix '.c' with the 4261library object suffix, '.lo'." 4262 ;; 4263 4264 execute) 4265 $ECHO \ 4266"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... 4267 4268Automatically set library path, then run a program. 4269 4270This mode accepts the following additional options: 4271 4272 -dlopen FILE add the directory containing FILE to the library path 4273 4274This mode sets the library path environment variable according to '-dlopen' 4275flags. 4276 4277If any of the ARGS are libtool executable wrappers, then they are translated 4278into their corresponding uninstalled binary, and any of their required library 4279directories are added to the library path. 4280 4281Then, COMMAND is executed, with ARGS as arguments." 4282 ;; 4283 4284 finish) 4285 $ECHO \ 4286"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... 4287 4288Complete the installation of libtool libraries. 4289 4290Each LIBDIR is a directory that contains libtool libraries. 4291 4292The commands that this mode executes may require superuser privileges. Use 4293the '--dry-run' option if you just want to see what would be executed." 4294 ;; 4295 4296 install) 4297 $ECHO \ 4298"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... 4299 4300Install executables or libraries. 4301 4302INSTALL-COMMAND is the installation command. The first component should be 4303either the 'install' or 'cp' program. 4304 4305The following components of INSTALL-COMMAND are treated specially: 4306 4307 -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation 4308 4309The rest of the components are interpreted as arguments to that command (only 4310BSD-compatible install options are recognized)." 4311 ;; 4312 4313 link) 4314 $ECHO \ 4315"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... 4316 4317Link object files or libraries together to form another library, or to 4318create an executable program. 4319 4320LINK-COMMAND is a command using the C compiler that you would use to create 4321a program from several object files. 4322 4323The following components of LINK-COMMAND are treated specially: 4324 4325 -all-static do not do any dynamic linking at all 4326 -avoid-version do not add a version suffix if possible 4327 -bindir BINDIR specify path to binaries directory (for systems where 4328 libraries must be found in the PATH setting at runtime) 4329 -dlopen FILE '-dlpreopen' FILE if it cannot be dlopened at runtime 4330 -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols 4331 -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) 4332 -export-symbols SYMFILE 4333 try to export only the symbols listed in SYMFILE 4334 -export-symbols-regex REGEX 4335 try to export only the symbols matching REGEX 4336 -LLIBDIR search LIBDIR for required installed libraries 4337 -lNAME OUTPUT-FILE requires the installed library libNAME 4338 -module build a library that can dlopened 4339 -no-fast-install disable the fast-install mode 4340 -no-install link a not-installable executable 4341 -no-undefined declare that a library does not refer to external symbols 4342 -o OUTPUT-FILE create OUTPUT-FILE from the specified objects 4343 -objectlist FILE use a list of object files found in FILE to specify objects 4344 -os2dllname NAME force a short DLL name on OS/2 (no effect on other OSes) 4345 -precious-files-regex REGEX 4346 don't remove output files matching REGEX 4347 -release RELEASE specify package release information 4348 -rpath LIBDIR the created library will eventually be installed in LIBDIR 4349 -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries 4350 -shared only do dynamic linking of libtool libraries 4351 -shrext SUFFIX override the standard shared library file extension 4352 -static do not do any dynamic linking of uninstalled libtool libraries 4353 -static-libtool-libs 4354 do not do any dynamic linking of libtool libraries 4355 -version-info CURRENT[:REVISION[:AGE]] 4356 specify library version info [each variable defaults to 0] 4357 -weak LIBNAME declare that the target provides the LIBNAME interface 4358 -Wc,FLAG 4359 -Xcompiler FLAG pass linker-specific FLAG directly to the compiler 4360 -Wl,FLAG 4361 -Xlinker FLAG pass linker-specific FLAG directly to the linker 4362 -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) 4363 4364All other options (arguments beginning with '-') are ignored. 4365 4366Every other argument is treated as a filename. Files ending in '.la' are 4367treated as uninstalled libtool libraries, other files are standard or library 4368object files. 4369 4370If the OUTPUT-FILE ends in '.la', then a libtool library is created, 4371only library objects ('.lo' files) may be specified, and '-rpath' is 4372required, except when creating a convenience library. 4373 4374If OUTPUT-FILE ends in '.a' or '.lib', then a standard library is created 4375using 'ar' and 'ranlib', or on Windows using 'lib'. 4376 4377If OUTPUT-FILE ends in '.lo' or '.$objext', then a reloadable object file 4378is created, otherwise an executable program is created." 4379 ;; 4380 4381 uninstall) 4382 $ECHO \ 4383"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... 4384 4385Remove libraries from an installation directory. 4386 4387RM is the name of the program to use to delete files associated with each FILE 4388(typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed 4389to RM. 4390 4391If FILE is a libtool library, all the files associated with it are deleted. 4392Otherwise, only FILE itself is deleted using RM." 4393 ;; 4394 4395 *) 4396 func_fatal_help "invalid operation mode '$opt_mode'" 4397 ;; 4398 esac 4399 4400 echo 4401 $ECHO "Try '$progname --help' for more information about other modes." 4402} 4403 4404# Now that we've collected a possible --mode arg, show help if necessary 4405if $opt_help; then 4406 if test : = "$opt_help"; then 4407 func_mode_help 4408 else 4409 { 4410 func_help noexit 4411 for opt_mode in compile link execute install finish uninstall clean; do 4412 func_mode_help 4413 done 4414 } | $SED -n '1p; 2,$s/^Usage:/ or: /p' 4415 { 4416 func_help noexit 4417 for opt_mode in compile link execute install finish uninstall clean; do 4418 echo 4419 func_mode_help 4420 done 4421 } | 4422 $SED '1d 4423 /^When reporting/,/^Report/{ 4424 H 4425 d 4426 } 4427 $x 4428 /information about other modes/d 4429 /more detailed .*MODE/d 4430 s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' 4431 fi 4432 exit $? 4433fi 4434 4435 4436# func_mode_execute arg... 4437func_mode_execute () 4438{ 4439 $debug_cmd 4440 4441 # The first argument is the command name. 4442 cmd=$nonopt 4443 test -z "$cmd" && \ 4444 func_fatal_help "you must specify a COMMAND" 4445 4446 # Handle -dlopen flags immediately. 4447 for file in $opt_dlopen; do 4448 test -f "$file" \ 4449 || func_fatal_help "'$file' is not a file" 4450 4451 dir= 4452 case $file in 4453 *.la) 4454 func_resolve_sysroot "$file" 4455 file=$func_resolve_sysroot_result 4456 4457 # Check to see that this really is a libtool archive. 4458 func_lalib_unsafe_p "$file" \ 4459 || func_fatal_help "'$lib' is not a valid libtool archive" 4460 4461 # Read the libtool library. 4462 dlname= 4463 library_names= 4464 func_source "$file" 4465 4466 # Skip this library if it cannot be dlopened. 4467 if test -z "$dlname"; then 4468 # Warn if it was a shared library. 4469 test -n "$library_names" && \ 4470 func_warning "'$file' was not linked with '-export-dynamic'" 4471 continue 4472 fi 4473 4474 func_dirname "$file" "" "." 4475 dir=$func_dirname_result 4476 4477 if test -f "$dir/$objdir/$dlname"; then 4478 func_append dir "/$objdir" 4479 else 4480 if test ! -f "$dir/$dlname"; then 4481 func_fatal_error "cannot find '$dlname' in '$dir' or '$dir/$objdir'" 4482 fi 4483 fi 4484 ;; 4485 4486 *.lo) 4487 # Just add the directory containing the .lo file. 4488 func_dirname "$file" "" "." 4489 dir=$func_dirname_result 4490 ;; 4491 4492 *) 4493 func_warning "'-dlopen' is ignored for non-libtool libraries and objects" 4494 continue 4495 ;; 4496 esac 4497 4498 # Get the absolute pathname. 4499 absdir=`cd "$dir" && pwd` 4500 test -n "$absdir" && dir=$absdir 4501 4502 # Now add the directory to shlibpath_var. 4503 if eval "test -z \"\$$shlibpath_var\""; then 4504 eval "$shlibpath_var=\"\$dir\"" 4505 else 4506 eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" 4507 fi 4508 done 4509 4510 # This variable tells wrapper scripts just to set shlibpath_var 4511 # rather than running their programs. 4512 libtool_execute_magic=$magic 4513 4514 # Check if any of the arguments is a wrapper script. 4515 args= 4516 for file 4517 do 4518 case $file in 4519 -* | *.la | *.lo ) ;; 4520 *) 4521 # Do a test to see if this is really a libtool program. 4522 if func_ltwrapper_script_p "$file"; then 4523 func_source "$file" 4524 # Transform arg to wrapped name. 4525 file=$progdir/$program 4526 elif func_ltwrapper_executable_p "$file"; then 4527 func_ltwrapper_scriptname "$file" 4528 func_source "$func_ltwrapper_scriptname_result" 4529 # Transform arg to wrapped name. 4530 file=$progdir/$program 4531 fi 4532 ;; 4533 esac 4534 # Quote arguments (to preserve shell metacharacters). 4535 func_append_quoted args "$file" 4536 done 4537 4538 if $opt_dry_run; then 4539 # Display what would be done. 4540 if test -n "$shlibpath_var"; then 4541 eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" 4542 echo "export $shlibpath_var" 4543 fi 4544 $ECHO "$cmd$args" 4545 exit $EXIT_SUCCESS 4546 else 4547 if test -n "$shlibpath_var"; then 4548 # Export the shlibpath_var. 4549 eval "export $shlibpath_var" 4550 fi 4551 4552 # Restore saved environment variables 4553 for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 4554 do 4555 eval "if test \"\${save_$lt_var+set}\" = set; then 4556 $lt_var=\$save_$lt_var; export $lt_var 4557 else 4558 $lt_unset $lt_var 4559 fi" 4560 done 4561 4562 # Now prepare to actually exec the command. 4563 exec_cmd=\$cmd$args 4564 fi 4565} 4566 4567test execute = "$opt_mode" && func_mode_execute ${1+"$@"} 4568 4569 4570# func_mode_finish arg... 4571func_mode_finish () 4572{ 4573 $debug_cmd 4574 4575 libs= 4576 libdirs= 4577 admincmds= 4578 4579 for opt in "$nonopt" ${1+"$@"} 4580 do 4581 if test -d "$opt"; then 4582 func_append libdirs " $opt" 4583 4584 elif test -f "$opt"; then 4585 if func_lalib_unsafe_p "$opt"; then 4586 func_append libs " $opt" 4587 else 4588 func_warning "'$opt' is not a valid libtool archive" 4589 fi 4590 4591 else 4592 func_fatal_error "invalid argument '$opt'" 4593 fi 4594 done 4595 4596 if test -n "$libs"; then 4597 if test -n "$lt_sysroot"; then 4598 sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` 4599 sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" 4600 else 4601 sysroot_cmd= 4602 fi 4603 4604 # Remove sysroot references 4605 if $opt_dry_run; then 4606 for lib in $libs; do 4607 echo "removing references to $lt_sysroot and '=' prefixes from $lib" 4608 done 4609 else 4610 tmpdir=`func_mktempdir` 4611 for lib in $libs; do 4612 $SED -e "$sysroot_cmd s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ 4613 > $tmpdir/tmp-la 4614 mv -f $tmpdir/tmp-la $lib 4615 done 4616 ${RM}r "$tmpdir" 4617 fi 4618 fi 4619 4620 if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then 4621 for libdir in $libdirs; do 4622 if test -n "$finish_cmds"; then 4623 # Do each command in the finish commands. 4624 func_execute_cmds "$finish_cmds" 'admincmds="$admincmds 4625'"$cmd"'"' 4626 fi 4627 if test -n "$finish_eval"; then 4628 # Do the single finish_eval. 4629 eval cmds=\"$finish_eval\" 4630 $opt_dry_run || eval "$cmds" || func_append admincmds " 4631 $cmds" 4632 fi 4633 done 4634 fi 4635 4636 # Exit here if they wanted silent mode. 4637 $opt_quiet && exit $EXIT_SUCCESS 4638 4639 if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then 4640 echo "----------------------------------------------------------------------" 4641 echo "Libraries have been installed in:" 4642 for libdir in $libdirs; do 4643 $ECHO " $libdir" 4644 done 4645 echo 4646 echo "If you ever happen to want to link against installed libraries" 4647 echo "in a given directory, LIBDIR, you must either use libtool, and" 4648 echo "specify the full pathname of the library, or use the '-LLIBDIR'" 4649 echo "flag during linking and do at least one of the following:" 4650 if test -n "$shlibpath_var"; then 4651 echo " - add LIBDIR to the '$shlibpath_var' environment variable" 4652 echo " during execution" 4653 fi 4654 if test -n "$runpath_var"; then 4655 echo " - add LIBDIR to the '$runpath_var' environment variable" 4656 echo " during linking" 4657 fi 4658 if test -n "$hardcode_libdir_flag_spec"; then 4659 libdir=LIBDIR 4660 eval flag=\"$hardcode_libdir_flag_spec\" 4661 4662 $ECHO " - use the '$flag' linker flag" 4663 fi 4664 if test -n "$admincmds"; then 4665 $ECHO " - have your system administrator run these commands:$admincmds" 4666 fi 4667 if test -f /etc/ld.so.conf; then 4668 echo " - have your system administrator add LIBDIR to '/etc/ld.so.conf'" 4669 fi 4670 echo 4671 4672 echo "See any operating system documentation about shared libraries for" 4673 case $host in 4674 solaris2.[6789]|solaris2.1[0-9]) 4675 echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" 4676 echo "pages." 4677 ;; 4678 *) 4679 echo "more information, such as the ld(1) and ld.so(8) manual pages." 4680 ;; 4681 esac 4682 echo "----------------------------------------------------------------------" 4683 fi 4684 exit $EXIT_SUCCESS 4685} 4686 4687test finish = "$opt_mode" && func_mode_finish ${1+"$@"} 4688 4689 4690# func_mode_install arg... 4691func_mode_install () 4692{ 4693 $debug_cmd 4694 4695 # There may be an optional sh(1) argument at the beginning of 4696 # install_prog (especially on Windows NT). 4697 if test "$SHELL" = "$nonopt" || test /bin/sh = "$nonopt" || 4698 # Allow the use of GNU shtool's install command. 4699 case $nonopt in *shtool*) :;; *) false;; esac 4700 then 4701 # Aesthetically quote it. 4702 func_quote_for_eval "$nonopt" 4703 install_prog="$func_quote_for_eval_result " 4704 arg=$1 4705 shift 4706 else 4707 install_prog= 4708 arg=$nonopt 4709 fi 4710 4711 # The real first argument should be the name of the installation program. 4712 # Aesthetically quote it. 4713 func_quote_for_eval "$arg" 4714 func_append install_prog "$func_quote_for_eval_result" 4715 install_shared_prog=$install_prog 4716 case " $install_prog " in 4717 *[\\\ /]cp\ *) install_cp=: ;; 4718 *) install_cp=false ;; 4719 esac 4720 4721 # We need to accept at least all the BSD install flags. 4722 dest= 4723 files= 4724 opts= 4725 prev= 4726 install_type= 4727 isdir=false 4728 stripme= 4729 no_mode=: 4730 for arg 4731 do 4732 arg2= 4733 if test -n "$dest"; then 4734 func_append files " $dest" 4735 dest=$arg 4736 continue 4737 fi 4738 4739 case $arg in 4740 -d) isdir=: ;; 4741 -f) 4742 if $install_cp; then :; else 4743 prev=$arg 4744 fi 4745 ;; 4746 -g | -m | -o) 4747 prev=$arg 4748 ;; 4749 -s) 4750 stripme=" -s" 4751 continue 4752 ;; 4753 -*) 4754 ;; 4755 *) 4756 # If the previous option needed an argument, then skip it. 4757 if test -n "$prev"; then 4758 if test X-m = "X$prev" && test -n "$install_override_mode"; then 4759 arg2=$install_override_mode 4760 no_mode=false 4761 fi 4762 prev= 4763 else 4764 dest=$arg 4765 continue 4766 fi 4767 ;; 4768 esac 4769 4770 # Aesthetically quote the argument. 4771 func_quote_for_eval "$arg" 4772 func_append install_prog " $func_quote_for_eval_result" 4773 if test -n "$arg2"; then 4774 func_quote_for_eval "$arg2" 4775 fi 4776 func_append install_shared_prog " $func_quote_for_eval_result" 4777 done 4778 4779 test -z "$install_prog" && \ 4780 func_fatal_help "you must specify an install program" 4781 4782 test -n "$prev" && \ 4783 func_fatal_help "the '$prev' option requires an argument" 4784 4785 if test -n "$install_override_mode" && $no_mode; then 4786 if $install_cp; then :; else 4787 func_quote_for_eval "$install_override_mode" 4788 func_append install_shared_prog " -m $func_quote_for_eval_result" 4789 fi 4790 fi 4791 4792 if test -z "$files"; then 4793 if test -z "$dest"; then 4794 func_fatal_help "no file or destination specified" 4795 else 4796 func_fatal_help "you must specify a destination" 4797 fi 4798 fi 4799 4800 # Strip any trailing slash from the destination. 4801 func_stripname '' '/' "$dest" 4802 dest=$func_stripname_result 4803 4804 # Check to see that the destination is a directory. 4805 test -d "$dest" && isdir=: 4806 if $isdir; then 4807 destdir=$dest 4808 destname= 4809 else 4810 func_dirname_and_basename "$dest" "" "." 4811 destdir=$func_dirname_result 4812 destname=$func_basename_result 4813 4814 # Not a directory, so check to see that there is only one file specified. 4815 set dummy $files; shift 4816 test "$#" -gt 1 && \ 4817 func_fatal_help "'$dest' is not a directory" 4818 fi 4819 case $destdir in 4820 [\\/]* | [A-Za-z]:[\\/]*) ;; 4821 *) 4822 for file in $files; do 4823 case $file in 4824 *.lo) ;; 4825 *) 4826 func_fatal_help "'$destdir' must be an absolute directory name" 4827 ;; 4828 esac 4829 done 4830 ;; 4831 esac 4832 4833 # This variable tells wrapper scripts just to set variables rather 4834 # than running their programs. 4835 libtool_install_magic=$magic 4836 4837 staticlibs= 4838 future_libdirs= 4839 current_libdirs= 4840 for file in $files; do 4841 4842 # Do each installation. 4843 case $file in 4844 *.$libext) 4845 # Do the static libraries later. 4846 func_append staticlibs " $file" 4847 ;; 4848 4849 *.la) 4850 func_resolve_sysroot "$file" 4851 file=$func_resolve_sysroot_result 4852 4853 # Check to see that this really is a libtool archive. 4854 func_lalib_unsafe_p "$file" \ 4855 || func_fatal_help "'$file' is not a valid libtool archive" 4856 4857 library_names= 4858 old_library= 4859 relink_command= 4860 func_source "$file" 4861 4862 # Add the libdir to current_libdirs if it is the destination. 4863 if test "X$destdir" = "X$libdir"; then 4864 case "$current_libdirs " in 4865 *" $libdir "*) ;; 4866 *) func_append current_libdirs " $libdir" ;; 4867 esac 4868 else 4869 # Note the libdir as a future libdir. 4870 case "$future_libdirs " in 4871 *" $libdir "*) ;; 4872 *) func_append future_libdirs " $libdir" ;; 4873 esac 4874 fi 4875 4876 func_dirname "$file" "/" "" 4877 dir=$func_dirname_result 4878 func_append dir "$objdir" 4879 4880 if test -n "$relink_command"; then 4881 # Determine the prefix the user has applied to our future dir. 4882 inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` 4883 4884 # Don't allow the user to place us outside of our expected 4885 # location b/c this prevents finding dependent libraries that 4886 # are installed to the same prefix. 4887 # At present, this check doesn't affect windows .dll's that 4888 # are installed into $libdir/../bin (currently, that works fine) 4889 # but it's something to keep an eye on. 4890 test "$inst_prefix_dir" = "$destdir" && \ 4891 func_fatal_error "error: cannot install '$file' to a directory not ending in $libdir" 4892 4893 if test -n "$inst_prefix_dir"; then 4894 # Stick the inst_prefix_dir data into the link command. 4895 relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` 4896 else 4897 relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` 4898 fi 4899 4900 func_warning "relinking '$file'" 4901 func_show_eval "$relink_command" \ 4902 'func_fatal_error "error: relink '\''$file'\'' with the above command before installing it"' 4903 fi 4904 4905 # See the names of the shared library. 4906 set dummy $library_names; shift 4907 if test -n "$1"; then 4908 realname=$1 4909 shift 4910 4911 srcname=$realname 4912 test -n "$relink_command" && srcname=${realname}T 4913 4914 # Install the shared library and build the symlinks. 4915 func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ 4916 'exit $?' 4917 tstripme=$stripme 4918 case $host_os in 4919 cygwin* | mingw* | pw32* | cegcc*) 4920 case $realname in 4921 *.dll.a) 4922 tstripme= 4923 ;; 4924 esac 4925 ;; 4926 os2*) 4927 case $realname in 4928 *_dll.a) 4929 tstripme= 4930 ;; 4931 esac 4932 ;; 4933 esac 4934 if test -n "$tstripme" && test -n "$striplib"; then 4935 func_show_eval "$striplib $destdir/$realname" 'exit $?' 4936 fi 4937 4938 if test "$#" -gt 0; then 4939 # Delete the old symlinks, and create new ones. 4940 # Try 'ln -sf' first, because the 'ln' binary might depend on 4941 # the symlink we replace! Solaris /bin/ln does not understand -f, 4942 # so we also need to try rm && ln -s. 4943 for linkname 4944 do 4945 test "$linkname" != "$realname" \ 4946 && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" 4947 done 4948 fi 4949 4950 # Do each command in the postinstall commands. 4951 lib=$destdir/$realname 4952 func_execute_cmds "$postinstall_cmds" 'exit $?' 4953 fi 4954 4955 # Install the pseudo-library for information purposes. 4956 func_basename "$file" 4957 name=$func_basename_result 4958 instname=$dir/${name}i 4959 func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' 4960 4961 # Maybe install the static library, too. 4962 test -n "$old_library" && func_append staticlibs " $dir/$old_library" 4963 ;; 4964 4965 *.lo) 4966 # Install (i.e. copy) a libtool object. 4967 4968 # Figure out destination file name, if it wasn't already specified. 4969 if test -n "$destname"; then 4970 destfile=$destdir/$destname 4971 else 4972 func_basename "$file" 4973 destfile=$func_basename_result 4974 destfile=$destdir/$destfile 4975 fi 4976 4977 # Deduce the name of the destination old-style object file. 4978 case $destfile in 4979 *.lo) 4980 func_lo2o "$destfile" 4981 staticdest=$func_lo2o_result 4982 ;; 4983 *.$objext) 4984 staticdest=$destfile 4985 destfile= 4986 ;; 4987 *) 4988 func_fatal_help "cannot copy a libtool object to '$destfile'" 4989 ;; 4990 esac 4991 4992 # Install the libtool object if requested. 4993 test -n "$destfile" && \ 4994 func_show_eval "$install_prog $file $destfile" 'exit $?' 4995 4996 # Install the old object if enabled. 4997 if test yes = "$build_old_libs"; then 4998 # Deduce the name of the old-style object file. 4999 func_lo2o "$file" 5000 staticobj=$func_lo2o_result 5001 func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' 5002 fi 5003 exit $EXIT_SUCCESS 5004 ;; 5005 5006 *) 5007 # Figure out destination file name, if it wasn't already specified. 5008 if test -n "$destname"; then 5009 destfile=$destdir/$destname 5010 else 5011 func_basename "$file" 5012 destfile=$func_basename_result 5013 destfile=$destdir/$destfile 5014 fi 5015 5016 # If the file is missing, and there is a .exe on the end, strip it 5017 # because it is most likely a libtool script we actually want to 5018 # install 5019 stripped_ext= 5020 case $file in 5021 *.exe) 5022 if test ! -f "$file"; then 5023 func_stripname '' '.exe' "$file" 5024 file=$func_stripname_result 5025 stripped_ext=.exe 5026 fi 5027 ;; 5028 esac 5029 5030 # Do a test to see if this is really a libtool program. 5031 case $host in 5032 *cygwin* | *mingw*) 5033 if func_ltwrapper_executable_p "$file"; then 5034 func_ltwrapper_scriptname "$file" 5035 wrapper=$func_ltwrapper_scriptname_result 5036 else 5037 func_stripname '' '.exe' "$file" 5038 wrapper=$func_stripname_result 5039 fi 5040 ;; 5041 *) 5042 wrapper=$file 5043 ;; 5044 esac 5045 if func_ltwrapper_script_p "$wrapper"; then 5046 notinst_deplibs= 5047 relink_command= 5048 5049 func_source "$wrapper" 5050 5051 # Check the variables that should have been set. 5052 test -z "$generated_by_libtool_version" && \ 5053 func_fatal_error "invalid libtool wrapper script '$wrapper'" 5054 5055 finalize=: 5056 for lib in $notinst_deplibs; do 5057 # Check to see that each library is installed. 5058 libdir= 5059 if test -f "$lib"; then 5060 func_source "$lib" 5061 fi 5062 libfile=$libdir/`$ECHO "$lib" | $SED 's%^.*/%%g'` 5063 if test -n "$libdir" && test ! -f "$libfile"; then 5064 func_warning "'$lib' has not been installed in '$libdir'" 5065 finalize=false 5066 fi 5067 done 5068 5069 relink_command= 5070 func_source "$wrapper" 5071 5072 outputname= 5073 if test no = "$fast_install" && test -n "$relink_command"; then 5074 $opt_dry_run || { 5075 if $finalize; then 5076 tmpdir=`func_mktempdir` 5077 func_basename "$file$stripped_ext" 5078 file=$func_basename_result 5079 outputname=$tmpdir/$file 5080 # Replace the output file specification. 5081 relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` 5082 5083 $opt_quiet || { 5084 func_quote_for_expand "$relink_command" 5085 eval "func_echo $func_quote_for_expand_result" 5086 } 5087 if eval "$relink_command"; then : 5088 else 5089 func_error "error: relink '$file' with the above command before installing it" 5090 $opt_dry_run || ${RM}r "$tmpdir" 5091 continue 5092 fi 5093 file=$outputname 5094 else 5095 func_warning "cannot relink '$file'" 5096 fi 5097 } 5098 else 5099 # Install the binary that we compiled earlier. 5100 file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` 5101 fi 5102 fi 5103 5104 # remove .exe since cygwin /usr/bin/install will append another 5105 # one anyway 5106 case $install_prog,$host in 5107 */usr/bin/install*,*cygwin*) 5108 case $file:$destfile in 5109 *.exe:*.exe) 5110 # this is ok 5111 ;; 5112 *.exe:*) 5113 destfile=$destfile.exe 5114 ;; 5115 *:*.exe) 5116 func_stripname '' '.exe' "$destfile" 5117 destfile=$func_stripname_result 5118 ;; 5119 esac 5120 ;; 5121 esac 5122 func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' 5123 $opt_dry_run || if test -n "$outputname"; then 5124 ${RM}r "$tmpdir" 5125 fi 5126 ;; 5127 esac 5128 done 5129 5130 for file in $staticlibs; do 5131 func_basename "$file" 5132 name=$func_basename_result 5133 5134 # Set up the ranlib parameters. 5135 oldlib=$destdir/$name 5136 func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 5137 tool_oldlib=$func_to_tool_file_result 5138 5139 func_show_eval "$install_prog \$file \$oldlib" 'exit $?' 5140 5141 if test -n "$stripme" && test -n "$old_striplib"; then 5142 func_show_eval "$old_striplib $tool_oldlib" 'exit $?' 5143 fi 5144 5145 # Do each command in the postinstall commands. 5146 func_execute_cmds "$old_postinstall_cmds" 'exit $?' 5147 done 5148 5149 test -n "$future_libdirs" && \ 5150 func_warning "remember to run '$progname --finish$future_libdirs'" 5151 5152 if test -n "$current_libdirs"; then 5153 # Maybe just do a dry run. 5154 $opt_dry_run && current_libdirs=" -n$current_libdirs" 5155 exec_cmd='$SHELL "$progpath" $preserve_args --finish$current_libdirs' 5156 else 5157 exit $EXIT_SUCCESS 5158 fi 5159} 5160 5161test install = "$opt_mode" && func_mode_install ${1+"$@"} 5162 5163 5164# func_generate_dlsyms outputname originator pic_p 5165# Extract symbols from dlprefiles and create ${outputname}S.o with 5166# a dlpreopen symbol table. 5167func_generate_dlsyms () 5168{ 5169 $debug_cmd 5170 5171 my_outputname=$1 5172 my_originator=$2 5173 my_pic_p=${3-false} 5174 my_prefix=`$ECHO "$my_originator" | $SED 's%[^a-zA-Z0-9]%_%g'` 5175 my_dlsyms= 5176 5177 if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then 5178 if test -n "$NM" && test -n "$global_symbol_pipe"; then 5179 my_dlsyms=${my_outputname}S.c 5180 else 5181 func_error "not configured to extract global symbols from dlpreopened files" 5182 fi 5183 fi 5184 5185 if test -n "$my_dlsyms"; then 5186 case $my_dlsyms in 5187 "") ;; 5188 *.c) 5189 # Discover the nlist of each of the dlfiles. 5190 nlist=$output_objdir/$my_outputname.nm 5191 5192 func_show_eval "$RM $nlist ${nlist}S ${nlist}T" 5193 5194 # Parse the name list into a source file. 5195 func_verbose "creating $output_objdir/$my_dlsyms" 5196 5197 $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ 5198/* $my_dlsyms - symbol resolution table for '$my_outputname' dlsym emulation. */ 5199/* Generated by $PROGRAM (GNU $PACKAGE) $VERSION */ 5200 5201#ifdef __cplusplus 5202extern \"C\" { 5203#endif 5204 5205#if defined __GNUC__ && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) 5206#pragma GCC diagnostic ignored \"-Wstrict-prototypes\" 5207#endif 5208 5209/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ 5210#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE 5211/* DATA imports from DLLs on WIN32 can't be const, because runtime 5212 relocations are performed -- see ld's documentation on pseudo-relocs. */ 5213# define LT_DLSYM_CONST 5214#elif defined __osf__ 5215/* This system does not cope well with relocations in const data. */ 5216# define LT_DLSYM_CONST 5217#else 5218# define LT_DLSYM_CONST const 5219#endif 5220 5221#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) 5222 5223/* External symbol declarations for the compiler. */\ 5224" 5225 5226 if test yes = "$dlself"; then 5227 func_verbose "generating symbol list for '$output'" 5228 5229 $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" 5230 5231 # Add our own program objects to the symbol list. 5232 progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` 5233 for progfile in $progfiles; do 5234 func_to_tool_file "$progfile" func_convert_file_msys_to_w32 5235 func_verbose "extracting global C symbols from '$func_to_tool_file_result'" 5236 $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" 5237 done 5238 5239 if test -n "$exclude_expsyms"; then 5240 $opt_dry_run || { 5241 eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' 5242 eval '$MV "$nlist"T "$nlist"' 5243 } 5244 fi 5245 5246 if test -n "$export_symbols_regex"; then 5247 $opt_dry_run || { 5248 eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' 5249 eval '$MV "$nlist"T "$nlist"' 5250 } 5251 fi 5252 5253 # Prepare the list of exported symbols 5254 if test -z "$export_symbols"; then 5255 export_symbols=$output_objdir/$outputname.exp 5256 $opt_dry_run || { 5257 $RM $export_symbols 5258 eval "$SED -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' 5259 case $host in 5260 *cygwin* | *mingw* | *cegcc* ) 5261 eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 5262 eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' 5263 ;; 5264 esac 5265 } 5266 else 5267 $opt_dry_run || { 5268 eval "$SED -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' 5269 eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' 5270 eval '$MV "$nlist"T "$nlist"' 5271 case $host in 5272 *cygwin* | *mingw* | *cegcc* ) 5273 eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 5274 eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' 5275 ;; 5276 esac 5277 } 5278 fi 5279 fi 5280 5281 for dlprefile in $dlprefiles; do 5282 func_verbose "extracting global C symbols from '$dlprefile'" 5283 func_basename "$dlprefile" 5284 name=$func_basename_result 5285 case $host in 5286 *cygwin* | *mingw* | *cegcc* ) 5287 # if an import library, we need to obtain dlname 5288 if func_win32_import_lib_p "$dlprefile"; then 5289 func_tr_sh "$dlprefile" 5290 eval "curr_lafile=\$libfile_$func_tr_sh_result" 5291 dlprefile_dlbasename= 5292 if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then 5293 # Use subshell, to avoid clobbering current variable values 5294 dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` 5295 if test -n "$dlprefile_dlname"; then 5296 func_basename "$dlprefile_dlname" 5297 dlprefile_dlbasename=$func_basename_result 5298 else 5299 # no lafile. user explicitly requested -dlpreopen <import library>. 5300 $sharedlib_from_linklib_cmd "$dlprefile" 5301 dlprefile_dlbasename=$sharedlib_from_linklib_result 5302 fi 5303 fi 5304 $opt_dry_run || { 5305 if test -n "$dlprefile_dlbasename"; then 5306 eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' 5307 else 5308 func_warning "Could not compute DLL name from $name" 5309 eval '$ECHO ": $name " >> "$nlist"' 5310 fi 5311 func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 5312 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | 5313 $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" 5314 } 5315 else # not an import lib 5316 $opt_dry_run || { 5317 eval '$ECHO ": $name " >> "$nlist"' 5318 func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 5319 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" 5320 } 5321 fi 5322 ;; 5323 *) 5324 $opt_dry_run || { 5325 eval '$ECHO ": $name " >> "$nlist"' 5326 func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 5327 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" 5328 } 5329 ;; 5330 esac 5331 done 5332 5333 $opt_dry_run || { 5334 # Make sure we have at least an empty file. 5335 test -f "$nlist" || : > "$nlist" 5336 5337 if test -n "$exclude_expsyms"; then 5338 $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T 5339 $MV "$nlist"T "$nlist" 5340 fi 5341 5342 # Try sorting and uniquifying the output. 5343 if $GREP -v "^: " < "$nlist" | 5344 if sort -k 3 </dev/null >/dev/null 2>&1; then 5345 sort -k 3 5346 else 5347 sort +2 5348 fi | 5349 uniq > "$nlist"S; then 5350 : 5351 else 5352 $GREP -v "^: " < "$nlist" > "$nlist"S 5353 fi 5354 5355 if test -f "$nlist"S; then 5356 eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' 5357 else 5358 echo '/* NONE */' >> "$output_objdir/$my_dlsyms" 5359 fi 5360 5361 func_show_eval '$RM "${nlist}I"' 5362 if test -n "$global_symbol_to_import"; then 5363 eval "$global_symbol_to_import"' < "$nlist"S > "$nlist"I' 5364 fi 5365 5366 echo >> "$output_objdir/$my_dlsyms" "\ 5367 5368/* The mapping between symbol names and symbols. */ 5369typedef struct { 5370 const char *name; 5371 void *address; 5372} lt_dlsymlist; 5373extern LT_DLSYM_CONST lt_dlsymlist 5374lt_${my_prefix}_LTX_preloaded_symbols[];\ 5375" 5376 5377 if test -s "$nlist"I; then 5378 echo >> "$output_objdir/$my_dlsyms" "\ 5379static void lt_syminit(void) 5380{ 5381 LT_DLSYM_CONST lt_dlsymlist *symbol = lt_${my_prefix}_LTX_preloaded_symbols; 5382 for (; symbol->name; ++symbol) 5383 {" 5384 $SED 's/.*/ if (STREQ (symbol->name, \"&\")) symbol->address = (void *) \&&;/' < "$nlist"I >> "$output_objdir/$my_dlsyms" 5385 echo >> "$output_objdir/$my_dlsyms" "\ 5386 } 5387}" 5388 fi 5389 echo >> "$output_objdir/$my_dlsyms" "\ 5390LT_DLSYM_CONST lt_dlsymlist 5391lt_${my_prefix}_LTX_preloaded_symbols[] = 5392{ {\"$my_originator\", (void *) 0}," 5393 5394 if test -s "$nlist"I; then 5395 echo >> "$output_objdir/$my_dlsyms" "\ 5396 {\"@INIT@\", (void *) <_syminit}," 5397 fi 5398 5399 case $need_lib_prefix in 5400 no) 5401 eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" 5402 ;; 5403 *) 5404 eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" 5405 ;; 5406 esac 5407 echo >> "$output_objdir/$my_dlsyms" "\ 5408 {0, (void *) 0} 5409}; 5410 5411/* This works around a problem in FreeBSD linker */ 5412#ifdef FREEBSD_WORKAROUND 5413static const void *lt_preloaded_setup() { 5414 return lt_${my_prefix}_LTX_preloaded_symbols; 5415} 5416#endif 5417 5418#ifdef __cplusplus 5419} 5420#endif\ 5421" 5422 } # !$opt_dry_run 5423 5424 pic_flag_for_symtable= 5425 case "$compile_command " in 5426 *" -static "*) ;; 5427 *) 5428 case $host in 5429 # compiling the symbol table file with pic_flag works around 5430 # a FreeBSD bug that causes programs to crash when -lm is 5431 # linked before any other PIC object. But we must not use 5432 # pic_flag when linking with -static. The problem exists in 5433 # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. 5434 *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) 5435 pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; 5436 *-*-hpux*) 5437 pic_flag_for_symtable=" $pic_flag" ;; 5438 *) 5439 $my_pic_p && pic_flag_for_symtable=" $pic_flag" 5440 ;; 5441 esac 5442 ;; 5443 esac 5444 symtab_cflags= 5445 for arg in $LTCFLAGS; do 5446 case $arg in 5447 -pie | -fpie | -fPIE) ;; 5448 *) func_append symtab_cflags " $arg" ;; 5449 esac 5450 done 5451 5452 # Now compile the dynamic symbol file. 5453 func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' 5454 5455 # Clean up the generated files. 5456 func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T" "${nlist}I"' 5457 5458 # Transform the symbol file into the correct name. 5459 symfileobj=$output_objdir/${my_outputname}S.$objext 5460 case $host in 5461 *cygwin* | *mingw* | *cegcc* ) 5462 if test -f "$output_objdir/$my_outputname.def"; then 5463 compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` 5464 finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` 5465 else 5466 compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` 5467 finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` 5468 fi 5469 ;; 5470 *) 5471 compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` 5472 finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` 5473 ;; 5474 esac 5475 ;; 5476 *) 5477 func_fatal_error "unknown suffix for '$my_dlsyms'" 5478 ;; 5479 esac 5480 else 5481 # We keep going just in case the user didn't refer to 5482 # lt_preloaded_symbols. The linker will fail if global_symbol_pipe 5483 # really was required. 5484 5485 # Nullify the symbol file. 5486 compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` 5487 finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` 5488 fi 5489} 5490 5491# func_cygming_gnu_implib_p ARG 5492# This predicate returns with zero status (TRUE) if 5493# ARG is a GNU/binutils-style import library. Returns 5494# with nonzero status (FALSE) otherwise. 5495func_cygming_gnu_implib_p () 5496{ 5497 $debug_cmd 5498 5499 func_to_tool_file "$1" func_convert_file_msys_to_w32 5500 func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` 5501 test -n "$func_cygming_gnu_implib_tmp" 5502} 5503 5504# func_cygming_ms_implib_p ARG 5505# This predicate returns with zero status (TRUE) if 5506# ARG is an MS-style import library. Returns 5507# with nonzero status (FALSE) otherwise. 5508func_cygming_ms_implib_p () 5509{ 5510 $debug_cmd 5511 5512 func_to_tool_file "$1" func_convert_file_msys_to_w32 5513 func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` 5514 test -n "$func_cygming_ms_implib_tmp" 5515} 5516 5517# func_win32_libid arg 5518# return the library type of file 'arg' 5519# 5520# Need a lot of goo to handle *both* DLLs and import libs 5521# Has to be a shell function in order to 'eat' the argument 5522# that is supplied when $file_magic_command is called. 5523# Despite the name, also deal with 64 bit binaries. 5524func_win32_libid () 5525{ 5526 $debug_cmd 5527 5528 win32_libid_type=unknown 5529 win32_fileres=`file -L $1 2>/dev/null` 5530 case $win32_fileres in 5531 *ar\ archive\ import\ library*) # definitely import 5532 win32_libid_type="x86 archive import" 5533 ;; 5534 *ar\ archive*) # could be an import, or static 5535 # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. 5536 if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | 5537 $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then 5538 case $nm_interface in 5539 "MS dumpbin") 5540 if func_cygming_ms_implib_p "$1" || 5541 func_cygming_gnu_implib_p "$1" 5542 then 5543 win32_nmres=import 5544 else 5545 win32_nmres= 5546 fi 5547 ;; 5548 *) 5549 func_to_tool_file "$1" func_convert_file_msys_to_w32 5550 win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | 5551 $SED -n -e ' 5552 1,100{ 5553 / I /{ 5554 s|.*|import| 5555 p 5556 q 5557 } 5558 }'` 5559 ;; 5560 esac 5561 case $win32_nmres in 5562 import*) win32_libid_type="x86 archive import";; 5563 *) win32_libid_type="x86 archive static";; 5564 esac 5565 fi 5566 ;; 5567 *DLL*) 5568 win32_libid_type="x86 DLL" 5569 ;; 5570 *executable*) # but shell scripts are "executable" too... 5571 case $win32_fileres in 5572 *MS\ Windows\ PE\ Intel*) 5573 win32_libid_type="x86 DLL" 5574 ;; 5575 esac 5576 ;; 5577 esac 5578 $ECHO "$win32_libid_type" 5579} 5580 5581# func_cygming_dll_for_implib ARG 5582# 5583# Platform-specific function to extract the 5584# name of the DLL associated with the specified 5585# import library ARG. 5586# Invoked by eval'ing the libtool variable 5587# $sharedlib_from_linklib_cmd 5588# Result is available in the variable 5589# $sharedlib_from_linklib_result 5590func_cygming_dll_for_implib () 5591{ 5592 $debug_cmd 5593 5594 sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` 5595} 5596 5597# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs 5598# 5599# The is the core of a fallback implementation of a 5600# platform-specific function to extract the name of the 5601# DLL associated with the specified import library LIBNAME. 5602# 5603# SECTION_NAME is either .idata$6 or .idata$7, depending 5604# on the platform and compiler that created the implib. 5605# 5606# Echos the name of the DLL associated with the 5607# specified import library. 5608func_cygming_dll_for_implib_fallback_core () 5609{ 5610 $debug_cmd 5611 5612 match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` 5613 $OBJDUMP -s --section "$1" "$2" 2>/dev/null | 5614 $SED '/^Contents of section '"$match_literal"':/{ 5615 # Place marker at beginning of archive member dllname section 5616 s/.*/====MARK====/ 5617 p 5618 d 5619 } 5620 # These lines can sometimes be longer than 43 characters, but 5621 # are always uninteresting 5622 /:[ ]*file format pe[i]\{,1\}-/d 5623 /^In archive [^:]*:/d 5624 # Ensure marker is printed 5625 /^====MARK====/p 5626 # Remove all lines with less than 43 characters 5627 /^.\{43\}/!d 5628 # From remaining lines, remove first 43 characters 5629 s/^.\{43\}//' | 5630 $SED -n ' 5631 # Join marker and all lines until next marker into a single line 5632 /^====MARK====/ b para 5633 H 5634 $ b para 5635 b 5636 :para 5637 x 5638 s/\n//g 5639 # Remove the marker 5640 s/^====MARK====// 5641 # Remove trailing dots and whitespace 5642 s/[\. \t]*$// 5643 # Print 5644 /./p' | 5645 # we now have a list, one entry per line, of the stringified 5646 # contents of the appropriate section of all members of the 5647 # archive that possess that section. Heuristic: eliminate 5648 # all those that have a first or second character that is 5649 # a '.' (that is, objdump's representation of an unprintable 5650 # character.) This should work for all archives with less than 5651 # 0x302f exports -- but will fail for DLLs whose name actually 5652 # begins with a literal '.' or a single character followed by 5653 # a '.'. 5654 # 5655 # Of those that remain, print the first one. 5656 $SED -e '/^\./d;/^.\./d;q' 5657} 5658 5659# func_cygming_dll_for_implib_fallback ARG 5660# Platform-specific function to extract the 5661# name of the DLL associated with the specified 5662# import library ARG. 5663# 5664# This fallback implementation is for use when $DLLTOOL 5665# does not support the --identify-strict option. 5666# Invoked by eval'ing the libtool variable 5667# $sharedlib_from_linklib_cmd 5668# Result is available in the variable 5669# $sharedlib_from_linklib_result 5670func_cygming_dll_for_implib_fallback () 5671{ 5672 $debug_cmd 5673 5674 if func_cygming_gnu_implib_p "$1"; then 5675 # binutils import library 5676 sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` 5677 elif func_cygming_ms_implib_p "$1"; then 5678 # ms-generated import library 5679 sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` 5680 else 5681 # unknown 5682 sharedlib_from_linklib_result= 5683 fi 5684} 5685 5686 5687# func_extract_an_archive dir oldlib 5688func_extract_an_archive () 5689{ 5690 $debug_cmd 5691 5692 f_ex_an_ar_dir=$1; shift 5693 f_ex_an_ar_oldlib=$1 5694 if test yes = "$lock_old_archive_extraction"; then 5695 lockfile=$f_ex_an_ar_oldlib.lock 5696 until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do 5697 func_echo "Waiting for $lockfile to be removed" 5698 sleep 2 5699 done 5700 fi 5701 func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ 5702 'stat=$?; rm -f "$lockfile"; exit $stat' 5703 if test yes = "$lock_old_archive_extraction"; then 5704 $opt_dry_run || rm -f "$lockfile" 5705 fi 5706 if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then 5707 : 5708 else 5709 func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 5710 fi 5711} 5712 5713 5714# func_extract_archives gentop oldlib ... 5715func_extract_archives () 5716{ 5717 $debug_cmd 5718 5719 my_gentop=$1; shift 5720 my_oldlibs=${1+"$@"} 5721 my_oldobjs= 5722 my_xlib= 5723 my_xabs= 5724 my_xdir= 5725 5726 for my_xlib in $my_oldlibs; do 5727 # Extract the objects. 5728 case $my_xlib in 5729 [\\/]* | [A-Za-z]:[\\/]*) my_xabs=$my_xlib ;; 5730 *) my_xabs=`pwd`"/$my_xlib" ;; 5731 esac 5732 func_basename "$my_xlib" 5733 my_xlib=$func_basename_result 5734 my_xlib_u=$my_xlib 5735 while :; do 5736 case " $extracted_archives " in 5737 *" $my_xlib_u "*) 5738 func_arith $extracted_serial + 1 5739 extracted_serial=$func_arith_result 5740 my_xlib_u=lt$extracted_serial-$my_xlib ;; 5741 *) break ;; 5742 esac 5743 done 5744 extracted_archives="$extracted_archives $my_xlib_u" 5745 my_xdir=$my_gentop/$my_xlib_u 5746 5747 func_mkdir_p "$my_xdir" 5748 5749 case $host in 5750 *-darwin*) 5751 func_verbose "Extracting $my_xabs" 5752 # Do not bother doing anything if just a dry run 5753 $opt_dry_run || { 5754 darwin_orig_dir=`pwd` 5755 cd $my_xdir || exit $? 5756 darwin_archive=$my_xabs 5757 darwin_curdir=`pwd` 5758 func_basename "$darwin_archive" 5759 darwin_base_archive=$func_basename_result 5760 darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` 5761 if test -n "$darwin_arches"; then 5762 darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` 5763 darwin_arch= 5764 func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" 5765 for darwin_arch in $darwin_arches; do 5766 func_mkdir_p "unfat-$$/$darwin_base_archive-$darwin_arch" 5767 $LIPO -thin $darwin_arch -output "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" "$darwin_archive" 5768 cd "unfat-$$/$darwin_base_archive-$darwin_arch" 5769 func_extract_an_archive "`pwd`" "$darwin_base_archive" 5770 cd "$darwin_curdir" 5771 $RM "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" 5772 done # $darwin_arches 5773 ## Okay now we've a bunch of thin objects, gotta fatten them up :) 5774 darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$sed_basename" | sort -u` 5775 darwin_file= 5776 darwin_files= 5777 for darwin_file in $darwin_filelist; do 5778 darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` 5779 $LIPO -create -output "$darwin_file" $darwin_files 5780 done # $darwin_filelist 5781 $RM -rf unfat-$$ 5782 cd "$darwin_orig_dir" 5783 else 5784 cd $darwin_orig_dir 5785 func_extract_an_archive "$my_xdir" "$my_xabs" 5786 fi # $darwin_arches 5787 } # !$opt_dry_run 5788 ;; 5789 *) 5790 func_extract_an_archive "$my_xdir" "$my_xabs" 5791 ;; 5792 esac 5793 my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` 5794 done 5795 5796 func_extract_archives_result=$my_oldobjs 5797} 5798 5799 5800# func_emit_wrapper [arg=no] 5801# 5802# Emit a libtool wrapper script on stdout. 5803# Don't directly open a file because we may want to 5804# incorporate the script contents within a cygwin/mingw 5805# wrapper executable. Must ONLY be called from within 5806# func_mode_link because it depends on a number of variables 5807# set therein. 5808# 5809# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR 5810# variable will take. If 'yes', then the emitted script 5811# will assume that the directory where it is stored is 5812# the $objdir directory. This is a cygwin/mingw-specific 5813# behavior. 5814func_emit_wrapper () 5815{ 5816 func_emit_wrapper_arg1=${1-no} 5817 5818 $ECHO "\ 5819#! $SHELL 5820 5821# $output - temporary wrapper script for $objdir/$outputname 5822# Generated by $PROGRAM (GNU $PACKAGE) $VERSION 5823# 5824# The $output program cannot be directly executed until all the libtool 5825# libraries that it depends on are installed. 5826# 5827# This wrapper script should never be moved out of the build directory. 5828# If it is, it will not operate correctly. 5829 5830# Sed substitution that helps us do robust quoting. It backslashifies 5831# metacharacters that are still active within double-quoted strings. 5832sed_quote_subst='$sed_quote_subst' 5833 5834# Be Bourne compatible 5835if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then 5836 emulate sh 5837 NULLCMD=: 5838 # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which 5839 # is contrary to our usage. Disable this feature. 5840 alias -g '\${1+\"\$@\"}'='\"\$@\"' 5841 setopt NO_GLOB_SUBST 5842else 5843 case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac 5844fi 5845BIN_SH=xpg4; export BIN_SH # for Tru64 5846DUALCASE=1; export DUALCASE # for MKS sh 5847 5848# The HP-UX ksh and POSIX shell print the target directory to stdout 5849# if CDPATH is set. 5850(unset CDPATH) >/dev/null 2>&1 && unset CDPATH 5851 5852relink_command=\"$relink_command\" 5853 5854# This environment variable determines our operation mode. 5855if test \"\$libtool_install_magic\" = \"$magic\"; then 5856 # install mode needs the following variables: 5857 generated_by_libtool_version='$macro_version' 5858 notinst_deplibs='$notinst_deplibs' 5859else 5860 # When we are sourced in execute mode, \$file and \$ECHO are already set. 5861 if test \"\$libtool_execute_magic\" != \"$magic\"; then 5862 file=\"\$0\"" 5863 5864 qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` 5865 $ECHO "\ 5866 5867# A function that is used when there is no print builtin or printf. 5868func_fallback_echo () 5869{ 5870 eval 'cat <<_LTECHO_EOF 5871\$1 5872_LTECHO_EOF' 5873} 5874 ECHO=\"$qECHO\" 5875 fi 5876 5877# Very basic option parsing. These options are (a) specific to 5878# the libtool wrapper, (b) are identical between the wrapper 5879# /script/ and the wrapper /executable/ that is used only on 5880# windows platforms, and (c) all begin with the string "--lt-" 5881# (application programs are unlikely to have options that match 5882# this pattern). 5883# 5884# There are only two supported options: --lt-debug and 5885# --lt-dump-script. There is, deliberately, no --lt-help. 5886# 5887# The first argument to this parsing function should be the 5888# script's $0 value, followed by "$@". 5889lt_option_debug= 5890func_parse_lt_options () 5891{ 5892 lt_script_arg0=\$0 5893 shift 5894 for lt_opt 5895 do 5896 case \"\$lt_opt\" in 5897 --lt-debug) lt_option_debug=1 ;; 5898 --lt-dump-script) 5899 lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` 5900 test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. 5901 lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` 5902 cat \"\$lt_dump_D/\$lt_dump_F\" 5903 exit 0 5904 ;; 5905 --lt-*) 5906 \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 5907 exit 1 5908 ;; 5909 esac 5910 done 5911 5912 # Print the debug banner immediately: 5913 if test -n \"\$lt_option_debug\"; then 5914 echo \"$outputname:$output:\$LINENO: libtool wrapper (GNU $PACKAGE) $VERSION\" 1>&2 5915 fi 5916} 5917 5918# Used when --lt-debug. Prints its arguments to stdout 5919# (redirection is the responsibility of the caller) 5920func_lt_dump_args () 5921{ 5922 lt_dump_args_N=1; 5923 for lt_arg 5924 do 5925 \$ECHO \"$outputname:$output:\$LINENO: newargv[\$lt_dump_args_N]: \$lt_arg\" 5926 lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` 5927 done 5928} 5929 5930# Core function for launching the target application 5931func_exec_program_core () 5932{ 5933" 5934 case $host in 5935 # Backslashes separate directories on plain windows 5936 *-*-mingw | *-*-os2* | *-cegcc*) 5937 $ECHO "\ 5938 if test -n \"\$lt_option_debug\"; then 5939 \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir\\\\\$program\" 1>&2 5940 func_lt_dump_args \${1+\"\$@\"} 1>&2 5941 fi 5942 exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} 5943" 5944 ;; 5945 5946 *) 5947 $ECHO "\ 5948 if test -n \"\$lt_option_debug\"; then 5949 \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir/\$program\" 1>&2 5950 func_lt_dump_args \${1+\"\$@\"} 1>&2 5951 fi 5952 exec \"\$progdir/\$program\" \${1+\"\$@\"} 5953" 5954 ;; 5955 esac 5956 $ECHO "\ 5957 \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 5958 exit 1 5959} 5960 5961# A function to encapsulate launching the target application 5962# Strips options in the --lt-* namespace from \$@ and 5963# launches target application with the remaining arguments. 5964func_exec_program () 5965{ 5966 case \" \$* \" in 5967 *\\ --lt-*) 5968 for lt_wr_arg 5969 do 5970 case \$lt_wr_arg in 5971 --lt-*) ;; 5972 *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; 5973 esac 5974 shift 5975 done ;; 5976 esac 5977 func_exec_program_core \${1+\"\$@\"} 5978} 5979 5980 # Parse options 5981 func_parse_lt_options \"\$0\" \${1+\"\$@\"} 5982 5983 # Find the directory that this script lives in. 5984 thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` 5985 test \"x\$thisdir\" = \"x\$file\" && thisdir=. 5986 5987 # Follow symbolic links until we get to the real thisdir. 5988 file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` 5989 while test -n \"\$file\"; do 5990 destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` 5991 5992 # If there was a directory component, then change thisdir. 5993 if test \"x\$destdir\" != \"x\$file\"; then 5994 case \"\$destdir\" in 5995 [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; 5996 *) thisdir=\"\$thisdir/\$destdir\" ;; 5997 esac 5998 fi 5999 6000 file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` 6001 file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` 6002 done 6003 6004 # Usually 'no', except on cygwin/mingw when embedded into 6005 # the cwrapper. 6006 WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 6007 if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then 6008 # special case for '.' 6009 if test \"\$thisdir\" = \".\"; then 6010 thisdir=\`pwd\` 6011 fi 6012 # remove .libs from thisdir 6013 case \"\$thisdir\" in 6014 *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; 6015 $objdir ) thisdir=. ;; 6016 esac 6017 fi 6018 6019 # Try to get the absolute directory name. 6020 absdir=\`cd \"\$thisdir\" && pwd\` 6021 test -n \"\$absdir\" && thisdir=\"\$absdir\" 6022" 6023 6024 if test yes = "$fast_install"; then 6025 $ECHO "\ 6026 program=lt-'$outputname'$exeext 6027 progdir=\"\$thisdir/$objdir\" 6028 6029 if test ! -f \"\$progdir/\$program\" || 6030 { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | $SED 1q\`; \\ 6031 test \"X\$file\" != \"X\$progdir/\$program\"; }; then 6032 6033 file=\"\$\$-\$program\" 6034 6035 if test ! -d \"\$progdir\"; then 6036 $MKDIR \"\$progdir\" 6037 else 6038 $RM \"\$progdir/\$file\" 6039 fi" 6040 6041 $ECHO "\ 6042 6043 # relink executable if necessary 6044 if test -n \"\$relink_command\"; then 6045 if relink_command_output=\`eval \$relink_command 2>&1\`; then : 6046 else 6047 \$ECHO \"\$relink_command_output\" >&2 6048 $RM \"\$progdir/\$file\" 6049 exit 1 6050 fi 6051 fi 6052 6053 $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || 6054 { $RM \"\$progdir/\$program\"; 6055 $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } 6056 $RM \"\$progdir/\$file\" 6057 fi" 6058 else 6059 $ECHO "\ 6060 program='$outputname' 6061 progdir=\"\$thisdir/$objdir\" 6062" 6063 fi 6064 6065 $ECHO "\ 6066 6067 if test -f \"\$progdir/\$program\"; then" 6068 6069 # fixup the dll searchpath if we need to. 6070 # 6071 # Fix the DLL searchpath if we need to. Do this before prepending 6072 # to shlibpath, because on Windows, both are PATH and uninstalled 6073 # libraries must come first. 6074 if test -n "$dllsearchpath"; then 6075 $ECHO "\ 6076 # Add the dll search path components to the executable PATH 6077 PATH=$dllsearchpath:\$PATH 6078" 6079 fi 6080 6081 # Export our shlibpath_var if we have one. 6082 if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 6083 $ECHO "\ 6084 # Add our own library path to $shlibpath_var 6085 $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" 6086 6087 # Some systems cannot cope with colon-terminated $shlibpath_var 6088 # The second colon is a workaround for a bug in BeOS R4 sed 6089 $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` 6090 6091 export $shlibpath_var 6092" 6093 fi 6094 6095 $ECHO "\ 6096 if test \"\$libtool_execute_magic\" != \"$magic\"; then 6097 # Run the actual program with our arguments. 6098 func_exec_program \${1+\"\$@\"} 6099 fi 6100 else 6101 # The program doesn't exist. 6102 \$ECHO \"\$0: error: '\$progdir/\$program' does not exist\" 1>&2 6103 \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 6104 \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 6105 exit 1 6106 fi 6107fi\ 6108" 6109} 6110 6111 6112# func_emit_cwrapperexe_src 6113# emit the source code for a wrapper executable on stdout 6114# Must ONLY be called from within func_mode_link because 6115# it depends on a number of variable set therein. 6116func_emit_cwrapperexe_src () 6117{ 6118 cat <<EOF 6119 6120/* $cwrappersource - temporary wrapper executable for $objdir/$outputname 6121 Generated by $PROGRAM (GNU $PACKAGE) $VERSION 6122 6123 The $output program cannot be directly executed until all the libtool 6124 libraries that it depends on are installed. 6125 6126 This wrapper executable should never be moved out of the build directory. 6127 If it is, it will not operate correctly. 6128*/ 6129EOF 6130 cat <<"EOF" 6131#ifdef _MSC_VER 6132# define _CRT_SECURE_NO_DEPRECATE 1 6133#endif 6134#include <stdio.h> 6135#include <stdlib.h> 6136#ifdef _MSC_VER 6137# include <direct.h> 6138# include <process.h> 6139# include <io.h> 6140#else 6141# include <unistd.h> 6142# include <stdint.h> 6143# ifdef __CYGWIN__ 6144# include <io.h> 6145# endif 6146#endif 6147#include <malloc.h> 6148#include <stdarg.h> 6149#include <assert.h> 6150#include <string.h> 6151#include <ctype.h> 6152#include <errno.h> 6153#include <fcntl.h> 6154#include <sys/stat.h> 6155 6156#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) 6157 6158/* declarations of non-ANSI functions */ 6159#if defined __MINGW32__ 6160# ifdef __STRICT_ANSI__ 6161int _putenv (const char *); 6162# endif 6163#elif defined __CYGWIN__ 6164# ifdef __STRICT_ANSI__ 6165char *realpath (const char *, char *); 6166int putenv (char *); 6167int setenv (const char *, const char *, int); 6168# endif 6169/* #elif defined other_platform || defined ... */ 6170#endif 6171 6172/* portability defines, excluding path handling macros */ 6173#if defined _MSC_VER 6174# define setmode _setmode 6175# define stat _stat 6176# define chmod _chmod 6177# define getcwd _getcwd 6178# define putenv _putenv 6179# define S_IXUSR _S_IEXEC 6180#elif defined __MINGW32__ 6181# define setmode _setmode 6182# define stat _stat 6183# define chmod _chmod 6184# define getcwd _getcwd 6185# define putenv _putenv 6186#elif defined __CYGWIN__ 6187# define HAVE_SETENV 6188# define FOPEN_WB "wb" 6189/* #elif defined other platforms ... */ 6190#endif 6191 6192#if defined PATH_MAX 6193# define LT_PATHMAX PATH_MAX 6194#elif defined MAXPATHLEN 6195# define LT_PATHMAX MAXPATHLEN 6196#else 6197# define LT_PATHMAX 1024 6198#endif 6199 6200#ifndef S_IXOTH 6201# define S_IXOTH 0 6202#endif 6203#ifndef S_IXGRP 6204# define S_IXGRP 0 6205#endif 6206 6207/* path handling portability macros */ 6208#ifndef DIR_SEPARATOR 6209# define DIR_SEPARATOR '/' 6210# define PATH_SEPARATOR ':' 6211#endif 6212 6213#if defined _WIN32 || defined __MSDOS__ || defined __DJGPP__ || \ 6214 defined __OS2__ 6215# define HAVE_DOS_BASED_FILE_SYSTEM 6216# define FOPEN_WB "wb" 6217# ifndef DIR_SEPARATOR_2 6218# define DIR_SEPARATOR_2 '\\' 6219# endif 6220# ifndef PATH_SEPARATOR_2 6221# define PATH_SEPARATOR_2 ';' 6222# endif 6223#endif 6224 6225#ifndef DIR_SEPARATOR_2 6226# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) 6227#else /* DIR_SEPARATOR_2 */ 6228# define IS_DIR_SEPARATOR(ch) \ 6229 (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) 6230#endif /* DIR_SEPARATOR_2 */ 6231 6232#ifndef PATH_SEPARATOR_2 6233# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) 6234#else /* PATH_SEPARATOR_2 */ 6235# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) 6236#endif /* PATH_SEPARATOR_2 */ 6237 6238#ifndef FOPEN_WB 6239# define FOPEN_WB "w" 6240#endif 6241#ifndef _O_BINARY 6242# define _O_BINARY 0 6243#endif 6244 6245#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) 6246#define XFREE(stale) do { \ 6247 if (stale) { free (stale); stale = 0; } \ 6248} while (0) 6249 6250#if defined LT_DEBUGWRAPPER 6251static int lt_debug = 1; 6252#else 6253static int lt_debug = 0; 6254#endif 6255 6256const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ 6257 6258void *xmalloc (size_t num); 6259char *xstrdup (const char *string); 6260const char *base_name (const char *name); 6261char *find_executable (const char *wrapper); 6262char *chase_symlinks (const char *pathspec); 6263int make_executable (const char *path); 6264int check_executable (const char *path); 6265char *strendzap (char *str, const char *pat); 6266void lt_debugprintf (const char *file, int line, const char *fmt, ...); 6267void lt_fatal (const char *file, int line, const char *message, ...); 6268static const char *nonnull (const char *s); 6269static const char *nonempty (const char *s); 6270void lt_setenv (const char *name, const char *value); 6271char *lt_extend_str (const char *orig_value, const char *add, int to_end); 6272void lt_update_exe_path (const char *name, const char *value); 6273void lt_update_lib_path (const char *name, const char *value); 6274char **prepare_spawn (char **argv); 6275void lt_dump_script (FILE *f); 6276EOF 6277 6278 cat <<EOF 6279#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 5) 6280# define externally_visible volatile 6281#else 6282# define externally_visible __attribute__((externally_visible)) volatile 6283#endif 6284externally_visible const char * MAGIC_EXE = "$magic_exe"; 6285const char * LIB_PATH_VARNAME = "$shlibpath_var"; 6286EOF 6287 6288 if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 6289 func_to_host_path "$temp_rpath" 6290 cat <<EOF 6291const char * LIB_PATH_VALUE = "$func_to_host_path_result"; 6292EOF 6293 else 6294 cat <<"EOF" 6295const char * LIB_PATH_VALUE = ""; 6296EOF 6297 fi 6298 6299 if test -n "$dllsearchpath"; then 6300 func_to_host_path "$dllsearchpath:" 6301 cat <<EOF 6302const char * EXE_PATH_VARNAME = "PATH"; 6303const char * EXE_PATH_VALUE = "$func_to_host_path_result"; 6304EOF 6305 else 6306 cat <<"EOF" 6307const char * EXE_PATH_VARNAME = ""; 6308const char * EXE_PATH_VALUE = ""; 6309EOF 6310 fi 6311 6312 if test yes = "$fast_install"; then 6313 cat <<EOF 6314const char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */ 6315EOF 6316 else 6317 cat <<EOF 6318const char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */ 6319EOF 6320 fi 6321 6322 6323 cat <<"EOF" 6324 6325#define LTWRAPPER_OPTION_PREFIX "--lt-" 6326 6327static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX; 6328static const char *dumpscript_opt = LTWRAPPER_OPTION_PREFIX "dump-script"; 6329static const char *debug_opt = LTWRAPPER_OPTION_PREFIX "debug"; 6330 6331int 6332main (int argc, char *argv[]) 6333{ 6334 char **newargz; 6335 int newargc; 6336 char *tmp_pathspec; 6337 char *actual_cwrapper_path; 6338 char *actual_cwrapper_name; 6339 char *target_name; 6340 char *lt_argv_zero; 6341 int rval = 127; 6342 6343 int i; 6344 6345 program_name = (char *) xstrdup (base_name (argv[0])); 6346 newargz = XMALLOC (char *, (size_t) argc + 1); 6347 6348 /* very simple arg parsing; don't want to rely on getopt 6349 * also, copy all non cwrapper options to newargz, except 6350 * argz[0], which is handled differently 6351 */ 6352 newargc=0; 6353 for (i = 1; i < argc; i++) 6354 { 6355 if (STREQ (argv[i], dumpscript_opt)) 6356 { 6357EOF 6358 case $host in 6359 *mingw* | *cygwin* ) 6360 # make stdout use "unix" line endings 6361 echo " setmode(1,_O_BINARY);" 6362 ;; 6363 esac 6364 6365 cat <<"EOF" 6366 lt_dump_script (stdout); 6367 return 0; 6368 } 6369 if (STREQ (argv[i], debug_opt)) 6370 { 6371 lt_debug = 1; 6372 continue; 6373 } 6374 if (STREQ (argv[i], ltwrapper_option_prefix)) 6375 { 6376 /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX 6377 namespace, but it is not one of the ones we know about and 6378 have already dealt with, above (inluding dump-script), then 6379 report an error. Otherwise, targets might begin to believe 6380 they are allowed to use options in the LTWRAPPER_OPTION_PREFIX 6381 namespace. The first time any user complains about this, we'll 6382 need to make LTWRAPPER_OPTION_PREFIX a configure-time option 6383 or a configure.ac-settable value. 6384 */ 6385 lt_fatal (__FILE__, __LINE__, 6386 "unrecognized %s option: '%s'", 6387 ltwrapper_option_prefix, argv[i]); 6388 } 6389 /* otherwise ... */ 6390 newargz[++newargc] = xstrdup (argv[i]); 6391 } 6392 newargz[++newargc] = NULL; 6393 6394EOF 6395 cat <<EOF 6396 /* The GNU banner must be the first non-error debug message */ 6397 lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE) $VERSION\n"); 6398EOF 6399 cat <<"EOF" 6400 lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]); 6401 lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name); 6402 6403 tmp_pathspec = find_executable (argv[0]); 6404 if (tmp_pathspec == NULL) 6405 lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]); 6406 lt_debugprintf (__FILE__, __LINE__, 6407 "(main) found exe (before symlink chase) at: %s\n", 6408 tmp_pathspec); 6409 6410 actual_cwrapper_path = chase_symlinks (tmp_pathspec); 6411 lt_debugprintf (__FILE__, __LINE__, 6412 "(main) found exe (after symlink chase) at: %s\n", 6413 actual_cwrapper_path); 6414 XFREE (tmp_pathspec); 6415 6416 actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path)); 6417 strendzap (actual_cwrapper_path, actual_cwrapper_name); 6418 6419 /* wrapper name transforms */ 6420 strendzap (actual_cwrapper_name, ".exe"); 6421 tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1); 6422 XFREE (actual_cwrapper_name); 6423 actual_cwrapper_name = tmp_pathspec; 6424 tmp_pathspec = 0; 6425 6426 /* target_name transforms -- use actual target program name; might have lt- prefix */ 6427 target_name = xstrdup (base_name (TARGET_PROGRAM_NAME)); 6428 strendzap (target_name, ".exe"); 6429 tmp_pathspec = lt_extend_str (target_name, ".exe", 1); 6430 XFREE (target_name); 6431 target_name = tmp_pathspec; 6432 tmp_pathspec = 0; 6433 6434 lt_debugprintf (__FILE__, __LINE__, 6435 "(main) libtool target name: %s\n", 6436 target_name); 6437EOF 6438 6439 cat <<EOF 6440 newargz[0] = 6441 XMALLOC (char, (strlen (actual_cwrapper_path) + 6442 strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1)); 6443 strcpy (newargz[0], actual_cwrapper_path); 6444 strcat (newargz[0], "$objdir"); 6445 strcat (newargz[0], "/"); 6446EOF 6447 6448 cat <<"EOF" 6449 /* stop here, and copy so we don't have to do this twice */ 6450 tmp_pathspec = xstrdup (newargz[0]); 6451 6452 /* do NOT want the lt- prefix here, so use actual_cwrapper_name */ 6453 strcat (newargz[0], actual_cwrapper_name); 6454 6455 /* DO want the lt- prefix here if it exists, so use target_name */ 6456 lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1); 6457 XFREE (tmp_pathspec); 6458 tmp_pathspec = NULL; 6459EOF 6460 6461 case $host_os in 6462 mingw*) 6463 cat <<"EOF" 6464 { 6465 char* p; 6466 while ((p = strchr (newargz[0], '\\')) != NULL) 6467 { 6468 *p = '/'; 6469 } 6470 while ((p = strchr (lt_argv_zero, '\\')) != NULL) 6471 { 6472 *p = '/'; 6473 } 6474 } 6475EOF 6476 ;; 6477 esac 6478 6479 cat <<"EOF" 6480 XFREE (target_name); 6481 XFREE (actual_cwrapper_path); 6482 XFREE (actual_cwrapper_name); 6483 6484 lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */ 6485 lt_setenv ("DUALCASE", "1"); /* for MSK sh */ 6486 /* Update the DLL searchpath. EXE_PATH_VALUE ($dllsearchpath) must 6487 be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath) 6488 because on Windows, both *_VARNAMEs are PATH but uninstalled 6489 libraries must come first. */ 6490 lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE); 6491 lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE); 6492 6493 lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n", 6494 nonnull (lt_argv_zero)); 6495 for (i = 0; i < newargc; i++) 6496 { 6497 lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n", 6498 i, nonnull (newargz[i])); 6499 } 6500 6501EOF 6502 6503 case $host_os in 6504 mingw*) 6505 cat <<"EOF" 6506 /* execv doesn't actually work on mingw as expected on unix */ 6507 newargz = prepare_spawn (newargz); 6508 rval = (int) _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz); 6509 if (rval == -1) 6510 { 6511 /* failed to start process */ 6512 lt_debugprintf (__FILE__, __LINE__, 6513 "(main) failed to launch target \"%s\": %s\n", 6514 lt_argv_zero, nonnull (strerror (errno))); 6515 return 127; 6516 } 6517 return rval; 6518EOF 6519 ;; 6520 *) 6521 cat <<"EOF" 6522 execv (lt_argv_zero, newargz); 6523 return rval; /* =127, but avoids unused variable warning */ 6524EOF 6525 ;; 6526 esac 6527 6528 cat <<"EOF" 6529} 6530 6531void * 6532xmalloc (size_t num) 6533{ 6534 void *p = (void *) malloc (num); 6535 if (!p) 6536 lt_fatal (__FILE__, __LINE__, "memory exhausted"); 6537 6538 return p; 6539} 6540 6541char * 6542xstrdup (const char *string) 6543{ 6544 return string ? strcpy ((char *) xmalloc (strlen (string) + 1), 6545 string) : NULL; 6546} 6547 6548const char * 6549base_name (const char *name) 6550{ 6551 const char *base; 6552 6553#if defined HAVE_DOS_BASED_FILE_SYSTEM 6554 /* Skip over the disk name in MSDOS pathnames. */ 6555 if (isalpha ((unsigned char) name[0]) && name[1] == ':') 6556 name += 2; 6557#endif 6558 6559 for (base = name; *name; name++) 6560 if (IS_DIR_SEPARATOR (*name)) 6561 base = name + 1; 6562 return base; 6563} 6564 6565int 6566check_executable (const char *path) 6567{ 6568 struct stat st; 6569 6570 lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n", 6571 nonempty (path)); 6572 if ((!path) || (!*path)) 6573 return 0; 6574 6575 if ((stat (path, &st) >= 0) 6576 && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) 6577 return 1; 6578 else 6579 return 0; 6580} 6581 6582int 6583make_executable (const char *path) 6584{ 6585 int rval = 0; 6586 struct stat st; 6587 6588 lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", 6589 nonempty (path)); 6590 if ((!path) || (!*path)) 6591 return 0; 6592 6593 if (stat (path, &st) >= 0) 6594 { 6595 rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); 6596 } 6597 return rval; 6598} 6599 6600/* Searches for the full path of the wrapper. Returns 6601 newly allocated full path name if found, NULL otherwise 6602 Does not chase symlinks, even on platforms that support them. 6603*/ 6604char * 6605find_executable (const char *wrapper) 6606{ 6607 int has_slash = 0; 6608 const char *p; 6609 const char *p_next; 6610 /* static buffer for getcwd */ 6611 char tmp[LT_PATHMAX + 1]; 6612 size_t tmp_len; 6613 char *concat_name; 6614 6615 lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", 6616 nonempty (wrapper)); 6617 6618 if ((wrapper == NULL) || (*wrapper == '\0')) 6619 return NULL; 6620 6621 /* Absolute path? */ 6622#if defined HAVE_DOS_BASED_FILE_SYSTEM 6623 if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') 6624 { 6625 concat_name = xstrdup (wrapper); 6626 if (check_executable (concat_name)) 6627 return concat_name; 6628 XFREE (concat_name); 6629 } 6630 else 6631 { 6632#endif 6633 if (IS_DIR_SEPARATOR (wrapper[0])) 6634 { 6635 concat_name = xstrdup (wrapper); 6636 if (check_executable (concat_name)) 6637 return concat_name; 6638 XFREE (concat_name); 6639 } 6640#if defined HAVE_DOS_BASED_FILE_SYSTEM 6641 } 6642#endif 6643 6644 for (p = wrapper; *p; p++) 6645 if (*p == '/') 6646 { 6647 has_slash = 1; 6648 break; 6649 } 6650 if (!has_slash) 6651 { 6652 /* no slashes; search PATH */ 6653 const char *path = getenv ("PATH"); 6654 if (path != NULL) 6655 { 6656 for (p = path; *p; p = p_next) 6657 { 6658 const char *q; 6659 size_t p_len; 6660 for (q = p; *q; q++) 6661 if (IS_PATH_SEPARATOR (*q)) 6662 break; 6663 p_len = (size_t) (q - p); 6664 p_next = (*q == '\0' ? q : q + 1); 6665 if (p_len == 0) 6666 { 6667 /* empty path: current directory */ 6668 if (getcwd (tmp, LT_PATHMAX) == NULL) 6669 lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", 6670 nonnull (strerror (errno))); 6671 tmp_len = strlen (tmp); 6672 concat_name = 6673 XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); 6674 memcpy (concat_name, tmp, tmp_len); 6675 concat_name[tmp_len] = '/'; 6676 strcpy (concat_name + tmp_len + 1, wrapper); 6677 } 6678 else 6679 { 6680 concat_name = 6681 XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); 6682 memcpy (concat_name, p, p_len); 6683 concat_name[p_len] = '/'; 6684 strcpy (concat_name + p_len + 1, wrapper); 6685 } 6686 if (check_executable (concat_name)) 6687 return concat_name; 6688 XFREE (concat_name); 6689 } 6690 } 6691 /* not found in PATH; assume curdir */ 6692 } 6693 /* Relative path | not found in path: prepend cwd */ 6694 if (getcwd (tmp, LT_PATHMAX) == NULL) 6695 lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", 6696 nonnull (strerror (errno))); 6697 tmp_len = strlen (tmp); 6698 concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); 6699 memcpy (concat_name, tmp, tmp_len); 6700 concat_name[tmp_len] = '/'; 6701 strcpy (concat_name + tmp_len + 1, wrapper); 6702 6703 if (check_executable (concat_name)) 6704 return concat_name; 6705 XFREE (concat_name); 6706 return NULL; 6707} 6708 6709char * 6710chase_symlinks (const char *pathspec) 6711{ 6712#ifndef S_ISLNK 6713 return xstrdup (pathspec); 6714#else 6715 char buf[LT_PATHMAX]; 6716 struct stat s; 6717 char *tmp_pathspec = xstrdup (pathspec); 6718 char *p; 6719 int has_symlinks = 0; 6720 while (strlen (tmp_pathspec) && !has_symlinks) 6721 { 6722 lt_debugprintf (__FILE__, __LINE__, 6723 "checking path component for symlinks: %s\n", 6724 tmp_pathspec); 6725 if (lstat (tmp_pathspec, &s) == 0) 6726 { 6727 if (S_ISLNK (s.st_mode) != 0) 6728 { 6729 has_symlinks = 1; 6730 break; 6731 } 6732 6733 /* search backwards for last DIR_SEPARATOR */ 6734 p = tmp_pathspec + strlen (tmp_pathspec) - 1; 6735 while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) 6736 p--; 6737 if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) 6738 { 6739 /* no more DIR_SEPARATORS left */ 6740 break; 6741 } 6742 *p = '\0'; 6743 } 6744 else 6745 { 6746 lt_fatal (__FILE__, __LINE__, 6747 "error accessing file \"%s\": %s", 6748 tmp_pathspec, nonnull (strerror (errno))); 6749 } 6750 } 6751 XFREE (tmp_pathspec); 6752 6753 if (!has_symlinks) 6754 { 6755 return xstrdup (pathspec); 6756 } 6757 6758 tmp_pathspec = realpath (pathspec, buf); 6759 if (tmp_pathspec == 0) 6760 { 6761 lt_fatal (__FILE__, __LINE__, 6762 "could not follow symlinks for %s", pathspec); 6763 } 6764 return xstrdup (tmp_pathspec); 6765#endif 6766} 6767 6768char * 6769strendzap (char *str, const char *pat) 6770{ 6771 size_t len, patlen; 6772 6773 assert (str != NULL); 6774 assert (pat != NULL); 6775 6776 len = strlen (str); 6777 patlen = strlen (pat); 6778 6779 if (patlen <= len) 6780 { 6781 str += len - patlen; 6782 if (STREQ (str, pat)) 6783 *str = '\0'; 6784 } 6785 return str; 6786} 6787 6788void 6789lt_debugprintf (const char *file, int line, const char *fmt, ...) 6790{ 6791 va_list args; 6792 if (lt_debug) 6793 { 6794 (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); 6795 va_start (args, fmt); 6796 (void) vfprintf (stderr, fmt, args); 6797 va_end (args); 6798 } 6799} 6800 6801static void 6802lt_error_core (int exit_status, const char *file, 6803 int line, const char *mode, 6804 const char *message, va_list ap) 6805{ 6806 fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); 6807 vfprintf (stderr, message, ap); 6808 fprintf (stderr, ".\n"); 6809 6810 if (exit_status >= 0) 6811 exit (exit_status); 6812} 6813 6814void 6815lt_fatal (const char *file, int line, const char *message, ...) 6816{ 6817 va_list ap; 6818 va_start (ap, message); 6819 lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); 6820 va_end (ap); 6821} 6822 6823static const char * 6824nonnull (const char *s) 6825{ 6826 return s ? s : "(null)"; 6827} 6828 6829static const char * 6830nonempty (const char *s) 6831{ 6832 return (s && !*s) ? "(empty)" : nonnull (s); 6833} 6834 6835void 6836lt_setenv (const char *name, const char *value) 6837{ 6838 lt_debugprintf (__FILE__, __LINE__, 6839 "(lt_setenv) setting '%s' to '%s'\n", 6840 nonnull (name), nonnull (value)); 6841 { 6842#ifdef HAVE_SETENV 6843 /* always make a copy, for consistency with !HAVE_SETENV */ 6844 char *str = xstrdup (value); 6845 setenv (name, str, 1); 6846#else 6847 size_t len = strlen (name) + 1 + strlen (value) + 1; 6848 char *str = XMALLOC (char, len); 6849 sprintf (str, "%s=%s", name, value); 6850 if (putenv (str) != EXIT_SUCCESS) 6851 { 6852 XFREE (str); 6853 } 6854#endif 6855 } 6856} 6857 6858char * 6859lt_extend_str (const char *orig_value, const char *add, int to_end) 6860{ 6861 char *new_value; 6862 if (orig_value && *orig_value) 6863 { 6864 size_t orig_value_len = strlen (orig_value); 6865 size_t add_len = strlen (add); 6866 new_value = XMALLOC (char, add_len + orig_value_len + 1); 6867 if (to_end) 6868 { 6869 strcpy (new_value, orig_value); 6870 strcpy (new_value + orig_value_len, add); 6871 } 6872 else 6873 { 6874 strcpy (new_value, add); 6875 strcpy (new_value + add_len, orig_value); 6876 } 6877 } 6878 else 6879 { 6880 new_value = xstrdup (add); 6881 } 6882 return new_value; 6883} 6884 6885void 6886lt_update_exe_path (const char *name, const char *value) 6887{ 6888 lt_debugprintf (__FILE__, __LINE__, 6889 "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", 6890 nonnull (name), nonnull (value)); 6891 6892 if (name && *name && value && *value) 6893 { 6894 char *new_value = lt_extend_str (getenv (name), value, 0); 6895 /* some systems can't cope with a ':'-terminated path #' */ 6896 size_t len = strlen (new_value); 6897 while ((len > 0) && IS_PATH_SEPARATOR (new_value[len-1])) 6898 { 6899 new_value[--len] = '\0'; 6900 } 6901 lt_setenv (name, new_value); 6902 XFREE (new_value); 6903 } 6904} 6905 6906void 6907lt_update_lib_path (const char *name, const char *value) 6908{ 6909 lt_debugprintf (__FILE__, __LINE__, 6910 "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", 6911 nonnull (name), nonnull (value)); 6912 6913 if (name && *name && value && *value) 6914 { 6915 char *new_value = lt_extend_str (getenv (name), value, 0); 6916 lt_setenv (name, new_value); 6917 XFREE (new_value); 6918 } 6919} 6920 6921EOF 6922 case $host_os in 6923 mingw*) 6924 cat <<"EOF" 6925 6926/* Prepares an argument vector before calling spawn(). 6927 Note that spawn() does not by itself call the command interpreter 6928 (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : 6929 ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); 6930 GetVersionEx(&v); 6931 v.dwPlatformId == VER_PLATFORM_WIN32_NT; 6932 }) ? "cmd.exe" : "command.com"). 6933 Instead it simply concatenates the arguments, separated by ' ', and calls 6934 CreateProcess(). We must quote the arguments since Win32 CreateProcess() 6935 interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a 6936 special way: 6937 - Space and tab are interpreted as delimiters. They are not treated as 6938 delimiters if they are surrounded by double quotes: "...". 6939 - Unescaped double quotes are removed from the input. Their only effect is 6940 that within double quotes, space and tab are treated like normal 6941 characters. 6942 - Backslashes not followed by double quotes are not special. 6943 - But 2*n+1 backslashes followed by a double quote become 6944 n backslashes followed by a double quote (n >= 0): 6945 \" -> " 6946 \\\" -> \" 6947 \\\\\" -> \\" 6948 */ 6949#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" 6950#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" 6951char ** 6952prepare_spawn (char **argv) 6953{ 6954 size_t argc; 6955 char **new_argv; 6956 size_t i; 6957 6958 /* Count number of arguments. */ 6959 for (argc = 0; argv[argc] != NULL; argc++) 6960 ; 6961 6962 /* Allocate new argument vector. */ 6963 new_argv = XMALLOC (char *, argc + 1); 6964 6965 /* Put quoted arguments into the new argument vector. */ 6966 for (i = 0; i < argc; i++) 6967 { 6968 const char *string = argv[i]; 6969 6970 if (string[0] == '\0') 6971 new_argv[i] = xstrdup ("\"\""); 6972 else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) 6973 { 6974 int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); 6975 size_t length; 6976 unsigned int backslashes; 6977 const char *s; 6978 char *quoted_string; 6979 char *p; 6980 6981 length = 0; 6982 backslashes = 0; 6983 if (quote_around) 6984 length++; 6985 for (s = string; *s != '\0'; s++) 6986 { 6987 char c = *s; 6988 if (c == '"') 6989 length += backslashes + 1; 6990 length++; 6991 if (c == '\\') 6992 backslashes++; 6993 else 6994 backslashes = 0; 6995 } 6996 if (quote_around) 6997 length += backslashes + 1; 6998 6999 quoted_string = XMALLOC (char, length + 1); 7000 7001 p = quoted_string; 7002 backslashes = 0; 7003 if (quote_around) 7004 *p++ = '"'; 7005 for (s = string; *s != '\0'; s++) 7006 { 7007 char c = *s; 7008 if (c == '"') 7009 { 7010 unsigned int j; 7011 for (j = backslashes + 1; j > 0; j--) 7012 *p++ = '\\'; 7013 } 7014 *p++ = c; 7015 if (c == '\\') 7016 backslashes++; 7017 else 7018 backslashes = 0; 7019 } 7020 if (quote_around) 7021 { 7022 unsigned int j; 7023 for (j = backslashes; j > 0; j--) 7024 *p++ = '\\'; 7025 *p++ = '"'; 7026 } 7027 *p = '\0'; 7028 7029 new_argv[i] = quoted_string; 7030 } 7031 else 7032 new_argv[i] = (char *) string; 7033 } 7034 new_argv[argc] = NULL; 7035 7036 return new_argv; 7037} 7038EOF 7039 ;; 7040 esac 7041 7042 cat <<"EOF" 7043void lt_dump_script (FILE* f) 7044{ 7045EOF 7046 func_emit_wrapper yes | 7047 $SED -n -e ' 7048s/^\(.\{79\}\)\(..*\)/\1\ 7049\2/ 7050h 7051s/\([\\"]\)/\\\1/g 7052s/$/\\n/ 7053s/\([^\n]*\).*/ fputs ("\1", f);/p 7054g 7055D' 7056 cat <<"EOF" 7057} 7058EOF 7059} 7060# end: func_emit_cwrapperexe_src 7061 7062# func_win32_import_lib_p ARG 7063# True if ARG is an import lib, as indicated by $file_magic_cmd 7064func_win32_import_lib_p () 7065{ 7066 $debug_cmd 7067 7068 case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in 7069 *import*) : ;; 7070 *) false ;; 7071 esac 7072} 7073 7074# func_suncc_cstd_abi 7075# !!ONLY CALL THIS FOR SUN CC AFTER $compile_command IS FULLY EXPANDED!! 7076# Several compiler flags select an ABI that is incompatible with the 7077# Cstd library. Avoid specifying it if any are in CXXFLAGS. 7078func_suncc_cstd_abi () 7079{ 7080 $debug_cmd 7081 7082 case " $compile_command " in 7083 *" -compat=g "*|*\ -std=c++[0-9][0-9]\ *|*" -library=stdcxx4 "*|*" -library=stlport4 "*) 7084 suncc_use_cstd_abi=no 7085 ;; 7086 *) 7087 suncc_use_cstd_abi=yes 7088 ;; 7089 esac 7090} 7091 7092# func_mode_link arg... 7093func_mode_link () 7094{ 7095 $debug_cmd 7096 7097 case $host in 7098 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 7099 # It is impossible to link a dll without this setting, and 7100 # we shouldn't force the makefile maintainer to figure out 7101 # what system we are compiling for in order to pass an extra 7102 # flag for every libtool invocation. 7103 # allow_undefined=no 7104 7105 # FIXME: Unfortunately, there are problems with the above when trying 7106 # to make a dll that has undefined symbols, in which case not 7107 # even a static library is built. For now, we need to specify 7108 # -no-undefined on the libtool link line when we can be certain 7109 # that all symbols are satisfied, otherwise we get a static library. 7110 allow_undefined=yes 7111 ;; 7112 *) 7113 allow_undefined=yes 7114 ;; 7115 esac 7116 libtool_args=$nonopt 7117 base_compile="$nonopt $@" 7118 compile_command=$nonopt 7119 finalize_command=$nonopt 7120 7121 compile_rpath= 7122 finalize_rpath= 7123 compile_shlibpath= 7124 finalize_shlibpath= 7125 convenience= 7126 old_convenience= 7127 deplibs= 7128 old_deplibs= 7129 compiler_flags= 7130 linker_flags= 7131 dllsearchpath= 7132 lib_search_path=`pwd` 7133 inst_prefix_dir= 7134 new_inherited_linker_flags= 7135 7136 avoid_version=no 7137 bindir= 7138 dlfiles= 7139 dlprefiles= 7140 dlself=no 7141 export_dynamic=no 7142 export_symbols= 7143 export_symbols_regex= 7144 generated= 7145 libobjs= 7146 ltlibs= 7147 module=no 7148 no_install=no 7149 objs= 7150 os2dllname= 7151 non_pic_objects= 7152 precious_files_regex= 7153 prefer_static_libs=no 7154 preload=false 7155 prev= 7156 prevarg= 7157 release= 7158 rpath= 7159 xrpath= 7160 perm_rpath= 7161 temp_rpath= 7162 thread_safe=no 7163 vinfo= 7164 vinfo_number=no 7165 weak_libs= 7166 single_module=$wl-single_module 7167 func_infer_tag $base_compile 7168 7169 # We need to know -static, to get the right output filenames. 7170 for arg 7171 do 7172 case $arg in 7173 -shared) 7174 test yes != "$build_libtool_libs" \ 7175 && func_fatal_configuration "cannot build a shared library" 7176 build_old_libs=no 7177 break 7178 ;; 7179 -all-static | -static | -static-libtool-libs) 7180 case $arg in 7181 -all-static) 7182 if test yes = "$build_libtool_libs" && test -z "$link_static_flag"; then 7183 func_warning "complete static linking is impossible in this configuration" 7184 fi 7185 if test -n "$link_static_flag"; then 7186 dlopen_self=$dlopen_self_static 7187 fi 7188 prefer_static_libs=yes 7189 ;; 7190 -static) 7191 if test -z "$pic_flag" && test -n "$link_static_flag"; then 7192 dlopen_self=$dlopen_self_static 7193 fi 7194 prefer_static_libs=built 7195 ;; 7196 -static-libtool-libs) 7197 if test -z "$pic_flag" && test -n "$link_static_flag"; then 7198 dlopen_self=$dlopen_self_static 7199 fi 7200 prefer_static_libs=yes 7201 ;; 7202 esac 7203 build_libtool_libs=no 7204 build_old_libs=yes 7205 break 7206 ;; 7207 esac 7208 done 7209 7210 # See if our shared archives depend on static archives. 7211 test -n "$old_archive_from_new_cmds" && build_old_libs=yes 7212 7213 # Go through the arguments, transforming them on the way. 7214 while test "$#" -gt 0; do 7215 arg=$1 7216 shift 7217 func_quote_for_eval "$arg" 7218 qarg=$func_quote_for_eval_unquoted_result 7219 func_append libtool_args " $func_quote_for_eval_result" 7220 7221 # If the previous option needs an argument, assign it. 7222 if test -n "$prev"; then 7223 case $prev in 7224 output) 7225 func_append compile_command " @OUTPUT@" 7226 func_append finalize_command " @OUTPUT@" 7227 ;; 7228 esac 7229 7230 case $prev in 7231 bindir) 7232 bindir=$arg 7233 prev= 7234 continue 7235 ;; 7236 dlfiles|dlprefiles) 7237 $preload || { 7238 # Add the symbol object into the linking commands. 7239 func_append compile_command " @SYMFILE@" 7240 func_append finalize_command " @SYMFILE@" 7241 preload=: 7242 } 7243 case $arg in 7244 *.la | *.lo) ;; # We handle these cases below. 7245 force) 7246 if test no = "$dlself"; then 7247 dlself=needless 7248 export_dynamic=yes 7249 fi 7250 prev= 7251 continue 7252 ;; 7253 self) 7254 if test dlprefiles = "$prev"; then 7255 dlself=yes 7256 elif test dlfiles = "$prev" && test yes != "$dlopen_self"; then 7257 dlself=yes 7258 else 7259 dlself=needless 7260 export_dynamic=yes 7261 fi 7262 prev= 7263 continue 7264 ;; 7265 *) 7266 if test dlfiles = "$prev"; then 7267 func_append dlfiles " $arg" 7268 else 7269 func_append dlprefiles " $arg" 7270 fi 7271 prev= 7272 continue 7273 ;; 7274 esac 7275 ;; 7276 expsyms) 7277 export_symbols=$arg 7278 test -f "$arg" \ 7279 || func_fatal_error "symbol file '$arg' does not exist" 7280 prev= 7281 continue 7282 ;; 7283 expsyms_regex) 7284 export_symbols_regex=$arg 7285 prev= 7286 continue 7287 ;; 7288 framework) 7289 case $host in 7290 *-*-darwin*) 7291 case "$deplibs " in 7292 *" $qarg.ltframework "*) ;; 7293 *) func_append deplibs " $qarg.ltframework" # this is fixed later 7294 ;; 7295 esac 7296 ;; 7297 esac 7298 prev= 7299 continue 7300 ;; 7301 inst_prefix) 7302 inst_prefix_dir=$arg 7303 prev= 7304 continue 7305 ;; 7306 mllvm) 7307 # Clang does not use LLVM to link, so we can simply discard any 7308 # '-mllvm $arg' options when doing the link step. 7309 prev= 7310 continue 7311 ;; 7312 objectlist) 7313 if test -f "$arg"; then 7314 save_arg=$arg 7315 moreargs= 7316 for fil in `cat "$save_arg"` 7317 do 7318# func_append moreargs " $fil" 7319 arg=$fil 7320 # A libtool-controlled object. 7321 7322 # Check to see that this really is a libtool object. 7323 if func_lalib_unsafe_p "$arg"; then 7324 pic_object= 7325 non_pic_object= 7326 7327 # Read the .lo file 7328 func_source "$arg" 7329 7330 if test -z "$pic_object" || 7331 test -z "$non_pic_object" || 7332 test none = "$pic_object" && 7333 test none = "$non_pic_object"; then 7334 func_fatal_error "cannot find name of object for '$arg'" 7335 fi 7336 7337 # Extract subdirectory from the argument. 7338 func_dirname "$arg" "/" "" 7339 xdir=$func_dirname_result 7340 7341 if test none != "$pic_object"; then 7342 # Prepend the subdirectory the object is found in. 7343 pic_object=$xdir$pic_object 7344 7345 if test dlfiles = "$prev"; then 7346 if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then 7347 func_append dlfiles " $pic_object" 7348 prev= 7349 continue 7350 else 7351 # If libtool objects are unsupported, then we need to preload. 7352 prev=dlprefiles 7353 fi 7354 fi 7355 7356 # CHECK ME: I think I busted this. -Ossama 7357 if test dlprefiles = "$prev"; then 7358 # Preload the old-style object. 7359 func_append dlprefiles " $pic_object" 7360 prev= 7361 fi 7362 7363 # A PIC object. 7364 func_append libobjs " $pic_object" 7365 arg=$pic_object 7366 fi 7367 7368 # Non-PIC object. 7369 if test none != "$non_pic_object"; then 7370 # Prepend the subdirectory the object is found in. 7371 non_pic_object=$xdir$non_pic_object 7372 7373 # A standard non-PIC object 7374 func_append non_pic_objects " $non_pic_object" 7375 if test -z "$pic_object" || test none = "$pic_object"; then 7376 arg=$non_pic_object 7377 fi 7378 else 7379 # If the PIC object exists, use it instead. 7380 # $xdir was prepended to $pic_object above. 7381 non_pic_object=$pic_object 7382 func_append non_pic_objects " $non_pic_object" 7383 fi 7384 else 7385 # Only an error if not doing a dry-run. 7386 if $opt_dry_run; then 7387 # Extract subdirectory from the argument. 7388 func_dirname "$arg" "/" "" 7389 xdir=$func_dirname_result 7390 7391 func_lo2o "$arg" 7392 pic_object=$xdir$objdir/$func_lo2o_result 7393 non_pic_object=$xdir$func_lo2o_result 7394 func_append libobjs " $pic_object" 7395 func_append non_pic_objects " $non_pic_object" 7396 else 7397 func_fatal_error "'$arg' is not a valid libtool object" 7398 fi 7399 fi 7400 done 7401 else 7402 func_fatal_error "link input file '$arg' does not exist" 7403 fi 7404 arg=$save_arg 7405 prev= 7406 continue 7407 ;; 7408 os2dllname) 7409 os2dllname=$arg 7410 prev= 7411 continue 7412 ;; 7413 precious_regex) 7414 precious_files_regex=$arg 7415 prev= 7416 continue 7417 ;; 7418 release) 7419 release=-$arg 7420 prev= 7421 continue 7422 ;; 7423 rpath | xrpath) 7424 # We need an absolute path. 7425 case $arg in 7426 [\\/]* | [A-Za-z]:[\\/]*) ;; 7427 *) 7428 func_fatal_error "only absolute run-paths are allowed" 7429 ;; 7430 esac 7431 if test rpath = "$prev"; then 7432 case "$rpath " in 7433 *" $arg "*) ;; 7434 *) func_append rpath " $arg" ;; 7435 esac 7436 else 7437 case "$xrpath " in 7438 *" $arg "*) ;; 7439 *) func_append xrpath " $arg" ;; 7440 esac 7441 fi 7442 prev= 7443 continue 7444 ;; 7445 shrext) 7446 shrext_cmds=$arg 7447 prev= 7448 continue 7449 ;; 7450 weak) 7451 func_append weak_libs " $arg" 7452 prev= 7453 continue 7454 ;; 7455 xcclinker) 7456 func_append linker_flags " $qarg" 7457 func_append compiler_flags " $qarg" 7458 prev= 7459 func_append compile_command " $qarg" 7460 func_append finalize_command " $qarg" 7461 continue 7462 ;; 7463 xcompiler) 7464 func_append compiler_flags " $qarg" 7465 prev= 7466 func_append compile_command " $qarg" 7467 func_append finalize_command " $qarg" 7468 continue 7469 ;; 7470 xlinker) 7471 func_append linker_flags " $qarg" 7472 func_append compiler_flags " $wl$qarg" 7473 prev= 7474 func_append compile_command " $wl$qarg" 7475 func_append finalize_command " $wl$qarg" 7476 continue 7477 ;; 7478 *) 7479 eval "$prev=\"\$arg\"" 7480 prev= 7481 continue 7482 ;; 7483 esac 7484 fi # test -n "$prev" 7485 7486 prevarg=$arg 7487 7488 case $arg in 7489 -all-static) 7490 if test -n "$link_static_flag"; then 7491 # See comment for -static flag below, for more details. 7492 func_append compile_command " $link_static_flag" 7493 func_append finalize_command " $link_static_flag" 7494 fi 7495 continue 7496 ;; 7497 7498 -allow-undefined) 7499 # FIXME: remove this flag sometime in the future. 7500 func_fatal_error "'-allow-undefined' must not be used because it is the default" 7501 ;; 7502 7503 -avoid-version) 7504 avoid_version=yes 7505 continue 7506 ;; 7507 7508 -bindir) 7509 prev=bindir 7510 continue 7511 ;; 7512 7513 -dlopen) 7514 prev=dlfiles 7515 continue 7516 ;; 7517 7518 -dlpreopen) 7519 prev=dlprefiles 7520 continue 7521 ;; 7522 7523 -export-dynamic) 7524 export_dynamic=yes 7525 continue 7526 ;; 7527 7528 -export-symbols | -export-symbols-regex) 7529 if test -n "$export_symbols" || test -n "$export_symbols_regex"; then 7530 func_fatal_error "more than one -exported-symbols argument is not allowed" 7531 fi 7532 if test X-export-symbols = "X$arg"; then 7533 prev=expsyms 7534 else 7535 prev=expsyms_regex 7536 fi 7537 continue 7538 ;; 7539 7540 -framework) 7541 prev=framework 7542 continue 7543 ;; 7544 7545 -inst-prefix-dir) 7546 prev=inst_prefix 7547 continue 7548 ;; 7549 7550 # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* 7551 # so, if we see these flags be careful not to treat them like -L 7552 -L[A-Z][A-Z]*:*) 7553 case $with_gcc/$host in 7554 no/*-*-irix* | /*-*-irix*) 7555 func_append compile_command " $arg" 7556 func_append finalize_command " $arg" 7557 ;; 7558 esac 7559 continue 7560 ;; 7561 7562 -L*) 7563 func_stripname "-L" '' "$arg" 7564 if test -z "$func_stripname_result"; then 7565 if test "$#" -gt 0; then 7566 func_fatal_error "require no space between '-L' and '$1'" 7567 else 7568 func_fatal_error "need path for '-L' option" 7569 fi 7570 fi 7571 func_resolve_sysroot "$func_stripname_result" 7572 dir=$func_resolve_sysroot_result 7573 # We need an absolute path. 7574 case $dir in 7575 [\\/]* | [A-Za-z]:[\\/]*) ;; 7576 *) 7577 absdir=`cd "$dir" && pwd` 7578 test -z "$absdir" && \ 7579 func_fatal_error "cannot determine absolute directory name of '$dir'" 7580 dir=$absdir 7581 ;; 7582 esac 7583 case "$deplibs " in 7584 *" -L$dir "* | *" $arg "*) 7585 # Will only happen for absolute or sysroot arguments 7586 ;; 7587 *) 7588 # Preserve sysroot, but never include relative directories 7589 case $dir in 7590 [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; 7591 *) func_append deplibs " -L$dir" ;; 7592 esac 7593 func_append lib_search_path " $dir" 7594 ;; 7595 esac 7596 case $host in 7597 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 7598 testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` 7599 case :$dllsearchpath: in 7600 *":$dir:"*) ;; 7601 ::) dllsearchpath=$dir;; 7602 *) func_append dllsearchpath ":$dir";; 7603 esac 7604 case :$dllsearchpath: in 7605 *":$testbindir:"*) ;; 7606 ::) dllsearchpath=$testbindir;; 7607 *) func_append dllsearchpath ":$testbindir";; 7608 esac 7609 ;; 7610 esac 7611 continue 7612 ;; 7613 7614 -l*) 7615 if test X-lc = "X$arg" || test X-lm = "X$arg"; then 7616 case $host in 7617 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) 7618 # These systems don't actually have a C or math library (as such) 7619 continue 7620 ;; 7621 *-*-os2*) 7622 # These systems don't actually have a C library (as such) 7623 test X-lc = "X$arg" && continue 7624 ;; 7625 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) 7626 # Do not include libc due to us having libc/libc_r. 7627 test X-lc = "X$arg" && continue 7628 ;; 7629 *-*-rhapsody* | *-*-darwin1.[012]) 7630 # Rhapsody C and math libraries are in the System framework 7631 func_append deplibs " System.ltframework" 7632 continue 7633 ;; 7634 *-*-sco3.2v5* | *-*-sco5v6*) 7635 # Causes problems with __ctype 7636 test X-lc = "X$arg" && continue 7637 ;; 7638 *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 7639 # Compiler inserts libc in the correct place for threads to work 7640 test X-lc = "X$arg" && continue 7641 ;; 7642 esac 7643 elif test X-lc_r = "X$arg"; then 7644 case $host in 7645 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) 7646 # Do not include libc_r directly, use -pthread flag. 7647 continue 7648 ;; 7649 esac 7650 fi 7651 func_append deplibs " $arg" 7652 continue 7653 ;; 7654 7655 -mllvm) 7656 prev=mllvm 7657 continue 7658 ;; 7659 7660 -module) 7661 module=yes 7662 continue 7663 ;; 7664 7665 # Tru64 UNIX uses -model [arg] to determine the layout of C++ 7666 # classes, name mangling, and exception handling. 7667 # Darwin uses the -arch flag to determine output architecture. 7668 -model|-arch|-isysroot|--sysroot) 7669 func_append compiler_flags " $arg" 7670 func_append compile_command " $arg" 7671 func_append finalize_command " $arg" 7672 prev=xcompiler 7673 continue 7674 ;; 7675 7676 -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ 7677 |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) 7678 func_append compiler_flags " $arg" 7679 func_append compile_command " $arg" 7680 func_append finalize_command " $arg" 7681 case "$new_inherited_linker_flags " in 7682 *" $arg "*) ;; 7683 * ) func_append new_inherited_linker_flags " $arg" ;; 7684 esac 7685 continue 7686 ;; 7687 7688 -multi_module) 7689 single_module=$wl-multi_module 7690 continue 7691 ;; 7692 7693 -no-fast-install) 7694 fast_install=no 7695 continue 7696 ;; 7697 7698 -no-install) 7699 case $host in 7700 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) 7701 # The PATH hackery in wrapper scripts is required on Windows 7702 # and Darwin in order for the loader to find any dlls it needs. 7703 func_warning "'-no-install' is ignored for $host" 7704 func_warning "assuming '-no-fast-install' instead" 7705 fast_install=no 7706 ;; 7707 *) no_install=yes ;; 7708 esac 7709 continue 7710 ;; 7711 7712 -no-undefined) 7713 allow_undefined=no 7714 continue 7715 ;; 7716 7717 -objectlist) 7718 prev=objectlist 7719 continue 7720 ;; 7721 7722 -os2dllname) 7723 prev=os2dllname 7724 continue 7725 ;; 7726 7727 -o) prev=output ;; 7728 7729 -precious-files-regex) 7730 prev=precious_regex 7731 continue 7732 ;; 7733 7734 -release) 7735 prev=release 7736 continue 7737 ;; 7738 7739 -rpath) 7740 prev=rpath 7741 continue 7742 ;; 7743 7744 -R) 7745 prev=xrpath 7746 continue 7747 ;; 7748 7749 -R*) 7750 func_stripname '-R' '' "$arg" 7751 dir=$func_stripname_result 7752 # We need an absolute path. 7753 case $dir in 7754 [\\/]* | [A-Za-z]:[\\/]*) ;; 7755 =*) 7756 func_stripname '=' '' "$dir" 7757 dir=$lt_sysroot$func_stripname_result 7758 ;; 7759 *) 7760 func_fatal_error "only absolute run-paths are allowed" 7761 ;; 7762 esac 7763 case "$xrpath " in 7764 *" $dir "*) ;; 7765 *) func_append xrpath " $dir" ;; 7766 esac 7767 continue 7768 ;; 7769 7770 -shared) 7771 # The effects of -shared are defined in a previous loop. 7772 continue 7773 ;; 7774 7775 -shrext) 7776 prev=shrext 7777 continue 7778 ;; 7779 7780 -static | -static-libtool-libs) 7781 # The effects of -static are defined in a previous loop. 7782 # We used to do the same as -all-static on platforms that 7783 # didn't have a PIC flag, but the assumption that the effects 7784 # would be equivalent was wrong. It would break on at least 7785 # Digital Unix and AIX. 7786 continue 7787 ;; 7788 7789 -thread-safe) 7790 thread_safe=yes 7791 continue 7792 ;; 7793 7794 -version-info) 7795 prev=vinfo 7796 continue 7797 ;; 7798 7799 -version-number) 7800 prev=vinfo 7801 vinfo_number=yes 7802 continue 7803 ;; 7804 7805 -weak) 7806 prev=weak 7807 continue 7808 ;; 7809 7810 -Wc,*) 7811 func_stripname '-Wc,' '' "$arg" 7812 args=$func_stripname_result 7813 arg= 7814 save_ifs=$IFS; IFS=, 7815 for flag in $args; do 7816 IFS=$save_ifs 7817 func_quote_for_eval "$flag" 7818 func_append arg " $func_quote_for_eval_result" 7819 func_append compiler_flags " $func_quote_for_eval_result" 7820 done 7821 IFS=$save_ifs 7822 func_stripname ' ' '' "$arg" 7823 arg=$func_stripname_result 7824 ;; 7825 7826 -Wl,*) 7827 func_stripname '-Wl,' '' "$arg" 7828 args=$func_stripname_result 7829 arg= 7830 save_ifs=$IFS; IFS=, 7831 for flag in $args; do 7832 IFS=$save_ifs 7833 func_quote_for_eval "$flag" 7834 func_append arg " $wl$func_quote_for_eval_result" 7835 func_append compiler_flags " $wl$func_quote_for_eval_result" 7836 func_append linker_flags " $func_quote_for_eval_result" 7837 done 7838 IFS=$save_ifs 7839 func_stripname ' ' '' "$arg" 7840 arg=$func_stripname_result 7841 ;; 7842 7843 -Xcompiler) 7844 prev=xcompiler 7845 continue 7846 ;; 7847 7848 -Xlinker) 7849 prev=xlinker 7850 continue 7851 ;; 7852 7853 -XCClinker) 7854 prev=xcclinker 7855 continue 7856 ;; 7857 7858 # -msg_* for osf cc 7859 -msg_*) 7860 func_quote_for_eval "$arg" 7861 arg=$func_quote_for_eval_result 7862 ;; 7863 7864 # Flags to be passed through unchanged, with rationale: 7865 # -64, -mips[0-9] enable 64-bit mode for the SGI compiler 7866 # -r[0-9][0-9]* specify processor for the SGI compiler 7867 # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler 7868 # +DA*, +DD* enable 64-bit mode for the HP compiler 7869 # -q* compiler args for the IBM compiler 7870 # -m*, -t[45]*, -txscale* architecture-specific flags for GCC 7871 # -F/path path to uninstalled frameworks, gcc on darwin 7872 # -p, -pg, --coverage, -fprofile-* profiling flags for GCC 7873 # -fstack-protector* stack protector flags for GCC 7874 # @file GCC response files 7875 # -tp=* Portland pgcc target processor selection 7876 # --sysroot=* for sysroot support 7877 # -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization 7878 # -specs=* GCC specs files 7879 # -stdlib=* select c++ std lib with clang 7880 # -fsanitize=* Clang/GCC memory and address sanitizer 7881 # -fuse-ld=* Linker select flags for GCC 7882 # -static-* direct GCC to link specific libraries statically 7883 # -fcilkplus Cilk Plus language extension features for C/C++ 7884 -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ 7885 -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ 7886 -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*| \ 7887 -specs=*|-fsanitize=*|-fuse-ld=*|-static-*|-fcilkplus) 7888 func_quote_for_eval "$arg" 7889 arg=$func_quote_for_eval_result 7890 func_append compile_command " $arg" 7891 func_append finalize_command " $arg" 7892 func_append compiler_flags " $arg" 7893 continue 7894 ;; 7895 7896 -Z*) 7897 if test os2 = "`expr $host : '.*\(os2\)'`"; then 7898 # OS/2 uses -Zxxx to specify OS/2-specific options 7899 compiler_flags="$compiler_flags $arg" 7900 func_append compile_command " $arg" 7901 func_append finalize_command " $arg" 7902 case $arg in 7903 -Zlinker | -Zstack) 7904 prev=xcompiler 7905 ;; 7906 esac 7907 continue 7908 else 7909 # Otherwise treat like 'Some other compiler flag' below 7910 func_quote_for_eval "$arg" 7911 arg=$func_quote_for_eval_result 7912 fi 7913 ;; 7914 7915 # Some other compiler flag. 7916 -* | +*) 7917 func_quote_for_eval "$arg" 7918 arg=$func_quote_for_eval_result 7919 ;; 7920 7921 *.$objext) 7922 # A standard object. 7923 func_append objs " $arg" 7924 ;; 7925 7926 *.lo) 7927 # A libtool-controlled object. 7928 7929 # Check to see that this really is a libtool object. 7930 if func_lalib_unsafe_p "$arg"; then 7931 pic_object= 7932 non_pic_object= 7933 7934 # Read the .lo file 7935 func_source "$arg" 7936 7937 if test -z "$pic_object" || 7938 test -z "$non_pic_object" || 7939 test none = "$pic_object" && 7940 test none = "$non_pic_object"; then 7941 func_fatal_error "cannot find name of object for '$arg'" 7942 fi 7943 7944 # Extract subdirectory from the argument. 7945 func_dirname "$arg" "/" "" 7946 xdir=$func_dirname_result 7947 7948 test none = "$pic_object" || { 7949 # Prepend the subdirectory the object is found in. 7950 pic_object=$xdir$pic_object 7951 7952 if test dlfiles = "$prev"; then 7953 if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then 7954 func_append dlfiles " $pic_object" 7955 prev= 7956 continue 7957 else 7958 # If libtool objects are unsupported, then we need to preload. 7959 prev=dlprefiles 7960 fi 7961 fi 7962 7963 # CHECK ME: I think I busted this. -Ossama 7964 if test dlprefiles = "$prev"; then 7965 # Preload the old-style object. 7966 func_append dlprefiles " $pic_object" 7967 prev= 7968 fi 7969 7970 # A PIC object. 7971 func_append libobjs " $pic_object" 7972 arg=$pic_object 7973 } 7974 7975 # Non-PIC object. 7976 if test none != "$non_pic_object"; then 7977 # Prepend the subdirectory the object is found in. 7978 non_pic_object=$xdir$non_pic_object 7979 7980 # A standard non-PIC object 7981 func_append non_pic_objects " $non_pic_object" 7982 if test -z "$pic_object" || test none = "$pic_object"; then 7983 arg=$non_pic_object 7984 fi 7985 else 7986 # If the PIC object exists, use it instead. 7987 # $xdir was prepended to $pic_object above. 7988 non_pic_object=$pic_object 7989 func_append non_pic_objects " $non_pic_object" 7990 fi 7991 else 7992 # Only an error if not doing a dry-run. 7993 if $opt_dry_run; then 7994 # Extract subdirectory from the argument. 7995 func_dirname "$arg" "/" "" 7996 xdir=$func_dirname_result 7997 7998 func_lo2o "$arg" 7999 pic_object=$xdir$objdir/$func_lo2o_result 8000 non_pic_object=$xdir$func_lo2o_result 8001 func_append libobjs " $pic_object" 8002 func_append non_pic_objects " $non_pic_object" 8003 else 8004 func_fatal_error "'$arg' is not a valid libtool object" 8005 fi 8006 fi 8007 ;; 8008 8009 *.$libext) 8010 # An archive. 8011 func_append deplibs " $arg" 8012 func_append old_deplibs " $arg" 8013 continue 8014 ;; 8015 8016 *.la) 8017 # A libtool-controlled library. 8018 8019 func_resolve_sysroot "$arg" 8020 if test dlfiles = "$prev"; then 8021 # This library was specified with -dlopen. 8022 func_append dlfiles " $func_resolve_sysroot_result" 8023 prev= 8024 elif test dlprefiles = "$prev"; then 8025 # The library was specified with -dlpreopen. 8026 func_append dlprefiles " $func_resolve_sysroot_result" 8027 prev= 8028 else 8029 func_append deplibs " $func_resolve_sysroot_result" 8030 fi 8031 continue 8032 ;; 8033 8034 # Some other compiler argument. 8035 *) 8036 # Unknown arguments in both finalize_command and compile_command need 8037 # to be aesthetically quoted because they are evaled later. 8038 func_quote_for_eval "$arg" 8039 arg=$func_quote_for_eval_result 8040 ;; 8041 esac # arg 8042 8043 # Now actually substitute the argument into the commands. 8044 if test -n "$arg"; then 8045 func_append compile_command " $arg" 8046 func_append finalize_command " $arg" 8047 fi 8048 done # argument parsing loop 8049 8050 test -n "$prev" && \ 8051 func_fatal_help "the '$prevarg' option requires an argument" 8052 8053 if test yes = "$export_dynamic" && test -n "$export_dynamic_flag_spec"; then 8054 eval arg=\"$export_dynamic_flag_spec\" 8055 func_append compile_command " $arg" 8056 func_append finalize_command " $arg" 8057 fi 8058 8059 oldlibs= 8060 # calculate the name of the file, without its directory 8061 func_basename "$output" 8062 outputname=$func_basename_result 8063 libobjs_save=$libobjs 8064 8065 if test -n "$shlibpath_var"; then 8066 # get the directories listed in $shlibpath_var 8067 eval shlib_search_path=\`\$ECHO \"\$$shlibpath_var\" \| \$SED \'s/:/ /g\'\` 8068 else 8069 shlib_search_path= 8070 fi 8071 eval sys_lib_search_path=\"$sys_lib_search_path_spec\" 8072 eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" 8073 8074 # Definition is injected by LT_CONFIG during libtool generation. 8075 func_munge_path_list sys_lib_dlsearch_path "$LT_SYS_LIBRARY_PATH" 8076 8077 func_dirname "$output" "/" "" 8078 output_objdir=$func_dirname_result$objdir 8079 func_to_tool_file "$output_objdir/" 8080 tool_output_objdir=$func_to_tool_file_result 8081 # Create the object directory. 8082 func_mkdir_p "$output_objdir" 8083 8084 # Determine the type of output 8085 case $output in 8086 "") 8087 func_fatal_help "you must specify an output file" 8088 ;; 8089 *.$libext) linkmode=oldlib ;; 8090 *.lo | *.$objext) linkmode=obj ;; 8091 *.la) linkmode=lib ;; 8092 *) linkmode=prog ;; # Anything else should be a program. 8093 esac 8094 8095 specialdeplibs= 8096 8097 libs= 8098 # Find all interdependent deplibs by searching for libraries 8099 # that are linked more than once (e.g. -la -lb -la) 8100 for deplib in $deplibs; do 8101 if $opt_preserve_dup_deps; then 8102 case "$libs " in 8103 *" $deplib "*) func_append specialdeplibs " $deplib" ;; 8104 esac 8105 fi 8106 func_append libs " $deplib" 8107 done 8108 8109 if test lib = "$linkmode"; then 8110 libs="$predeps $libs $compiler_lib_search_path $postdeps" 8111 8112 # Compute libraries that are listed more than once in $predeps 8113 # $postdeps and mark them as special (i.e., whose duplicates are 8114 # not to be eliminated). 8115 pre_post_deps= 8116 if $opt_duplicate_compiler_generated_deps; then 8117 for pre_post_dep in $predeps $postdeps; do 8118 case "$pre_post_deps " in 8119 *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; 8120 esac 8121 func_append pre_post_deps " $pre_post_dep" 8122 done 8123 fi 8124 pre_post_deps= 8125 fi 8126 8127 deplibs= 8128 newdependency_libs= 8129 newlib_search_path= 8130 need_relink=no # whether we're linking any uninstalled libtool libraries 8131 notinst_deplibs= # not-installed libtool libraries 8132 notinst_path= # paths that contain not-installed libtool libraries 8133 8134 case $linkmode in 8135 lib) 8136 passes="conv dlpreopen link" 8137 for file in $dlfiles $dlprefiles; do 8138 case $file in 8139 *.la) ;; 8140 *) 8141 func_fatal_help "libraries can '-dlopen' only libtool libraries: $file" 8142 ;; 8143 esac 8144 done 8145 ;; 8146 prog) 8147 compile_deplibs= 8148 finalize_deplibs= 8149 alldeplibs=false 8150 newdlfiles= 8151 newdlprefiles= 8152 passes="conv scan dlopen dlpreopen link" 8153 ;; 8154 *) passes="conv" 8155 ;; 8156 esac 8157 8158 for pass in $passes; do 8159 # The preopen pass in lib mode reverses $deplibs; put it back here 8160 # so that -L comes before libs that need it for instance... 8161 if test lib,link = "$linkmode,$pass"; then 8162 ## FIXME: Find the place where the list is rebuilt in the wrong 8163 ## order, and fix it there properly 8164 tmp_deplibs= 8165 for deplib in $deplibs; do 8166 tmp_deplibs="$deplib $tmp_deplibs" 8167 done 8168 deplibs=$tmp_deplibs 8169 fi 8170 8171 if test lib,link = "$linkmode,$pass" || 8172 test prog,scan = "$linkmode,$pass"; then 8173 libs=$deplibs 8174 deplibs= 8175 fi 8176 if test prog = "$linkmode"; then 8177 case $pass in 8178 dlopen) libs=$dlfiles ;; 8179 dlpreopen) libs=$dlprefiles ;; 8180 link) 8181 libs="$deplibs %DEPLIBS%" 8182 test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs" 8183 ;; 8184 esac 8185 fi 8186 if test lib,dlpreopen = "$linkmode,$pass"; then 8187 # Collect and forward deplibs of preopened libtool libs 8188 for lib in $dlprefiles; do 8189 # Ignore non-libtool-libs 8190 dependency_libs= 8191 func_resolve_sysroot "$lib" 8192 case $lib in 8193 *.la) func_source "$func_resolve_sysroot_result" ;; 8194 esac 8195 8196 # Collect preopened libtool deplibs, except any this library 8197 # has declared as weak libs 8198 for deplib in $dependency_libs; do 8199 func_basename "$deplib" 8200 deplib_base=$func_basename_result 8201 case " $weak_libs " in 8202 *" $deplib_base "*) ;; 8203 *) func_append deplibs " $deplib" ;; 8204 esac 8205 done 8206 done 8207 libs=$dlprefiles 8208 fi 8209 if test dlopen = "$pass"; then 8210 # Collect dlpreopened libraries 8211 save_deplibs=$deplibs 8212 deplibs= 8213 fi 8214 8215 for deplib in $libs; do 8216 lib= 8217 found=false 8218 case $deplib in 8219 -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ 8220 |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) 8221 if test prog,link = "$linkmode,$pass"; then 8222 compile_deplibs="$deplib $compile_deplibs" 8223 finalize_deplibs="$deplib $finalize_deplibs" 8224 else 8225 func_append compiler_flags " $deplib" 8226 if test lib = "$linkmode"; then 8227 case "$new_inherited_linker_flags " in 8228 *" $deplib "*) ;; 8229 * ) func_append new_inherited_linker_flags " $deplib" ;; 8230 esac 8231 fi 8232 fi 8233 continue 8234 ;; 8235 -l*) 8236 if test lib != "$linkmode" && test prog != "$linkmode"; then 8237 func_warning "'-l' is ignored for archives/objects" 8238 continue 8239 fi 8240 func_stripname '-l' '' "$deplib" 8241 name=$func_stripname_result 8242 if test lib = "$linkmode"; then 8243 searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" 8244 else 8245 searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" 8246 fi 8247 for searchdir in $searchdirs; do 8248 for search_ext in .la $std_shrext .so .a; do 8249 # Search the libtool library 8250 lib=$searchdir/lib$name$search_ext 8251 if test -f "$lib"; then 8252 if test .la = "$search_ext"; then 8253 found=: 8254 else 8255 found=false 8256 fi 8257 break 2 8258 fi 8259 done 8260 done 8261 if $found; then 8262 # deplib is a libtool library 8263 # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, 8264 # We need to do some special things here, and not later. 8265 if test yes = "$allow_libtool_libs_with_static_runtimes"; then 8266 case " $predeps $postdeps " in 8267 *" $deplib "*) 8268 if func_lalib_p "$lib"; then 8269 library_names= 8270 old_library= 8271 func_source "$lib" 8272 for l in $old_library $library_names; do 8273 ll=$l 8274 done 8275 if test "X$ll" = "X$old_library"; then # only static version available 8276 found=false 8277 func_dirname "$lib" "" "." 8278 ladir=$func_dirname_result 8279 lib=$ladir/$old_library 8280 if test prog,link = "$linkmode,$pass"; then 8281 compile_deplibs="$deplib $compile_deplibs" 8282 finalize_deplibs="$deplib $finalize_deplibs" 8283 else 8284 deplibs="$deplib $deplibs" 8285 test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" 8286 fi 8287 continue 8288 fi 8289 fi 8290 ;; 8291 *) ;; 8292 esac 8293 fi 8294 else 8295 # deplib doesn't seem to be a libtool library 8296 if test prog,link = "$linkmode,$pass"; then 8297 compile_deplibs="$deplib $compile_deplibs" 8298 finalize_deplibs="$deplib $finalize_deplibs" 8299 else 8300 deplibs="$deplib $deplibs" 8301 test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" 8302 fi 8303 continue 8304 fi 8305 ;; # -l 8306 *.ltframework) 8307 if test prog,link = "$linkmode,$pass"; then 8308 compile_deplibs="$deplib $compile_deplibs" 8309 finalize_deplibs="$deplib $finalize_deplibs" 8310 else 8311 deplibs="$deplib $deplibs" 8312 if test lib = "$linkmode"; then 8313 case "$new_inherited_linker_flags " in 8314 *" $deplib "*) ;; 8315 * ) func_append new_inherited_linker_flags " $deplib" ;; 8316 esac 8317 fi 8318 fi 8319 continue 8320 ;; 8321 -L*) 8322 case $linkmode in 8323 lib) 8324 deplibs="$deplib $deplibs" 8325 test conv = "$pass" && continue 8326 newdependency_libs="$deplib $newdependency_libs" 8327 func_stripname '-L' '' "$deplib" 8328 func_resolve_sysroot "$func_stripname_result" 8329 func_append newlib_search_path " $func_resolve_sysroot_result" 8330 ;; 8331 prog) 8332 if test conv = "$pass"; then 8333 deplibs="$deplib $deplibs" 8334 continue 8335 fi 8336 if test scan = "$pass"; then 8337 deplibs="$deplib $deplibs" 8338 else 8339 compile_deplibs="$deplib $compile_deplibs" 8340 finalize_deplibs="$deplib $finalize_deplibs" 8341 fi 8342 func_stripname '-L' '' "$deplib" 8343 func_resolve_sysroot "$func_stripname_result" 8344 func_append newlib_search_path " $func_resolve_sysroot_result" 8345 ;; 8346 *) 8347 func_warning "'-L' is ignored for archives/objects" 8348 ;; 8349 esac # linkmode 8350 continue 8351 ;; # -L 8352 -R*) 8353 if test link = "$pass"; then 8354 func_stripname '-R' '' "$deplib" 8355 func_resolve_sysroot "$func_stripname_result" 8356 dir=$func_resolve_sysroot_result 8357 # Make sure the xrpath contains only unique directories. 8358 case "$xrpath " in 8359 *" $dir "*) ;; 8360 *) func_append xrpath " $dir" ;; 8361 esac 8362 fi 8363 deplibs="$deplib $deplibs" 8364 continue 8365 ;; 8366 *.la) 8367 func_resolve_sysroot "$deplib" 8368 lib=$func_resolve_sysroot_result 8369 ;; 8370 *.$libext) 8371 if test conv = "$pass"; then 8372 deplibs="$deplib $deplibs" 8373 continue 8374 fi 8375 case $linkmode in 8376 lib) 8377 # Linking convenience modules into shared libraries is allowed, 8378 # but linking other static libraries is non-portable. 8379 case " $dlpreconveniencelibs " in 8380 *" $deplib "*) ;; 8381 *) 8382 valid_a_lib=false 8383 case $deplibs_check_method in 8384 match_pattern*) 8385 set dummy $deplibs_check_method; shift 8386 match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 8387 if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ 8388 | $EGREP "$match_pattern_regex" > /dev/null; then 8389 valid_a_lib=: 8390 fi 8391 ;; 8392 pass_all) 8393 valid_a_lib=: 8394 ;; 8395 esac 8396 if $valid_a_lib; then 8397 echo 8398 $ECHO "*** Warning: Linking the shared library $output against the" 8399 $ECHO "*** static library $deplib is not portable!" 8400 deplibs="$deplib $deplibs" 8401 else 8402 echo 8403 $ECHO "*** Warning: Trying to link with static lib archive $deplib." 8404 echo "*** I have the capability to make that library automatically link in when" 8405 echo "*** you link to this library. But I can only do this if you have a" 8406 echo "*** shared version of the library, which you do not appear to have" 8407 echo "*** because the file extensions .$libext of this argument makes me believe" 8408 echo "*** that it is just a static archive that I should not use here." 8409 fi 8410 ;; 8411 esac 8412 continue 8413 ;; 8414 prog) 8415 if test link != "$pass"; then 8416 deplibs="$deplib $deplibs" 8417 else 8418 compile_deplibs="$deplib $compile_deplibs" 8419 finalize_deplibs="$deplib $finalize_deplibs" 8420 fi 8421 continue 8422 ;; 8423 esac # linkmode 8424 ;; # *.$libext 8425 *.lo | *.$objext) 8426 if test conv = "$pass"; then 8427 deplibs="$deplib $deplibs" 8428 elif test prog = "$linkmode"; then 8429 if test dlpreopen = "$pass" || test yes != "$dlopen_support" || test no = "$build_libtool_libs"; then 8430 # If there is no dlopen support or we're linking statically, 8431 # we need to preload. 8432 func_append newdlprefiles " $deplib" 8433 compile_deplibs="$deplib $compile_deplibs" 8434 finalize_deplibs="$deplib $finalize_deplibs" 8435 else 8436 func_append newdlfiles " $deplib" 8437 fi 8438 fi 8439 continue 8440 ;; 8441 %DEPLIBS%) 8442 alldeplibs=: 8443 continue 8444 ;; 8445 esac # case $deplib 8446 8447 $found || test -f "$lib" \ 8448 || func_fatal_error "cannot find the library '$lib' or unhandled argument '$deplib'" 8449 8450 # Check to see that this really is a libtool archive. 8451 func_lalib_unsafe_p "$lib" \ 8452 || func_fatal_error "'$lib' is not a valid libtool archive" 8453 8454 func_dirname "$lib" "" "." 8455 ladir=$func_dirname_result 8456 8457 dlname= 8458 dlopen= 8459 dlpreopen= 8460 libdir= 8461 library_names= 8462 old_library= 8463 inherited_linker_flags= 8464 # If the library was installed with an old release of libtool, 8465 # it will not redefine variables installed, or shouldnotlink 8466 installed=yes 8467 shouldnotlink=no 8468 avoidtemprpath= 8469 8470 8471 # Read the .la file 8472 func_source "$lib" 8473 8474 # Convert "-framework foo" to "foo.ltframework" 8475 if test -n "$inherited_linker_flags"; then 8476 tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` 8477 for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do 8478 case " $new_inherited_linker_flags " in 8479 *" $tmp_inherited_linker_flag "*) ;; 8480 *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; 8481 esac 8482 done 8483 fi 8484 dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 8485 if test lib,link = "$linkmode,$pass" || 8486 test prog,scan = "$linkmode,$pass" || 8487 { test prog != "$linkmode" && test lib != "$linkmode"; }; then 8488 test -n "$dlopen" && func_append dlfiles " $dlopen" 8489 test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" 8490 fi 8491 8492 if test conv = "$pass"; then 8493 # Only check for convenience libraries 8494 deplibs="$lib $deplibs" 8495 if test -z "$libdir"; then 8496 if test -z "$old_library"; then 8497 func_fatal_error "cannot find name of link library for '$lib'" 8498 fi 8499 # It is a libtool convenience library, so add in its objects. 8500 func_append convenience " $ladir/$objdir/$old_library" 8501 func_append old_convenience " $ladir/$objdir/$old_library" 8502 tmp_libs= 8503 for deplib in $dependency_libs; do 8504 deplibs="$deplib $deplibs" 8505 if $opt_preserve_dup_deps; then 8506 case "$tmp_libs " in 8507 *" $deplib "*) func_append specialdeplibs " $deplib" ;; 8508 esac 8509 fi 8510 func_append tmp_libs " $deplib" 8511 done 8512 elif test prog != "$linkmode" && test lib != "$linkmode"; then 8513 func_fatal_error "'$lib' is not a convenience library" 8514 fi 8515 continue 8516 fi # $pass = conv 8517 8518 8519 # Get the name of the library we link against. 8520 linklib= 8521 if test -n "$old_library" && 8522 { test yes = "$prefer_static_libs" || 8523 test built,no = "$prefer_static_libs,$installed"; }; then 8524 linklib=$old_library 8525 else 8526 for l in $old_library $library_names; do 8527 linklib=$l 8528 done 8529 fi 8530 if test -z "$linklib"; then 8531 func_fatal_error "cannot find name of link library for '$lib'" 8532 fi 8533 8534 # This library was specified with -dlopen. 8535 if test dlopen = "$pass"; then 8536 test -z "$libdir" \ 8537 && func_fatal_error "cannot -dlopen a convenience library: '$lib'" 8538 if test -z "$dlname" || 8539 test yes != "$dlopen_support" || 8540 test no = "$build_libtool_libs" 8541 then 8542 # If there is no dlname, no dlopen support or we're linking 8543 # statically, we need to preload. We also need to preload any 8544 # dependent libraries so libltdl's deplib preloader doesn't 8545 # bomb out in the load deplibs phase. 8546 func_append dlprefiles " $lib $dependency_libs" 8547 else 8548 func_append newdlfiles " $lib" 8549 fi 8550 continue 8551 fi # $pass = dlopen 8552 8553 # We need an absolute path. 8554 case $ladir in 8555 [\\/]* | [A-Za-z]:[\\/]*) abs_ladir=$ladir ;; 8556 *) 8557 abs_ladir=`cd "$ladir" && pwd` 8558 if test -z "$abs_ladir"; then 8559 func_warning "cannot determine absolute directory name of '$ladir'" 8560 func_warning "passing it literally to the linker, although it might fail" 8561 abs_ladir=$ladir 8562 fi 8563 ;; 8564 esac 8565 func_basename "$lib" 8566 laname=$func_basename_result 8567 8568 # Find the relevant object directory and library name. 8569 if test yes = "$installed"; then 8570 if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then 8571 func_warning "library '$lib' was moved." 8572 dir=$ladir 8573 absdir=$abs_ladir 8574 libdir=$abs_ladir 8575 else 8576 dir=$lt_sysroot$libdir 8577 absdir=$lt_sysroot$libdir 8578 fi 8579 test yes = "$hardcode_automatic" && avoidtemprpath=yes 8580 else 8581 if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then 8582 dir=$ladir 8583 absdir=$abs_ladir 8584 # Remove this search path later 8585 func_append notinst_path " $abs_ladir" 8586 else 8587 dir=$ladir/$objdir 8588 absdir=$abs_ladir/$objdir 8589 # Remove this search path later 8590 func_append notinst_path " $abs_ladir" 8591 fi 8592 fi # $installed = yes 8593 func_stripname 'lib' '.la' "$laname" 8594 name=$func_stripname_result 8595 8596 # This library was specified with -dlpreopen. 8597 if test dlpreopen = "$pass"; then 8598 if test -z "$libdir" && test prog = "$linkmode"; then 8599 func_fatal_error "only libraries may -dlpreopen a convenience library: '$lib'" 8600 fi 8601 case $host in 8602 # special handling for platforms with PE-DLLs. 8603 *cygwin* | *mingw* | *cegcc* ) 8604 # Linker will automatically link against shared library if both 8605 # static and shared are present. Therefore, ensure we extract 8606 # symbols from the import library if a shared library is present 8607 # (otherwise, the dlopen module name will be incorrect). We do 8608 # this by putting the import library name into $newdlprefiles. 8609 # We recover the dlopen module name by 'saving' the la file 8610 # name in a special purpose variable, and (later) extracting the 8611 # dlname from the la file. 8612 if test -n "$dlname"; then 8613 func_tr_sh "$dir/$linklib" 8614 eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" 8615 func_append newdlprefiles " $dir/$linklib" 8616 else 8617 func_append newdlprefiles " $dir/$old_library" 8618 # Keep a list of preopened convenience libraries to check 8619 # that they are being used correctly in the link pass. 8620 test -z "$libdir" && \ 8621 func_append dlpreconveniencelibs " $dir/$old_library" 8622 fi 8623 ;; 8624 * ) 8625 # Prefer using a static library (so that no silly _DYNAMIC symbols 8626 # are required to link). 8627 if test -n "$old_library"; then 8628 func_append newdlprefiles " $dir/$old_library" 8629 # Keep a list of preopened convenience libraries to check 8630 # that they are being used correctly in the link pass. 8631 test -z "$libdir" && \ 8632 func_append dlpreconveniencelibs " $dir/$old_library" 8633 # Otherwise, use the dlname, so that lt_dlopen finds it. 8634 elif test -n "$dlname"; then 8635 func_append newdlprefiles " $dir/$dlname" 8636 else 8637 func_append newdlprefiles " $dir/$linklib" 8638 fi 8639 ;; 8640 esac 8641 fi # $pass = dlpreopen 8642 8643 if test -z "$libdir"; then 8644 # Link the convenience library 8645 if test lib = "$linkmode"; then 8646 deplibs="$dir/$old_library $deplibs" 8647 elif test prog,link = "$linkmode,$pass"; then 8648 compile_deplibs="$dir/$old_library $compile_deplibs" 8649 finalize_deplibs="$dir/$old_library $finalize_deplibs" 8650 else 8651 deplibs="$lib $deplibs" # used for prog,scan pass 8652 fi 8653 continue 8654 fi 8655 8656 8657 if test prog = "$linkmode" && test link != "$pass"; then 8658 func_append newlib_search_path " $ladir" 8659 deplibs="$lib $deplibs" 8660 8661 linkalldeplibs=false 8662 if test no != "$link_all_deplibs" || test -z "$library_names" || 8663 test no = "$build_libtool_libs"; then 8664 linkalldeplibs=: 8665 fi 8666 8667 tmp_libs= 8668 for deplib in $dependency_libs; do 8669 case $deplib in 8670 -L*) func_stripname '-L' '' "$deplib" 8671 func_resolve_sysroot "$func_stripname_result" 8672 func_append newlib_search_path " $func_resolve_sysroot_result" 8673 ;; 8674 esac 8675 # Need to link against all dependency_libs? 8676 if $linkalldeplibs; then 8677 deplibs="$deplib $deplibs" 8678 else 8679 # Need to hardcode shared library paths 8680 # or/and link against static libraries 8681 newdependency_libs="$deplib $newdependency_libs" 8682 fi 8683 if $opt_preserve_dup_deps; then 8684 case "$tmp_libs " in 8685 *" $deplib "*) func_append specialdeplibs " $deplib" ;; 8686 esac 8687 fi 8688 func_append tmp_libs " $deplib" 8689 done # for deplib 8690 continue 8691 fi # $linkmode = prog... 8692 8693 if test prog,link = "$linkmode,$pass"; then 8694 if test -n "$library_names" && 8695 { { test no = "$prefer_static_libs" || 8696 test built,yes = "$prefer_static_libs,$installed"; } || 8697 test -z "$old_library"; }; then 8698 # We need to hardcode the library path 8699 if test -n "$shlibpath_var" && test -z "$avoidtemprpath"; then 8700 # Make sure the rpath contains only unique directories. 8701 case $temp_rpath: in 8702 *"$absdir:"*) ;; 8703 *) func_append temp_rpath "$absdir:" ;; 8704 esac 8705 fi 8706 8707 # Hardcode the library path. 8708 # Skip directories that are in the system default run-time 8709 # search path. 8710 case " $sys_lib_dlsearch_path " in 8711 *" $absdir "*) ;; 8712 *) 8713 case "$compile_rpath " in 8714 *" $absdir "*) ;; 8715 *) func_append compile_rpath " $absdir" ;; 8716 esac 8717 ;; 8718 esac 8719 case " $sys_lib_dlsearch_path " in 8720 *" $libdir "*) ;; 8721 *) 8722 case "$finalize_rpath " in 8723 *" $libdir "*) ;; 8724 *) func_append finalize_rpath " $libdir" ;; 8725 esac 8726 ;; 8727 esac 8728 fi # $linkmode,$pass = prog,link... 8729 8730 if $alldeplibs && 8731 { test pass_all = "$deplibs_check_method" || 8732 { test yes = "$build_libtool_libs" && 8733 test -n "$library_names"; }; }; then 8734 # We only need to search for static libraries 8735 continue 8736 fi 8737 fi 8738 8739 link_static=no # Whether the deplib will be linked statically 8740 use_static_libs=$prefer_static_libs 8741 if test built = "$use_static_libs" && test yes = "$installed"; then 8742 use_static_libs=no 8743 fi 8744 if test -n "$library_names" && 8745 { test no = "$use_static_libs" || test -z "$old_library"; }; then 8746 case $host in 8747 *cygwin* | *mingw* | *cegcc* | *os2*) 8748 # No point in relinking DLLs because paths are not encoded 8749 func_append notinst_deplibs " $lib" 8750 need_relink=no 8751 ;; 8752 *) 8753 if test no = "$installed"; then 8754 func_append notinst_deplibs " $lib" 8755 need_relink=yes 8756 fi 8757 ;; 8758 esac 8759 # This is a shared library 8760 8761 # Warn about portability, can't link against -module's on some 8762 # systems (darwin). Don't bleat about dlopened modules though! 8763 dlopenmodule= 8764 for dlpremoduletest in $dlprefiles; do 8765 if test "X$dlpremoduletest" = "X$lib"; then 8766 dlopenmodule=$dlpremoduletest 8767 break 8768 fi 8769 done 8770 if test -z "$dlopenmodule" && test yes = "$shouldnotlink" && test link = "$pass"; then 8771 echo 8772 if test prog = "$linkmode"; then 8773 $ECHO "*** Warning: Linking the executable $output against the loadable module" 8774 else 8775 $ECHO "*** Warning: Linking the shared library $output against the loadable module" 8776 fi 8777 $ECHO "*** $linklib is not portable!" 8778 fi 8779 if test lib = "$linkmode" && 8780 test yes = "$hardcode_into_libs"; then 8781 # Hardcode the library path. 8782 # Skip directories that are in the system default run-time 8783 # search path. 8784 case " $sys_lib_dlsearch_path " in 8785 *" $absdir "*) ;; 8786 *) 8787 case "$compile_rpath " in 8788 *" $absdir "*) ;; 8789 *) func_append compile_rpath " $absdir" ;; 8790 esac 8791 ;; 8792 esac 8793 case " $sys_lib_dlsearch_path " in 8794 *" $libdir "*) ;; 8795 *) 8796 case "$finalize_rpath " in 8797 *" $libdir "*) ;; 8798 *) func_append finalize_rpath " $libdir" ;; 8799 esac 8800 ;; 8801 esac 8802 fi 8803 8804 if test -n "$old_archive_from_expsyms_cmds"; then 8805 # figure out the soname 8806 set dummy $library_names 8807 shift 8808 realname=$1 8809 shift 8810 libname=`eval "\\$ECHO \"$libname_spec\""` 8811 # use dlname if we got it. it's perfectly good, no? 8812 if test -n "$dlname"; then 8813 soname=$dlname 8814 elif test -n "$soname_spec"; then 8815 # bleh windows 8816 case $host in 8817 *cygwin* | mingw* | *cegcc* | *os2*) 8818 func_arith $current - $age 8819 major=$func_arith_result 8820 versuffix=-$major 8821 ;; 8822 esac 8823 eval soname=\"$soname_spec\" 8824 else 8825 soname=$realname 8826 fi 8827 8828 # Make a new name for the extract_expsyms_cmds to use 8829 soroot=$soname 8830 func_basename "$soroot" 8831 soname=$func_basename_result 8832 func_stripname 'lib' '.dll' "$soname" 8833 newlib=libimp-$func_stripname_result.a 8834 8835 # If the library has no export list, then create one now 8836 if test -f "$output_objdir/$soname-def"; then : 8837 else 8838 func_verbose "extracting exported symbol list from '$soname'" 8839 func_execute_cmds "$extract_expsyms_cmds" 'exit $?' 8840 fi 8841 8842 # Create $newlib 8843 if test -f "$output_objdir/$newlib"; then :; else 8844 func_verbose "generating import library for '$soname'" 8845 func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' 8846 fi 8847 # make sure the library variables are pointing to the new library 8848 dir=$output_objdir 8849 linklib=$newlib 8850 fi # test -n "$old_archive_from_expsyms_cmds" 8851 8852 if test prog = "$linkmode" || test relink != "$opt_mode"; then 8853 add_shlibpath= 8854 add_dir= 8855 add= 8856 lib_linked=yes 8857 case $hardcode_action in 8858 immediate | unsupported) 8859 if test no = "$hardcode_direct"; then 8860 add=$dir/$linklib 8861 case $host in 8862 *-*-sco3.2v5.0.[024]*) add_dir=-L$dir ;; 8863 *-*-sysv4*uw2*) add_dir=-L$dir ;; 8864 *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ 8865 *-*-unixware7*) add_dir=-L$dir ;; 8866 *-*-darwin* ) 8867 # if the lib is a (non-dlopened) module then we cannot 8868 # link against it, someone is ignoring the earlier warnings 8869 if /usr/bin/file -L $add 2> /dev/null | 8870 $GREP ": [^:]* bundle" >/dev/null; then 8871 if test "X$dlopenmodule" != "X$lib"; then 8872 $ECHO "*** Warning: lib $linklib is a module, not a shared library" 8873 if test -z "$old_library"; then 8874 echo 8875 echo "*** And there doesn't seem to be a static archive available" 8876 echo "*** The link will probably fail, sorry" 8877 else 8878 add=$dir/$old_library 8879 fi 8880 elif test -n "$old_library"; then 8881 add=$dir/$old_library 8882 fi 8883 fi 8884 esac 8885 elif test no = "$hardcode_minus_L"; then 8886 case $host in 8887 *-*-sunos*) add_shlibpath=$dir ;; 8888 esac 8889 add_dir=-L$dir 8890 add=-l$name 8891 elif test no = "$hardcode_shlibpath_var"; then 8892 add_shlibpath=$dir 8893 add=-l$name 8894 else 8895 lib_linked=no 8896 fi 8897 ;; 8898 relink) 8899 if test yes = "$hardcode_direct" && 8900 test no = "$hardcode_direct_absolute"; then 8901 add=$dir/$linklib 8902 elif test yes = "$hardcode_minus_L"; then 8903 add_dir=-L$absdir 8904 # Try looking first in the location we're being installed to. 8905 if test -n "$inst_prefix_dir"; then 8906 case $libdir in 8907 [\\/]*) 8908 func_append add_dir " -L$inst_prefix_dir$libdir" 8909 ;; 8910 esac 8911 fi 8912 add=-l$name 8913 elif test yes = "$hardcode_shlibpath_var"; then 8914 add_shlibpath=$dir 8915 add=-l$name 8916 else 8917 lib_linked=no 8918 fi 8919 ;; 8920 *) lib_linked=no ;; 8921 esac 8922 8923 if test yes != "$lib_linked"; then 8924 func_fatal_configuration "unsupported hardcode properties" 8925 fi 8926 8927 if test -n "$add_shlibpath"; then 8928 case :$compile_shlibpath: in 8929 *":$add_shlibpath:"*) ;; 8930 *) func_append compile_shlibpath "$add_shlibpath:" ;; 8931 esac 8932 fi 8933 if test prog = "$linkmode"; then 8934 test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" 8935 test -n "$add" && compile_deplibs="$add $compile_deplibs" 8936 else 8937 test -n "$add_dir" && deplibs="$add_dir $deplibs" 8938 test -n "$add" && deplibs="$add $deplibs" 8939 if test yes != "$hardcode_direct" && 8940 test yes != "$hardcode_minus_L" && 8941 test yes = "$hardcode_shlibpath_var"; then 8942 case :$finalize_shlibpath: in 8943 *":$libdir:"*) ;; 8944 *) func_append finalize_shlibpath "$libdir:" ;; 8945 esac 8946 fi 8947 fi 8948 fi 8949 8950 if test prog = "$linkmode" || test relink = "$opt_mode"; then 8951 add_shlibpath= 8952 add_dir= 8953 add= 8954 # Finalize command for both is simple: just hardcode it. 8955 if test yes = "$hardcode_direct" && 8956 test no = "$hardcode_direct_absolute"; then 8957 add=$libdir/$linklib 8958 elif test yes = "$hardcode_minus_L"; then 8959 add_dir=-L$libdir 8960 add=-l$name 8961 elif test yes = "$hardcode_shlibpath_var"; then 8962 case :$finalize_shlibpath: in 8963 *":$libdir:"*) ;; 8964 *) func_append finalize_shlibpath "$libdir:" ;; 8965 esac 8966 add=-l$name 8967 elif test yes = "$hardcode_automatic"; then 8968 if test -n "$inst_prefix_dir" && 8969 test -f "$inst_prefix_dir$libdir/$linklib"; then 8970 add=$inst_prefix_dir$libdir/$linklib 8971 else 8972 add=$libdir/$linklib 8973 fi 8974 else 8975 # We cannot seem to hardcode it, guess we'll fake it. 8976 add_dir=-L$libdir 8977 # Try looking first in the location we're being installed to. 8978 if test -n "$inst_prefix_dir"; then 8979 case $libdir in 8980 [\\/]*) 8981 func_append add_dir " -L$inst_prefix_dir$libdir" 8982 ;; 8983 esac 8984 fi 8985 add=-l$name 8986 fi 8987 8988 if test prog = "$linkmode"; then 8989 test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" 8990 test -n "$add" && finalize_deplibs="$add $finalize_deplibs" 8991 else 8992 test -n "$add_dir" && deplibs="$add_dir $deplibs" 8993 test -n "$add" && deplibs="$add $deplibs" 8994 fi 8995 fi 8996 elif test prog = "$linkmode"; then 8997 # Here we assume that one of hardcode_direct or hardcode_minus_L 8998 # is not unsupported. This is valid on all known static and 8999 # shared platforms. 9000 if test unsupported != "$hardcode_direct"; then 9001 test -n "$old_library" && linklib=$old_library 9002 compile_deplibs="$dir/$linklib $compile_deplibs" 9003 finalize_deplibs="$dir/$linklib $finalize_deplibs" 9004 else 9005 compile_deplibs="-l$name -L$dir $compile_deplibs" 9006 finalize_deplibs="-l$name -L$dir $finalize_deplibs" 9007 fi 9008 elif test yes = "$build_libtool_libs"; then 9009 # Not a shared library 9010 if test pass_all != "$deplibs_check_method"; then 9011 # We're trying link a shared library against a static one 9012 # but the system doesn't support it. 9013 9014 # Just print a warning and add the library to dependency_libs so 9015 # that the program can be linked against the static library. 9016 echo 9017 $ECHO "*** Warning: This system cannot link to static lib archive $lib." 9018 echo "*** I have the capability to make that library automatically link in when" 9019 echo "*** you link to this library. But I can only do this if you have a" 9020 echo "*** shared version of the library, which you do not appear to have." 9021 if test yes = "$module"; then 9022 echo "*** But as you try to build a module library, libtool will still create " 9023 echo "*** a static module, that should work as long as the dlopening application" 9024 echo "*** is linked with the -dlopen flag to resolve symbols at runtime." 9025 if test -z "$global_symbol_pipe"; then 9026 echo 9027 echo "*** However, this would only work if libtool was able to extract symbol" 9028 echo "*** lists from a program, using 'nm' or equivalent, but libtool could" 9029 echo "*** not find such a program. So, this module is probably useless." 9030 echo "*** 'nm' from GNU binutils and a full rebuild may help." 9031 fi 9032 if test no = "$build_old_libs"; then 9033 build_libtool_libs=module 9034 build_old_libs=yes 9035 else 9036 build_libtool_libs=no 9037 fi 9038 fi 9039 else 9040 deplibs="$dir/$old_library $deplibs" 9041 link_static=yes 9042 fi 9043 fi # link shared/static library? 9044 9045 if test lib = "$linkmode"; then 9046 if test -n "$dependency_libs" && 9047 { test yes != "$hardcode_into_libs" || 9048 test yes = "$build_old_libs" || 9049 test yes = "$link_static"; }; then 9050 # Extract -R from dependency_libs 9051 temp_deplibs= 9052 for libdir in $dependency_libs; do 9053 case $libdir in 9054 -R*) func_stripname '-R' '' "$libdir" 9055 temp_xrpath=$func_stripname_result 9056 case " $xrpath " in 9057 *" $temp_xrpath "*) ;; 9058 *) func_append xrpath " $temp_xrpath";; 9059 esac;; 9060 *) func_append temp_deplibs " $libdir";; 9061 esac 9062 done 9063 dependency_libs=$temp_deplibs 9064 fi 9065 9066 func_append newlib_search_path " $absdir" 9067 # Link against this library 9068 test no = "$link_static" && newdependency_libs="$abs_ladir/$laname $newdependency_libs" 9069 # ... and its dependency_libs 9070 tmp_libs= 9071 for deplib in $dependency_libs; do 9072 newdependency_libs="$deplib $newdependency_libs" 9073 case $deplib in 9074 -L*) func_stripname '-L' '' "$deplib" 9075 func_resolve_sysroot "$func_stripname_result";; 9076 *) func_resolve_sysroot "$deplib" ;; 9077 esac 9078 if $opt_preserve_dup_deps; then 9079 case "$tmp_libs " in 9080 *" $func_resolve_sysroot_result "*) 9081 func_append specialdeplibs " $func_resolve_sysroot_result" ;; 9082 esac 9083 fi 9084 func_append tmp_libs " $func_resolve_sysroot_result" 9085 done 9086 9087 if test no != "$link_all_deplibs"; then 9088 # Add the search paths of all dependency libraries 9089 for deplib in $dependency_libs; do 9090 path= 9091 case $deplib in 9092 -L*) path=$deplib ;; 9093 *.la) 9094 func_resolve_sysroot "$deplib" 9095 deplib=$func_resolve_sysroot_result 9096 func_dirname "$deplib" "" "." 9097 dir=$func_dirname_result 9098 # We need an absolute path. 9099 case $dir in 9100 [\\/]* | [A-Za-z]:[\\/]*) absdir=$dir ;; 9101 *) 9102 absdir=`cd "$dir" && pwd` 9103 if test -z "$absdir"; then 9104 func_warning "cannot determine absolute directory name of '$dir'" 9105 absdir=$dir 9106 fi 9107 ;; 9108 esac 9109 if $GREP "^installed=no" $deplib > /dev/null; then 9110 case $host in 9111 *-*-darwin*) 9112 depdepl= 9113 eval deplibrary_names=`$SED -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` 9114 if test -n "$deplibrary_names"; then 9115 for tmp in $deplibrary_names; do 9116 depdepl=$tmp 9117 done 9118 if test -f "$absdir/$objdir/$depdepl"; then 9119 depdepl=$absdir/$objdir/$depdepl 9120 darwin_install_name=`$OTOOL -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` 9121 if test -z "$darwin_install_name"; then 9122 darwin_install_name=`$OTOOL64 -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` 9123 fi 9124 func_append compiler_flags " $wl-dylib_file $wl$darwin_install_name:$depdepl" 9125 func_append linker_flags " -dylib_file $darwin_install_name:$depdepl" 9126 path= 9127 fi 9128 fi 9129 ;; 9130 *) 9131 path=-L$absdir/$objdir 9132 ;; 9133 esac 9134 else 9135 eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 9136 test -z "$libdir" && \ 9137 func_fatal_error "'$deplib' is not a valid libtool archive" 9138 test "$absdir" != "$libdir" && \ 9139 func_warning "'$deplib' seems to be moved" 9140 9141 path=-L$absdir 9142 fi 9143 ;; 9144 esac 9145 case " $deplibs " in 9146 *" $path "*) ;; 9147 *) deplibs="$path $deplibs" ;; 9148 esac 9149 done 9150 fi # link_all_deplibs != no 9151 fi # linkmode = lib 9152 done # for deplib in $libs 9153 if test link = "$pass"; then 9154 if test prog = "$linkmode"; then 9155 compile_deplibs="$new_inherited_linker_flags $compile_deplibs" 9156 finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" 9157 else 9158 compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 9159 fi 9160 fi 9161 dependency_libs=$newdependency_libs 9162 if test dlpreopen = "$pass"; then 9163 # Link the dlpreopened libraries before other libraries 9164 for deplib in $save_deplibs; do 9165 deplibs="$deplib $deplibs" 9166 done 9167 fi 9168 if test dlopen != "$pass"; then 9169 test conv = "$pass" || { 9170 # Make sure lib_search_path contains only unique directories. 9171 lib_search_path= 9172 for dir in $newlib_search_path; do 9173 case "$lib_search_path " in 9174 *" $dir "*) ;; 9175 *) func_append lib_search_path " $dir" ;; 9176 esac 9177 done 9178 newlib_search_path= 9179 } 9180 9181 if test prog,link = "$linkmode,$pass"; then 9182 vars="compile_deplibs finalize_deplibs" 9183 else 9184 vars=deplibs 9185 fi 9186 for var in $vars dependency_libs; do 9187 # Add libraries to $var in reverse order 9188 eval tmp_libs=\"\$$var\" 9189 new_libs= 9190 for deplib in $tmp_libs; do 9191 # FIXME: Pedantically, this is the right thing to do, so 9192 # that some nasty dependency loop isn't accidentally 9193 # broken: 9194 #new_libs="$deplib $new_libs" 9195 # Pragmatically, this seems to cause very few problems in 9196 # practice: 9197 case $deplib in 9198 -L*) new_libs="$deplib $new_libs" ;; 9199 -R*) ;; 9200 *) 9201 # And here is the reason: when a library appears more 9202 # than once as an explicit dependence of a library, or 9203 # is implicitly linked in more than once by the 9204 # compiler, it is considered special, and multiple 9205 # occurrences thereof are not removed. Compare this 9206 # with having the same library being listed as a 9207 # dependency of multiple other libraries: in this case, 9208 # we know (pedantically, we assume) the library does not 9209 # need to be listed more than once, so we keep only the 9210 # last copy. This is not always right, but it is rare 9211 # enough that we require users that really mean to play 9212 # such unportable linking tricks to link the library 9213 # using -Wl,-lname, so that libtool does not consider it 9214 # for duplicate removal. 9215 case " $specialdeplibs " in 9216 *" $deplib "*) new_libs="$deplib $new_libs" ;; 9217 *) 9218 case " $new_libs " in 9219 *" $deplib "*) ;; 9220 *) new_libs="$deplib $new_libs" ;; 9221 esac 9222 ;; 9223 esac 9224 ;; 9225 esac 9226 done 9227 tmp_libs= 9228 for deplib in $new_libs; do 9229 case $deplib in 9230 -L*) 9231 case " $tmp_libs " in 9232 *" $deplib "*) ;; 9233 *) func_append tmp_libs " $deplib" ;; 9234 esac 9235 ;; 9236 *) func_append tmp_libs " $deplib" ;; 9237 esac 9238 done 9239 eval $var=\"$tmp_libs\" 9240 done # for var 9241 fi 9242 9243 # Add Sun CC postdeps if required: 9244 test CXX = "$tagname" && { 9245 case $host_os in 9246 linux*) 9247 case `$CC -V 2>&1 | sed 5q` in 9248 *Sun\ C*) # Sun C++ 5.9 9249 func_suncc_cstd_abi 9250 9251 if test no != "$suncc_use_cstd_abi"; then 9252 func_append postdeps ' -library=Cstd -library=Crun' 9253 fi 9254 ;; 9255 esac 9256 ;; 9257 9258 solaris*) 9259 func_cc_basename "$CC" 9260 case $func_cc_basename_result in 9261 CC* | sunCC*) 9262 func_suncc_cstd_abi 9263 9264 if test no != "$suncc_use_cstd_abi"; then 9265 func_append postdeps ' -library=Cstd -library=Crun' 9266 fi 9267 ;; 9268 esac 9269 ;; 9270 esac 9271 } 9272 9273 # Last step: remove runtime libs from dependency_libs 9274 # (they stay in deplibs) 9275 tmp_libs= 9276 for i in $dependency_libs; do 9277 case " $predeps $postdeps $compiler_lib_search_path " in 9278 *" $i "*) 9279 i= 9280 ;; 9281 esac 9282 if test -n "$i"; then 9283 func_append tmp_libs " $i" 9284 fi 9285 done 9286 dependency_libs=$tmp_libs 9287 done # for pass 9288 if test prog = "$linkmode"; then 9289 dlfiles=$newdlfiles 9290 fi 9291 if test prog = "$linkmode" || test lib = "$linkmode"; then 9292 dlprefiles=$newdlprefiles 9293 fi 9294 9295 case $linkmode in 9296 oldlib) 9297 if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then 9298 func_warning "'-dlopen' is ignored for archives" 9299 fi 9300 9301 case " $deplibs" in 9302 *\ -l* | *\ -L*) 9303 func_warning "'-l' and '-L' are ignored for archives" ;; 9304 esac 9305 9306 test -n "$rpath" && \ 9307 func_warning "'-rpath' is ignored for archives" 9308 9309 test -n "$xrpath" && \ 9310 func_warning "'-R' is ignored for archives" 9311 9312 test -n "$vinfo" && \ 9313 func_warning "'-version-info/-version-number' is ignored for archives" 9314 9315 test -n "$release" && \ 9316 func_warning "'-release' is ignored for archives" 9317 9318 test -n "$export_symbols$export_symbols_regex" && \ 9319 func_warning "'-export-symbols' is ignored for archives" 9320 9321 # Now set the variables for building old libraries. 9322 build_libtool_libs=no 9323 oldlibs=$output 9324 func_append objs "$old_deplibs" 9325 ;; 9326 9327 lib) 9328 # Make sure we only generate libraries of the form 'libNAME.la'. 9329 case $outputname in 9330 lib*) 9331 func_stripname 'lib' '.la' "$outputname" 9332 name=$func_stripname_result 9333 eval shared_ext=\"$shrext_cmds\" 9334 eval libname=\"$libname_spec\" 9335 ;; 9336 *) 9337 test no = "$module" \ 9338 && func_fatal_help "libtool library '$output' must begin with 'lib'" 9339 9340 if test no != "$need_lib_prefix"; then 9341 # Add the "lib" prefix for modules if required 9342 func_stripname '' '.la' "$outputname" 9343 name=$func_stripname_result 9344 eval shared_ext=\"$shrext_cmds\" 9345 eval libname=\"$libname_spec\" 9346 else 9347 func_stripname '' '.la' "$outputname" 9348 libname=$func_stripname_result 9349 fi 9350 ;; 9351 esac 9352 9353 if test -n "$objs"; then 9354 if test pass_all != "$deplibs_check_method"; then 9355 func_fatal_error "cannot build libtool library '$output' from non-libtool objects on this host:$objs" 9356 else 9357 echo 9358 $ECHO "*** Warning: Linking the shared library $output against the non-libtool" 9359 $ECHO "*** objects $objs is not portable!" 9360 func_append libobjs " $objs" 9361 fi 9362 fi 9363 9364 test no = "$dlself" \ 9365 || func_warning "'-dlopen self' is ignored for libtool libraries" 9366 9367 set dummy $rpath 9368 shift 9369 test 1 -lt "$#" \ 9370 && func_warning "ignoring multiple '-rpath's for a libtool library" 9371 9372 install_libdir=$1 9373 9374 oldlibs= 9375 if test -z "$rpath"; then 9376 if test yes = "$build_libtool_libs"; then 9377 # Building a libtool convenience library. 9378 # Some compilers have problems with a '.al' extension so 9379 # convenience libraries should have the same extension an 9380 # archive normally would. 9381 oldlibs="$output_objdir/$libname.$libext $oldlibs" 9382 build_libtool_libs=convenience 9383 build_old_libs=yes 9384 fi 9385 9386 test -n "$vinfo" && \ 9387 func_warning "'-version-info/-version-number' is ignored for convenience libraries" 9388 9389 test -n "$release" && \ 9390 func_warning "'-release' is ignored for convenience libraries" 9391 else 9392 9393 # Parse the version information argument. 9394 save_ifs=$IFS; IFS=: 9395 set dummy $vinfo 0 0 0 9396 shift 9397 IFS=$save_ifs 9398 9399 test -n "$7" && \ 9400 func_fatal_help "too many parameters to '-version-info'" 9401 9402 # convert absolute version numbers to libtool ages 9403 # this retains compatibility with .la files and attempts 9404 # to make the code below a bit more comprehensible 9405 9406 case $vinfo_number in 9407 yes) 9408 number_major=$1 9409 number_minor=$2 9410 number_revision=$3 9411 # 9412 # There are really only two kinds -- those that 9413 # use the current revision as the major version 9414 # and those that subtract age and use age as 9415 # a minor version. But, then there is irix 9416 # that has an extra 1 added just for fun 9417 # 9418 case $version_type in 9419 # correct linux to gnu/linux during the next big refactor 9420 darwin|freebsd-elf|linux|osf|windows|none) 9421 func_arith $number_major + $number_minor 9422 current=$func_arith_result 9423 age=$number_minor 9424 revision=$number_revision 9425 ;; 9426 freebsd-aout|qnx|sunos) 9427 current=$number_major 9428 revision=$number_minor 9429 age=0 9430 ;; 9431 irix|nonstopux) 9432 func_arith $number_major + $number_minor 9433 current=$func_arith_result 9434 age=$number_minor 9435 revision=$number_minor 9436 lt_irix_increment=no 9437 ;; 9438 *) 9439 func_fatal_configuration "$modename: unknown library version type '$version_type'" 9440 ;; 9441 esac 9442 ;; 9443 no) 9444 current=$1 9445 revision=$2 9446 age=$3 9447 ;; 9448 esac 9449 9450 # Check that each of the things are valid numbers. 9451 case $current in 9452 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]) ;; 9453 *) 9454 func_error "CURRENT '$current' must be a nonnegative integer" 9455 func_fatal_error "'$vinfo' is not valid version information" 9456 ;; 9457 esac 9458 9459 case $revision in 9460 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]) ;; 9461 *) 9462 func_error "REVISION '$revision' must be a nonnegative integer" 9463 func_fatal_error "'$vinfo' is not valid version information" 9464 ;; 9465 esac 9466 9467 case $age in 9468 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]) ;; 9469 *) 9470 func_error "AGE '$age' must be a nonnegative integer" 9471 func_fatal_error "'$vinfo' is not valid version information" 9472 ;; 9473 esac 9474 9475 if test "$age" -gt "$current"; then 9476 func_error "AGE '$age' is greater than the current interface number '$current'" 9477 func_fatal_error "'$vinfo' is not valid version information" 9478 fi 9479 9480 # Calculate the version variables. 9481 major= 9482 versuffix= 9483 verstring= 9484 case $version_type in 9485 none) ;; 9486 9487 darwin) 9488 # Like Linux, but with the current version available in 9489 # verstring for coding it into the library header 9490 func_arith $current - $age 9491 major=.$func_arith_result 9492 versuffix=$major.$age.$revision 9493 # Darwin ld doesn't like 0 for these options... 9494 func_arith $current + 1 9495 minor_current=$func_arith_result 9496 xlcverstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" 9497 verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" 9498 # On Darwin other compilers 9499 case $CC in 9500 nagfor*) 9501 verstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" 9502 ;; 9503 *) 9504 verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" 9505 ;; 9506 esac 9507 ;; 9508 9509 freebsd-aout) 9510 major=.$current 9511 versuffix=.$current.$revision 9512 ;; 9513 9514 freebsd-elf) 9515 func_arith $current - $age 9516 major=.$func_arith_result 9517 versuffix=$major.$age.$revision 9518 ;; 9519 9520 irix | nonstopux) 9521 if test no = "$lt_irix_increment"; then 9522 func_arith $current - $age 9523 else 9524 func_arith $current - $age + 1 9525 fi 9526 major=$func_arith_result 9527 9528 case $version_type in 9529 nonstopux) verstring_prefix=nonstopux ;; 9530 *) verstring_prefix=sgi ;; 9531 esac 9532 verstring=$verstring_prefix$major.$revision 9533 9534 # Add in all the interfaces that we are compatible with. 9535 loop=$revision 9536 while test 0 -ne "$loop"; do 9537 func_arith $revision - $loop 9538 iface=$func_arith_result 9539 func_arith $loop - 1 9540 loop=$func_arith_result 9541 verstring=$verstring_prefix$major.$iface:$verstring 9542 done 9543 9544 # Before this point, $major must not contain '.'. 9545 major=.$major 9546 versuffix=$major.$revision 9547 ;; 9548 9549 linux) # correct to gnu/linux during the next big refactor 9550 func_arith $current - $age 9551 major=.$func_arith_result 9552 versuffix=$major.$age.$revision 9553 ;; 9554 9555 osf) 9556 func_arith $current - $age 9557 major=.$func_arith_result 9558 versuffix=.$current.$age.$revision 9559 verstring=$current.$age.$revision 9560 9561 # Add in all the interfaces that we are compatible with. 9562 loop=$age 9563 while test 0 -ne "$loop"; do 9564 func_arith $current - $loop 9565 iface=$func_arith_result 9566 func_arith $loop - 1 9567 loop=$func_arith_result 9568 verstring=$verstring:$iface.0 9569 done 9570 9571 # Make executables depend on our current version. 9572 func_append verstring ":$current.0" 9573 ;; 9574 9575 qnx) 9576 major=.$current 9577 versuffix=.$current 9578 ;; 9579 9580 sco) 9581 major=.$current 9582 versuffix=.$current 9583 ;; 9584 9585 sunos) 9586 major=.$current 9587 versuffix=.$current.$revision 9588 ;; 9589 9590 windows) 9591 # Use '-' rather than '.', since we only want one 9592 # extension on DOS 8.3 file systems. 9593 func_arith $current - $age 9594 major=$func_arith_result 9595 versuffix=-$major 9596 ;; 9597 9598 *) 9599 func_fatal_configuration "unknown library version type '$version_type'" 9600 ;; 9601 esac 9602 9603 # Clear the version info if we defaulted, and they specified a release. 9604 if test -z "$vinfo" && test -n "$release"; then 9605 major= 9606 case $version_type in 9607 darwin) 9608 # we can't check for "0.0" in archive_cmds due to quoting 9609 # problems, so we reset it completely 9610 verstring= 9611 ;; 9612 *) 9613 verstring=0.0 9614 ;; 9615 esac 9616 if test no = "$need_version"; then 9617 versuffix= 9618 else 9619 versuffix=.0.0 9620 fi 9621 fi 9622 9623 # Remove version info from name if versioning should be avoided 9624 if test yes,no = "$avoid_version,$need_version"; then 9625 major= 9626 versuffix= 9627 verstring= 9628 fi 9629 9630 # Check to see if the archive will have undefined symbols. 9631 if test yes = "$allow_undefined"; then 9632 if test unsupported = "$allow_undefined_flag"; then 9633 if test yes = "$build_old_libs"; then 9634 func_warning "undefined symbols not allowed in $host shared libraries; building static only" 9635 build_libtool_libs=no 9636 else 9637 func_fatal_error "can't build $host shared library unless -no-undefined is specified" 9638 fi 9639 fi 9640 else 9641 # Don't allow undefined symbols. 9642 allow_undefined_flag=$no_undefined_flag 9643 fi 9644 9645 fi 9646 9647 func_generate_dlsyms "$libname" "$libname" : 9648 func_append libobjs " $symfileobj" 9649 test " " = "$libobjs" && libobjs= 9650 9651 if test relink != "$opt_mode"; then 9652 # Remove our outputs, but don't remove object files since they 9653 # may have been created when compiling PIC objects. 9654 removelist= 9655 tempremovelist=`$ECHO "$output_objdir/*"` 9656 for p in $tempremovelist; do 9657 case $p in 9658 *.$objext | *.gcno) 9659 ;; 9660 $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/$libname$release.*) 9661 if test -n "$precious_files_regex"; then 9662 if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 9663 then 9664 continue 9665 fi 9666 fi 9667 func_append removelist " $p" 9668 ;; 9669 *) ;; 9670 esac 9671 done 9672 test -n "$removelist" && \ 9673 func_show_eval "${RM}r \$removelist" 9674 fi 9675 9676 # Now set the variables for building old libraries. 9677 if test yes = "$build_old_libs" && test convenience != "$build_libtool_libs"; then 9678 func_append oldlibs " $output_objdir/$libname.$libext" 9679 9680 # Transform .lo files to .o files. 9681 oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; $lo2o" | $NL2SP` 9682 fi 9683 9684 # Eliminate all temporary directories. 9685 #for path in $notinst_path; do 9686 # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` 9687 # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` 9688 # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` 9689 #done 9690 9691 if test -n "$xrpath"; then 9692 # If the user specified any rpath flags, then add them. 9693 temp_xrpath= 9694 for libdir in $xrpath; do 9695 func_replace_sysroot "$libdir" 9696 func_append temp_xrpath " -R$func_replace_sysroot_result" 9697 case "$finalize_rpath " in 9698 *" $libdir "*) ;; 9699 *) func_append finalize_rpath " $libdir" ;; 9700 esac 9701 done 9702 if test yes != "$hardcode_into_libs" || test yes = "$build_old_libs"; then 9703 dependency_libs="$temp_xrpath $dependency_libs" 9704 fi 9705 fi 9706 9707 # Make sure dlfiles contains only unique files that won't be dlpreopened 9708 old_dlfiles=$dlfiles 9709 dlfiles= 9710 for lib in $old_dlfiles; do 9711 case " $dlprefiles $dlfiles " in 9712 *" $lib "*) ;; 9713 *) func_append dlfiles " $lib" ;; 9714 esac 9715 done 9716 9717 # Make sure dlprefiles contains only unique files 9718 old_dlprefiles=$dlprefiles 9719 dlprefiles= 9720 for lib in $old_dlprefiles; do 9721 case "$dlprefiles " in 9722 *" $lib "*) ;; 9723 *) func_append dlprefiles " $lib" ;; 9724 esac 9725 done 9726 9727 if test yes = "$build_libtool_libs"; then 9728 if test -n "$rpath"; then 9729 case $host in 9730 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) 9731 # these systems don't actually have a c library (as such)! 9732 ;; 9733 *-*-rhapsody* | *-*-darwin1.[012]) 9734 # Rhapsody C library is in the System framework 9735 func_append deplibs " System.ltframework" 9736 ;; 9737 *-*-netbsd*) 9738 # Don't link with libc until the a.out ld.so is fixed. 9739 ;; 9740 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 9741 # Do not include libc due to us having libc/libc_r. 9742 ;; 9743 *-*-sco3.2v5* | *-*-sco5v6*) 9744 # Causes problems with __ctype 9745 ;; 9746 *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 9747 # Compiler inserts libc in the correct place for threads to work 9748 ;; 9749 *) 9750 # Add libc to deplibs on all other systems if necessary. 9751 if test yes = "$build_libtool_need_lc"; then 9752 func_append deplibs " -lc" 9753 fi 9754 ;; 9755 esac 9756 fi 9757 9758 # Transform deplibs into only deplibs that can be linked in shared. 9759 name_save=$name 9760 libname_save=$libname 9761 release_save=$release 9762 versuffix_save=$versuffix 9763 major_save=$major 9764 # I'm not sure if I'm treating the release correctly. I think 9765 # release should show up in the -l (ie -lgmp5) so we don't want to 9766 # add it in twice. Is that correct? 9767 release= 9768 versuffix= 9769 major= 9770 newdeplibs= 9771 droppeddeps=no 9772 case $deplibs_check_method in 9773 pass_all) 9774 # Don't check for shared/static. Everything works. 9775 # This might be a little naive. We might want to check 9776 # whether the library exists or not. But this is on 9777 # osf3 & osf4 and I'm not really sure... Just 9778 # implementing what was already the behavior. 9779 newdeplibs=$deplibs 9780 ;; 9781 test_compile) 9782 # This code stresses the "libraries are programs" paradigm to its 9783 # limits. Maybe even breaks it. We compile a program, linking it 9784 # against the deplibs as a proxy for the library. Then we can check 9785 # whether they linked in statically or dynamically with ldd. 9786 $opt_dry_run || $RM conftest.c 9787 cat > conftest.c <<EOF 9788 int main() { return 0; } 9789EOF 9790 $opt_dry_run || $RM conftest 9791 if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then 9792 ldd_output=`ldd conftest` 9793 for i in $deplibs; do 9794 case $i in 9795 -l*) 9796 func_stripname -l '' "$i" 9797 name=$func_stripname_result 9798 if test yes = "$allow_libtool_libs_with_static_runtimes"; then 9799 case " $predeps $postdeps " in 9800 *" $i "*) 9801 func_append newdeplibs " $i" 9802 i= 9803 ;; 9804 esac 9805 fi 9806 if test -n "$i"; then 9807 libname=`eval "\\$ECHO \"$libname_spec\""` 9808 deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` 9809 set dummy $deplib_matches; shift 9810 deplib_match=$1 9811 if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0; then 9812 func_append newdeplibs " $i" 9813 else 9814 droppeddeps=yes 9815 echo 9816 $ECHO "*** Warning: dynamic linker does not accept needed library $i." 9817 echo "*** I have the capability to make that library automatically link in when" 9818 echo "*** you link to this library. But I can only do this if you have a" 9819 echo "*** shared version of the library, which I believe you do not have" 9820 echo "*** because a test_compile did reveal that the linker did not use it for" 9821 echo "*** its dynamic dependency list that programs get resolved with at runtime." 9822 fi 9823 fi 9824 ;; 9825 *) 9826 func_append newdeplibs " $i" 9827 ;; 9828 esac 9829 done 9830 else 9831 # Error occurred in the first compile. Let's try to salvage 9832 # the situation: Compile a separate program for each library. 9833 for i in $deplibs; do 9834 case $i in 9835 -l*) 9836 func_stripname -l '' "$i" 9837 name=$func_stripname_result 9838 $opt_dry_run || $RM conftest 9839 if $LTCC $LTCFLAGS -o conftest conftest.c $i; then 9840 ldd_output=`ldd conftest` 9841 if test yes = "$allow_libtool_libs_with_static_runtimes"; then 9842 case " $predeps $postdeps " in 9843 *" $i "*) 9844 func_append newdeplibs " $i" 9845 i= 9846 ;; 9847 esac 9848 fi 9849 if test -n "$i"; then 9850 libname=`eval "\\$ECHO \"$libname_spec\""` 9851 deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` 9852 set dummy $deplib_matches; shift 9853 deplib_match=$1 9854 if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0; then 9855 func_append newdeplibs " $i" 9856 else 9857 droppeddeps=yes 9858 echo 9859 $ECHO "*** Warning: dynamic linker does not accept needed library $i." 9860 echo "*** I have the capability to make that library automatically link in when" 9861 echo "*** you link to this library. But I can only do this if you have a" 9862 echo "*** shared version of the library, which you do not appear to have" 9863 echo "*** because a test_compile did reveal that the linker did not use this one" 9864 echo "*** as a dynamic dependency that programs can get resolved with at runtime." 9865 fi 9866 fi 9867 else 9868 droppeddeps=yes 9869 echo 9870 $ECHO "*** Warning! Library $i is needed by this library but I was not able to" 9871 echo "*** make it link in! You will probably need to install it or some" 9872 echo "*** library that it depends on before this library will be fully" 9873 echo "*** functional. Installing it before continuing would be even better." 9874 fi 9875 ;; 9876 *) 9877 func_append newdeplibs " $i" 9878 ;; 9879 esac 9880 done 9881 fi 9882 ;; 9883 file_magic*) 9884 set dummy $deplibs_check_method; shift 9885 file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 9886 for a_deplib in $deplibs; do 9887 case $a_deplib in 9888 -l*) 9889 func_stripname -l '' "$a_deplib" 9890 name=$func_stripname_result 9891 if test yes = "$allow_libtool_libs_with_static_runtimes"; then 9892 case " $predeps $postdeps " in 9893 *" $a_deplib "*) 9894 func_append newdeplibs " $a_deplib" 9895 a_deplib= 9896 ;; 9897 esac 9898 fi 9899 if test -n "$a_deplib"; then 9900 libname=`eval "\\$ECHO \"$libname_spec\""` 9901 if test -n "$file_magic_glob"; then 9902 libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob` 9903 else 9904 libnameglob=$libname 9905 fi 9906 test yes = "$want_nocaseglob" && nocaseglob=`shopt -p nocaseglob` 9907 for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 9908 if test yes = "$want_nocaseglob"; then 9909 shopt -s nocaseglob 9910 potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` 9911 $nocaseglob 9912 else 9913 potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` 9914 fi 9915 for potent_lib in $potential_libs; do 9916 # Follow soft links. 9917 if ls -lLd "$potent_lib" 2>/dev/null | 9918 $GREP " -> " >/dev/null; then 9919 continue 9920 fi 9921 # The statement above tries to avoid entering an 9922 # endless loop below, in case of cyclic links. 9923 # We might still enter an endless loop, since a link 9924 # loop can be closed while we follow links, 9925 # but so what? 9926 potlib=$potent_lib 9927 while test -h "$potlib" 2>/dev/null; do 9928 potliblink=`ls -ld $potlib | $SED 's/.* -> //'` 9929 case $potliblink in 9930 [\\/]* | [A-Za-z]:[\\/]*) potlib=$potliblink;; 9931 *) potlib=`$ECHO "$potlib" | $SED 's|[^/]*$||'`"$potliblink";; 9932 esac 9933 done 9934 if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | 9935 $SED -e 10q | 9936 $EGREP "$file_magic_regex" > /dev/null; then 9937 func_append newdeplibs " $a_deplib" 9938 a_deplib= 9939 break 2 9940 fi 9941 done 9942 done 9943 fi 9944 if test -n "$a_deplib"; then 9945 droppeddeps=yes 9946 echo 9947 $ECHO "*** Warning: linker path does not have real file for library $a_deplib." 9948 echo "*** I have the capability to make that library automatically link in when" 9949 echo "*** you link to this library. But I can only do this if you have a" 9950 echo "*** shared version of the library, which you do not appear to have" 9951 echo "*** because I did check the linker path looking for a file starting" 9952 if test -z "$potlib"; then 9953 $ECHO "*** with $libname but no candidates were found. (...for file magic test)" 9954 else 9955 $ECHO "*** with $libname and none of the candidates passed a file format test" 9956 $ECHO "*** using a file magic. Last file checked: $potlib" 9957 fi 9958 fi 9959 ;; 9960 *) 9961 # Add a -L argument. 9962 func_append newdeplibs " $a_deplib" 9963 ;; 9964 esac 9965 done # Gone through all deplibs. 9966 ;; 9967 match_pattern*) 9968 set dummy $deplibs_check_method; shift 9969 match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 9970 for a_deplib in $deplibs; do 9971 case $a_deplib in 9972 -l*) 9973 func_stripname -l '' "$a_deplib" 9974 name=$func_stripname_result 9975 if test yes = "$allow_libtool_libs_with_static_runtimes"; then 9976 case " $predeps $postdeps " in 9977 *" $a_deplib "*) 9978 func_append newdeplibs " $a_deplib" 9979 a_deplib= 9980 ;; 9981 esac 9982 fi 9983 if test -n "$a_deplib"; then 9984 libname=`eval "\\$ECHO \"$libname_spec\""` 9985 for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 9986 potential_libs=`ls $i/$libname[.-]* 2>/dev/null` 9987 for potent_lib in $potential_libs; do 9988 potlib=$potent_lib # see symlink-check above in file_magic test 9989 if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ 9990 $EGREP "$match_pattern_regex" > /dev/null; then 9991 func_append newdeplibs " $a_deplib" 9992 a_deplib= 9993 break 2 9994 fi 9995 done 9996 done 9997 fi 9998 if test -n "$a_deplib"; then 9999 droppeddeps=yes 10000 echo 10001 $ECHO "*** Warning: linker path does not have real file for library $a_deplib." 10002 echo "*** I have the capability to make that library automatically link in when" 10003 echo "*** you link to this library. But I can only do this if you have a" 10004 echo "*** shared version of the library, which you do not appear to have" 10005 echo "*** because I did check the linker path looking for a file starting" 10006 if test -z "$potlib"; then 10007 $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" 10008 else 10009 $ECHO "*** with $libname and none of the candidates passed a file format test" 10010 $ECHO "*** using a regex pattern. Last file checked: $potlib" 10011 fi 10012 fi 10013 ;; 10014 *) 10015 # Add a -L argument. 10016 func_append newdeplibs " $a_deplib" 10017 ;; 10018 esac 10019 done # Gone through all deplibs. 10020 ;; 10021 none | unknown | *) 10022 newdeplibs= 10023 tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` 10024 if test yes = "$allow_libtool_libs_with_static_runtimes"; then 10025 for i in $predeps $postdeps; do 10026 # can't use Xsed below, because $i might contain '/' 10027 tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s|$i||"` 10028 done 10029 fi 10030 case $tmp_deplibs in 10031 *[!\ \ ]*) 10032 echo 10033 if test none = "$deplibs_check_method"; then 10034 echo "*** Warning: inter-library dependencies are not supported in this platform." 10035 else 10036 echo "*** Warning: inter-library dependencies are not known to be supported." 10037 fi 10038 echo "*** All declared inter-library dependencies are being dropped." 10039 droppeddeps=yes 10040 ;; 10041 esac 10042 ;; 10043 esac 10044 versuffix=$versuffix_save 10045 major=$major_save 10046 release=$release_save 10047 libname=$libname_save 10048 name=$name_save 10049 10050 case $host in 10051 *-*-rhapsody* | *-*-darwin1.[012]) 10052 # On Rhapsody replace the C library with the System framework 10053 newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` 10054 ;; 10055 esac 10056 10057 if test yes = "$droppeddeps"; then 10058 if test yes = "$module"; then 10059 echo 10060 echo "*** Warning: libtool could not satisfy all declared inter-library" 10061 $ECHO "*** dependencies of module $libname. Therefore, libtool will create" 10062 echo "*** a static module, that should work as long as the dlopening" 10063 echo "*** application is linked with the -dlopen flag." 10064 if test -z "$global_symbol_pipe"; then 10065 echo 10066 echo "*** However, this would only work if libtool was able to extract symbol" 10067 echo "*** lists from a program, using 'nm' or equivalent, but libtool could" 10068 echo "*** not find such a program. So, this module is probably useless." 10069 echo "*** 'nm' from GNU binutils and a full rebuild may help." 10070 fi 10071 if test no = "$build_old_libs"; then 10072 oldlibs=$output_objdir/$libname.$libext 10073 build_libtool_libs=module 10074 build_old_libs=yes 10075 else 10076 build_libtool_libs=no 10077 fi 10078 else 10079 echo "*** The inter-library dependencies that have been dropped here will be" 10080 echo "*** automatically added whenever a program is linked with this library" 10081 echo "*** or is declared to -dlopen it." 10082 10083 if test no = "$allow_undefined"; then 10084 echo 10085 echo "*** Since this library must not contain undefined symbols," 10086 echo "*** because either the platform does not support them or" 10087 echo "*** it was explicitly requested with -no-undefined," 10088 echo "*** libtool will only create a static version of it." 10089 if test no = "$build_old_libs"; then 10090 oldlibs=$output_objdir/$libname.$libext 10091 build_libtool_libs=module 10092 build_old_libs=yes 10093 else 10094 build_libtool_libs=no 10095 fi 10096 fi 10097 fi 10098 fi 10099 # Done checking deplibs! 10100 deplibs=$newdeplibs 10101 fi 10102 # Time to change all our "foo.ltframework" stuff back to "-framework foo" 10103 case $host in 10104 *-*-darwin*) 10105 newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 10106 new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 10107 deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 10108 ;; 10109 esac 10110 10111 # move library search paths that coincide with paths to not yet 10112 # installed libraries to the beginning of the library search list 10113 new_libs= 10114 for path in $notinst_path; do 10115 case " $new_libs " in 10116 *" -L$path/$objdir "*) ;; 10117 *) 10118 case " $deplibs " in 10119 *" -L$path/$objdir "*) 10120 func_append new_libs " -L$path/$objdir" ;; 10121 esac 10122 ;; 10123 esac 10124 done 10125 for deplib in $deplibs; do 10126 case $deplib in 10127 -L*) 10128 case " $new_libs " in 10129 *" $deplib "*) ;; 10130 *) func_append new_libs " $deplib" ;; 10131 esac 10132 ;; 10133 *) func_append new_libs " $deplib" ;; 10134 esac 10135 done 10136 deplibs=$new_libs 10137 10138 # All the library-specific variables (install_libdir is set above). 10139 library_names= 10140 old_library= 10141 dlname= 10142 10143 # Test again, we may have decided not to build it any more 10144 if test yes = "$build_libtool_libs"; then 10145 # Remove $wl instances when linking with ld. 10146 # FIXME: should test the right _cmds variable. 10147 case $archive_cmds in 10148 *\$LD\ *) wl= ;; 10149 esac 10150 if test yes = "$hardcode_into_libs"; then 10151 # Hardcode the library paths 10152 hardcode_libdirs= 10153 dep_rpath= 10154 rpath=$finalize_rpath 10155 test relink = "$opt_mode" || rpath=$compile_rpath$rpath 10156 for libdir in $rpath; do 10157 if test -n "$hardcode_libdir_flag_spec"; then 10158 if test -n "$hardcode_libdir_separator"; then 10159 func_replace_sysroot "$libdir" 10160 libdir=$func_replace_sysroot_result 10161 if test -z "$hardcode_libdirs"; then 10162 hardcode_libdirs=$libdir 10163 else 10164 # Just accumulate the unique libdirs. 10165 case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 10166 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 10167 ;; 10168 *) 10169 func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" 10170 ;; 10171 esac 10172 fi 10173 else 10174 eval flag=\"$hardcode_libdir_flag_spec\" 10175 func_append dep_rpath " $flag" 10176 fi 10177 elif test -n "$runpath_var"; then 10178 case "$perm_rpath " in 10179 *" $libdir "*) ;; 10180 *) func_append perm_rpath " $libdir" ;; 10181 esac 10182 fi 10183 done 10184 # Substitute the hardcoded libdirs into the rpath. 10185 if test -n "$hardcode_libdir_separator" && 10186 test -n "$hardcode_libdirs"; then 10187 libdir=$hardcode_libdirs 10188 eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" 10189 fi 10190 if test -n "$runpath_var" && test -n "$perm_rpath"; then 10191 # We should set the runpath_var. 10192 rpath= 10193 for dir in $perm_rpath; do 10194 func_append rpath "$dir:" 10195 done 10196 eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" 10197 fi 10198 test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" 10199 fi 10200 10201 shlibpath=$finalize_shlibpath 10202 test relink = "$opt_mode" || shlibpath=$compile_shlibpath$shlibpath 10203 if test -n "$shlibpath"; then 10204 eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" 10205 fi 10206 10207 # Get the real and link names of the library. 10208 eval shared_ext=\"$shrext_cmds\" 10209 eval library_names=\"$library_names_spec\" 10210 set dummy $library_names 10211 shift 10212 realname=$1 10213 shift 10214 10215 if test -n "$soname_spec"; then 10216 eval soname=\"$soname_spec\" 10217 else 10218 soname=$realname 10219 fi 10220 if test -z "$dlname"; then 10221 dlname=$soname 10222 fi 10223 10224 lib=$output_objdir/$realname 10225 linknames= 10226 for link 10227 do 10228 func_append linknames " $link" 10229 done 10230 10231 # Use standard objects if they are pic 10232 test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` 10233 test "X$libobjs" = "X " && libobjs= 10234 10235 delfiles= 10236 if test -n "$export_symbols" && test -n "$include_expsyms"; then 10237 $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" 10238 export_symbols=$output_objdir/$libname.uexp 10239 func_append delfiles " $export_symbols" 10240 fi 10241 10242 orig_export_symbols= 10243 case $host_os in 10244 cygwin* | mingw* | cegcc*) 10245 if test -n "$export_symbols" && test -z "$export_symbols_regex"; then 10246 # exporting using user supplied symfile 10247 func_dll_def_p "$export_symbols" || { 10248 # and it's NOT already a .def file. Must figure out 10249 # which of the given symbols are data symbols and tag 10250 # them as such. So, trigger use of export_symbols_cmds. 10251 # export_symbols gets reassigned inside the "prepare 10252 # the list of exported symbols" if statement, so the 10253 # include_expsyms logic still works. 10254 orig_export_symbols=$export_symbols 10255 export_symbols= 10256 always_export_symbols=yes 10257 } 10258 fi 10259 ;; 10260 esac 10261 10262 # Prepare the list of exported symbols 10263 if test -z "$export_symbols"; then 10264 if test yes = "$always_export_symbols" || test -n "$export_symbols_regex"; then 10265 func_verbose "generating symbol list for '$libname.la'" 10266 export_symbols=$output_objdir/$libname.exp 10267 $opt_dry_run || $RM $export_symbols 10268 cmds=$export_symbols_cmds 10269 save_ifs=$IFS; IFS='~' 10270 for cmd1 in $cmds; do 10271 IFS=$save_ifs 10272 # Take the normal branch if the nm_file_list_spec branch 10273 # doesn't work or if tool conversion is not needed. 10274 case $nm_file_list_spec~$to_tool_file_cmd in 10275 *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) 10276 try_normal_branch=yes 10277 eval cmd=\"$cmd1\" 10278 func_len " $cmd" 10279 len=$func_len_result 10280 ;; 10281 *) 10282 try_normal_branch=no 10283 ;; 10284 esac 10285 if test yes = "$try_normal_branch" \ 10286 && { test "$len" -lt "$max_cmd_len" \ 10287 || test "$max_cmd_len" -le -1; } 10288 then 10289 func_show_eval "$cmd" 'exit $?' 10290 skipped_export=false 10291 elif test -n "$nm_file_list_spec"; then 10292 func_basename "$output" 10293 output_la=$func_basename_result 10294 save_libobjs=$libobjs 10295 save_output=$output 10296 output=$output_objdir/$output_la.nm 10297 func_to_tool_file "$output" 10298 libobjs=$nm_file_list_spec$func_to_tool_file_result 10299 func_append delfiles " $output" 10300 func_verbose "creating $NM input file list: $output" 10301 for obj in $save_libobjs; do 10302 func_to_tool_file "$obj" 10303 $ECHO "$func_to_tool_file_result" 10304 done > "$output" 10305 eval cmd=\"$cmd1\" 10306 func_show_eval "$cmd" 'exit $?' 10307 output=$save_output 10308 libobjs=$save_libobjs 10309 skipped_export=false 10310 else 10311 # The command line is too long to execute in one step. 10312 func_verbose "using reloadable object file for export list..." 10313 skipped_export=: 10314 # Break out early, otherwise skipped_export may be 10315 # set to false by a later but shorter cmd. 10316 break 10317 fi 10318 done 10319 IFS=$save_ifs 10320 if test -n "$export_symbols_regex" && test : != "$skipped_export"; then 10321 func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' 10322 func_show_eval '$MV "${export_symbols}T" "$export_symbols"' 10323 fi 10324 fi 10325 fi 10326 10327 if test -n "$export_symbols" && test -n "$include_expsyms"; then 10328 tmp_export_symbols=$export_symbols 10329 test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols 10330 $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' 10331 fi 10332 10333 if test : != "$skipped_export" && test -n "$orig_export_symbols"; then 10334 # The given exports_symbols file has to be filtered, so filter it. 10335 func_verbose "filter symbol list for '$libname.la' to tag DATA exports" 10336 # FIXME: $output_objdir/$libname.filter potentially contains lots of 10337 # 's' commands, which not all seds can handle. GNU sed should be fine 10338 # though. Also, the filter scales superlinearly with the number of 10339 # global variables. join(1) would be nice here, but unfortunately 10340 # isn't a blessed tool. 10341 $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter 10342 func_append delfiles " $export_symbols $output_objdir/$libname.filter" 10343 export_symbols=$output_objdir/$libname.def 10344 $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols 10345 fi 10346 10347 tmp_deplibs= 10348 for test_deplib in $deplibs; do 10349 case " $convenience " in 10350 *" $test_deplib "*) ;; 10351 *) 10352 func_append tmp_deplibs " $test_deplib" 10353 ;; 10354 esac 10355 done 10356 deplibs=$tmp_deplibs 10357 10358 if test -n "$convenience"; then 10359 if test -n "$whole_archive_flag_spec" && 10360 test yes = "$compiler_needs_object" && 10361 test -z "$libobjs"; then 10362 # extract the archives, so we have objects to list. 10363 # TODO: could optimize this to just extract one archive. 10364 whole_archive_flag_spec= 10365 fi 10366 if test -n "$whole_archive_flag_spec"; then 10367 save_libobjs=$libobjs 10368 eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 10369 test "X$libobjs" = "X " && libobjs= 10370 else 10371 gentop=$output_objdir/${outputname}x 10372 func_append generated " $gentop" 10373 10374 func_extract_archives $gentop $convenience 10375 func_append libobjs " $func_extract_archives_result" 10376 test "X$libobjs" = "X " && libobjs= 10377 fi 10378 fi 10379 10380 if test yes = "$thread_safe" && test -n "$thread_safe_flag_spec"; then 10381 eval flag=\"$thread_safe_flag_spec\" 10382 func_append linker_flags " $flag" 10383 fi 10384 10385 # Make a backup of the uninstalled library when relinking 10386 if test relink = "$opt_mode"; then 10387 $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? 10388 fi 10389 10390 # Do each of the archive commands. 10391 if test yes = "$module" && test -n "$module_cmds"; then 10392 if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 10393 eval test_cmds=\"$module_expsym_cmds\" 10394 cmds=$module_expsym_cmds 10395 else 10396 eval test_cmds=\"$module_cmds\" 10397 cmds=$module_cmds 10398 fi 10399 else 10400 if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 10401 eval test_cmds=\"$archive_expsym_cmds\" 10402 cmds=$archive_expsym_cmds 10403 else 10404 eval test_cmds=\"$archive_cmds\" 10405 cmds=$archive_cmds 10406 fi 10407 fi 10408 10409 if test : != "$skipped_export" && 10410 func_len " $test_cmds" && 10411 len=$func_len_result && 10412 test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then 10413 : 10414 else 10415 # The command line is too long to link in one step, link piecewise 10416 # or, if using GNU ld and skipped_export is not :, use a linker 10417 # script. 10418 10419 # Save the value of $output and $libobjs because we want to 10420 # use them later. If we have whole_archive_flag_spec, we 10421 # want to use save_libobjs as it was before 10422 # whole_archive_flag_spec was expanded, because we can't 10423 # assume the linker understands whole_archive_flag_spec. 10424 # This may have to be revisited, in case too many 10425 # convenience libraries get linked in and end up exceeding 10426 # the spec. 10427 if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then 10428 save_libobjs=$libobjs 10429 fi 10430 save_output=$output 10431 func_basename "$output" 10432 output_la=$func_basename_result 10433 10434 # Clear the reloadable object creation command queue and 10435 # initialize k to one. 10436 test_cmds= 10437 concat_cmds= 10438 objlist= 10439 last_robj= 10440 k=1 10441 10442 if test -n "$save_libobjs" && test : != "$skipped_export" && test yes = "$with_gnu_ld"; then 10443 output=$output_objdir/$output_la.lnkscript 10444 func_verbose "creating GNU ld script: $output" 10445 echo 'INPUT (' > $output 10446 for obj in $save_libobjs 10447 do 10448 func_to_tool_file "$obj" 10449 $ECHO "$func_to_tool_file_result" >> $output 10450 done 10451 echo ')' >> $output 10452 func_append delfiles " $output" 10453 func_to_tool_file "$output" 10454 output=$func_to_tool_file_result 10455 elif test -n "$save_libobjs" && test : != "$skipped_export" && test -n "$file_list_spec"; then 10456 output=$output_objdir/$output_la.lnk 10457 func_verbose "creating linker input file list: $output" 10458 : > $output 10459 set x $save_libobjs 10460 shift 10461 firstobj= 10462 if test yes = "$compiler_needs_object"; then 10463 firstobj="$1 " 10464 shift 10465 fi 10466 for obj 10467 do 10468 func_to_tool_file "$obj" 10469 $ECHO "$func_to_tool_file_result" >> $output 10470 done 10471 func_append delfiles " $output" 10472 func_to_tool_file "$output" 10473 output=$firstobj\"$file_list_spec$func_to_tool_file_result\" 10474 else 10475 if test -n "$save_libobjs"; then 10476 func_verbose "creating reloadable object files..." 10477 output=$output_objdir/$output_la-$k.$objext 10478 eval test_cmds=\"$reload_cmds\" 10479 func_len " $test_cmds" 10480 len0=$func_len_result 10481 len=$len0 10482 10483 # Loop over the list of objects to be linked. 10484 for obj in $save_libobjs 10485 do 10486 func_len " $obj" 10487 func_arith $len + $func_len_result 10488 len=$func_arith_result 10489 if test -z "$objlist" || 10490 test "$len" -lt "$max_cmd_len"; then 10491 func_append objlist " $obj" 10492 else 10493 # The command $test_cmds is almost too long, add a 10494 # command to the queue. 10495 if test 1 -eq "$k"; then 10496 # The first file doesn't have a previous command to add. 10497 reload_objs=$objlist 10498 eval concat_cmds=\"$reload_cmds\" 10499 else 10500 # All subsequent reloadable object files will link in 10501 # the last one created. 10502 reload_objs="$objlist $last_robj" 10503 eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" 10504 fi 10505 last_robj=$output_objdir/$output_la-$k.$objext 10506 func_arith $k + 1 10507 k=$func_arith_result 10508 output=$output_objdir/$output_la-$k.$objext 10509 objlist=" $obj" 10510 func_len " $last_robj" 10511 func_arith $len0 + $func_len_result 10512 len=$func_arith_result 10513 fi 10514 done 10515 # Handle the remaining objects by creating one last 10516 # reloadable object file. All subsequent reloadable object 10517 # files will link in the last one created. 10518 test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 10519 reload_objs="$objlist $last_robj" 10520 eval concat_cmds=\"\$concat_cmds$reload_cmds\" 10521 if test -n "$last_robj"; then 10522 eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" 10523 fi 10524 func_append delfiles " $output" 10525 10526 else 10527 output= 10528 fi 10529 10530 ${skipped_export-false} && { 10531 func_verbose "generating symbol list for '$libname.la'" 10532 export_symbols=$output_objdir/$libname.exp 10533 $opt_dry_run || $RM $export_symbols 10534 libobjs=$output 10535 # Append the command to create the export file. 10536 test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 10537 eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" 10538 if test -n "$last_robj"; then 10539 eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" 10540 fi 10541 } 10542 10543 test -n "$save_libobjs" && 10544 func_verbose "creating a temporary reloadable object file: $output" 10545 10546 # Loop through the commands generated above and execute them. 10547 save_ifs=$IFS; IFS='~' 10548 for cmd in $concat_cmds; do 10549 IFS=$save_ifs 10550 $opt_quiet || { 10551 func_quote_for_expand "$cmd" 10552 eval "func_echo $func_quote_for_expand_result" 10553 } 10554 $opt_dry_run || eval "$cmd" || { 10555 lt_exit=$? 10556 10557 # Restore the uninstalled library and exit 10558 if test relink = "$opt_mode"; then 10559 ( cd "$output_objdir" && \ 10560 $RM "${realname}T" && \ 10561 $MV "${realname}U" "$realname" ) 10562 fi 10563 10564 exit $lt_exit 10565 } 10566 done 10567 IFS=$save_ifs 10568 10569 if test -n "$export_symbols_regex" && ${skipped_export-false}; then 10570 func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' 10571 func_show_eval '$MV "${export_symbols}T" "$export_symbols"' 10572 fi 10573 fi 10574 10575 ${skipped_export-false} && { 10576 if test -n "$export_symbols" && test -n "$include_expsyms"; then 10577 tmp_export_symbols=$export_symbols 10578 test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols 10579 $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' 10580 fi 10581 10582 if test -n "$orig_export_symbols"; then 10583 # The given exports_symbols file has to be filtered, so filter it. 10584 func_verbose "filter symbol list for '$libname.la' to tag DATA exports" 10585 # FIXME: $output_objdir/$libname.filter potentially contains lots of 10586 # 's' commands, which not all seds can handle. GNU sed should be fine 10587 # though. Also, the filter scales superlinearly with the number of 10588 # global variables. join(1) would be nice here, but unfortunately 10589 # isn't a blessed tool. 10590 $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter 10591 func_append delfiles " $export_symbols $output_objdir/$libname.filter" 10592 export_symbols=$output_objdir/$libname.def 10593 $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols 10594 fi 10595 } 10596 10597 libobjs=$output 10598 # Restore the value of output. 10599 output=$save_output 10600 10601 if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then 10602 eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 10603 test "X$libobjs" = "X " && libobjs= 10604 fi 10605 # Expand the library linking commands again to reset the 10606 # value of $libobjs for piecewise linking. 10607 10608 # Do each of the archive commands. 10609 if test yes = "$module" && test -n "$module_cmds"; then 10610 if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 10611 cmds=$module_expsym_cmds 10612 else 10613 cmds=$module_cmds 10614 fi 10615 else 10616 if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 10617 cmds=$archive_expsym_cmds 10618 else 10619 cmds=$archive_cmds 10620 fi 10621 fi 10622 fi 10623 10624 if test -n "$delfiles"; then 10625 # Append the command to remove temporary files to $cmds. 10626 eval cmds=\"\$cmds~\$RM $delfiles\" 10627 fi 10628 10629 # Add any objects from preloaded convenience libraries 10630 if test -n "$dlprefiles"; then 10631 gentop=$output_objdir/${outputname}x 10632 func_append generated " $gentop" 10633 10634 func_extract_archives $gentop $dlprefiles 10635 func_append libobjs " $func_extract_archives_result" 10636 test "X$libobjs" = "X " && libobjs= 10637 fi 10638 10639 save_ifs=$IFS; IFS='~' 10640 for cmd in $cmds; do 10641 IFS=$sp$nl 10642 eval cmd=\"$cmd\" 10643 IFS=$save_ifs 10644 $opt_quiet || { 10645 func_quote_for_expand "$cmd" 10646 eval "func_echo $func_quote_for_expand_result" 10647 } 10648 $opt_dry_run || eval "$cmd" || { 10649 lt_exit=$? 10650 10651 # Restore the uninstalled library and exit 10652 if test relink = "$opt_mode"; then 10653 ( cd "$output_objdir" && \ 10654 $RM "${realname}T" && \ 10655 $MV "${realname}U" "$realname" ) 10656 fi 10657 10658 exit $lt_exit 10659 } 10660 done 10661 IFS=$save_ifs 10662 10663 # Restore the uninstalled library and exit 10664 if test relink = "$opt_mode"; then 10665 $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? 10666 10667 if test -n "$convenience"; then 10668 if test -z "$whole_archive_flag_spec"; then 10669 func_show_eval '${RM}r "$gentop"' 10670 fi 10671 fi 10672 10673 exit $EXIT_SUCCESS 10674 fi 10675 10676 # Create links to the real library. 10677 for linkname in $linknames; do 10678 if test "$realname" != "$linkname"; then 10679 func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' 10680 fi 10681 done 10682 10683 # If -module or -export-dynamic was specified, set the dlname. 10684 if test yes = "$module" || test yes = "$export_dynamic"; then 10685 # On all known operating systems, these are identical. 10686 dlname=$soname 10687 fi 10688 fi 10689 ;; 10690 10691 obj) 10692 if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then 10693 func_warning "'-dlopen' is ignored for objects" 10694 fi 10695 10696 case " $deplibs" in 10697 *\ -l* | *\ -L*) 10698 func_warning "'-l' and '-L' are ignored for objects" ;; 10699 esac 10700 10701 test -n "$rpath" && \ 10702 func_warning "'-rpath' is ignored for objects" 10703 10704 test -n "$xrpath" && \ 10705 func_warning "'-R' is ignored for objects" 10706 10707 test -n "$vinfo" && \ 10708 func_warning "'-version-info' is ignored for objects" 10709 10710 test -n "$release" && \ 10711 func_warning "'-release' is ignored for objects" 10712 10713 case $output in 10714 *.lo) 10715 test -n "$objs$old_deplibs" && \ 10716 func_fatal_error "cannot build library object '$output' from non-libtool objects" 10717 10718 libobj=$output 10719 func_lo2o "$libobj" 10720 obj=$func_lo2o_result 10721 ;; 10722 *) 10723 libobj= 10724 obj=$output 10725 ;; 10726 esac 10727 10728 # Delete the old objects. 10729 $opt_dry_run || $RM $obj $libobj 10730 10731 # Objects from convenience libraries. This assumes 10732 # single-version convenience libraries. Whenever we create 10733 # different ones for PIC/non-PIC, this we'll have to duplicate 10734 # the extraction. 10735 reload_conv_objs= 10736 gentop= 10737 # if reload_cmds runs $LD directly, get rid of -Wl from 10738 # whole_archive_flag_spec and hope we can get by with turning comma 10739 # into space. 10740 case $reload_cmds in 10741 *\$LD[\ \$]*) wl= ;; 10742 esac 10743 if test -n "$convenience"; then 10744 if test -n "$whole_archive_flag_spec"; then 10745 eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" 10746 test -n "$wl" || tmp_whole_archive_flags=`$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` 10747 reload_conv_objs=$reload_objs\ $tmp_whole_archive_flags 10748 else 10749 gentop=$output_objdir/${obj}x 10750 func_append generated " $gentop" 10751 10752 func_extract_archives $gentop $convenience 10753 reload_conv_objs="$reload_objs $func_extract_archives_result" 10754 fi 10755 fi 10756 10757 # If we're not building shared, we need to use non_pic_objs 10758 test yes = "$build_libtool_libs" || libobjs=$non_pic_objects 10759 10760 # Create the old-style object. 10761 reload_objs=$objs$old_deplibs' '`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; /\.lib$/d; $lo2o" | $NL2SP`' '$reload_conv_objs 10762 10763 output=$obj 10764 func_execute_cmds "$reload_cmds" 'exit $?' 10765 10766 # Exit if we aren't doing a library object file. 10767 if test -z "$libobj"; then 10768 if test -n "$gentop"; then 10769 func_show_eval '${RM}r "$gentop"' 10770 fi 10771 10772 exit $EXIT_SUCCESS 10773 fi 10774 10775 test yes = "$build_libtool_libs" || { 10776 if test -n "$gentop"; then 10777 func_show_eval '${RM}r "$gentop"' 10778 fi 10779 10780 # Create an invalid libtool object if no PIC, so that we don't 10781 # accidentally link it into a program. 10782 # $show "echo timestamp > $libobj" 10783 # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? 10784 exit $EXIT_SUCCESS 10785 } 10786 10787 if test -n "$pic_flag" || test default != "$pic_mode"; then 10788 # Only do commands if we really have different PIC objects. 10789 reload_objs="$libobjs $reload_conv_objs" 10790 output=$libobj 10791 func_execute_cmds "$reload_cmds" 'exit $?' 10792 fi 10793 10794 if test -n "$gentop"; then 10795 func_show_eval '${RM}r "$gentop"' 10796 fi 10797 10798 exit $EXIT_SUCCESS 10799 ;; 10800 10801 prog) 10802 case $host in 10803 *cygwin*) func_stripname '' '.exe' "$output" 10804 output=$func_stripname_result.exe;; 10805 esac 10806 test -n "$vinfo" && \ 10807 func_warning "'-version-info' is ignored for programs" 10808 10809 test -n "$release" && \ 10810 func_warning "'-release' is ignored for programs" 10811 10812 $preload \ 10813 && test unknown,unknown,unknown = "$dlopen_support,$dlopen_self,$dlopen_self_static" \ 10814 && func_warning "'LT_INIT([dlopen])' not used. Assuming no dlopen support." 10815 10816 case $host in 10817 *-*-rhapsody* | *-*-darwin1.[012]) 10818 # On Rhapsody replace the C library is the System framework 10819 compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` 10820 finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` 10821 ;; 10822 esac 10823 10824 case $host in 10825 *-*-darwin*) 10826 # Don't allow lazy linking, it breaks C++ global constructors 10827 # But is supposedly fixed on 10.4 or later (yay!). 10828 if test CXX = "$tagname"; then 10829 case ${MACOSX_DEPLOYMENT_TARGET-10.0} in 10830 10.[0123]) 10831 func_append compile_command " $wl-bind_at_load" 10832 func_append finalize_command " $wl-bind_at_load" 10833 ;; 10834 esac 10835 fi 10836 # Time to change all our "foo.ltframework" stuff back to "-framework foo" 10837 compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 10838 finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 10839 ;; 10840 esac 10841 10842 10843 # move library search paths that coincide with paths to not yet 10844 # installed libraries to the beginning of the library search list 10845 new_libs= 10846 for path in $notinst_path; do 10847 case " $new_libs " in 10848 *" -L$path/$objdir "*) ;; 10849 *) 10850 case " $compile_deplibs " in 10851 *" -L$path/$objdir "*) 10852 func_append new_libs " -L$path/$objdir" ;; 10853 esac 10854 ;; 10855 esac 10856 done 10857 for deplib in $compile_deplibs; do 10858 case $deplib in 10859 -L*) 10860 case " $new_libs " in 10861 *" $deplib "*) ;; 10862 *) func_append new_libs " $deplib" ;; 10863 esac 10864 ;; 10865 *) func_append new_libs " $deplib" ;; 10866 esac 10867 done 10868 compile_deplibs=$new_libs 10869 10870 10871 func_append compile_command " $compile_deplibs" 10872 func_append finalize_command " $finalize_deplibs" 10873 10874 if test -n "$rpath$xrpath"; then 10875 # If the user specified any rpath flags, then add them. 10876 for libdir in $rpath $xrpath; do 10877 # This is the magic to use -rpath. 10878 case "$finalize_rpath " in 10879 *" $libdir "*) ;; 10880 *) func_append finalize_rpath " $libdir" ;; 10881 esac 10882 done 10883 fi 10884 10885 # Now hardcode the library paths 10886 rpath= 10887 hardcode_libdirs= 10888 for libdir in $compile_rpath $finalize_rpath; do 10889 if test -n "$hardcode_libdir_flag_spec"; then 10890 if test -n "$hardcode_libdir_separator"; then 10891 if test -z "$hardcode_libdirs"; then 10892 hardcode_libdirs=$libdir 10893 else 10894 # Just accumulate the unique libdirs. 10895 case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 10896 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 10897 ;; 10898 *) 10899 func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" 10900 ;; 10901 esac 10902 fi 10903 else 10904 eval flag=\"$hardcode_libdir_flag_spec\" 10905 func_append rpath " $flag" 10906 fi 10907 elif test -n "$runpath_var"; then 10908 case "$perm_rpath " in 10909 *" $libdir "*) ;; 10910 *) func_append perm_rpath " $libdir" ;; 10911 esac 10912 fi 10913 case $host in 10914 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 10915 testbindir=`$ECHO "$libdir" | $SED -e 's*/lib$*/bin*'` 10916 case :$dllsearchpath: in 10917 *":$libdir:"*) ;; 10918 ::) dllsearchpath=$libdir;; 10919 *) func_append dllsearchpath ":$libdir";; 10920 esac 10921 case :$dllsearchpath: in 10922 *":$testbindir:"*) ;; 10923 ::) dllsearchpath=$testbindir;; 10924 *) func_append dllsearchpath ":$testbindir";; 10925 esac 10926 ;; 10927 esac 10928 done 10929 # Substitute the hardcoded libdirs into the rpath. 10930 if test -n "$hardcode_libdir_separator" && 10931 test -n "$hardcode_libdirs"; then 10932 libdir=$hardcode_libdirs 10933 eval rpath=\" $hardcode_libdir_flag_spec\" 10934 fi 10935 compile_rpath=$rpath 10936 10937 rpath= 10938 hardcode_libdirs= 10939 for libdir in $finalize_rpath; do 10940 if test -n "$hardcode_libdir_flag_spec"; then 10941 if test -n "$hardcode_libdir_separator"; then 10942 if test -z "$hardcode_libdirs"; then 10943 hardcode_libdirs=$libdir 10944 else 10945 # Just accumulate the unique libdirs. 10946 case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 10947 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 10948 ;; 10949 *) 10950 func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" 10951 ;; 10952 esac 10953 fi 10954 else 10955 eval flag=\"$hardcode_libdir_flag_spec\" 10956 func_append rpath " $flag" 10957 fi 10958 elif test -n "$runpath_var"; then 10959 case "$finalize_perm_rpath " in 10960 *" $libdir "*) ;; 10961 *) func_append finalize_perm_rpath " $libdir" ;; 10962 esac 10963 fi 10964 done 10965 # Substitute the hardcoded libdirs into the rpath. 10966 if test -n "$hardcode_libdir_separator" && 10967 test -n "$hardcode_libdirs"; then 10968 libdir=$hardcode_libdirs 10969 eval rpath=\" $hardcode_libdir_flag_spec\" 10970 fi 10971 finalize_rpath=$rpath 10972 10973 if test -n "$libobjs" && test yes = "$build_old_libs"; then 10974 # Transform all the library objects into standard objects. 10975 compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` 10976 finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` 10977 fi 10978 10979 func_generate_dlsyms "$outputname" "@PROGRAM@" false 10980 10981 # template prelinking step 10982 if test -n "$prelink_cmds"; then 10983 func_execute_cmds "$prelink_cmds" 'exit $?' 10984 fi 10985 10986 wrappers_required=: 10987 case $host in 10988 *cegcc* | *mingw32ce*) 10989 # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. 10990 wrappers_required=false 10991 ;; 10992 *cygwin* | *mingw* ) 10993 test yes = "$build_libtool_libs" || wrappers_required=false 10994 ;; 10995 *) 10996 if test no = "$need_relink" || test yes != "$build_libtool_libs"; then 10997 wrappers_required=false 10998 fi 10999 ;; 11000 esac 11001 $wrappers_required || { 11002 # Replace the output file specification. 11003 compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` 11004 link_command=$compile_command$compile_rpath 11005 11006 # We have no uninstalled library dependencies, so finalize right now. 11007 exit_status=0 11008 func_show_eval "$link_command" 'exit_status=$?' 11009 11010 if test -n "$postlink_cmds"; then 11011 func_to_tool_file "$output" 11012 postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` 11013 func_execute_cmds "$postlink_cmds" 'exit $?' 11014 fi 11015 11016 # Delete the generated files. 11017 if test -f "$output_objdir/${outputname}S.$objext"; then 11018 func_show_eval '$RM "$output_objdir/${outputname}S.$objext"' 11019 fi 11020 11021 exit $exit_status 11022 } 11023 11024 if test -n "$compile_shlibpath$finalize_shlibpath"; then 11025 compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" 11026 fi 11027 if test -n "$finalize_shlibpath"; then 11028 finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" 11029 fi 11030 11031 compile_var= 11032 finalize_var= 11033 if test -n "$runpath_var"; then 11034 if test -n "$perm_rpath"; then 11035 # We should set the runpath_var. 11036 rpath= 11037 for dir in $perm_rpath; do 11038 func_append rpath "$dir:" 11039 done 11040 compile_var="$runpath_var=\"$rpath\$$runpath_var\" " 11041 fi 11042 if test -n "$finalize_perm_rpath"; then 11043 # We should set the runpath_var. 11044 rpath= 11045 for dir in $finalize_perm_rpath; do 11046 func_append rpath "$dir:" 11047 done 11048 finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " 11049 fi 11050 fi 11051 11052 if test yes = "$no_install"; then 11053 # We don't need to create a wrapper script. 11054 link_command=$compile_var$compile_command$compile_rpath 11055 # Replace the output file specification. 11056 link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` 11057 # Delete the old output file. 11058 $opt_dry_run || $RM $output 11059 # Link the executable and exit 11060 func_show_eval "$link_command" 'exit $?' 11061 11062 if test -n "$postlink_cmds"; then 11063 func_to_tool_file "$output" 11064 postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` 11065 func_execute_cmds "$postlink_cmds" 'exit $?' 11066 fi 11067 11068 exit $EXIT_SUCCESS 11069 fi 11070 11071 case $hardcode_action,$fast_install in 11072 relink,*) 11073 # Fast installation is not supported 11074 link_command=$compile_var$compile_command$compile_rpath 11075 relink_command=$finalize_var$finalize_command$finalize_rpath 11076 11077 func_warning "this platform does not like uninstalled shared libraries" 11078 func_warning "'$output' will be relinked during installation" 11079 ;; 11080 *,yes) 11081 link_command=$finalize_var$compile_command$finalize_rpath 11082 relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` 11083 ;; 11084 *,no) 11085 link_command=$compile_var$compile_command$compile_rpath 11086 relink_command=$finalize_var$finalize_command$finalize_rpath 11087 ;; 11088 *,needless) 11089 link_command=$finalize_var$compile_command$finalize_rpath 11090 relink_command= 11091 ;; 11092 esac 11093 11094 # Replace the output file specification. 11095 link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` 11096 11097 # Delete the old output files. 11098 $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname 11099 11100 func_show_eval "$link_command" 'exit $?' 11101 11102 if test -n "$postlink_cmds"; then 11103 func_to_tool_file "$output_objdir/$outputname" 11104 postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` 11105 func_execute_cmds "$postlink_cmds" 'exit $?' 11106 fi 11107 11108 # Now create the wrapper script. 11109 func_verbose "creating $output" 11110 11111 # Quote the relink command for shipping. 11112 if test -n "$relink_command"; then 11113 # Preserve any variables that may affect compiler behavior 11114 for var in $variables_saved_for_relink; do 11115 if eval test -z \"\${$var+set}\"; then 11116 relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" 11117 elif eval var_value=\$$var; test -z "$var_value"; then 11118 relink_command="$var=; export $var; $relink_command" 11119 else 11120 func_quote_for_eval "$var_value" 11121 relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" 11122 fi 11123 done 11124 relink_command="(cd `pwd`; $relink_command)" 11125 relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` 11126 fi 11127 11128 # Only actually do things if not in dry run mode. 11129 $opt_dry_run || { 11130 # win32 will think the script is a binary if it has 11131 # a .exe suffix, so we strip it off here. 11132 case $output in 11133 *.exe) func_stripname '' '.exe' "$output" 11134 output=$func_stripname_result ;; 11135 esac 11136 # test for cygwin because mv fails w/o .exe extensions 11137 case $host in 11138 *cygwin*) 11139 exeext=.exe 11140 func_stripname '' '.exe' "$outputname" 11141 outputname=$func_stripname_result ;; 11142 *) exeext= ;; 11143 esac 11144 case $host in 11145 *cygwin* | *mingw* ) 11146 func_dirname_and_basename "$output" "" "." 11147 output_name=$func_basename_result 11148 output_path=$func_dirname_result 11149 cwrappersource=$output_path/$objdir/lt-$output_name.c 11150 cwrapper=$output_path/$output_name.exe 11151 $RM $cwrappersource $cwrapper 11152 trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 11153 11154 func_emit_cwrapperexe_src > $cwrappersource 11155 11156 # The wrapper executable is built using the $host compiler, 11157 # because it contains $host paths and files. If cross- 11158 # compiling, it, like the target executable, must be 11159 # executed on the $host or under an emulation environment. 11160 $opt_dry_run || { 11161 $LTCC $LTCFLAGS -o $cwrapper $cwrappersource 11162 $STRIP $cwrapper 11163 } 11164 11165 # Now, create the wrapper script for func_source use: 11166 func_ltwrapper_scriptname $cwrapper 11167 $RM $func_ltwrapper_scriptname_result 11168 trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 11169 $opt_dry_run || { 11170 # note: this script will not be executed, so do not chmod. 11171 if test "x$build" = "x$host"; then 11172 $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result 11173 else 11174 func_emit_wrapper no > $func_ltwrapper_scriptname_result 11175 fi 11176 } 11177 ;; 11178 * ) 11179 $RM $output 11180 trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 11181 11182 func_emit_wrapper no > $output 11183 chmod +x $output 11184 ;; 11185 esac 11186 } 11187 exit $EXIT_SUCCESS 11188 ;; 11189 esac 11190 11191 # See if we need to build an old-fashioned archive. 11192 for oldlib in $oldlibs; do 11193 11194 case $build_libtool_libs in 11195 convenience) 11196 oldobjs="$libobjs_save $symfileobj" 11197 addlibs=$convenience 11198 build_libtool_libs=no 11199 ;; 11200 module) 11201 oldobjs=$libobjs_save 11202 addlibs=$old_convenience 11203 build_libtool_libs=no 11204 ;; 11205 *) 11206 oldobjs="$old_deplibs $non_pic_objects" 11207 $preload && test -f "$symfileobj" \ 11208 && func_append oldobjs " $symfileobj" 11209 addlibs=$old_convenience 11210 ;; 11211 esac 11212 11213 if test -n "$addlibs"; then 11214 gentop=$output_objdir/${outputname}x 11215 func_append generated " $gentop" 11216 11217 func_extract_archives $gentop $addlibs 11218 func_append oldobjs " $func_extract_archives_result" 11219 fi 11220 11221 # Do each command in the archive commands. 11222 if test -n "$old_archive_from_new_cmds" && test yes = "$build_libtool_libs"; then 11223 cmds=$old_archive_from_new_cmds 11224 else 11225 11226 # Add any objects from preloaded convenience libraries 11227 if test -n "$dlprefiles"; then 11228 gentop=$output_objdir/${outputname}x 11229 func_append generated " $gentop" 11230 11231 func_extract_archives $gentop $dlprefiles 11232 func_append oldobjs " $func_extract_archives_result" 11233 fi 11234 11235 # POSIX demands no paths to be encoded in archives. We have 11236 # to avoid creating archives with duplicate basenames if we 11237 # might have to extract them afterwards, e.g., when creating a 11238 # static archive out of a convenience library, or when linking 11239 # the entirety of a libtool archive into another (currently 11240 # not supported by libtool). 11241 if (for obj in $oldobjs 11242 do 11243 func_basename "$obj" 11244 $ECHO "$func_basename_result" 11245 done | sort | sort -uc >/dev/null 2>&1); then 11246 : 11247 else 11248 echo "copying selected object files to avoid basename conflicts..." 11249 gentop=$output_objdir/${outputname}x 11250 func_append generated " $gentop" 11251 func_mkdir_p "$gentop" 11252 save_oldobjs=$oldobjs 11253 oldobjs= 11254 counter=1 11255 for obj in $save_oldobjs 11256 do 11257 func_basename "$obj" 11258 objbase=$func_basename_result 11259 case " $oldobjs " in 11260 " ") oldobjs=$obj ;; 11261 *[\ /]"$objbase "*) 11262 while :; do 11263 # Make sure we don't pick an alternate name that also 11264 # overlaps. 11265 newobj=lt$counter-$objbase 11266 func_arith $counter + 1 11267 counter=$func_arith_result 11268 case " $oldobjs " in 11269 *[\ /]"$newobj "*) ;; 11270 *) if test ! -f "$gentop/$newobj"; then break; fi ;; 11271 esac 11272 done 11273 func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" 11274 func_append oldobjs " $gentop/$newobj" 11275 ;; 11276 *) func_append oldobjs " $obj" ;; 11277 esac 11278 done 11279 fi 11280 func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 11281 tool_oldlib=$func_to_tool_file_result 11282 eval cmds=\"$old_archive_cmds\" 11283 11284 func_len " $cmds" 11285 len=$func_len_result 11286 if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then 11287 cmds=$old_archive_cmds 11288 elif test -n "$archiver_list_spec"; then 11289 func_verbose "using command file archive linking..." 11290 for obj in $oldobjs 11291 do 11292 func_to_tool_file "$obj" 11293 $ECHO "$func_to_tool_file_result" 11294 done > $output_objdir/$libname.libcmd 11295 func_to_tool_file "$output_objdir/$libname.libcmd" 11296 oldobjs=" $archiver_list_spec$func_to_tool_file_result" 11297 cmds=$old_archive_cmds 11298 else 11299 # the command line is too long to link in one step, link in parts 11300 func_verbose "using piecewise archive linking..." 11301 save_RANLIB=$RANLIB 11302 RANLIB=: 11303 objlist= 11304 concat_cmds= 11305 save_oldobjs=$oldobjs 11306 oldobjs= 11307 # Is there a better way of finding the last object in the list? 11308 for obj in $save_oldobjs 11309 do 11310 last_oldobj=$obj 11311 done 11312 eval test_cmds=\"$old_archive_cmds\" 11313 func_len " $test_cmds" 11314 len0=$func_len_result 11315 len=$len0 11316 for obj in $save_oldobjs 11317 do 11318 func_len " $obj" 11319 func_arith $len + $func_len_result 11320 len=$func_arith_result 11321 func_append objlist " $obj" 11322 if test "$len" -lt "$max_cmd_len"; then 11323 : 11324 else 11325 # the above command should be used before it gets too long 11326 oldobjs=$objlist 11327 if test "$obj" = "$last_oldobj"; then 11328 RANLIB=$save_RANLIB 11329 fi 11330 test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 11331 eval concat_cmds=\"\$concat_cmds$old_archive_cmds\" 11332 objlist= 11333 len=$len0 11334 fi 11335 done 11336 RANLIB=$save_RANLIB 11337 oldobjs=$objlist 11338 if test -z "$oldobjs"; then 11339 eval cmds=\"\$concat_cmds\" 11340 else 11341 eval cmds=\"\$concat_cmds~\$old_archive_cmds\" 11342 fi 11343 fi 11344 fi 11345 func_execute_cmds "$cmds" 'exit $?' 11346 done 11347 11348 test -n "$generated" && \ 11349 func_show_eval "${RM}r$generated" 11350 11351 # Now create the libtool archive. 11352 case $output in 11353 *.la) 11354 old_library= 11355 test yes = "$build_old_libs" && old_library=$libname.$libext 11356 func_verbose "creating $output" 11357 11358 # Preserve any variables that may affect compiler behavior 11359 for var in $variables_saved_for_relink; do 11360 if eval test -z \"\${$var+set}\"; then 11361 relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" 11362 elif eval var_value=\$$var; test -z "$var_value"; then 11363 relink_command="$var=; export $var; $relink_command" 11364 else 11365 func_quote_for_eval "$var_value" 11366 relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" 11367 fi 11368 done 11369 # Quote the link command for shipping. 11370 relink_command="(cd `pwd`; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" 11371 relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` 11372 if test yes = "$hardcode_automatic"; then 11373 relink_command= 11374 fi 11375 11376 # Only create the output if not a dry run. 11377 $opt_dry_run || { 11378 for installed in no yes; do 11379 if test yes = "$installed"; then 11380 if test -z "$install_libdir"; then 11381 break 11382 fi 11383 output=$output_objdir/${outputname}i 11384 # Replace all uninstalled libtool libraries with the installed ones 11385 newdependency_libs= 11386 for deplib in $dependency_libs; do 11387 case $deplib in 11388 *.la) 11389 func_basename "$deplib" 11390 name=$func_basename_result 11391 func_resolve_sysroot "$deplib" 11392 eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` 11393 test -z "$libdir" && \ 11394 func_fatal_error "'$deplib' is not a valid libtool archive" 11395 func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" 11396 ;; 11397 -L*) 11398 func_stripname -L '' "$deplib" 11399 func_replace_sysroot "$func_stripname_result" 11400 func_append newdependency_libs " -L$func_replace_sysroot_result" 11401 ;; 11402 -R*) 11403 func_stripname -R '' "$deplib" 11404 func_replace_sysroot "$func_stripname_result" 11405 func_append newdependency_libs " -R$func_replace_sysroot_result" 11406 ;; 11407 *) func_append newdependency_libs " $deplib" ;; 11408 esac 11409 done 11410 dependency_libs=$newdependency_libs 11411 newdlfiles= 11412 11413 for lib in $dlfiles; do 11414 case $lib in 11415 *.la) 11416 func_basename "$lib" 11417 name=$func_basename_result 11418 eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 11419 test -z "$libdir" && \ 11420 func_fatal_error "'$lib' is not a valid libtool archive" 11421 func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" 11422 ;; 11423 *) func_append newdlfiles " $lib" ;; 11424 esac 11425 done 11426 dlfiles=$newdlfiles 11427 newdlprefiles= 11428 for lib in $dlprefiles; do 11429 case $lib in 11430 *.la) 11431 # Only pass preopened files to the pseudo-archive (for 11432 # eventual linking with the app. that links it) if we 11433 # didn't already link the preopened objects directly into 11434 # the library: 11435 func_basename "$lib" 11436 name=$func_basename_result 11437 eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 11438 test -z "$libdir" && \ 11439 func_fatal_error "'$lib' is not a valid libtool archive" 11440 func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" 11441 ;; 11442 esac 11443 done 11444 dlprefiles=$newdlprefiles 11445 else 11446 newdlfiles= 11447 for lib in $dlfiles; do 11448 case $lib in 11449 [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; 11450 *) abs=`pwd`"/$lib" ;; 11451 esac 11452 func_append newdlfiles " $abs" 11453 done 11454 dlfiles=$newdlfiles 11455 newdlprefiles= 11456 for lib in $dlprefiles; do 11457 case $lib in 11458 [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; 11459 *) abs=`pwd`"/$lib" ;; 11460 esac 11461 func_append newdlprefiles " $abs" 11462 done 11463 dlprefiles=$newdlprefiles 11464 fi 11465 $RM $output 11466 # place dlname in correct position for cygwin 11467 # In fact, it would be nice if we could use this code for all target 11468 # systems that can't hard-code library paths into their executables 11469 # and that have no shared library path variable independent of PATH, 11470 # but it turns out we can't easily determine that from inspecting 11471 # libtool variables, so we have to hard-code the OSs to which it 11472 # applies here; at the moment, that means platforms that use the PE 11473 # object format with DLL files. See the long comment at the top of 11474 # tests/bindir.at for full details. 11475 tdlname=$dlname 11476 case $host,$output,$installed,$module,$dlname in 11477 *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) 11478 # If a -bindir argument was supplied, place the dll there. 11479 if test -n "$bindir"; then 11480 func_relative_path "$install_libdir" "$bindir" 11481 tdlname=$func_relative_path_result/$dlname 11482 else 11483 # Otherwise fall back on heuristic. 11484 tdlname=../bin/$dlname 11485 fi 11486 ;; 11487 esac 11488 $ECHO > $output "\ 11489# $outputname - a libtool library file 11490# Generated by $PROGRAM (GNU $PACKAGE) $VERSION 11491# 11492# Please DO NOT delete this file! 11493# It is necessary for linking the library. 11494 11495# The name that we can dlopen(3). 11496dlname='$tdlname' 11497 11498# Names of this library. 11499library_names='$library_names' 11500 11501# The name of the static archive. 11502old_library='$old_library' 11503 11504# Linker flags that cannot go in dependency_libs. 11505inherited_linker_flags='$new_inherited_linker_flags' 11506 11507# Libraries that this one depends upon. 11508dependency_libs='$dependency_libs' 11509 11510# Names of additional weak libraries provided by this library 11511weak_library_names='$weak_libs' 11512 11513# Version information for $libname. 11514current=$current 11515age=$age 11516revision=$revision 11517 11518# Is this an already installed library? 11519installed=$installed 11520 11521# Should we warn about portability when linking against -modules? 11522shouldnotlink=$module 11523 11524# Files to dlopen/dlpreopen 11525dlopen='$dlfiles' 11526dlpreopen='$dlprefiles' 11527 11528# Directory that this library needs to be installed in: 11529libdir='$install_libdir'" 11530 if test no,yes = "$installed,$need_relink"; then 11531 $ECHO >> $output "\ 11532relink_command=\"$relink_command\"" 11533 fi 11534 done 11535 } 11536 11537 # Do a symbolic link so that the libtool archive can be found in 11538 # LD_LIBRARY_PATH before the program is installed. 11539 func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' 11540 ;; 11541 esac 11542 exit $EXIT_SUCCESS 11543} 11544 11545if test link = "$opt_mode" || test relink = "$opt_mode"; then 11546 func_mode_link ${1+"$@"} 11547fi 11548 11549 11550# func_mode_uninstall arg... 11551func_mode_uninstall () 11552{ 11553 $debug_cmd 11554 11555 RM=$nonopt 11556 files= 11557 rmforce=false 11558 exit_status=0 11559 11560 # This variable tells wrapper scripts just to set variables rather 11561 # than running their programs. 11562 libtool_install_magic=$magic 11563 11564 for arg 11565 do 11566 case $arg in 11567 -f) func_append RM " $arg"; rmforce=: ;; 11568 -*) func_append RM " $arg" ;; 11569 *) func_append files " $arg" ;; 11570 esac 11571 done 11572 11573 test -z "$RM" && \ 11574 func_fatal_help "you must specify an RM program" 11575 11576 rmdirs= 11577 11578 for file in $files; do 11579 func_dirname "$file" "" "." 11580 dir=$func_dirname_result 11581 if test . = "$dir"; then 11582 odir=$objdir 11583 else 11584 odir=$dir/$objdir 11585 fi 11586 func_basename "$file" 11587 name=$func_basename_result 11588 test uninstall = "$opt_mode" && odir=$dir 11589 11590 # Remember odir for removal later, being careful to avoid duplicates 11591 if test clean = "$opt_mode"; then 11592 case " $rmdirs " in 11593 *" $odir "*) ;; 11594 *) func_append rmdirs " $odir" ;; 11595 esac 11596 fi 11597 11598 # Don't error if the file doesn't exist and rm -f was used. 11599 if { test -L "$file"; } >/dev/null 2>&1 || 11600 { test -h "$file"; } >/dev/null 2>&1 || 11601 test -f "$file"; then 11602 : 11603 elif test -d "$file"; then 11604 exit_status=1 11605 continue 11606 elif $rmforce; then 11607 continue 11608 fi 11609 11610 rmfiles=$file 11611 11612 case $name in 11613 *.la) 11614 # Possibly a libtool archive, so verify it. 11615 if func_lalib_p "$file"; then 11616 func_source $dir/$name 11617 11618 # Delete the libtool libraries and symlinks. 11619 for n in $library_names; do 11620 func_append rmfiles " $odir/$n" 11621 done 11622 test -n "$old_library" && func_append rmfiles " $odir/$old_library" 11623 11624 case $opt_mode in 11625 clean) 11626 case " $library_names " in 11627 *" $dlname "*) ;; 11628 *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; 11629 esac 11630 test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" 11631 ;; 11632 uninstall) 11633 if test -n "$library_names"; then 11634 # Do each command in the postuninstall commands. 11635 func_execute_cmds "$postuninstall_cmds" '$rmforce || exit_status=1' 11636 fi 11637 11638 if test -n "$old_library"; then 11639 # Do each command in the old_postuninstall commands. 11640 func_execute_cmds "$old_postuninstall_cmds" '$rmforce || exit_status=1' 11641 fi 11642 # FIXME: should reinstall the best remaining shared library. 11643 ;; 11644 esac 11645 fi 11646 ;; 11647 11648 *.lo) 11649 # Possibly a libtool object, so verify it. 11650 if func_lalib_p "$file"; then 11651 11652 # Read the .lo file 11653 func_source $dir/$name 11654 11655 # Add PIC object to the list of files to remove. 11656 if test -n "$pic_object" && test none != "$pic_object"; then 11657 func_append rmfiles " $dir/$pic_object" 11658 fi 11659 11660 # Add non-PIC object to the list of files to remove. 11661 if test -n "$non_pic_object" && test none != "$non_pic_object"; then 11662 func_append rmfiles " $dir/$non_pic_object" 11663 fi 11664 fi 11665 ;; 11666 11667 *) 11668 if test clean = "$opt_mode"; then 11669 noexename=$name 11670 case $file in 11671 *.exe) 11672 func_stripname '' '.exe' "$file" 11673 file=$func_stripname_result 11674 func_stripname '' '.exe' "$name" 11675 noexename=$func_stripname_result 11676 # $file with .exe has already been added to rmfiles, 11677 # add $file without .exe 11678 func_append rmfiles " $file" 11679 ;; 11680 esac 11681 # Do a test to see if this is a libtool program. 11682 if func_ltwrapper_p "$file"; then 11683 if func_ltwrapper_executable_p "$file"; then 11684 func_ltwrapper_scriptname "$file" 11685 relink_command= 11686 func_source $func_ltwrapper_scriptname_result 11687 func_append rmfiles " $func_ltwrapper_scriptname_result" 11688 else 11689 relink_command= 11690 func_source $dir/$noexename 11691 fi 11692 11693 # note $name still contains .exe if it was in $file originally 11694 # as does the version of $file that was added into $rmfiles 11695 func_append rmfiles " $odir/$name $odir/${name}S.$objext" 11696 if test yes = "$fast_install" && test -n "$relink_command"; then 11697 func_append rmfiles " $odir/lt-$name" 11698 fi 11699 if test "X$noexename" != "X$name"; then 11700 func_append rmfiles " $odir/lt-$noexename.c" 11701 fi 11702 fi 11703 fi 11704 ;; 11705 esac 11706 func_show_eval "$RM $rmfiles" 'exit_status=1' 11707 done 11708 11709 # Try to remove the $objdir's in the directories where we deleted files 11710 for dir in $rmdirs; do 11711 if test -d "$dir"; then 11712 func_show_eval "rmdir $dir >/dev/null 2>&1" 11713 fi 11714 done 11715 11716 exit $exit_status 11717} 11718 11719if test uninstall = "$opt_mode" || test clean = "$opt_mode"; then 11720 func_mode_uninstall ${1+"$@"} 11721fi 11722 11723test -z "$opt_mode" && { 11724 help=$generic_help 11725 func_fatal_help "you must specify a MODE" 11726} 11727 11728test -z "$exec_cmd" && \ 11729 func_fatal_help "invalid operation mode '$opt_mode'" 11730 11731if test -n "$exec_cmd"; then 11732 eval exec "$exec_cmd" 11733 exit $EXIT_FAILURE 11734fi 11735 11736exit $exit_status 11737 11738 11739# The TAGs below are defined such that we never get into a situation 11740# where we disable both kinds of libraries. Given conflicting 11741# choices, we go for a static library, that is the most portable, 11742# since we can't tell whether shared libraries were disabled because 11743# the user asked for that or because the platform doesn't support 11744# them. This is particularly important on AIX, because we don't 11745# support having both static and shared libraries enabled at the same 11746# time on that platform, so we default to a shared-only configuration. 11747# If a disable-shared tag is given, we'll fallback to a static-only 11748# configuration. But we'll never go from static-only to shared-only. 11749 11750# ### BEGIN LIBTOOL TAG CONFIG: disable-shared 11751build_libtool_libs=no 11752build_old_libs=yes 11753# ### END LIBTOOL TAG CONFIG: disable-shared 11754 11755# ### BEGIN LIBTOOL TAG CONFIG: disable-static 11756build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` 11757# ### END LIBTOOL TAG CONFIG: disable-static 11758 11759# Local Variables: 11760# mode:shell-script 11761# sh-indentation:2 11762# End: 11763 11764# ### BEGIN LIBTOOL TAG CONFIG: CXX 11765 11766# The linker used to build libraries. 11767LD="/usr/bin/ld -m elf_x86_64" 11768 11769# How to create reloadable object files. 11770reload_flag=" -r" 11771reload_cmds="\$LD\$reload_flag -o \$output\$reload_objs" 11772 11773# Commands used to build an old-style archive. 11774old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs~\$RANLIB \$tool_oldlib" 11775 11776# A language specific compiler. 11777CC="gcc" 11778 11779# Is the compiler the GNU compiler? 11780with_gcc=yes 11781 11782# Compiler flag to turn off builtin functions. 11783no_builtin_flag=" -fno-builtin" 11784 11785# Additional compiler flags for building library objects. 11786pic_flag=" -fPIC -DPIC" 11787 11788# How to pass a linker flag through the compiler. 11789wl="-Wl," 11790 11791# Compiler flag to prevent dynamic linking. 11792link_static_flag="-static" 11793 11794# Does compiler simultaneously support -c and -o options? 11795compiler_c_o="yes" 11796 11797# Whether or not to add -lc for building shared libraries. 11798build_libtool_need_lc=no 11799 11800# Whether or not to disallow shared libs when runtime libs are static. 11801allow_libtool_libs_with_static_runtimes=no 11802 11803# Compiler flag to allow reflexive dlopens. 11804export_dynamic_flag_spec="\$wl--export-dynamic" 11805 11806# Compiler flag to generate shared objects directly from archives. 11807whole_archive_flag_spec="\$wl--whole-archive\$convenience \$wl--no-whole-archive" 11808 11809# Whether the compiler copes with passing no objects directly. 11810compiler_needs_object="no" 11811 11812# Create an old-style archive from a shared archive. 11813old_archive_from_new_cmds="" 11814 11815# Create a temporary old-style archive to link instead of a shared archive. 11816old_archive_from_expsyms_cmds="" 11817 11818# Commands used to build a shared archive. 11819archive_cmds="\$CC \$pic_flag -shared -nostdlib \$predep_objects \$libobjs \$deplibs \$postdep_objects \$compiler_flags \$wl-soname \$wl\$soname -o \$lib" 11820archive_expsym_cmds="\$CC \$pic_flag -shared -nostdlib \$predep_objects \$libobjs \$deplibs \$postdep_objects \$compiler_flags \$wl-soname \$wl\$soname \$wl-retain-symbols-file \$wl\$export_symbols -o \$lib" 11821 11822# Commands used to build a loadable module if different from building 11823# a shared archive. 11824module_cmds="" 11825module_expsym_cmds="" 11826 11827# Whether we are building with GNU ld or not. 11828with_gnu_ld="yes" 11829 11830# Flag that allows shared libraries with undefined symbols to be built. 11831allow_undefined_flag="" 11832 11833# Flag that enforces no undefined symbols. 11834no_undefined_flag="" 11835 11836# Flag to hardcode $libdir into a binary during linking. 11837# This must work even if $libdir does not exist 11838hardcode_libdir_flag_spec="\$wl-rpath \$wl\$libdir" 11839 11840# Whether we need a single "-rpath" flag with a separated argument. 11841hardcode_libdir_separator="" 11842 11843# Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes 11844# DIR into the resulting binary. 11845hardcode_direct=no 11846 11847# Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes 11848# DIR into the resulting binary and the resulting library dependency is 11849# "absolute",i.e impossible to change by setting $shlibpath_var if the 11850# library is relocated. 11851hardcode_direct_absolute=no 11852 11853# Set to "yes" if using the -LDIR flag during linking hardcodes DIR 11854# into the resulting binary. 11855hardcode_minus_L=no 11856 11857# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR 11858# into the resulting binary. 11859hardcode_shlibpath_var=unsupported 11860 11861# Set to "yes" if building a shared library automatically hardcodes DIR 11862# into the library and all subsequent libraries and executables linked 11863# against it. 11864hardcode_automatic=no 11865 11866# Set to yes if linker adds runtime paths of dependent libraries 11867# to runtime path list. 11868inherit_rpath=no 11869 11870# Whether libtool must link a program against all its dependency libraries. 11871link_all_deplibs=no 11872 11873# Set to "yes" if exported symbols are required. 11874always_export_symbols=no 11875 11876# The commands to list exported symbols. 11877export_symbols_cmds="\$NM \$libobjs \$convenience | \$global_symbol_pipe | \$SED 's/.* //' | sort | uniq > \$export_symbols" 11878 11879# Symbols that should not be listed in the preloaded symbols. 11880exclude_expsyms="_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*" 11881 11882# Symbols that must always be exported. 11883include_expsyms="" 11884 11885# Commands necessary for linking programs (against libraries) with templates. 11886prelink_cmds="" 11887 11888# Commands necessary for finishing linking programs. 11889postlink_cmds="" 11890 11891# Specify filename containing input files. 11892file_list_spec="" 11893 11894# How to hardcode a shared library path into an executable. 11895hardcode_action=immediate 11896 11897# The directories searched by this compiler when creating a shared library. 11898compiler_lib_search_dirs="/usr/lib/gcc/x86_64-linux-gnu/10 /usr/lib/gcc/x86_64-linux-gnu/10/../../../x86_64-linux-gnu /usr/lib/gcc/x86_64-linux-gnu/10/../../../../lib /lib/x86_64-linux-gnu /lib/../lib /usr/lib/x86_64-linux-gnu /usr/lib/../lib /usr/lib/gcc/x86_64-linux-gnu/10/../../.." 11899 11900# Dependencies to place before and after the objects being linked to 11901# create a shared library. 11902predep_objects="/usr/lib/gcc/x86_64-linux-gnu/10/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/10/crtbeginS.o" 11903postdep_objects="/usr/lib/gcc/x86_64-linux-gnu/10/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/10/../../../x86_64-linux-gnu/crtn.o" 11904predeps="" 11905postdeps="-lgcc -lgcc_s -lc -lgcc -lgcc_s" 11906 11907# The library search path used internally by the compiler when linking 11908# a shared library. 11909compiler_lib_search_path="-L/usr/lib/gcc/x86_64-linux-gnu/10 -L/usr/lib/gcc/x86_64-linux-gnu/10/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/10/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/10/../../.." 11910 11911# ### END LIBTOOL TAG CONFIG: CXX 11912