annotate src/liblo-0.26/libtool @ 83:ae30d91d2ffe

Replace these with versions built using an older toolset (so as to avoid ABI compatibilities when linking on Ubuntu 14.04 for packaging purposes)
author Chris Cannam
date Fri, 07 Feb 2020 11:51:13 +0000
parents c0fb53affa76
children
rev   line source
Chris@9 1 #! /bin/sh
Chris@4 2
Chris@4 3 # libtool - Provide generalized library-building support services.
Chris@4 4 # Generated automatically by config.status (liblo) 0.26
Chris@9 5 # Libtool was configured on host mortadella:
Chris@4 6 # NOTE: Changes made to this file will be lost: look at ltmain.sh.
Chris@4 7 #
Chris@4 8 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
Chris@4 9 # 2006, 2007, 2008 Free Software Foundation, Inc.
Chris@4 10 # Written by Gordon Matzigkeit, 1996
Chris@4 11 #
Chris@4 12 # This file is part of GNU Libtool.
Chris@4 13 #
Chris@4 14 # GNU Libtool is free software; you can redistribute it and/or
Chris@4 15 # modify it under the terms of the GNU General Public License as
Chris@4 16 # published by the Free Software Foundation; either version 2 of
Chris@4 17 # the License, or (at your option) any later version.
Chris@4 18 #
Chris@4 19 # As a special exception to the GNU General Public License,
Chris@4 20 # if you distribute this file as part of a program or library that
Chris@4 21 # is built using GNU Libtool, you may include this file under the
Chris@4 22 # same distribution terms that you use for the rest of that program.
Chris@4 23 #
Chris@4 24 # GNU Libtool is distributed in the hope that it will be useful,
Chris@4 25 # but WITHOUT ANY WARRANTY; without even the implied warranty of
Chris@4 26 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
Chris@4 27 # GNU General Public License for more details.
Chris@4 28 #
Chris@4 29 # You should have received a copy of the GNU General Public License
Chris@4 30 # along with GNU Libtool; see the file COPYING. If not, a copy
Chris@4 31 # can be downloaded from http://www.gnu.org/licenses/gpl.html, or
Chris@4 32 # obtained by writing to the Free Software Foundation, Inc.,
Chris@4 33 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Chris@4 34
Chris@4 35
Chris@4 36 # The names of the tagged configurations supported by this script.
Chris@4 37 available_tags=""
Chris@4 38
Chris@4 39 # ### BEGIN LIBTOOL CONFIG
Chris@4 40
Chris@4 41 # Whether or not to build static libraries.
Chris@9 42 build_old_libs=yes
Chris@4 43
Chris@4 44 # Whether or not to build shared libraries.
Chris@9 45 build_libtool_libs=no
Chris@4 46
Chris@4 47 # Which release of libtool.m4 was used?
Chris@4 48 macro_version=2.2.4
Chris@4 49 macro_revision=1.2976
Chris@4 50
Chris@4 51 # What type of objects to build.
Chris@4 52 pic_mode=default
Chris@4 53
Chris@4 54 # Whether or not to optimize for fast installation.
Chris@4 55 fast_install=yes
Chris@4 56
Chris@4 57 # The host system.
Chris@9 58 host_alias=i486-unknown-windows
Chris@9 59 host=i486-unknown-windows
Chris@9 60 host_os=windows
Chris@4 61
Chris@4 62 # The build system.
Chris@4 63 build_alias=
Chris@9 64 build=x86_64-unknown-linux-gnu
Chris@4 65 build_os=linux-gnu
Chris@4 66
Chris@4 67 # A sed program that does not truncate output.
Chris@9 68 SED="/usr/bin/sed"
Chris@4 69
Chris@4 70 # Sed that helps us avoid accidentally triggering echo(1) options like -n.
Chris@4 71 Xsed="$SED -e 1s/^X//"
Chris@4 72
Chris@4 73 # A grep program that handles long lines.
Chris@9 74 GREP="/usr/bin/grep"
Chris@4 75
Chris@4 76 # An ERE matcher.
Chris@9 77 EGREP="/usr/bin/grep -E"
Chris@4 78
Chris@4 79 # A literal string matcher.
Chris@9 80 FGREP="/usr/bin/grep -F"
Chris@4 81
Chris@4 82 # A BSD- or MS-compatible name lister.
Chris@9 83 NM="link -dump -symbols"
Chris@4 84
Chris@4 85 # Whether we need soft or hard links.
Chris@4 86 LN_S="ln -s"
Chris@4 87
Chris@4 88 # What is the maximum length of a command?
Chris@4 89 max_cmd_len=1572864
Chris@4 90
Chris@4 91 # Object file suffix (normally "o").
Chris@4 92 objext=o
Chris@4 93
Chris@4 94 # Executable file suffix (normally "").
Chris@4 95 exeext=
Chris@4 96
Chris@4 97 # whether the shell understands "unset".
Chris@4 98 lt_unset=unset
Chris@4 99
Chris@4 100 # turn spaces into newlines.
Chris@4 101 SP2NL="tr \\040 \\012"
Chris@4 102
Chris@4 103 # turn newlines into spaces.
Chris@4 104 NL2SP="tr \\015\\012 \\040\\040"
Chris@4 105
Chris@4 106 # How to create reloadable object files.
Chris@4 107 reload_flag=" -r"
Chris@4 108 reload_cmds="\$LD\$reload_flag -o \$output\$reload_objs"
Chris@4 109
Chris@4 110 # Method to check whether dependent libraries are shared objects.
Chris@9 111 deplibs_check_method="unknown"
Chris@4 112
Chris@4 113 # Command to use when deplibs_check_method == "file_magic".
Chris@4 114 file_magic_cmd="\$MAGIC_CMD"
Chris@4 115
Chris@4 116 # The archiver.
Chris@4 117 AR="ar"
Chris@4 118 AR_FLAGS="cru"
Chris@4 119
Chris@4 120 # A symbol stripping program.
Chris@4 121 STRIP="strip"
Chris@4 122
Chris@4 123 # Commands used to install an old-style archive.
Chris@4 124 RANLIB="ranlib"
Chris@4 125 old_postinstall_cmds="chmod 644 \$oldlib~\$RANLIB \$oldlib"
Chris@4 126 old_postuninstall_cmds=""
Chris@4 127
Chris@4 128 # A C compiler.
Chris@9 129 LTCC="i486-mingw32-gcc -I/work/sonic-visualiser/sv-dependency-builds/src/liblo-0.26/../../script/win32/../..//win32-mingw/include -L/work/sonic-visualiser/sv-dependency-builds/src/liblo-0.26/../../script/win32/../..//win32-mingw/lib"
Chris@4 130
Chris@4 131 # LTCC compiler flags.
Chris@9 132 LTCFLAGS="-g -O2 -DWIN32 -D_WIN32_WINNT=0x501"
Chris@4 133
Chris@4 134 # Take the output of nm and produce a listing of raw symbols and C names.
Chris@9 135 global_symbol_pipe=""
Chris@4 136
Chris@4 137 # Transform the output of nm in a proper C declaration.
Chris@9 138 global_symbol_to_cdecl=""
Chris@4 139
Chris@4 140 # Transform the output of nm in a C name address pair.
Chris@9 141 global_symbol_to_c_name_address="sed -n -e 's/^: \\([^ ]*\\) \$/ {\\\"\\1\\\", (void *) 0},/p' -e 's/^[BCDEGRST]* \\([^ ]*\\) \\([^ ]*\\)\$/ {\"\\2\", (void *) \\&\\2},/p'"
Chris@4 142
Chris@4 143 # Transform the output of nm in a C name address pair when lib prefix is needed.
Chris@9 144 global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \\([^ ]*\\) \$/ {\\\"\\1\\\", (void *) 0},/p' -e 's/^[BCDEGRST]* \\([^ ]*\\) \\(lib[^ ]*\\)\$/ {\"\\2\", (void *) \\&\\2},/p' -e 's/^[BCDEGRST]* \\([^ ]*\\) \\([^ ]*\\)\$/ {\"lib\\2\", (void *) \\&\\2},/p'"
Chris@4 145
Chris@4 146 # The name of the directory that contains temporary libtool files.
Chris@4 147 objdir=.libs
Chris@4 148
Chris@4 149 # Shell to use when invoking shell scripts.
Chris@9 150 SHELL="/bin/sh"
Chris@4 151
Chris@4 152 # An echo program that does not interpret backslashes.
Chris@4 153 ECHO="echo"
Chris@4 154
Chris@4 155 # Used to examine libraries when file_magic_cmd begins with "file".
Chris@4 156 MAGIC_CMD=file
Chris@4 157
Chris@4 158 # Must we lock files when doing compilation?
Chris@4 159 need_locks="no"
Chris@4 160
Chris@4 161 # Tool to manipulate archived DWARF debug symbol files on Mac OS X.
Chris@4 162 DSYMUTIL=""
Chris@4 163
Chris@4 164 # Tool to change global to local symbols on Mac OS X.
Chris@4 165 NMEDIT=""
Chris@4 166
Chris@4 167 # Tool to manipulate fat objects and archives on Mac OS X.
Chris@4 168 LIPO=""
Chris@4 169
Chris@4 170 # ldd/readelf like tool for Mach-O binaries on Mac OS X.
Chris@4 171 OTOOL=""
Chris@4 172
Chris@4 173 # ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4.
Chris@4 174 OTOOL64=""
Chris@4 175
Chris@4 176 # Old archive suffix (normally "a").
Chris@4 177 libext=a
Chris@4 178
Chris@4 179 # Shared library suffix (normally ".so").
Chris@4 180 shrext_cmds=".so"
Chris@4 181
Chris@4 182 # The commands to extract the exported symbol list from a shared archive.
Chris@4 183 extract_expsyms_cmds=""
Chris@4 184
Chris@4 185 # Variables whose values should be saved in libtool wrapper scripts and
Chris@4 186 # restored at link time.
Chris@9 187 variables_saved_for_relink="PATH LD_RUN_PATH GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
Chris@4 188
Chris@4 189 # Do we need the "lib" prefix for modules?
Chris@9 190 need_lib_prefix=unknown
Chris@4 191
Chris@4 192 # Do we need a version for libraries?
Chris@9 193 need_version=unknown
Chris@4 194
Chris@4 195 # Library versioning type.
Chris@9 196 version_type=none
Chris@4 197
Chris@4 198 # Shared library runtime path variable.
Chris@4 199 runpath_var=LD_RUN_PATH
Chris@4 200
Chris@4 201 # Shared library path variable.
Chris@9 202 shlibpath_var=
Chris@4 203
Chris@4 204 # Is shlibpath searched before the hard-coded library search path?
Chris@9 205 shlibpath_overrides_runpath=unknown
Chris@4 206
Chris@4 207 # Format of library name prefix.
Chris@4 208 libname_spec="lib\$name"
Chris@4 209
Chris@4 210 # List of archive names. First name is the real one, the rest are links.
Chris@4 211 # The last name is the one that the linker finds with -lNAME
Chris@9 212 library_names_spec=""
Chris@4 213
Chris@4 214 # The coded name of the library, if different from the real name.
Chris@9 215 soname_spec=""
Chris@4 216
Chris@4 217 # Command to use after installation of a shared archive.
Chris@4 218 postinstall_cmds=""
Chris@4 219
Chris@4 220 # Command to use after uninstallation of a shared archive.
Chris@4 221 postuninstall_cmds=""
Chris@4 222
Chris@4 223 # Commands used to finish a libtool library installation in a directory.
Chris@9 224 finish_cmds=""
Chris@4 225
Chris@4 226 # As "finish_cmds", except a single script fragment to be evaled but
Chris@4 227 # not shown.
Chris@4 228 finish_eval=""
Chris@4 229
Chris@4 230 # Whether we should hardcode library paths into libraries.
Chris@9 231 hardcode_into_libs=no
Chris@4 232
Chris@4 233 # Compile-time system search path for libraries.
Chris@9 234 sys_lib_search_path_spec="/usr/lib/gcc/i486-mingw32/4.7.2 /usr/i486-mingw32/lib"
Chris@4 235
Chris@4 236 # Run-time system search path for libraries.
Chris@9 237 sys_lib_dlsearch_path_spec="/lib /usr/lib"
Chris@4 238
Chris@4 239 # Whether dlopen is supported.
Chris@4 240 dlopen_support=unknown
Chris@4 241
Chris@4 242 # Whether dlopen of programs is supported.
Chris@4 243 dlopen_self=unknown
Chris@4 244
Chris@4 245 # Whether dlopen of statically linked programs is supported.
Chris@4 246 dlopen_self_static=unknown
Chris@4 247
Chris@4 248 # Commands to strip libraries.
Chris@4 249 old_striplib="strip --strip-debug"
Chris@4 250 striplib="strip --strip-unneeded"
Chris@4 251
Chris@4 252
Chris@4 253 # The linker used to build libraries.
Chris@9 254 LD="/usr/i486-mingw32/bin/ld"
Chris@4 255
Chris@4 256 # Commands used to build an old-style archive.
Chris@4 257 old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs~\$RANLIB \$oldlib"
Chris@4 258
Chris@4 259 # A language specific compiler.
Chris@9 260 CC="i486-mingw32-gcc -I/work/sonic-visualiser/sv-dependency-builds/src/liblo-0.26/../../script/win32/../..//win32-mingw/include -L/work/sonic-visualiser/sv-dependency-builds/src/liblo-0.26/../../script/win32/../..//win32-mingw/lib"
Chris@4 261
Chris@4 262 # Is the compiler the GNU compiler?
Chris@4 263 with_gcc=yes
Chris@4 264
Chris@4 265 # Compiler flag to turn off builtin functions.
Chris@4 266 no_builtin_flag=" -fno-builtin"
Chris@4 267
Chris@4 268 # How to pass a linker flag through the compiler.
Chris@4 269 wl="-Wl,"
Chris@4 270
Chris@4 271 # Additional compiler flags for building library objects.
Chris@9 272 pic_flag=""
Chris@4 273
Chris@4 274 # Compiler flag to prevent dynamic linking.
Chris@4 275 link_static_flag="-static"
Chris@4 276
Chris@4 277 # Does compiler simultaneously support -c and -o options?
Chris@4 278 compiler_c_o="yes"
Chris@4 279
Chris@4 280 # Whether or not to add -lc for building shared libraries.
Chris@9 281 build_libtool_need_lc=yes
Chris@4 282
Chris@4 283 # Whether or not to disallow shared libs when runtime libs are static.
Chris@4 284 allow_libtool_libs_with_static_runtimes=no
Chris@4 285
Chris@4 286 # Compiler flag to allow reflexive dlopens.
Chris@4 287 export_dynamic_flag_spec="\${wl}--export-dynamic"
Chris@4 288
Chris@4 289 # Compiler flag to generate shared objects directly from archives.
Chris@4 290 whole_archive_flag_spec="\${wl}--whole-archive\$convenience \${wl}--no-whole-archive"
Chris@4 291
Chris@4 292 # Whether the compiler copes with passing no objects directly.
Chris@4 293 compiler_needs_object="no"
Chris@4 294
Chris@4 295 # Create an old-style archive from a shared archive.
Chris@4 296 old_archive_from_new_cmds=""
Chris@4 297
Chris@4 298 # Create a temporary old-style archive to link instead of a shared archive.
Chris@4 299 old_archive_from_expsyms_cmds=""
Chris@4 300
Chris@4 301 # Commands used to build a shared archive.
Chris@4 302 archive_cmds="\$CC -shared \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname -o \$lib"
Chris@9 303 archive_expsym_cmds="\$CC -shared \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname \${wl}-retain-symbols-file \$wl\$export_symbols -o \$lib"
Chris@4 304
Chris@4 305 # Commands used to build a loadable module if different from building
Chris@4 306 # a shared archive.
Chris@4 307 module_cmds=""
Chris@4 308 module_expsym_cmds=""
Chris@4 309
Chris@4 310 # Whether we are building with GNU ld or not.
Chris@4 311 with_gnu_ld="yes"
Chris@4 312
Chris@4 313 # Flag that allows shared libraries with undefined symbols to be built.
Chris@4 314 allow_undefined_flag=""
Chris@4 315
Chris@4 316 # Flag that enforces no undefined symbols.
Chris@4 317 no_undefined_flag=""
Chris@4 318
Chris@4 319 # Flag to hardcode $libdir into a binary during linking.
Chris@4 320 # This must work even if $libdir does not exist
Chris@4 321 hardcode_libdir_flag_spec="\${wl}-rpath \${wl}\$libdir"
Chris@4 322
Chris@4 323 # If ld is used when linking, flag to hardcode $libdir into a binary
Chris@4 324 # during linking. This must work even if $libdir does not exist.
Chris@4 325 hardcode_libdir_flag_spec_ld=""
Chris@4 326
Chris@4 327 # Whether we need a single "-rpath" flag with a separated argument.
Chris@4 328 hardcode_libdir_separator=""
Chris@4 329
Chris@4 330 # Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
Chris@4 331 # DIR into the resulting binary.
Chris@4 332 hardcode_direct=no
Chris@4 333
Chris@4 334 # Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
Chris@4 335 # DIR into the resulting binary and the resulting library dependency is
Chris@4 336 # "absolute",i.e impossible to change by setting ${shlibpath_var} if the
Chris@4 337 # library is relocated.
Chris@4 338 hardcode_direct_absolute=no
Chris@4 339
Chris@4 340 # Set to "yes" if using the -LDIR flag during linking hardcodes DIR
Chris@4 341 # into the resulting binary.
Chris@4 342 hardcode_minus_L=no
Chris@4 343
Chris@4 344 # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
Chris@4 345 # into the resulting binary.
Chris@4 346 hardcode_shlibpath_var=unsupported
Chris@4 347
Chris@4 348 # Set to "yes" if building a shared library automatically hardcodes DIR
Chris@4 349 # into the library and all subsequent libraries and executables linked
Chris@4 350 # against it.
Chris@4 351 hardcode_automatic=no
Chris@4 352
Chris@4 353 # Set to yes if linker adds runtime paths of dependent libraries
Chris@4 354 # to runtime path list.
Chris@4 355 inherit_rpath=no
Chris@4 356
Chris@4 357 # Whether libtool must link a program against all its dependency libraries.
Chris@4 358 link_all_deplibs=unknown
Chris@4 359
Chris@4 360 # Fix the shell variable $srcfile for the compiler.
Chris@4 361 fix_srcfile_path=""
Chris@4 362
Chris@4 363 # Set to "yes" if exported symbols are required.
Chris@4 364 always_export_symbols=no
Chris@4 365
Chris@4 366 # The commands to list exported symbols.
Chris@4 367 export_symbols_cmds="\$NM \$libobjs \$convenience | \$global_symbol_pipe | \$SED 's/.* //' | sort | uniq > \$export_symbols"
Chris@4 368
Chris@4 369 # Symbols that should not be listed in the preloaded symbols.
Chris@4 370 exclude_expsyms="_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*"
Chris@4 371
Chris@4 372 # Symbols that must always be exported.
Chris@4 373 include_expsyms=""
Chris@4 374
Chris@4 375 # Commands necessary for linking programs (against libraries) with templates.
Chris@4 376 prelink_cmds=""
Chris@4 377
Chris@4 378 # Specify filename containing input files.
Chris@4 379 file_list_spec=""
Chris@4 380
Chris@4 381 # How to hardcode a shared library path into an executable.
Chris@4 382 hardcode_action=immediate
Chris@4 383
Chris@4 384 # ### END LIBTOOL CONFIG
Chris@4 385
Chris@4 386 # Generated from ltmain.m4sh.
Chris@4 387
Chris@4 388 # ltmain.sh (GNU libtool) 2.2.4
Chris@4 389 # Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
Chris@4 390
Chris@4 391 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 2008 Free Software Foundation, Inc.
Chris@4 392 # This is free software; see the source for copying conditions. There is NO
Chris@4 393 # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Chris@4 394
Chris@4 395 # GNU Libtool is free software; you can redistribute it and/or modify
Chris@4 396 # it under the terms of the GNU General Public License as published by
Chris@4 397 # the Free Software Foundation; either version 2 of the License, or
Chris@4 398 # (at your option) any later version.
Chris@4 399 #
Chris@4 400 # As a special exception to the GNU General Public License,
Chris@4 401 # if you distribute this file as part of a program or library that
Chris@4 402 # is built using GNU Libtool, you may include this file under the
Chris@4 403 # same distribution terms that you use for the rest of that program.
Chris@4 404 #
Chris@4 405 # GNU Libtool is distributed in the hope that it will be useful, but
Chris@4 406 # WITHOUT ANY WARRANTY; without even the implied warranty of
Chris@4 407 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Chris@4 408 # General Public License for more details.
Chris@4 409 #
Chris@4 410 # You should have received a copy of the GNU General Public License
Chris@4 411 # along with GNU Libtool; see the file COPYING. If not, a copy
Chris@4 412 # can be downloaded from http://www.gnu.org/licenses/gpl.html,
Chris@4 413 # or obtained by writing to the Free Software Foundation, Inc.,
Chris@4 414 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Chris@4 415
Chris@4 416 # Usage: $progname [OPTION]... [MODE-ARG]...
Chris@4 417 #
Chris@4 418 # Provide generalized library-building support services.
Chris@4 419 #
Chris@4 420 # --config show all configuration variables
Chris@4 421 # --debug enable verbose shell tracing
Chris@4 422 # -n, --dry-run display commands without modifying any files
Chris@4 423 # --features display basic configuration information and exit
Chris@4 424 # --mode=MODE use operation mode MODE
Chris@4 425 # --preserve-dup-deps don't remove duplicate dependency libraries
Chris@4 426 # --quiet, --silent don't print informational messages
Chris@4 427 # --tag=TAG use configuration variables from tag TAG
Chris@4 428 # -v, --verbose print informational messages (default)
Chris@4 429 # --version print version information
Chris@4 430 # -h, --help print short or long help message
Chris@4 431 #
Chris@4 432 # MODE must be one of the following:
Chris@4 433 #
Chris@4 434 # clean remove files from the build directory
Chris@4 435 # compile compile a source file into a libtool object
Chris@4 436 # execute automatically set library path, then run a program
Chris@4 437 # finish complete the installation of libtool libraries
Chris@4 438 # install install libraries or executables
Chris@4 439 # link create a library or an executable
Chris@4 440 # uninstall remove libraries from an installed directory
Chris@4 441 #
Chris@4 442 # MODE-ARGS vary depending on the MODE.
Chris@4 443 # Try `$progname --help --mode=MODE' for a more detailed description of MODE.
Chris@4 444 #
Chris@4 445 # When reporting a bug, please describe a test case to reproduce it and
Chris@4 446 # include the following information:
Chris@4 447 #
Chris@4 448 # host-triplet: $host
Chris@4 449 # shell: $SHELL
Chris@4 450 # compiler: $LTCC
Chris@4 451 # compiler flags: $LTCFLAGS
Chris@4 452 # linker: $LD (gnu? $with_gnu_ld)
Chris@4 453 # $progname: (GNU libtool) 2.2.4 Debian-2.2.4-0ubuntu4
Chris@4 454 # automake: $automake_version
Chris@4 455 # autoconf: $autoconf_version
Chris@4 456 #
Chris@4 457 # Report bugs to <bug-libtool@gnu.org>.
Chris@4 458
Chris@4 459 PROGRAM=ltmain.sh
Chris@4 460 PACKAGE=libtool
Chris@4 461 VERSION="2.2.4 Debian-2.2.4-0ubuntu4"
Chris@4 462 TIMESTAMP=""
Chris@4 463 package_revision=1.2976
Chris@4 464
Chris@4 465 # Be Bourne compatible
Chris@4 466 if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
Chris@4 467 emulate sh
Chris@4 468 NULLCMD=:
Chris@4 469 # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
Chris@4 470 # is contrary to our usage. Disable this feature.
Chris@4 471 alias -g '${1+"$@"}'='"$@"'
Chris@4 472 setopt NO_GLOB_SUBST
Chris@4 473 else
Chris@4 474 case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
Chris@4 475 fi
Chris@4 476 BIN_SH=xpg4; export BIN_SH # for Tru64
Chris@4 477 DUALCASE=1; export DUALCASE # for MKS sh
Chris@4 478
Chris@4 479 # NLS nuisances: We save the old values to restore during execute mode.
Chris@4 480 # Only set LANG and LC_ALL to C if already set.
Chris@4 481 # These must not be set unconditionally because not all systems understand
Chris@4 482 # e.g. LANG=C (notably SCO).
Chris@4 483 lt_user_locale=
Chris@4 484 lt_safe_locale=
Chris@4 485 for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
Chris@4 486 do
Chris@4 487 eval "if test \"\${$lt_var+set}\" = set; then
Chris@4 488 save_$lt_var=\$$lt_var
Chris@4 489 $lt_var=C
Chris@4 490 export $lt_var
Chris@4 491 lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\"
Chris@4 492 lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
Chris@4 493 fi"
Chris@4 494 done
Chris@4 495
Chris@4 496 $lt_unset CDPATH
Chris@4 497
Chris@4 498
Chris@4 499
Chris@4 500
Chris@4 501
Chris@4 502 : ${CP="cp -f"}
Chris@4 503 : ${ECHO="echo"}
Chris@4 504 : ${EGREP="/bin/grep -E"}
Chris@4 505 : ${FGREP="/bin/grep -F"}
Chris@4 506 : ${GREP="/bin/grep"}
Chris@4 507 : ${LN_S="ln -s"}
Chris@4 508 : ${MAKE="make"}
Chris@4 509 : ${MKDIR="mkdir"}
Chris@4 510 : ${MV="mv -f"}
Chris@4 511 : ${RM="rm -f"}
Chris@4 512 : ${SED="/bin/sed"}
Chris@4 513 : ${SHELL="${CONFIG_SHELL-/bin/sh}"}
Chris@4 514 : ${Xsed="$SED -e 1s/^X//"}
Chris@4 515
Chris@4 516 # Global variables:
Chris@4 517 EXIT_SUCCESS=0
Chris@4 518 EXIT_FAILURE=1
Chris@4 519 EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing.
Chris@4 520 EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake.
Chris@4 521
Chris@4 522 exit_status=$EXIT_SUCCESS
Chris@4 523
Chris@4 524 # Make sure IFS has a sensible default
Chris@4 525 lt_nl='
Chris@4 526 '
Chris@4 527 IFS=" $lt_nl"
Chris@4 528
Chris@4 529 dirname="s,/[^/]*$,,"
Chris@4 530 basename="s,^.*/,,"
Chris@4 531
Chris@4 532 # func_dirname_and_basename file append nondir_replacement
Chris@4 533 # perform func_basename and func_dirname in a single function
Chris@4 534 # call:
Chris@4 535 # dirname: Compute the dirname of FILE. If nonempty,
Chris@4 536 # add APPEND to the result, otherwise set result
Chris@4 537 # to NONDIR_REPLACEMENT.
Chris@4 538 # value returned in "$func_dirname_result"
Chris@4 539 # basename: Compute filename of FILE.
Chris@4 540 # value retuned in "$func_basename_result"
Chris@4 541 # Implementation must be kept synchronized with func_dirname
Chris@4 542 # and func_basename. For efficiency, we do not delegate to
Chris@4 543 # those functions but instead duplicate the functionality here.
Chris@4 544 func_dirname_and_basename ()
Chris@4 545 {
Chris@4 546 # Extract subdirectory from the argument.
Chris@4 547 func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"`
Chris@4 548 if test "X$func_dirname_result" = "X${1}"; then
Chris@4 549 func_dirname_result="${3}"
Chris@4 550 else
Chris@4 551 func_dirname_result="$func_dirname_result${2}"
Chris@4 552 fi
Chris@4 553 func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"`
Chris@4 554 }
Chris@4 555
Chris@4 556 # Generated shell functions inserted here.
Chris@4 557
Chris@4 558 # func_dirname file append nondir_replacement
Chris@4 559 # Compute the dirname of FILE. If nonempty, add APPEND to the result,
Chris@4 560 # otherwise set result to NONDIR_REPLACEMENT.
Chris@4 561 func_dirname ()
Chris@4 562 {
Chris@4 563 case ${1} in
Chris@4 564 */*) func_dirname_result="${1%/*}${2}" ;;
Chris@4 565 * ) func_dirname_result="${3}" ;;
Chris@4 566 esac
Chris@4 567 }
Chris@4 568
Chris@4 569 # func_basename file
Chris@4 570 func_basename ()
Chris@4 571 {
Chris@4 572 func_basename_result="${1##*/}"
Chris@4 573 }
Chris@4 574
Chris@4 575 # func_dirname_and_basename file append nondir_replacement
Chris@4 576 # perform func_basename and func_dirname in a single function
Chris@4 577 # call:
Chris@4 578 # dirname: Compute the dirname of FILE. If nonempty,
Chris@4 579 # add APPEND to the result, otherwise set result
Chris@4 580 # to NONDIR_REPLACEMENT.
Chris@4 581 # value returned in "$func_dirname_result"
Chris@4 582 # basename: Compute filename of FILE.
Chris@4 583 # value retuned in "$func_basename_result"
Chris@4 584 # Implementation must be kept synchronized with func_dirname
Chris@4 585 # and func_basename. For efficiency, we do not delegate to
Chris@4 586 # those functions but instead duplicate the functionality here.
Chris@4 587 func_dirname_and_basename ()
Chris@4 588 {
Chris@4 589 case ${1} in
Chris@4 590 */*) func_dirname_result="${1%/*}${2}" ;;
Chris@4 591 * ) func_dirname_result="${3}" ;;
Chris@4 592 esac
Chris@4 593 func_basename_result="${1##*/}"
Chris@4 594 }
Chris@4 595
Chris@4 596 # func_stripname prefix suffix name
Chris@4 597 # strip PREFIX and SUFFIX off of NAME.
Chris@4 598 # PREFIX and SUFFIX must not contain globbing or regex special
Chris@4 599 # characters, hashes, percent signs, but SUFFIX may contain a leading
Chris@4 600 # dot (in which case that matches only a dot).
Chris@4 601 func_stripname ()
Chris@4 602 {
Chris@4 603 # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
Chris@4 604 # positional parameters, so assign one to ordinary parameter first.
Chris@4 605 func_stripname_result=${3}
Chris@4 606 func_stripname_result=${func_stripname_result#"${1}"}
Chris@4 607 func_stripname_result=${func_stripname_result%"${2}"}
Chris@4 608 }
Chris@4 609
Chris@4 610 # func_opt_split
Chris@4 611 func_opt_split ()
Chris@4 612 {
Chris@4 613 func_opt_split_opt=${1%%=*}
Chris@4 614 func_opt_split_arg=${1#*=}
Chris@4 615 }
Chris@4 616
Chris@4 617 # func_lo2o object
Chris@4 618 func_lo2o ()
Chris@4 619 {
Chris@4 620 case ${1} in
Chris@4 621 *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
Chris@4 622 *) func_lo2o_result=${1} ;;
Chris@4 623 esac
Chris@4 624 }
Chris@4 625
Chris@4 626 # func_xform libobj-or-source
Chris@4 627 func_xform ()
Chris@4 628 {
Chris@4 629 func_xform_result=${1%.*}.lo
Chris@4 630 }
Chris@4 631
Chris@4 632 # func_arith arithmetic-term...
Chris@4 633 func_arith ()
Chris@4 634 {
Chris@4 635 func_arith_result=$(( $* ))
Chris@4 636 }
Chris@4 637
Chris@4 638 # func_len string
Chris@4 639 # STRING may not start with a hyphen.
Chris@4 640 func_len ()
Chris@4 641 {
Chris@4 642 func_len_result=${#1}
Chris@4 643 }
Chris@4 644
Chris@4 645
Chris@4 646 # func_append var value
Chris@4 647 # Append VALUE to the end of shell variable VAR.
Chris@4 648 func_append ()
Chris@4 649 {
Chris@4 650 eval "$1+=\$2"
Chris@4 651 }
Chris@4 652 # Generated shell functions inserted here.
Chris@4 653
Chris@4 654 # Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
Chris@4 655 # is ksh but when the shell is invoked as "sh" and the current value of
Chris@4 656 # the _XPG environment variable is not equal to 1 (one), the special
Chris@4 657 # positional parameter $0, within a function call, is the name of the
Chris@4 658 # function.
Chris@4 659 progpath="$0"
Chris@4 660
Chris@4 661 # The name of this program:
Chris@4 662 # In the unlikely event $progname began with a '-', it would play havoc with
Chris@4 663 # func_echo (imagine progname=-n), so we prepend ./ in that case:
Chris@4 664 func_dirname_and_basename "$progpath"
Chris@4 665 progname=$func_basename_result
Chris@4 666 case $progname in
Chris@4 667 -*) progname=./$progname ;;
Chris@4 668 esac
Chris@4 669
Chris@4 670 # Make sure we have an absolute path for reexecution:
Chris@4 671 case $progpath in
Chris@4 672 [\\/]*|[A-Za-z]:\\*) ;;
Chris@4 673 *[\\/]*)
Chris@4 674 progdir=$func_dirname_result
Chris@4 675 progdir=`cd "$progdir" && pwd`
Chris@4 676 progpath="$progdir/$progname"
Chris@4 677 ;;
Chris@4 678 *)
Chris@4 679 save_IFS="$IFS"
Chris@4 680 IFS=:
Chris@4 681 for progdir in $PATH; do
Chris@4 682 IFS="$save_IFS"
Chris@4 683 test -x "$progdir/$progname" && break
Chris@4 684 done
Chris@4 685 IFS="$save_IFS"
Chris@4 686 test -n "$progdir" || progdir=`pwd`
Chris@4 687 progpath="$progdir/$progname"
Chris@4 688 ;;
Chris@4 689 esac
Chris@4 690
Chris@4 691 # Sed substitution that helps us do robust quoting. It backslashifies
Chris@4 692 # metacharacters that are still active within double-quoted strings.
Chris@4 693 Xsed="${SED}"' -e 1s/^X//'
Chris@4 694 sed_quote_subst='s/\([`"$\\]\)/\\\1/g'
Chris@4 695
Chris@4 696 # Same as above, but do not quote variable references.
Chris@4 697 double_quote_subst='s/\(["`\\]\)/\\\1/g'
Chris@4 698
Chris@4 699 # Re-`\' parameter expansions in output of double_quote_subst that were
Chris@4 700 # `\'-ed in input to the same. If an odd number of `\' preceded a '$'
Chris@4 701 # in input to double_quote_subst, that '$' was protected from expansion.
Chris@4 702 # Since each input `\' is now two `\'s, look for any number of runs of
Chris@4 703 # four `\'s followed by two `\'s and then a '$'. `\' that '$'.
Chris@4 704 bs='\\'
Chris@4 705 bs2='\\\\'
Chris@4 706 bs4='\\\\\\\\'
Chris@4 707 dollar='\$'
Chris@4 708 sed_double_backslash="\
Chris@4 709 s/$bs4/&\\
Chris@4 710 /g
Chris@4 711 s/^$bs2$dollar/$bs&/
Chris@4 712 s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
Chris@4 713 s/\n//g"
Chris@4 714
Chris@4 715 # Standard options:
Chris@4 716 opt_dry_run=false
Chris@4 717 opt_help=false
Chris@4 718 opt_quiet=false
Chris@4 719 opt_verbose=false
Chris@4 720 opt_warning=:
Chris@4 721
Chris@4 722 # func_echo arg...
Chris@4 723 # Echo program name prefixed message, along with the current mode
Chris@4 724 # name if it has been set yet.
Chris@4 725 func_echo ()
Chris@4 726 {
Chris@4 727 $ECHO "$progname${mode+: }$mode: $*"
Chris@4 728 }
Chris@4 729
Chris@4 730 # func_verbose arg...
Chris@4 731 # Echo program name prefixed message in verbose mode only.
Chris@4 732 func_verbose ()
Chris@4 733 {
Chris@4 734 $opt_verbose && func_echo ${1+"$@"}
Chris@4 735
Chris@4 736 # A bug in bash halts the script if the last line of a function
Chris@4 737 # fails when set -e is in force, so we need another command to
Chris@4 738 # work around that:
Chris@4 739 :
Chris@4 740 }
Chris@4 741
Chris@4 742 # func_error arg...
Chris@4 743 # Echo program name prefixed message to standard error.
Chris@4 744 func_error ()
Chris@4 745 {
Chris@4 746 $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2
Chris@4 747 }
Chris@4 748
Chris@4 749 # func_warning arg...
Chris@4 750 # Echo program name prefixed warning message to standard error.
Chris@4 751 func_warning ()
Chris@4 752 {
Chris@4 753 $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2
Chris@4 754
Chris@4 755 # bash bug again:
Chris@4 756 :
Chris@4 757 }
Chris@4 758
Chris@4 759 # func_fatal_error arg...
Chris@4 760 # Echo program name prefixed message to standard error, and exit.
Chris@4 761 func_fatal_error ()
Chris@4 762 {
Chris@4 763 func_error ${1+"$@"}
Chris@4 764 exit $EXIT_FAILURE
Chris@4 765 }
Chris@4 766
Chris@4 767 # func_fatal_help arg...
Chris@4 768 # Echo program name prefixed message to standard error, followed by
Chris@4 769 # a help hint, and exit.
Chris@4 770 func_fatal_help ()
Chris@4 771 {
Chris@4 772 func_error ${1+"$@"}
Chris@4 773 func_fatal_error "$help"
Chris@4 774 }
Chris@4 775 help="Try \`$progname --help' for more information." ## default
Chris@4 776
Chris@4 777
Chris@4 778 # func_grep expression filename
Chris@4 779 # Check whether EXPRESSION matches any line of FILENAME, without output.
Chris@4 780 func_grep ()
Chris@4 781 {
Chris@4 782 $GREP "$1" "$2" >/dev/null 2>&1
Chris@4 783 }
Chris@4 784
Chris@4 785
Chris@4 786 # func_mkdir_p directory-path
Chris@4 787 # Make sure the entire path to DIRECTORY-PATH is available.
Chris@4 788 func_mkdir_p ()
Chris@4 789 {
Chris@4 790 my_directory_path="$1"
Chris@4 791 my_dir_list=
Chris@4 792
Chris@4 793 if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
Chris@4 794
Chris@4 795 # Protect directory names starting with `-'
Chris@4 796 case $my_directory_path in
Chris@4 797 -*) my_directory_path="./$my_directory_path" ;;
Chris@4 798 esac
Chris@4 799
Chris@4 800 # While some portion of DIR does not yet exist...
Chris@4 801 while test ! -d "$my_directory_path"; do
Chris@4 802 # ...make a list in topmost first order. Use a colon delimited
Chris@4 803 # list incase some portion of path contains whitespace.
Chris@4 804 my_dir_list="$my_directory_path:$my_dir_list"
Chris@4 805
Chris@4 806 # If the last portion added has no slash in it, the list is done
Chris@4 807 case $my_directory_path in */*) ;; *) break ;; esac
Chris@4 808
Chris@4 809 # ...otherwise throw away the child directory and loop
Chris@4 810 my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"`
Chris@4 811 done
Chris@4 812 my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'`
Chris@4 813
Chris@4 814 save_mkdir_p_IFS="$IFS"; IFS=':'
Chris@4 815 for my_dir in $my_dir_list; do
Chris@4 816 IFS="$save_mkdir_p_IFS"
Chris@4 817 # mkdir can fail with a `File exist' error if two processes
Chris@4 818 # try to create one of the directories concurrently. Don't
Chris@4 819 # stop in that case!
Chris@4 820 $MKDIR "$my_dir" 2>/dev/null || :
Chris@4 821 done
Chris@4 822 IFS="$save_mkdir_p_IFS"
Chris@4 823
Chris@4 824 # Bail out if we (or some other process) failed to create a directory.
Chris@4 825 test -d "$my_directory_path" || \
Chris@4 826 func_fatal_error "Failed to create \`$1'"
Chris@4 827 fi
Chris@4 828 }
Chris@4 829
Chris@4 830
Chris@4 831 # func_mktempdir [string]
Chris@4 832 # Make a temporary directory that won't clash with other running
Chris@4 833 # libtool processes, and avoids race conditions if possible. If
Chris@4 834 # given, STRING is the basename for that directory.
Chris@4 835 func_mktempdir ()
Chris@4 836 {
Chris@4 837 my_template="${TMPDIR-/tmp}/${1-$progname}"
Chris@4 838
Chris@4 839 if test "$opt_dry_run" = ":"; then
Chris@4 840 # Return a directory name, but don't create it in dry-run mode
Chris@4 841 my_tmpdir="${my_template}-$$"
Chris@4 842 else
Chris@4 843
Chris@4 844 # If mktemp works, use that first and foremost
Chris@4 845 my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
Chris@4 846
Chris@4 847 if test ! -d "$my_tmpdir"; then
Chris@4 848 # Failing that, at least try and use $RANDOM to avoid a race
Chris@4 849 my_tmpdir="${my_template}-${RANDOM-0}$$"
Chris@4 850
Chris@4 851 save_mktempdir_umask=`umask`
Chris@4 852 umask 0077
Chris@4 853 $MKDIR "$my_tmpdir"
Chris@4 854 umask $save_mktempdir_umask
Chris@4 855 fi
Chris@4 856
Chris@4 857 # If we're not in dry-run mode, bomb out on failure
Chris@4 858 test -d "$my_tmpdir" || \
Chris@4 859 func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
Chris@4 860 fi
Chris@4 861
Chris@4 862 $ECHO "X$my_tmpdir" | $Xsed
Chris@4 863 }
Chris@4 864
Chris@4 865
Chris@4 866 # func_quote_for_eval arg
Chris@4 867 # Aesthetically quote ARG to be evaled later.
Chris@4 868 # This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
Chris@4 869 # is double-quoted, suitable for a subsequent eval, whereas
Chris@4 870 # FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
Chris@4 871 # which are still active within double quotes backslashified.
Chris@4 872 func_quote_for_eval ()
Chris@4 873 {
Chris@4 874 case $1 in
Chris@4 875 *[\\\`\"\$]*)
Chris@4 876 func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;;
Chris@4 877 *)
Chris@4 878 func_quote_for_eval_unquoted_result="$1" ;;
Chris@4 879 esac
Chris@4 880
Chris@4 881 case $func_quote_for_eval_unquoted_result in
Chris@4 882 # Double-quote args containing shell metacharacters to delay
Chris@4 883 # word splitting, command substitution and and variable
Chris@4 884 # expansion for a subsequent eval.
Chris@4 885 # Many Bourne shells cannot handle close brackets correctly
Chris@4 886 # in scan sets, so we specify it separately.
Chris@4 887 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
Chris@4 888 func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
Chris@4 889 ;;
Chris@4 890 *)
Chris@4 891 func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
Chris@4 892 esac
Chris@4 893 }
Chris@4 894
Chris@4 895
Chris@4 896 # func_quote_for_expand arg
Chris@4 897 # Aesthetically quote ARG to be evaled later; same as above,
Chris@4 898 # but do not quote variable references.
Chris@4 899 func_quote_for_expand ()
Chris@4 900 {
Chris@4 901 case $1 in
Chris@4 902 *[\\\`\"]*)
Chris@4 903 my_arg=`$ECHO "X$1" | $Xsed \
Chris@4 904 -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
Chris@4 905 *)
Chris@4 906 my_arg="$1" ;;
Chris@4 907 esac
Chris@4 908
Chris@4 909 case $my_arg in
Chris@4 910 # Double-quote args containing shell metacharacters to delay
Chris@4 911 # word splitting and command substitution for a subsequent eval.
Chris@4 912 # Many Bourne shells cannot handle close brackets correctly
Chris@4 913 # in scan sets, so we specify it separately.
Chris@4 914 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
Chris@4 915 my_arg="\"$my_arg\""
Chris@4 916 ;;
Chris@4 917 esac
Chris@4 918
Chris@4 919 func_quote_for_expand_result="$my_arg"
Chris@4 920 }
Chris@4 921
Chris@4 922
Chris@4 923 # func_show_eval cmd [fail_exp]
Chris@4 924 # Unless opt_silent is true, then output CMD. Then, if opt_dryrun is
Chris@4 925 # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP
Chris@4 926 # is given, then evaluate it.
Chris@4 927 func_show_eval ()
Chris@4 928 {
Chris@4 929 my_cmd="$1"
Chris@4 930 my_fail_exp="${2-:}"
Chris@4 931
Chris@4 932 ${opt_silent-false} || {
Chris@4 933 func_quote_for_expand "$my_cmd"
Chris@4 934 eval "func_echo $func_quote_for_expand_result"
Chris@4 935 }
Chris@4 936
Chris@4 937 if ${opt_dry_run-false}; then :; else
Chris@4 938 eval "$my_cmd"
Chris@4 939 my_status=$?
Chris@4 940 if test "$my_status" -eq 0; then :; else
Chris@4 941 eval "(exit $my_status); $my_fail_exp"
Chris@4 942 fi
Chris@4 943 fi
Chris@4 944 }
Chris@4 945
Chris@4 946
Chris@4 947 # func_show_eval_locale cmd [fail_exp]
Chris@4 948 # Unless opt_silent is true, then output CMD. Then, if opt_dryrun is
Chris@4 949 # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP
Chris@4 950 # is given, then evaluate it. Use the saved locale for evaluation.
Chris@4 951 func_show_eval_locale ()
Chris@4 952 {
Chris@4 953 my_cmd="$1"
Chris@4 954 my_fail_exp="${2-:}"
Chris@4 955
Chris@4 956 ${opt_silent-false} || {
Chris@4 957 func_quote_for_expand "$my_cmd"
Chris@4 958 eval "func_echo $func_quote_for_expand_result"
Chris@4 959 }
Chris@4 960
Chris@4 961 if ${opt_dry_run-false}; then :; else
Chris@4 962 eval "$lt_user_locale
Chris@4 963 $my_cmd"
Chris@4 964 my_status=$?
Chris@4 965 eval "$lt_safe_locale"
Chris@4 966 if test "$my_status" -eq 0; then :; else
Chris@4 967 eval "(exit $my_status); $my_fail_exp"
Chris@4 968 fi
Chris@4 969 fi
Chris@4 970 }
Chris@4 971
Chris@4 972
Chris@4 973
Chris@4 974
Chris@4 975
Chris@4 976 # func_version
Chris@4 977 # Echo version message to standard output and exit.
Chris@4 978 func_version ()
Chris@4 979 {
Chris@4 980 $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / {
Chris@4 981 s/^# //
Chris@4 982 s/^# *$//
Chris@4 983 s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
Chris@4 984 p
Chris@4 985 }' < "$progpath"
Chris@4 986 exit $?
Chris@4 987 }
Chris@4 988
Chris@4 989 # func_usage
Chris@4 990 # Echo short help message to standard output and exit.
Chris@4 991 func_usage ()
Chris@4 992 {
Chris@4 993 $SED -n '/^# Usage:/,/# -h/ {
Chris@4 994 s/^# //
Chris@4 995 s/^# *$//
Chris@4 996 s/\$progname/'$progname'/
Chris@4 997 p
Chris@4 998 }' < "$progpath"
Chris@4 999 $ECHO
Chris@4 1000 $ECHO "run \`$progname --help | more' for full usage"
Chris@4 1001 exit $?
Chris@4 1002 }
Chris@4 1003
Chris@4 1004 # func_help
Chris@4 1005 # Echo long help message to standard output and exit.
Chris@4 1006 func_help ()
Chris@4 1007 {
Chris@4 1008 $SED -n '/^# Usage:/,/# Report bugs to/ {
Chris@4 1009 s/^# //
Chris@4 1010 s/^# *$//
Chris@4 1011 s*\$progname*'$progname'*
Chris@4 1012 s*\$host*'"$host"'*
Chris@4 1013 s*\$SHELL*'"$SHELL"'*
Chris@4 1014 s*\$LTCC*'"$LTCC"'*
Chris@4 1015 s*\$LTCFLAGS*'"$LTCFLAGS"'*
Chris@4 1016 s*\$LD*'"$LD"'*
Chris@4 1017 s/\$with_gnu_ld/'"$with_gnu_ld"'/
Chris@4 1018 s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/
Chris@4 1019 s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/
Chris@4 1020 p
Chris@4 1021 }' < "$progpath"
Chris@4 1022 exit $?
Chris@4 1023 }
Chris@4 1024
Chris@4 1025 # func_missing_arg argname
Chris@4 1026 # Echo program name prefixed message to standard error and set global
Chris@4 1027 # exit_cmd.
Chris@4 1028 func_missing_arg ()
Chris@4 1029 {
Chris@4 1030 func_error "missing argument for $1"
Chris@4 1031 exit_cmd=exit
Chris@4 1032 }
Chris@4 1033
Chris@4 1034 exit_cmd=:
Chris@4 1035
Chris@4 1036
Chris@4 1037
Chris@4 1038
Chris@4 1039
Chris@4 1040 # Check that we have a working $ECHO.
Chris@4 1041 if test "X$1" = X--no-reexec; then
Chris@4 1042 # Discard the --no-reexec flag, and continue.
Chris@4 1043 shift
Chris@4 1044 elif test "X$1" = X--fallback-echo; then
Chris@4 1045 # Avoid inline document here, it may be left over
Chris@4 1046 :
Chris@4 1047 elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then
Chris@4 1048 # Yippee, $ECHO works!
Chris@4 1049 :
Chris@4 1050 else
Chris@4 1051 # Restart under the correct shell, and then maybe $ECHO will work.
Chris@4 1052 exec $SHELL "$progpath" --no-reexec ${1+"$@"}
Chris@4 1053 fi
Chris@4 1054
Chris@4 1055 if test "X$1" = X--fallback-echo; then
Chris@4 1056 # used as fallback echo
Chris@4 1057 shift
Chris@4 1058 cat <<EOF
Chris@4 1059 $*
Chris@4 1060 EOF
Chris@4 1061 exit $EXIT_SUCCESS
Chris@4 1062 fi
Chris@4 1063
Chris@4 1064 magic="%%%MAGIC variable%%%"
Chris@4 1065 magic_exe="%%%MAGIC EXE variable%%%"
Chris@4 1066
Chris@4 1067 # Global variables.
Chris@4 1068 # $mode is unset
Chris@4 1069 nonopt=
Chris@4 1070 execute_dlfiles=
Chris@4 1071 preserve_args=
Chris@4 1072 lo2o="s/\\.lo\$/.${objext}/"
Chris@4 1073 o2lo="s/\\.${objext}\$/.lo/"
Chris@4 1074 extracted_archives=
Chris@4 1075 extracted_serial=0
Chris@4 1076
Chris@4 1077 opt_dry_run=false
Chris@4 1078 opt_duplicate_deps=false
Chris@4 1079 opt_silent=false
Chris@4 1080 opt_debug=:
Chris@4 1081
Chris@4 1082 # If this variable is set in any of the actions, the command in it
Chris@4 1083 # will be execed at the end. This prevents here-documents from being
Chris@4 1084 # left over by shells.
Chris@4 1085 exec_cmd=
Chris@4 1086
Chris@4 1087 # func_fatal_configuration arg...
Chris@4 1088 # Echo program name prefixed message to standard error, followed by
Chris@4 1089 # a configuration failure hint, and exit.
Chris@4 1090 func_fatal_configuration ()
Chris@4 1091 {
Chris@4 1092 func_error ${1+"$@"}
Chris@4 1093 func_error "See the $PACKAGE documentation for more information."
Chris@4 1094 func_fatal_error "Fatal configuration error."
Chris@4 1095 }
Chris@4 1096
Chris@4 1097
Chris@4 1098 # func_config
Chris@4 1099 # Display the configuration for all the tags in this script.
Chris@4 1100 func_config ()
Chris@4 1101 {
Chris@4 1102 re_begincf='^# ### BEGIN LIBTOOL'
Chris@4 1103 re_endcf='^# ### END LIBTOOL'
Chris@4 1104
Chris@4 1105 # Default configuration.
Chris@4 1106 $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
Chris@4 1107
Chris@4 1108 # Now print the configurations for the tags.
Chris@4 1109 for tagname in $taglist; do
Chris@4 1110 $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
Chris@4 1111 done
Chris@4 1112
Chris@4 1113 exit $?
Chris@4 1114 }
Chris@4 1115
Chris@4 1116 # func_features
Chris@4 1117 # Display the features supported by this script.
Chris@4 1118 func_features ()
Chris@4 1119 {
Chris@4 1120 $ECHO "host: $host"
Chris@4 1121 if test "$build_libtool_libs" = yes; then
Chris@4 1122 $ECHO "enable shared libraries"
Chris@4 1123 else
Chris@4 1124 $ECHO "disable shared libraries"
Chris@4 1125 fi
Chris@4 1126 if test "$build_old_libs" = yes; then
Chris@4 1127 $ECHO "enable static libraries"
Chris@4 1128 else
Chris@4 1129 $ECHO "disable static libraries"
Chris@4 1130 fi
Chris@4 1131
Chris@4 1132 exit $?
Chris@4 1133 }
Chris@4 1134
Chris@4 1135 # func_enable_tag tagname
Chris@4 1136 # Verify that TAGNAME is valid, and either flag an error and exit, or
Chris@4 1137 # enable the TAGNAME tag. We also add TAGNAME to the global $taglist
Chris@4 1138 # variable here.
Chris@4 1139 func_enable_tag ()
Chris@4 1140 {
Chris@4 1141 # Global variable:
Chris@4 1142 tagname="$1"
Chris@4 1143
Chris@4 1144 re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
Chris@4 1145 re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
Chris@4 1146 sed_extractcf="/$re_begincf/,/$re_endcf/p"
Chris@4 1147
Chris@4 1148 # Validate tagname.
Chris@4 1149 case $tagname in
Chris@4 1150 *[!-_A-Za-z0-9,/]*)
Chris@4 1151 func_fatal_error "invalid tag name: $tagname"
Chris@4 1152 ;;
Chris@4 1153 esac
Chris@4 1154
Chris@4 1155 # Don't test for the "default" C tag, as we know it's
Chris@4 1156 # there but not specially marked.
Chris@4 1157 case $tagname in
Chris@4 1158 CC) ;;
Chris@4 1159 *)
Chris@4 1160 if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
Chris@4 1161 taglist="$taglist $tagname"
Chris@4 1162
Chris@4 1163 # Evaluate the configuration. Be careful to quote the path
Chris@4 1164 # and the sed script, to avoid splitting on whitespace, but
Chris@4 1165 # also don't use non-portable quotes within backquotes within
Chris@4 1166 # quotes we have to do it in 2 steps:
Chris@4 1167 extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
Chris@4 1168 eval "$extractedcf"
Chris@4 1169 else
Chris@4 1170 func_error "ignoring unknown tag $tagname"
Chris@4 1171 fi
Chris@4 1172 ;;
Chris@4 1173 esac
Chris@4 1174 }
Chris@4 1175
Chris@4 1176 # Parse options once, thoroughly. This comes as soon as possible in
Chris@4 1177 # the script to make things like `libtool --version' happen quickly.
Chris@4 1178 {
Chris@4 1179
Chris@4 1180 # Shorthand for --mode=foo, only valid as the first argument
Chris@4 1181 case $1 in
Chris@4 1182 clean|clea|cle|cl)
Chris@4 1183 shift; set dummy --mode clean ${1+"$@"}; shift
Chris@4 1184 ;;
Chris@4 1185 compile|compil|compi|comp|com|co|c)
Chris@4 1186 shift; set dummy --mode compile ${1+"$@"}; shift
Chris@4 1187 ;;
Chris@4 1188 execute|execut|execu|exec|exe|ex|e)
Chris@4 1189 shift; set dummy --mode execute ${1+"$@"}; shift
Chris@4 1190 ;;
Chris@4 1191 finish|finis|fini|fin|fi|f)
Chris@4 1192 shift; set dummy --mode finish ${1+"$@"}; shift
Chris@4 1193 ;;
Chris@4 1194 install|instal|insta|inst|ins|in|i)
Chris@4 1195 shift; set dummy --mode install ${1+"$@"}; shift
Chris@4 1196 ;;
Chris@4 1197 link|lin|li|l)
Chris@4 1198 shift; set dummy --mode link ${1+"$@"}; shift
Chris@4 1199 ;;
Chris@4 1200 uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
Chris@4 1201 shift; set dummy --mode uninstall ${1+"$@"}; shift
Chris@4 1202 ;;
Chris@4 1203 esac
Chris@4 1204
Chris@4 1205 # Parse non-mode specific arguments:
Chris@4 1206 while test "$#" -gt 0; do
Chris@4 1207 opt="$1"
Chris@4 1208 shift
Chris@4 1209
Chris@4 1210 case $opt in
Chris@4 1211 --config) func_config ;;
Chris@4 1212
Chris@4 1213 --debug) preserve_args="$preserve_args $opt"
Chris@4 1214 func_echo "enabling shell trace mode"
Chris@4 1215 opt_debug='set -x'
Chris@4 1216 $opt_debug
Chris@4 1217 ;;
Chris@4 1218
Chris@4 1219 -dlopen) test "$#" -eq 0 && func_missing_arg "$opt" && break
Chris@4 1220 execute_dlfiles="$execute_dlfiles $1"
Chris@4 1221 shift
Chris@4 1222 ;;
Chris@4 1223
Chris@4 1224 --dry-run | -n) opt_dry_run=: ;;
Chris@4 1225 --features) func_features ;;
Chris@4 1226 --finish) mode="finish" ;;
Chris@4 1227
Chris@4 1228 --mode) test "$#" -eq 0 && func_missing_arg "$opt" && break
Chris@4 1229 case $1 in
Chris@4 1230 # Valid mode arguments:
Chris@4 1231 clean) ;;
Chris@4 1232 compile) ;;
Chris@4 1233 execute) ;;
Chris@4 1234 finish) ;;
Chris@4 1235 install) ;;
Chris@4 1236 link) ;;
Chris@4 1237 relink) ;;
Chris@4 1238 uninstall) ;;
Chris@4 1239
Chris@4 1240 # Catch anything else as an error
Chris@4 1241 *) func_error "invalid argument for $opt"
Chris@4 1242 exit_cmd=exit
Chris@4 1243 break
Chris@4 1244 ;;
Chris@4 1245 esac
Chris@4 1246
Chris@4 1247 mode="$1"
Chris@4 1248 shift
Chris@4 1249 ;;
Chris@4 1250
Chris@4 1251 --preserve-dup-deps)
Chris@4 1252 opt_duplicate_deps=: ;;
Chris@4 1253
Chris@4 1254 --quiet|--silent) preserve_args="$preserve_args $opt"
Chris@4 1255 opt_silent=:
Chris@4 1256 ;;
Chris@4 1257
Chris@4 1258 --verbose| -v) preserve_args="$preserve_args $opt"
Chris@4 1259 opt_silent=false
Chris@4 1260 ;;
Chris@4 1261
Chris@4 1262 --tag) test "$#" -eq 0 && func_missing_arg "$opt" && break
Chris@4 1263 preserve_args="$preserve_args $opt $1"
Chris@4 1264 func_enable_tag "$1" # tagname is set here
Chris@4 1265 shift
Chris@4 1266 ;;
Chris@4 1267
Chris@4 1268 # Separate optargs to long options:
Chris@4 1269 -dlopen=*|--mode=*|--tag=*)
Chris@4 1270 func_opt_split "$opt"
Chris@4 1271 set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"}
Chris@4 1272 shift
Chris@4 1273 ;;
Chris@4 1274
Chris@4 1275 -\?|-h) func_usage ;;
Chris@4 1276 --help) opt_help=: ;;
Chris@4 1277 --version) func_version ;;
Chris@4 1278
Chris@4 1279 -*) func_fatal_help "unrecognized option \`$opt'" ;;
Chris@4 1280
Chris@4 1281 *) nonopt="$opt"
Chris@4 1282 break
Chris@4 1283 ;;
Chris@4 1284 esac
Chris@4 1285 done
Chris@4 1286
Chris@4 1287
Chris@4 1288 case $host in
Chris@4 1289 *cygwin* | *mingw* | *pw32*)
Chris@4 1290 # don't eliminate duplications in $postdeps and $predeps
Chris@4 1291 opt_duplicate_compiler_generated_deps=:
Chris@4 1292 ;;
Chris@4 1293 *)
Chris@4 1294 opt_duplicate_compiler_generated_deps=$opt_duplicate_deps
Chris@4 1295 ;;
Chris@4 1296 esac
Chris@4 1297
Chris@4 1298 # Having warned about all mis-specified options, bail out if
Chris@4 1299 # anything was wrong.
Chris@4 1300 $exit_cmd $EXIT_FAILURE
Chris@4 1301 }
Chris@4 1302
Chris@4 1303 # func_check_version_match
Chris@4 1304 # Ensure that we are using m4 macros, and libtool script from the same
Chris@4 1305 # release of libtool.
Chris@4 1306 func_check_version_match ()
Chris@4 1307 {
Chris@4 1308 if test "$package_revision" != "$macro_revision"; then
Chris@4 1309 if test "$VERSION" != "$macro_version"; then
Chris@4 1310 if test -z "$macro_version"; then
Chris@4 1311 cat >&2 <<_LT_EOF
Chris@4 1312 $progname: Version mismatch error. This is $PACKAGE $VERSION, but the
Chris@4 1313 $progname: definition of this LT_INIT comes from an older release.
Chris@4 1314 $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
Chris@4 1315 $progname: and run autoconf again.
Chris@4 1316 _LT_EOF
Chris@4 1317 else
Chris@4 1318 cat >&2 <<_LT_EOF
Chris@4 1319 $progname: Version mismatch error. This is $PACKAGE $VERSION, but the
Chris@4 1320 $progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
Chris@4 1321 $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
Chris@4 1322 $progname: and run autoconf again.
Chris@4 1323 _LT_EOF
Chris@4 1324 fi
Chris@4 1325 else
Chris@4 1326 cat >&2 <<_LT_EOF
Chris@4 1327 $progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision,
Chris@4 1328 $progname: but the definition of this LT_INIT comes from revision $macro_revision.
Chris@4 1329 $progname: You should recreate aclocal.m4 with macros from revision $package_revision
Chris@4 1330 $progname: of $PACKAGE $VERSION and run autoconf again.
Chris@4 1331 _LT_EOF
Chris@4 1332 fi
Chris@4 1333
Chris@4 1334 exit $EXIT_MISMATCH
Chris@4 1335 fi
Chris@4 1336 }
Chris@4 1337
Chris@4 1338
Chris@4 1339 ## ----------- ##
Chris@4 1340 ## Main. ##
Chris@4 1341 ## ----------- ##
Chris@4 1342
Chris@4 1343 $opt_help || {
Chris@4 1344 # Sanity checks first:
Chris@4 1345 func_check_version_match
Chris@4 1346
Chris@4 1347 if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
Chris@4 1348 func_fatal_configuration "not configured to build any kind of library"
Chris@4 1349 fi
Chris@4 1350
Chris@4 1351 test -z "$mode" && func_fatal_error "error: you must specify a MODE."
Chris@4 1352
Chris@4 1353
Chris@4 1354 # Darwin sucks
Chris@4 1355 eval std_shrext=\"$shrext_cmds\"
Chris@4 1356
Chris@4 1357
Chris@4 1358 # Only execute mode is allowed to have -dlopen flags.
Chris@4 1359 if test -n "$execute_dlfiles" && test "$mode" != execute; then
Chris@4 1360 func_error "unrecognized option \`-dlopen'"
Chris@4 1361 $ECHO "$help" 1>&2
Chris@4 1362 exit $EXIT_FAILURE
Chris@4 1363 fi
Chris@4 1364
Chris@4 1365 # Change the help message to a mode-specific one.
Chris@4 1366 generic_help="$help"
Chris@4 1367 help="Try \`$progname --help --mode=$mode' for more information."
Chris@4 1368 }
Chris@4 1369
Chris@4 1370
Chris@4 1371 # func_lalib_p file
Chris@4 1372 # True iff FILE is a libtool `.la' library or `.lo' object file.
Chris@4 1373 # This function is only a basic sanity check; it will hardly flush out
Chris@4 1374 # determined imposters.
Chris@4 1375 func_lalib_p ()
Chris@4 1376 {
Chris@4 1377 $SED -e 4q "$1" 2>/dev/null \
Chris@4 1378 | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
Chris@4 1379 }
Chris@4 1380
Chris@4 1381 # func_lalib_unsafe_p file
Chris@4 1382 # True iff FILE is a libtool `.la' library or `.lo' object file.
Chris@4 1383 # This function implements the same check as func_lalib_p without
Chris@4 1384 # resorting to external programs. To this end, it redirects stdin and
Chris@4 1385 # closes it afterwards, without saving the original file descriptor.
Chris@4 1386 # As a safety measure, use it only where a negative result would be
Chris@4 1387 # fatal anyway. Works if `file' does not exist.
Chris@4 1388 func_lalib_unsafe_p ()
Chris@4 1389 {
Chris@4 1390 lalib_p=no
Chris@4 1391 if test -r "$1" && exec 5<&0 <"$1"; then
Chris@4 1392 for lalib_p_l in 1 2 3 4
Chris@4 1393 do
Chris@4 1394 read lalib_p_line
Chris@4 1395 case "$lalib_p_line" in
Chris@4 1396 \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
Chris@4 1397 esac
Chris@4 1398 done
Chris@4 1399 exec 0<&5 5<&-
Chris@4 1400 fi
Chris@4 1401 test "$lalib_p" = yes
Chris@4 1402 }
Chris@4 1403
Chris@4 1404 # func_ltwrapper_script_p file
Chris@4 1405 # True iff FILE is a libtool wrapper script
Chris@4 1406 # This function is only a basic sanity check; it will hardly flush out
Chris@4 1407 # determined imposters.
Chris@4 1408 func_ltwrapper_script_p ()
Chris@4 1409 {
Chris@4 1410 func_lalib_p "$1"
Chris@4 1411 }
Chris@4 1412
Chris@4 1413 # func_ltwrapper_executable_p file
Chris@4 1414 # True iff FILE is a libtool wrapper executable
Chris@4 1415 # This function is only a basic sanity check; it will hardly flush out
Chris@4 1416 # determined imposters.
Chris@4 1417 func_ltwrapper_executable_p ()
Chris@4 1418 {
Chris@4 1419 func_ltwrapper_exec_suffix=
Chris@4 1420 case $1 in
Chris@4 1421 *.exe) ;;
Chris@4 1422 *) func_ltwrapper_exec_suffix=.exe ;;
Chris@4 1423 esac
Chris@4 1424 $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1
Chris@4 1425 }
Chris@4 1426
Chris@4 1427 # func_ltwrapper_scriptname file
Chris@4 1428 # Assumes file is an ltwrapper_executable
Chris@4 1429 # uses $file to determine the appropriate filename for a
Chris@4 1430 # temporary ltwrapper_script.
Chris@4 1431 func_ltwrapper_scriptname ()
Chris@4 1432 {
Chris@4 1433 func_ltwrapper_scriptname_result=""
Chris@4 1434 if func_ltwrapper_executable_p "$1"; then
Chris@4 1435 func_dirname_and_basename "$1" "" "."
Chris@4 1436 func_stripname '' '.exe' "$func_basename_result"
Chris@4 1437 func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
Chris@4 1438 fi
Chris@4 1439 }
Chris@4 1440
Chris@4 1441 # func_ltwrapper_p file
Chris@4 1442 # True iff FILE is a libtool wrapper script or wrapper executable
Chris@4 1443 # This function is only a basic sanity check; it will hardly flush out
Chris@4 1444 # determined imposters.
Chris@4 1445 func_ltwrapper_p ()
Chris@4 1446 {
Chris@4 1447 func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1"
Chris@4 1448 }
Chris@4 1449
Chris@4 1450
Chris@4 1451 # func_execute_cmds commands fail_cmd
Chris@4 1452 # Execute tilde-delimited COMMANDS.
Chris@4 1453 # If FAIL_CMD is given, eval that upon failure.
Chris@4 1454 # FAIL_CMD may read-access the current command in variable CMD!
Chris@4 1455 func_execute_cmds ()
Chris@4 1456 {
Chris@4 1457 $opt_debug
Chris@4 1458 save_ifs=$IFS; IFS='~'
Chris@4 1459 for cmd in $1; do
Chris@4 1460 IFS=$save_ifs
Chris@4 1461 eval cmd=\"$cmd\"
Chris@4 1462 func_show_eval "$cmd" "${2-:}"
Chris@4 1463 done
Chris@4 1464 IFS=$save_ifs
Chris@4 1465 }
Chris@4 1466
Chris@4 1467
Chris@4 1468 # func_source file
Chris@4 1469 # Source FILE, adding directory component if necessary.
Chris@4 1470 # Note that it is not necessary on cygwin/mingw to append a dot to
Chris@4 1471 # FILE even if both FILE and FILE.exe exist: automatic-append-.exe
Chris@4 1472 # behavior happens only for exec(3), not for open(2)! Also, sourcing
Chris@4 1473 # `FILE.' does not work on cygwin managed mounts.
Chris@4 1474 func_source ()
Chris@4 1475 {
Chris@4 1476 $opt_debug
Chris@4 1477 case $1 in
Chris@4 1478 */* | *\\*) . "$1" ;;
Chris@4 1479 *) . "./$1" ;;
Chris@4 1480 esac
Chris@4 1481 }
Chris@4 1482
Chris@4 1483
Chris@4 1484 # func_infer_tag arg
Chris@4 1485 # Infer tagged configuration to use if any are available and
Chris@4 1486 # if one wasn't chosen via the "--tag" command line option.
Chris@4 1487 # Only attempt this if the compiler in the base compile
Chris@4 1488 # command doesn't match the default compiler.
Chris@4 1489 # arg is usually of the form 'gcc ...'
Chris@4 1490 func_infer_tag ()
Chris@4 1491 {
Chris@4 1492 $opt_debug
Chris@4 1493 if test -n "$available_tags" && test -z "$tagname"; then
Chris@4 1494 CC_quoted=
Chris@4 1495 for arg in $CC; do
Chris@4 1496 func_quote_for_eval "$arg"
Chris@4 1497 CC_quoted="$CC_quoted $func_quote_for_eval_result"
Chris@4 1498 done
Chris@4 1499 case $@ in
Chris@4 1500 # Blanks in the command may have been stripped by the calling shell,
Chris@4 1501 # but not from the CC environment variable when configure was run.
Chris@4 1502 " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;;
Chris@4 1503 # Blanks at the start of $base_compile will cause this to fail
Chris@4 1504 # if we don't check for them as well.
Chris@4 1505 *)
Chris@4 1506 for z in $available_tags; do
Chris@4 1507 if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
Chris@4 1508 # Evaluate the configuration.
Chris@4 1509 eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
Chris@4 1510 CC_quoted=
Chris@4 1511 for arg in $CC; do
Chris@4 1512 # Double-quote args containing other shell metacharacters.
Chris@4 1513 func_quote_for_eval "$arg"
Chris@4 1514 CC_quoted="$CC_quoted $func_quote_for_eval_result"
Chris@4 1515 done
Chris@4 1516 case "$@ " in
Chris@4 1517 " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*)
Chris@4 1518 # The compiler in the base compile command matches
Chris@4 1519 # the one in the tagged configuration.
Chris@4 1520 # Assume this is the tagged configuration we want.
Chris@4 1521 tagname=$z
Chris@4 1522 break
Chris@4 1523 ;;
Chris@4 1524 esac
Chris@4 1525 fi
Chris@4 1526 done
Chris@4 1527 # If $tagname still isn't set, then no tagged configuration
Chris@4 1528 # was found and let the user know that the "--tag" command
Chris@4 1529 # line option must be used.
Chris@4 1530 if test -z "$tagname"; then
Chris@4 1531 func_echo "unable to infer tagged configuration"
Chris@4 1532 func_fatal_error "specify a tag with \`--tag'"
Chris@4 1533 # else
Chris@4 1534 # func_verbose "using $tagname tagged configuration"
Chris@4 1535 fi
Chris@4 1536 ;;
Chris@4 1537 esac
Chris@4 1538 fi
Chris@4 1539 }
Chris@4 1540
Chris@4 1541
Chris@4 1542
Chris@4 1543 # func_write_libtool_object output_name pic_name nonpic_name
Chris@4 1544 # Create a libtool object file (analogous to a ".la" file),
Chris@4 1545 # but don't create it if we're doing a dry run.
Chris@4 1546 func_write_libtool_object ()
Chris@4 1547 {
Chris@4 1548 write_libobj=${1}
Chris@4 1549 if test "$build_libtool_libs" = yes; then
Chris@4 1550 write_lobj=\'${2}\'
Chris@4 1551 else
Chris@4 1552 write_lobj=none
Chris@4 1553 fi
Chris@4 1554
Chris@4 1555 if test "$build_old_libs" = yes; then
Chris@4 1556 write_oldobj=\'${3}\'
Chris@4 1557 else
Chris@4 1558 write_oldobj=none
Chris@4 1559 fi
Chris@4 1560
Chris@4 1561 $opt_dry_run || {
Chris@4 1562 cat >${write_libobj}T <<EOF
Chris@4 1563 # $write_libobj - a libtool object file
Chris@4 1564 # Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
Chris@4 1565 #
Chris@4 1566 # Please DO NOT delete this file!
Chris@4 1567 # It is necessary for linking the library.
Chris@4 1568
Chris@4 1569 # Name of the PIC object.
Chris@4 1570 pic_object=$write_lobj
Chris@4 1571
Chris@4 1572 # Name of the non-PIC object
Chris@4 1573 non_pic_object=$write_oldobj
Chris@4 1574
Chris@4 1575 EOF
Chris@4 1576 $MV "${write_libobj}T" "${write_libobj}"
Chris@4 1577 }
Chris@4 1578 }
Chris@4 1579
Chris@4 1580 # func_mode_compile arg...
Chris@4 1581 func_mode_compile ()
Chris@4 1582 {
Chris@4 1583 $opt_debug
Chris@4 1584 # Get the compilation command and the source file.
Chris@4 1585 base_compile=
Chris@4 1586 srcfile="$nonopt" # always keep a non-empty value in "srcfile"
Chris@4 1587 suppress_opt=yes
Chris@4 1588 suppress_output=
Chris@4 1589 arg_mode=normal
Chris@4 1590 libobj=
Chris@4 1591 later=
Chris@4 1592 pie_flag=
Chris@4 1593
Chris@4 1594 for arg
Chris@4 1595 do
Chris@4 1596 case $arg_mode in
Chris@4 1597 arg )
Chris@4 1598 # do not "continue". Instead, add this to base_compile
Chris@4 1599 lastarg="$arg"
Chris@4 1600 arg_mode=normal
Chris@4 1601 ;;
Chris@4 1602
Chris@4 1603 target )
Chris@4 1604 libobj="$arg"
Chris@4 1605 arg_mode=normal
Chris@4 1606 continue
Chris@4 1607 ;;
Chris@4 1608
Chris@4 1609 normal )
Chris@4 1610 # Accept any command-line options.
Chris@4 1611 case $arg in
Chris@4 1612 -o)
Chris@4 1613 test -n "$libobj" && \
Chris@4 1614 func_fatal_error "you cannot specify \`-o' more than once"
Chris@4 1615 arg_mode=target
Chris@4 1616 continue
Chris@4 1617 ;;
Chris@4 1618
Chris@4 1619 -pie | -fpie | -fPIE)
Chris@4 1620 pie_flag="$pie_flag $arg"
Chris@4 1621 continue
Chris@4 1622 ;;
Chris@4 1623
Chris@4 1624 -shared | -static | -prefer-pic | -prefer-non-pic)
Chris@4 1625 later="$later $arg"
Chris@4 1626 continue
Chris@4 1627 ;;
Chris@4 1628
Chris@4 1629 -no-suppress)
Chris@4 1630 suppress_opt=no
Chris@4 1631 continue
Chris@4 1632 ;;
Chris@4 1633
Chris@4 1634 -Xcompiler)
Chris@4 1635 arg_mode=arg # the next one goes into the "base_compile" arg list
Chris@4 1636 continue # The current "srcfile" will either be retained or
Chris@4 1637 ;; # replaced later. I would guess that would be a bug.
Chris@4 1638
Chris@4 1639 -Wc,*)
Chris@4 1640 func_stripname '-Wc,' '' "$arg"
Chris@4 1641 args=$func_stripname_result
Chris@4 1642 lastarg=
Chris@4 1643 save_ifs="$IFS"; IFS=','
Chris@4 1644 for arg in $args; do
Chris@4 1645 IFS="$save_ifs"
Chris@4 1646 func_quote_for_eval "$arg"
Chris@4 1647 lastarg="$lastarg $func_quote_for_eval_result"
Chris@4 1648 done
Chris@4 1649 IFS="$save_ifs"
Chris@4 1650 func_stripname ' ' '' "$lastarg"
Chris@4 1651 lastarg=$func_stripname_result
Chris@4 1652
Chris@4 1653 # Add the arguments to base_compile.
Chris@4 1654 base_compile="$base_compile $lastarg"
Chris@4 1655 continue
Chris@4 1656 ;;
Chris@4 1657
Chris@4 1658 *)
Chris@4 1659 # Accept the current argument as the source file.
Chris@4 1660 # The previous "srcfile" becomes the current argument.
Chris@4 1661 #
Chris@4 1662 lastarg="$srcfile"
Chris@4 1663 srcfile="$arg"
Chris@4 1664 ;;
Chris@4 1665 esac # case $arg
Chris@4 1666 ;;
Chris@4 1667 esac # case $arg_mode
Chris@4 1668
Chris@4 1669 # Aesthetically quote the previous argument.
Chris@4 1670 func_quote_for_eval "$lastarg"
Chris@4 1671 base_compile="$base_compile $func_quote_for_eval_result"
Chris@4 1672 done # for arg
Chris@4 1673
Chris@4 1674 case $arg_mode in
Chris@4 1675 arg)
Chris@4 1676 func_fatal_error "you must specify an argument for -Xcompile"
Chris@4 1677 ;;
Chris@4 1678 target)
Chris@4 1679 func_fatal_error "you must specify a target with \`-o'"
Chris@4 1680 ;;
Chris@4 1681 *)
Chris@4 1682 # Get the name of the library object.
Chris@4 1683 test -z "$libobj" && {
Chris@4 1684 func_basename "$srcfile"
Chris@4 1685 libobj="$func_basename_result"
Chris@4 1686 }
Chris@4 1687 ;;
Chris@4 1688 esac
Chris@4 1689
Chris@4 1690 # Recognize several different file suffixes.
Chris@4 1691 # If the user specifies -o file.o, it is replaced with file.lo
Chris@4 1692 case $libobj in
Chris@4 1693 *.[cCFSifmso] | \
Chris@4 1694 *.ada | *.adb | *.ads | *.asm | \
Chris@4 1695 *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
Chris@4 1696 *.[fF][09]? | *.for | *.java | *.obj | *.sx)
Chris@4 1697 func_xform "$libobj"
Chris@4 1698 libobj=$func_xform_result
Chris@4 1699 ;;
Chris@4 1700 esac
Chris@4 1701
Chris@4 1702 case $libobj in
Chris@4 1703 *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
Chris@4 1704 *)
Chris@4 1705 func_fatal_error "cannot determine name of library object from \`$libobj'"
Chris@4 1706 ;;
Chris@4 1707 esac
Chris@4 1708
Chris@4 1709 func_infer_tag $base_compile
Chris@4 1710
Chris@4 1711 for arg in $later; do
Chris@4 1712 case $arg in
Chris@4 1713 -shared)
Chris@4 1714 test "$build_libtool_libs" != yes && \
Chris@4 1715 func_fatal_configuration "can not build a shared library"
Chris@4 1716 build_old_libs=no
Chris@4 1717 continue
Chris@4 1718 ;;
Chris@4 1719
Chris@4 1720 -static)
Chris@4 1721 build_libtool_libs=no
Chris@4 1722 build_old_libs=yes
Chris@4 1723 continue
Chris@4 1724 ;;
Chris@4 1725
Chris@4 1726 -prefer-pic)
Chris@4 1727 pic_mode=yes
Chris@4 1728 continue
Chris@4 1729 ;;
Chris@4 1730
Chris@4 1731 -prefer-non-pic)
Chris@4 1732 pic_mode=no
Chris@4 1733 continue
Chris@4 1734 ;;
Chris@4 1735 esac
Chris@4 1736 done
Chris@4 1737
Chris@4 1738 func_quote_for_eval "$libobj"
Chris@4 1739 test "X$libobj" != "X$func_quote_for_eval_result" \
Chris@4 1740 && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \
Chris@4 1741 && func_warning "libobj name \`$libobj' may not contain shell special characters."
Chris@4 1742 func_dirname_and_basename "$obj" "/" ""
Chris@4 1743 objname="$func_basename_result"
Chris@4 1744 xdir="$func_dirname_result"
Chris@4 1745 lobj=${xdir}$objdir/$objname
Chris@4 1746
Chris@4 1747 test -z "$base_compile" && \
Chris@4 1748 func_fatal_help "you must specify a compilation command"
Chris@4 1749
Chris@4 1750 # Delete any leftover library objects.
Chris@4 1751 if test "$build_old_libs" = yes; then
Chris@4 1752 removelist="$obj $lobj $libobj ${libobj}T"
Chris@4 1753 else
Chris@4 1754 removelist="$lobj $libobj ${libobj}T"
Chris@4 1755 fi
Chris@4 1756
Chris@4 1757 # On Cygwin there's no "real" PIC flag so we must build both object types
Chris@4 1758 case $host_os in
Chris@4 1759 cygwin* | mingw* | pw32* | os2*)
Chris@4 1760 pic_mode=default
Chris@4 1761 ;;
Chris@4 1762 esac
Chris@4 1763 if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
Chris@4 1764 # non-PIC code in shared libraries is not supported
Chris@4 1765 pic_mode=default
Chris@4 1766 fi
Chris@4 1767
Chris@4 1768 # Calculate the filename of the output object if compiler does
Chris@4 1769 # not support -o with -c
Chris@4 1770 if test "$compiler_c_o" = no; then
Chris@4 1771 output_obj=`$ECHO "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
Chris@4 1772 lockfile="$output_obj.lock"
Chris@4 1773 else
Chris@4 1774 output_obj=
Chris@4 1775 need_locks=no
Chris@4 1776 lockfile=
Chris@4 1777 fi
Chris@4 1778
Chris@4 1779 # Lock this critical section if it is needed
Chris@4 1780 # We use this script file to make the link, it avoids creating a new file
Chris@4 1781 if test "$need_locks" = yes; then
Chris@4 1782 until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
Chris@4 1783 func_echo "Waiting for $lockfile to be removed"
Chris@4 1784 sleep 2
Chris@4 1785 done
Chris@4 1786 elif test "$need_locks" = warn; then
Chris@4 1787 if test -f "$lockfile"; then
Chris@4 1788 $ECHO "\
Chris@4 1789 *** ERROR, $lockfile exists and contains:
Chris@4 1790 `cat $lockfile 2>/dev/null`
Chris@4 1791
Chris@4 1792 This indicates that another process is trying to use the same
Chris@4 1793 temporary object file, and libtool could not work around it because
Chris@4 1794 your compiler does not support \`-c' and \`-o' together. If you
Chris@4 1795 repeat this compilation, it may succeed, by chance, but you had better
Chris@4 1796 avoid parallel builds (make -j) in this platform, or get a better
Chris@4 1797 compiler."
Chris@4 1798
Chris@4 1799 $opt_dry_run || $RM $removelist
Chris@4 1800 exit $EXIT_FAILURE
Chris@4 1801 fi
Chris@4 1802 removelist="$removelist $output_obj"
Chris@4 1803 $ECHO "$srcfile" > "$lockfile"
Chris@4 1804 fi
Chris@4 1805
Chris@4 1806 $opt_dry_run || $RM $removelist
Chris@4 1807 removelist="$removelist $lockfile"
Chris@4 1808 trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
Chris@4 1809
Chris@4 1810 if test -n "$fix_srcfile_path"; then
Chris@4 1811 eval srcfile=\"$fix_srcfile_path\"
Chris@4 1812 fi
Chris@4 1813 func_quote_for_eval "$srcfile"
Chris@4 1814 qsrcfile=$func_quote_for_eval_result
Chris@4 1815
Chris@4 1816 # Only build a PIC object if we are building libtool libraries.
Chris@4 1817 if test "$build_libtool_libs" = yes; then
Chris@4 1818 # Without this assignment, base_compile gets emptied.
Chris@4 1819 fbsd_hideous_sh_bug=$base_compile
Chris@4 1820
Chris@4 1821 if test "$pic_mode" != no; then
Chris@4 1822 command="$base_compile $qsrcfile $pic_flag"
Chris@4 1823 else
Chris@4 1824 # Don't build PIC code
Chris@4 1825 command="$base_compile $qsrcfile"
Chris@4 1826 fi
Chris@4 1827
Chris@4 1828 func_mkdir_p "$xdir$objdir"
Chris@4 1829
Chris@4 1830 if test -z "$output_obj"; then
Chris@4 1831 # Place PIC objects in $objdir
Chris@4 1832 command="$command -o $lobj"
Chris@4 1833 fi
Chris@4 1834
Chris@4 1835 func_show_eval_locale "$command" \
Chris@4 1836 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
Chris@4 1837
Chris@4 1838 if test "$need_locks" = warn &&
Chris@4 1839 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
Chris@4 1840 $ECHO "\
Chris@4 1841 *** ERROR, $lockfile contains:
Chris@4 1842 `cat $lockfile 2>/dev/null`
Chris@4 1843
Chris@4 1844 but it should contain:
Chris@4 1845 $srcfile
Chris@4 1846
Chris@4 1847 This indicates that another process is trying to use the same
Chris@4 1848 temporary object file, and libtool could not work around it because
Chris@4 1849 your compiler does not support \`-c' and \`-o' together. If you
Chris@4 1850 repeat this compilation, it may succeed, by chance, but you had better
Chris@4 1851 avoid parallel builds (make -j) in this platform, or get a better
Chris@4 1852 compiler."
Chris@4 1853
Chris@4 1854 $opt_dry_run || $RM $removelist
Chris@4 1855 exit $EXIT_FAILURE
Chris@4 1856 fi
Chris@4 1857
Chris@4 1858 # Just move the object if needed, then go on to compile the next one
Chris@4 1859 if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
Chris@4 1860 func_show_eval '$MV "$output_obj" "$lobj"' \
Chris@4 1861 'error=$?; $opt_dry_run || $RM $removelist; exit $error'
Chris@4 1862 fi
Chris@4 1863
Chris@4 1864 # Allow error messages only from the first compilation.
Chris@4 1865 if test "$suppress_opt" = yes; then
Chris@4 1866 suppress_output=' >/dev/null 2>&1'
Chris@4 1867 fi
Chris@4 1868 fi
Chris@4 1869
Chris@4 1870 # Only build a position-dependent object if we build old libraries.
Chris@4 1871 if test "$build_old_libs" = yes; then
Chris@4 1872 if test "$pic_mode" != yes; then
Chris@4 1873 # Don't build PIC code
Chris@4 1874 command="$base_compile $qsrcfile$pie_flag"
Chris@4 1875 else
Chris@4 1876 command="$base_compile $qsrcfile $pic_flag"
Chris@4 1877 fi
Chris@4 1878 if test "$compiler_c_o" = yes; then
Chris@4 1879 command="$command -o $obj"
Chris@4 1880 fi
Chris@4 1881
Chris@4 1882 # Suppress compiler output if we already did a PIC compilation.
Chris@4 1883 command="$command$suppress_output"
Chris@4 1884 func_show_eval_locale "$command" \
Chris@4 1885 '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
Chris@4 1886
Chris@4 1887 if test "$need_locks" = warn &&
Chris@4 1888 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
Chris@4 1889 $ECHO "\
Chris@4 1890 *** ERROR, $lockfile contains:
Chris@4 1891 `cat $lockfile 2>/dev/null`
Chris@4 1892
Chris@4 1893 but it should contain:
Chris@4 1894 $srcfile
Chris@4 1895
Chris@4 1896 This indicates that another process is trying to use the same
Chris@4 1897 temporary object file, and libtool could not work around it because
Chris@4 1898 your compiler does not support \`-c' and \`-o' together. If you
Chris@4 1899 repeat this compilation, it may succeed, by chance, but you had better
Chris@4 1900 avoid parallel builds (make -j) in this platform, or get a better
Chris@4 1901 compiler."
Chris@4 1902
Chris@4 1903 $opt_dry_run || $RM $removelist
Chris@4 1904 exit $EXIT_FAILURE
Chris@4 1905 fi
Chris@4 1906
Chris@4 1907 # Just move the object if needed
Chris@4 1908 if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
Chris@4 1909 func_show_eval '$MV "$output_obj" "$obj"' \
Chris@4 1910 'error=$?; $opt_dry_run || $RM $removelist; exit $error'
Chris@4 1911 fi
Chris@4 1912 fi
Chris@4 1913
Chris@4 1914 $opt_dry_run || {
Chris@4 1915 func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
Chris@4 1916
Chris@4 1917 # Unlock the critical section if it was locked
Chris@4 1918 if test "$need_locks" != no; then
Chris@4 1919 removelist=$lockfile
Chris@4 1920 $RM "$lockfile"
Chris@4 1921 fi
Chris@4 1922 }
Chris@4 1923
Chris@4 1924 exit $EXIT_SUCCESS
Chris@4 1925 }
Chris@4 1926
Chris@4 1927 $opt_help || {
Chris@4 1928 test "$mode" = compile && func_mode_compile ${1+"$@"}
Chris@4 1929 }
Chris@4 1930
Chris@4 1931 func_mode_help ()
Chris@4 1932 {
Chris@4 1933 # We need to display help for each of the modes.
Chris@4 1934 case $mode in
Chris@4 1935 "")
Chris@4 1936 # Generic help is extracted from the usage comments
Chris@4 1937 # at the start of this file.
Chris@4 1938 func_help
Chris@4 1939 ;;
Chris@4 1940
Chris@4 1941 clean)
Chris@4 1942 $ECHO \
Chris@4 1943 "Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
Chris@4 1944
Chris@4 1945 Remove files from the build directory.
Chris@4 1946
Chris@4 1947 RM is the name of the program to use to delete files associated with each FILE
Chris@4 1948 (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
Chris@4 1949 to RM.
Chris@4 1950
Chris@4 1951 If FILE is a libtool library, object or program, all the files associated
Chris@4 1952 with it are deleted. Otherwise, only FILE itself is deleted using RM."
Chris@4 1953 ;;
Chris@4 1954
Chris@4 1955 compile)
Chris@4 1956 $ECHO \
Chris@4 1957 "Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
Chris@4 1958
Chris@4 1959 Compile a source file into a libtool library object.
Chris@4 1960
Chris@4 1961 This mode accepts the following additional options:
Chris@4 1962
Chris@4 1963 -o OUTPUT-FILE set the output file name to OUTPUT-FILE
Chris@4 1964 -no-suppress do not suppress compiler output for multiple passes
Chris@4 1965 -prefer-pic try to building PIC objects only
Chris@4 1966 -prefer-non-pic try to building non-PIC objects only
Chris@4 1967 -shared do not build a \`.o' file suitable for static linking
Chris@4 1968 -static only build a \`.o' file suitable for static linking
Chris@4 1969
Chris@4 1970 COMPILE-COMMAND is a command to be used in creating a \`standard' object file
Chris@4 1971 from the given SOURCEFILE.
Chris@4 1972
Chris@4 1973 The output file name is determined by removing the directory component from
Chris@4 1974 SOURCEFILE, then substituting the C source code suffix \`.c' with the
Chris@4 1975 library object suffix, \`.lo'."
Chris@4 1976 ;;
Chris@4 1977
Chris@4 1978 execute)
Chris@4 1979 $ECHO \
Chris@4 1980 "Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
Chris@4 1981
Chris@4 1982 Automatically set library path, then run a program.
Chris@4 1983
Chris@4 1984 This mode accepts the following additional options:
Chris@4 1985
Chris@4 1986 -dlopen FILE add the directory containing FILE to the library path
Chris@4 1987
Chris@4 1988 This mode sets the library path environment variable according to \`-dlopen'
Chris@4 1989 flags.
Chris@4 1990
Chris@4 1991 If any of the ARGS are libtool executable wrappers, then they are translated
Chris@4 1992 into their corresponding uninstalled binary, and any of their required library
Chris@4 1993 directories are added to the library path.
Chris@4 1994
Chris@4 1995 Then, COMMAND is executed, with ARGS as arguments."
Chris@4 1996 ;;
Chris@4 1997
Chris@4 1998 finish)
Chris@4 1999 $ECHO \
Chris@4 2000 "Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
Chris@4 2001
Chris@4 2002 Complete the installation of libtool libraries.
Chris@4 2003
Chris@4 2004 Each LIBDIR is a directory that contains libtool libraries.
Chris@4 2005
Chris@4 2006 The commands that this mode executes may require superuser privileges. Use
Chris@4 2007 the \`--dry-run' option if you just want to see what would be executed."
Chris@4 2008 ;;
Chris@4 2009
Chris@4 2010 install)
Chris@4 2011 $ECHO \
Chris@4 2012 "Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
Chris@4 2013
Chris@4 2014 Install executables or libraries.
Chris@4 2015
Chris@4 2016 INSTALL-COMMAND is the installation command. The first component should be
Chris@4 2017 either the \`install' or \`cp' program.
Chris@4 2018
Chris@4 2019 The following components of INSTALL-COMMAND are treated specially:
Chris@4 2020
Chris@4 2021 -inst-prefix PREFIX-DIR Use PREFIX-DIR as a staging area for installation
Chris@4 2022
Chris@4 2023 The rest of the components are interpreted as arguments to that command (only
Chris@4 2024 BSD-compatible install options are recognized)."
Chris@4 2025 ;;
Chris@4 2026
Chris@4 2027 link)
Chris@4 2028 $ECHO \
Chris@4 2029 "Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
Chris@4 2030
Chris@4 2031 Link object files or libraries together to form another library, or to
Chris@4 2032 create an executable program.
Chris@4 2033
Chris@4 2034 LINK-COMMAND is a command using the C compiler that you would use to create
Chris@4 2035 a program from several object files.
Chris@4 2036
Chris@4 2037 The following components of LINK-COMMAND are treated specially:
Chris@4 2038
Chris@4 2039 -all-static do not do any dynamic linking at all
Chris@4 2040 -avoid-version do not add a version suffix if possible
Chris@4 2041 -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime
Chris@4 2042 -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols
Chris@4 2043 -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
Chris@4 2044 -export-symbols SYMFILE
Chris@4 2045 try to export only the symbols listed in SYMFILE
Chris@4 2046 -export-symbols-regex REGEX
Chris@4 2047 try to export only the symbols matching REGEX
Chris@4 2048 -LLIBDIR search LIBDIR for required installed libraries
Chris@4 2049 -lNAME OUTPUT-FILE requires the installed library libNAME
Chris@4 2050 -module build a library that can dlopened
Chris@4 2051 -no-fast-install disable the fast-install mode
Chris@4 2052 -no-install link a not-installable executable
Chris@4 2053 -no-undefined declare that a library does not refer to external symbols
Chris@4 2054 -o OUTPUT-FILE create OUTPUT-FILE from the specified objects
Chris@4 2055 -objectlist FILE Use a list of object files found in FILE to specify objects
Chris@4 2056 -precious-files-regex REGEX
Chris@4 2057 don't remove output files matching REGEX
Chris@4 2058 -release RELEASE specify package release information
Chris@4 2059 -rpath LIBDIR the created library will eventually be installed in LIBDIR
Chris@4 2060 -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries
Chris@4 2061 -shared only do dynamic linking of libtool libraries
Chris@4 2062 -shrext SUFFIX override the standard shared library file extension
Chris@4 2063 -static do not do any dynamic linking of uninstalled libtool libraries
Chris@4 2064 -static-libtool-libs
Chris@4 2065 do not do any dynamic linking of libtool libraries
Chris@4 2066 -version-info CURRENT[:REVISION[:AGE]]
Chris@4 2067 specify library version info [each variable defaults to 0]
Chris@4 2068 -weak LIBNAME declare that the target provides the LIBNAME interface
Chris@4 2069
Chris@4 2070 All other options (arguments beginning with \`-') are ignored.
Chris@4 2071
Chris@4 2072 Every other argument is treated as a filename. Files ending in \`.la' are
Chris@4 2073 treated as uninstalled libtool libraries, other files are standard or library
Chris@4 2074 object files.
Chris@4 2075
Chris@4 2076 If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
Chris@4 2077 only library objects (\`.lo' files) may be specified, and \`-rpath' is
Chris@4 2078 required, except when creating a convenience library.
Chris@4 2079
Chris@4 2080 If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
Chris@4 2081 using \`ar' and \`ranlib', or on Windows using \`lib'.
Chris@4 2082
Chris@4 2083 If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
Chris@4 2084 is created, otherwise an executable program is created."
Chris@4 2085 ;;
Chris@4 2086
Chris@4 2087 uninstall)
Chris@4 2088 $ECHO \
Chris@4 2089 "Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
Chris@4 2090
Chris@4 2091 Remove libraries from an installation directory.
Chris@4 2092
Chris@4 2093 RM is the name of the program to use to delete files associated with each FILE
Chris@4 2094 (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
Chris@4 2095 to RM.
Chris@4 2096
Chris@4 2097 If FILE is a libtool library, all the files associated with it are deleted.
Chris@4 2098 Otherwise, only FILE itself is deleted using RM."
Chris@4 2099 ;;
Chris@4 2100
Chris@4 2101 *)
Chris@4 2102 func_fatal_help "invalid operation mode \`$mode'"
Chris@4 2103 ;;
Chris@4 2104 esac
Chris@4 2105
Chris@4 2106 $ECHO
Chris@4 2107 $ECHO "Try \`$progname --help' for more information about other modes."
Chris@4 2108
Chris@4 2109 exit $?
Chris@4 2110 }
Chris@4 2111
Chris@4 2112 # Now that we've collected a possible --mode arg, show help if necessary
Chris@4 2113 $opt_help && func_mode_help
Chris@4 2114
Chris@4 2115
Chris@4 2116 # func_mode_execute arg...
Chris@4 2117 func_mode_execute ()
Chris@4 2118 {
Chris@4 2119 $opt_debug
Chris@4 2120 # The first argument is the command name.
Chris@4 2121 cmd="$nonopt"
Chris@4 2122 test -z "$cmd" && \
Chris@4 2123 func_fatal_help "you must specify a COMMAND"
Chris@4 2124
Chris@4 2125 # Handle -dlopen flags immediately.
Chris@4 2126 for file in $execute_dlfiles; do
Chris@4 2127 test -f "$file" \
Chris@4 2128 || func_fatal_help "\`$file' is not a file"
Chris@4 2129
Chris@4 2130 dir=
Chris@4 2131 case $file in
Chris@4 2132 *.la)
Chris@4 2133 # Check to see that this really is a libtool archive.
Chris@4 2134 func_lalib_unsafe_p "$file" \
Chris@4 2135 || func_fatal_help "\`$lib' is not a valid libtool archive"
Chris@4 2136
Chris@4 2137 # Read the libtool library.
Chris@4 2138 dlname=
Chris@4 2139 library_names=
Chris@4 2140 func_source "$file"
Chris@4 2141
Chris@4 2142 # Skip this library if it cannot be dlopened.
Chris@4 2143 if test -z "$dlname"; then
Chris@4 2144 # Warn if it was a shared library.
Chris@4 2145 test -n "$library_names" && \
Chris@4 2146 func_warning "\`$file' was not linked with \`-export-dynamic'"
Chris@4 2147 continue
Chris@4 2148 fi
Chris@4 2149
Chris@4 2150 func_dirname "$file" "" "."
Chris@4 2151 dir="$func_dirname_result"
Chris@4 2152
Chris@4 2153 if test -f "$dir/$objdir/$dlname"; then
Chris@4 2154 dir="$dir/$objdir"
Chris@4 2155 else
Chris@4 2156 if test ! -f "$dir/$dlname"; then
Chris@4 2157 func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
Chris@4 2158 fi
Chris@4 2159 fi
Chris@4 2160 ;;
Chris@4 2161
Chris@4 2162 *.lo)
Chris@4 2163 # Just add the directory containing the .lo file.
Chris@4 2164 func_dirname "$file" "" "."
Chris@4 2165 dir="$func_dirname_result"
Chris@4 2166 ;;
Chris@4 2167
Chris@4 2168 *)
Chris@4 2169 func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
Chris@4 2170 continue
Chris@4 2171 ;;
Chris@4 2172 esac
Chris@4 2173
Chris@4 2174 # Get the absolute pathname.
Chris@4 2175 absdir=`cd "$dir" && pwd`
Chris@4 2176 test -n "$absdir" && dir="$absdir"
Chris@4 2177
Chris@4 2178 # Now add the directory to shlibpath_var.
Chris@4 2179 if eval "test -z \"\$$shlibpath_var\""; then
Chris@4 2180 eval "$shlibpath_var=\"\$dir\""
Chris@4 2181 else
Chris@4 2182 eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
Chris@4 2183 fi
Chris@4 2184 done
Chris@4 2185
Chris@4 2186 # This variable tells wrapper scripts just to set shlibpath_var
Chris@4 2187 # rather than running their programs.
Chris@4 2188 libtool_execute_magic="$magic"
Chris@4 2189
Chris@4 2190 # Check if any of the arguments is a wrapper script.
Chris@4 2191 args=
Chris@4 2192 for file
Chris@4 2193 do
Chris@4 2194 case $file in
Chris@4 2195 -*) ;;
Chris@4 2196 *)
Chris@4 2197 # Do a test to see if this is really a libtool program.
Chris@4 2198 if func_ltwrapper_script_p "$file"; then
Chris@4 2199 func_source "$file"
Chris@4 2200 # Transform arg to wrapped name.
Chris@4 2201 file="$progdir/$program"
Chris@4 2202 elif func_ltwrapper_executable_p "$file"; then
Chris@4 2203 func_ltwrapper_scriptname "$file"
Chris@4 2204 func_source "$func_ltwrapper_scriptname_result"
Chris@4 2205 # Transform arg to wrapped name.
Chris@4 2206 file="$progdir/$program"
Chris@4 2207 fi
Chris@4 2208 ;;
Chris@4 2209 esac
Chris@4 2210 # Quote arguments (to preserve shell metacharacters).
Chris@4 2211 func_quote_for_eval "$file"
Chris@4 2212 args="$args $func_quote_for_eval_result"
Chris@4 2213 done
Chris@4 2214
Chris@4 2215 if test "X$opt_dry_run" = Xfalse; then
Chris@4 2216 if test -n "$shlibpath_var"; then
Chris@4 2217 # Export the shlibpath_var.
Chris@4 2218 eval "export $shlibpath_var"
Chris@4 2219 fi
Chris@4 2220
Chris@4 2221 # Restore saved environment variables
Chris@4 2222 for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
Chris@4 2223 do
Chris@4 2224 eval "if test \"\${save_$lt_var+set}\" = set; then
Chris@4 2225 $lt_var=\$save_$lt_var; export $lt_var
Chris@4 2226 else
Chris@4 2227 $lt_unset $lt_var
Chris@4 2228 fi"
Chris@4 2229 done
Chris@4 2230
Chris@4 2231 # Now prepare to actually exec the command.
Chris@4 2232 exec_cmd="\$cmd$args"
Chris@4 2233 else
Chris@4 2234 # Display what would be done.
Chris@4 2235 if test -n "$shlibpath_var"; then
Chris@4 2236 eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
Chris@4 2237 $ECHO "export $shlibpath_var"
Chris@4 2238 fi
Chris@4 2239 $ECHO "$cmd$args"
Chris@4 2240 exit $EXIT_SUCCESS
Chris@4 2241 fi
Chris@4 2242 }
Chris@4 2243
Chris@4 2244 test "$mode" = execute && func_mode_execute ${1+"$@"}
Chris@4 2245
Chris@4 2246
Chris@4 2247 # func_mode_finish arg...
Chris@4 2248 func_mode_finish ()
Chris@4 2249 {
Chris@4 2250 $opt_debug
Chris@4 2251 libdirs="$nonopt"
Chris@4 2252 admincmds=
Chris@4 2253
Chris@4 2254 if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
Chris@4 2255 for dir
Chris@4 2256 do
Chris@4 2257 libdirs="$libdirs $dir"
Chris@4 2258 done
Chris@4 2259
Chris@4 2260 for libdir in $libdirs; do
Chris@4 2261 if test -n "$finish_cmds"; then
Chris@4 2262 # Do each command in the finish commands.
Chris@4 2263 func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
Chris@4 2264 '"$cmd"'"'
Chris@4 2265 fi
Chris@4 2266 if test -n "$finish_eval"; then
Chris@4 2267 # Do the single finish_eval.
Chris@4 2268 eval cmds=\"$finish_eval\"
Chris@4 2269 $opt_dry_run || eval "$cmds" || admincmds="$admincmds
Chris@4 2270 $cmds"
Chris@4 2271 fi
Chris@4 2272 done
Chris@4 2273 fi
Chris@4 2274
Chris@4 2275 # Exit here if they wanted silent mode.
Chris@4 2276 $opt_silent && exit $EXIT_SUCCESS
Chris@4 2277
Chris@4 2278 $ECHO "X----------------------------------------------------------------------" | $Xsed
Chris@4 2279 $ECHO "Libraries have been installed in:"
Chris@4 2280 for libdir in $libdirs; do
Chris@4 2281 $ECHO " $libdir"
Chris@4 2282 done
Chris@4 2283 $ECHO
Chris@4 2284 $ECHO "If you ever happen to want to link against installed libraries"
Chris@4 2285 $ECHO "in a given directory, LIBDIR, you must either use libtool, and"
Chris@4 2286 $ECHO "specify the full pathname of the library, or use the \`-LLIBDIR'"
Chris@4 2287 $ECHO "flag during linking and do at least one of the following:"
Chris@4 2288 if test -n "$shlibpath_var"; then
Chris@4 2289 $ECHO " - add LIBDIR to the \`$shlibpath_var' environment variable"
Chris@4 2290 $ECHO " during execution"
Chris@4 2291 fi
Chris@4 2292 if test -n "$runpath_var"; then
Chris@4 2293 $ECHO " - add LIBDIR to the \`$runpath_var' environment variable"
Chris@4 2294 $ECHO " during linking"
Chris@4 2295 fi
Chris@4 2296 if test -n "$hardcode_libdir_flag_spec"; then
Chris@4 2297 libdir=LIBDIR
Chris@4 2298 eval flag=\"$hardcode_libdir_flag_spec\"
Chris@4 2299
Chris@4 2300 $ECHO " - use the \`$flag' linker flag"
Chris@4 2301 fi
Chris@4 2302 if test -n "$admincmds"; then
Chris@4 2303 $ECHO " - have your system administrator run these commands:$admincmds"
Chris@4 2304 fi
Chris@4 2305 if test -f /etc/ld.so.conf; then
Chris@4 2306 $ECHO " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
Chris@4 2307 fi
Chris@4 2308 $ECHO
Chris@4 2309
Chris@4 2310 $ECHO "See any operating system documentation about shared libraries for"
Chris@4 2311 case $host in
Chris@4 2312 solaris2.[6789]|solaris2.1[0-9])
Chris@4 2313 $ECHO "more information, such as the ld(1), crle(1) and ld.so(8) manual"
Chris@4 2314 $ECHO "pages."
Chris@4 2315 ;;
Chris@4 2316 *)
Chris@4 2317 $ECHO "more information, such as the ld(1) and ld.so(8) manual pages."
Chris@4 2318 ;;
Chris@4 2319 esac
Chris@4 2320 $ECHO "X----------------------------------------------------------------------" | $Xsed
Chris@4 2321 exit $EXIT_SUCCESS
Chris@4 2322 }
Chris@4 2323
Chris@4 2324 test "$mode" = finish && func_mode_finish ${1+"$@"}
Chris@4 2325
Chris@4 2326
Chris@4 2327 # func_mode_install arg...
Chris@4 2328 func_mode_install ()
Chris@4 2329 {
Chris@4 2330 $opt_debug
Chris@4 2331 # There may be an optional sh(1) argument at the beginning of
Chris@4 2332 # install_prog (especially on Windows NT).
Chris@4 2333 if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
Chris@4 2334 # Allow the use of GNU shtool's install command.
Chris@4 2335 $ECHO "X$nonopt" | $GREP shtool >/dev/null; then
Chris@4 2336 # Aesthetically quote it.
Chris@4 2337 func_quote_for_eval "$nonopt"
Chris@4 2338 install_prog="$func_quote_for_eval_result "
Chris@4 2339 arg=$1
Chris@4 2340 shift
Chris@4 2341 else
Chris@4 2342 install_prog=
Chris@4 2343 arg=$nonopt
Chris@4 2344 fi
Chris@4 2345
Chris@4 2346 # The real first argument should be the name of the installation program.
Chris@4 2347 # Aesthetically quote it.
Chris@4 2348 func_quote_for_eval "$arg"
Chris@4 2349 install_prog="$install_prog$func_quote_for_eval_result"
Chris@4 2350
Chris@4 2351 # We need to accept at least all the BSD install flags.
Chris@4 2352 dest=
Chris@4 2353 files=
Chris@4 2354 opts=
Chris@4 2355 prev=
Chris@4 2356 install_type=
Chris@4 2357 isdir=no
Chris@4 2358 stripme=
Chris@4 2359 for arg
Chris@4 2360 do
Chris@4 2361 if test -n "$dest"; then
Chris@4 2362 files="$files $dest"
Chris@4 2363 dest=$arg
Chris@4 2364 continue
Chris@4 2365 fi
Chris@4 2366
Chris@4 2367 case $arg in
Chris@4 2368 -d) isdir=yes ;;
Chris@4 2369 -f)
Chris@4 2370 case " $install_prog " in
Chris@4 2371 *[\\\ /]cp\ *) ;;
Chris@4 2372 *) prev=$arg ;;
Chris@4 2373 esac
Chris@4 2374 ;;
Chris@4 2375 -g | -m | -o)
Chris@4 2376 prev=$arg
Chris@4 2377 ;;
Chris@4 2378 -s)
Chris@4 2379 stripme=" -s"
Chris@4 2380 continue
Chris@4 2381 ;;
Chris@4 2382 -*)
Chris@4 2383 ;;
Chris@4 2384 *)
Chris@4 2385 # If the previous option needed an argument, then skip it.
Chris@4 2386 if test -n "$prev"; then
Chris@4 2387 prev=
Chris@4 2388 else
Chris@4 2389 dest=$arg
Chris@4 2390 continue
Chris@4 2391 fi
Chris@4 2392 ;;
Chris@4 2393 esac
Chris@4 2394
Chris@4 2395 # Aesthetically quote the argument.
Chris@4 2396 func_quote_for_eval "$arg"
Chris@4 2397 install_prog="$install_prog $func_quote_for_eval_result"
Chris@4 2398 done
Chris@4 2399
Chris@4 2400 test -z "$install_prog" && \
Chris@4 2401 func_fatal_help "you must specify an install program"
Chris@4 2402
Chris@4 2403 test -n "$prev" && \
Chris@4 2404 func_fatal_help "the \`$prev' option requires an argument"
Chris@4 2405
Chris@4 2406 if test -z "$files"; then
Chris@4 2407 if test -z "$dest"; then
Chris@4 2408 func_fatal_help "no file or destination specified"
Chris@4 2409 else
Chris@4 2410 func_fatal_help "you must specify a destination"
Chris@4 2411 fi
Chris@4 2412 fi
Chris@4 2413
Chris@4 2414 # Strip any trailing slash from the destination.
Chris@4 2415 func_stripname '' '/' "$dest"
Chris@4 2416 dest=$func_stripname_result
Chris@4 2417
Chris@4 2418 # Check to see that the destination is a directory.
Chris@4 2419 test -d "$dest" && isdir=yes
Chris@4 2420 if test "$isdir" = yes; then
Chris@4 2421 destdir="$dest"
Chris@4 2422 destname=
Chris@4 2423 else
Chris@4 2424 func_dirname_and_basename "$dest" "" "."
Chris@4 2425 destdir="$func_dirname_result"
Chris@4 2426 destname="$func_basename_result"
Chris@4 2427
Chris@4 2428 # Not a directory, so check to see that there is only one file specified.
Chris@4 2429 set dummy $files; shift
Chris@4 2430 test "$#" -gt 1 && \
Chris@4 2431 func_fatal_help "\`$dest' is not a directory"
Chris@4 2432 fi
Chris@4 2433 case $destdir in
Chris@4 2434 [\\/]* | [A-Za-z]:[\\/]*) ;;
Chris@4 2435 *)
Chris@4 2436 for file in $files; do
Chris@4 2437 case $file in
Chris@4 2438 *.lo) ;;
Chris@4 2439 *)
Chris@4 2440 func_fatal_help "\`$destdir' must be an absolute directory name"
Chris@4 2441 ;;
Chris@4 2442 esac
Chris@4 2443 done
Chris@4 2444 ;;
Chris@4 2445 esac
Chris@4 2446
Chris@4 2447 # This variable tells wrapper scripts just to set variables rather
Chris@4 2448 # than running their programs.
Chris@4 2449 libtool_install_magic="$magic"
Chris@4 2450
Chris@4 2451 staticlibs=
Chris@4 2452 future_libdirs=
Chris@4 2453 current_libdirs=
Chris@4 2454 for file in $files; do
Chris@4 2455
Chris@4 2456 # Do each installation.
Chris@4 2457 case $file in
Chris@4 2458 *.$libext)
Chris@4 2459 # Do the static libraries later.
Chris@4 2460 staticlibs="$staticlibs $file"
Chris@4 2461 ;;
Chris@4 2462
Chris@4 2463 *.la)
Chris@4 2464 # Check to see that this really is a libtool archive.
Chris@4 2465 func_lalib_unsafe_p "$file" \
Chris@4 2466 || func_fatal_help "\`$file' is not a valid libtool archive"
Chris@4 2467
Chris@4 2468 library_names=
Chris@4 2469 old_library=
Chris@4 2470 relink_command=
Chris@4 2471 func_source "$file"
Chris@4 2472
Chris@4 2473 # Add the libdir to current_libdirs if it is the destination.
Chris@4 2474 if test "X$destdir" = "X$libdir"; then
Chris@4 2475 case "$current_libdirs " in
Chris@4 2476 *" $libdir "*) ;;
Chris@4 2477 *) current_libdirs="$current_libdirs $libdir" ;;
Chris@4 2478 esac
Chris@4 2479 else
Chris@4 2480 # Note the libdir as a future libdir.
Chris@4 2481 case "$future_libdirs " in
Chris@4 2482 *" $libdir "*) ;;
Chris@4 2483 *) future_libdirs="$future_libdirs $libdir" ;;
Chris@4 2484 esac
Chris@4 2485 fi
Chris@4 2486
Chris@4 2487 func_dirname "$file" "/" ""
Chris@4 2488 dir="$func_dirname_result"
Chris@4 2489 dir="$dir$objdir"
Chris@4 2490
Chris@4 2491 if test -n "$relink_command"; then
Chris@4 2492 # Determine the prefix the user has applied to our future dir.
Chris@4 2493 inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"`
Chris@4 2494
Chris@4 2495 # Don't allow the user to place us outside of our expected
Chris@4 2496 # location b/c this prevents finding dependent libraries that
Chris@4 2497 # are installed to the same prefix.
Chris@4 2498 # At present, this check doesn't affect windows .dll's that
Chris@4 2499 # are installed into $libdir/../bin (currently, that works fine)
Chris@4 2500 # but it's something to keep an eye on.
Chris@4 2501 test "$inst_prefix_dir" = "$destdir" && \
Chris@4 2502 func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
Chris@4 2503
Chris@4 2504 if test -n "$inst_prefix_dir"; then
Chris@4 2505 # Stick the inst_prefix_dir data into the link command.
Chris@4 2506 relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
Chris@4 2507 else
Chris@4 2508 relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"`
Chris@4 2509 fi
Chris@4 2510
Chris@4 2511 func_warning "relinking \`$file'"
Chris@4 2512 func_show_eval "$relink_command" \
Chris@4 2513 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
Chris@4 2514 fi
Chris@4 2515
Chris@4 2516 # See the names of the shared library.
Chris@4 2517 set dummy $library_names; shift
Chris@4 2518 if test -n "$1"; then
Chris@4 2519 realname="$1"
Chris@4 2520 shift
Chris@4 2521
Chris@4 2522 srcname="$realname"
Chris@4 2523 test -n "$relink_command" && srcname="$realname"T
Chris@4 2524
Chris@4 2525 # Install the shared library and build the symlinks.
Chris@4 2526 func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \
Chris@4 2527 'exit $?'
Chris@4 2528 tstripme="$stripme"
Chris@4 2529 case $host_os in
Chris@4 2530 cygwin* | mingw* | pw32*)
Chris@4 2531 case $realname in
Chris@4 2532 *.dll.a)
Chris@4 2533 tstripme=""
Chris@4 2534 ;;
Chris@4 2535 esac
Chris@4 2536 ;;
Chris@4 2537 esac
Chris@4 2538 if test -n "$tstripme" && test -n "$striplib"; then
Chris@4 2539 func_show_eval "$striplib $destdir/$realname" 'exit $?'
Chris@4 2540 fi
Chris@4 2541
Chris@4 2542 if test "$#" -gt 0; then
Chris@4 2543 # Delete the old symlinks, and create new ones.
Chris@4 2544 # Try `ln -sf' first, because the `ln' binary might depend on
Chris@4 2545 # the symlink we replace! Solaris /bin/ln does not understand -f,
Chris@4 2546 # so we also need to try rm && ln -s.
Chris@4 2547 for linkname
Chris@4 2548 do
Chris@4 2549 test "$linkname" != "$realname" \
Chris@4 2550 && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
Chris@4 2551 done
Chris@4 2552 fi
Chris@4 2553
Chris@4 2554 # Do each command in the postinstall commands.
Chris@4 2555 lib="$destdir/$realname"
Chris@4 2556 func_execute_cmds "$postinstall_cmds" 'exit $?'
Chris@4 2557 fi
Chris@4 2558
Chris@4 2559 # Install the pseudo-library for information purposes.
Chris@4 2560 func_basename "$file"
Chris@4 2561 name="$func_basename_result"
Chris@4 2562 instname="$dir/$name"i
Chris@4 2563 func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
Chris@4 2564
Chris@4 2565 # Maybe install the static library, too.
Chris@4 2566 test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
Chris@4 2567 ;;
Chris@4 2568
Chris@4 2569 *.lo)
Chris@4 2570 # Install (i.e. copy) a libtool object.
Chris@4 2571
Chris@4 2572 # Figure out destination file name, if it wasn't already specified.
Chris@4 2573 if test -n "$destname"; then
Chris@4 2574 destfile="$destdir/$destname"
Chris@4 2575 else
Chris@4 2576 func_basename "$file"
Chris@4 2577 destfile="$func_basename_result"
Chris@4 2578 destfile="$destdir/$destfile"
Chris@4 2579 fi
Chris@4 2580
Chris@4 2581 # Deduce the name of the destination old-style object file.
Chris@4 2582 case $destfile in
Chris@4 2583 *.lo)
Chris@4 2584 func_lo2o "$destfile"
Chris@4 2585 staticdest=$func_lo2o_result
Chris@4 2586 ;;
Chris@4 2587 *.$objext)
Chris@4 2588 staticdest="$destfile"
Chris@4 2589 destfile=
Chris@4 2590 ;;
Chris@4 2591 *)
Chris@4 2592 func_fatal_help "cannot copy a libtool object to \`$destfile'"
Chris@4 2593 ;;
Chris@4 2594 esac
Chris@4 2595
Chris@4 2596 # Install the libtool object if requested.
Chris@4 2597 test -n "$destfile" && \
Chris@4 2598 func_show_eval "$install_prog $file $destfile" 'exit $?'
Chris@4 2599
Chris@4 2600 # Install the old object if enabled.
Chris@4 2601 if test "$build_old_libs" = yes; then
Chris@4 2602 # Deduce the name of the old-style object file.
Chris@4 2603 func_lo2o "$file"
Chris@4 2604 staticobj=$func_lo2o_result
Chris@4 2605 func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
Chris@4 2606 fi
Chris@4 2607 exit $EXIT_SUCCESS
Chris@4 2608 ;;
Chris@4 2609
Chris@4 2610 *)
Chris@4 2611 # Figure out destination file name, if it wasn't already specified.
Chris@4 2612 if test -n "$destname"; then
Chris@4 2613 destfile="$destdir/$destname"
Chris@4 2614 else
Chris@4 2615 func_basename "$file"
Chris@4 2616 destfile="$func_basename_result"
Chris@4 2617 destfile="$destdir/$destfile"
Chris@4 2618 fi
Chris@4 2619
Chris@4 2620 # If the file is missing, and there is a .exe on the end, strip it
Chris@4 2621 # because it is most likely a libtool script we actually want to
Chris@4 2622 # install
Chris@4 2623 stripped_ext=""
Chris@4 2624 case $file in
Chris@4 2625 *.exe)
Chris@4 2626 if test ! -f "$file"; then
Chris@4 2627 func_stripname '' '.exe' "$file"
Chris@4 2628 file=$func_stripname_result
Chris@4 2629 stripped_ext=".exe"
Chris@4 2630 fi
Chris@4 2631 ;;
Chris@4 2632 esac
Chris@4 2633
Chris@4 2634 # Do a test to see if this is really a libtool program.
Chris@4 2635 case $host in
Chris@4 2636 *cygwin*|*mingw*)
Chris@4 2637 if func_ltwrapper_executable_p "$file"; then
Chris@4 2638 func_ltwrapper_scriptname "$file"
Chris@4 2639 wrapper=$func_ltwrapper_scriptname_result
Chris@4 2640 else
Chris@4 2641 func_stripname '' '.exe' "$file"
Chris@4 2642 wrapper=$func_stripname_result
Chris@4 2643 fi
Chris@4 2644 ;;
Chris@4 2645 *)
Chris@4 2646 wrapper=$file
Chris@4 2647 ;;
Chris@4 2648 esac
Chris@4 2649 if func_ltwrapper_script_p "$wrapper"; then
Chris@4 2650 notinst_deplibs=
Chris@4 2651 relink_command=
Chris@4 2652
Chris@4 2653 func_source "$wrapper"
Chris@4 2654
Chris@4 2655 # Check the variables that should have been set.
Chris@4 2656 test -z "$generated_by_libtool_version" && \
Chris@4 2657 func_fatal_error "invalid libtool wrapper script \`$wrapper'"
Chris@4 2658
Chris@4 2659 finalize=yes
Chris@4 2660 for lib in $notinst_deplibs; do
Chris@4 2661 # Check to see that each library is installed.
Chris@4 2662 libdir=
Chris@4 2663 if test -f "$lib"; then
Chris@4 2664 func_source "$lib"
Chris@4 2665 fi
Chris@4 2666 libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
Chris@4 2667 if test -n "$libdir" && test ! -f "$libfile"; then
Chris@4 2668 func_warning "\`$lib' has not been installed in \`$libdir'"
Chris@4 2669 finalize=no
Chris@4 2670 fi
Chris@4 2671 done
Chris@4 2672
Chris@4 2673 relink_command=
Chris@4 2674 func_source "$wrapper"
Chris@4 2675
Chris@4 2676 outputname=
Chris@4 2677 if test "$fast_install" = no && test -n "$relink_command"; then
Chris@4 2678 $opt_dry_run || {
Chris@4 2679 if test "$finalize" = yes; then
Chris@4 2680 tmpdir=`func_mktempdir`
Chris@4 2681 func_basename "$file$stripped_ext"
Chris@4 2682 file="$func_basename_result"
Chris@4 2683 outputname="$tmpdir/$file"
Chris@4 2684 # Replace the output file specification.
Chris@4 2685 relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
Chris@4 2686
Chris@4 2687 $opt_silent || {
Chris@4 2688 func_quote_for_expand "$relink_command"
Chris@4 2689 eval "func_echo $func_quote_for_expand_result"
Chris@4 2690 }
Chris@4 2691 if eval "$relink_command"; then :
Chris@4 2692 else
Chris@4 2693 func_error "error: relink \`$file' with the above command before installing it"
Chris@4 2694 $opt_dry_run || ${RM}r "$tmpdir"
Chris@4 2695 continue
Chris@4 2696 fi
Chris@4 2697 file="$outputname"
Chris@4 2698 else
Chris@4 2699 func_warning "cannot relink \`$file'"
Chris@4 2700 fi
Chris@4 2701 }
Chris@4 2702 else
Chris@4 2703 # Install the binary that we compiled earlier.
Chris@4 2704 file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
Chris@4 2705 fi
Chris@4 2706 fi
Chris@4 2707
Chris@4 2708 # remove .exe since cygwin /usr/bin/install will append another
Chris@4 2709 # one anyway
Chris@4 2710 case $install_prog,$host in
Chris@4 2711 */usr/bin/install*,*cygwin*)
Chris@4 2712 case $file:$destfile in
Chris@4 2713 *.exe:*.exe)
Chris@4 2714 # this is ok
Chris@4 2715 ;;
Chris@4 2716 *.exe:*)
Chris@4 2717 destfile=$destfile.exe
Chris@4 2718 ;;
Chris@4 2719 *:*.exe)
Chris@4 2720 func_stripname '' '.exe' "$destfile"
Chris@4 2721 destfile=$func_stripname_result
Chris@4 2722 ;;
Chris@4 2723 esac
Chris@4 2724 ;;
Chris@4 2725 esac
Chris@4 2726 func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
Chris@4 2727 $opt_dry_run || if test -n "$outputname"; then
Chris@4 2728 ${RM}r "$tmpdir"
Chris@4 2729 fi
Chris@4 2730 ;;
Chris@4 2731 esac
Chris@4 2732 done
Chris@4 2733
Chris@4 2734 for file in $staticlibs; do
Chris@4 2735 func_basename "$file"
Chris@4 2736 name="$func_basename_result"
Chris@4 2737
Chris@4 2738 # Set up the ranlib parameters.
Chris@4 2739 oldlib="$destdir/$name"
Chris@4 2740
Chris@4 2741 func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
Chris@4 2742
Chris@4 2743 if test -n "$stripme" && test -n "$old_striplib"; then
Chris@4 2744 func_show_eval "$old_striplib $oldlib" 'exit $?'
Chris@4 2745 fi
Chris@4 2746
Chris@4 2747 # Do each command in the postinstall commands.
Chris@4 2748 func_execute_cmds "$old_postinstall_cmds" 'exit $?'
Chris@4 2749 done
Chris@4 2750
Chris@4 2751 test -n "$future_libdirs" && \
Chris@4 2752 func_warning "remember to run \`$progname --finish$future_libdirs'"
Chris@4 2753
Chris@4 2754 if test -n "$current_libdirs"; then
Chris@4 2755 # Maybe just do a dry run.
Chris@4 2756 $opt_dry_run && current_libdirs=" -n$current_libdirs"
Chris@4 2757 exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
Chris@4 2758 else
Chris@4 2759 exit $EXIT_SUCCESS
Chris@4 2760 fi
Chris@4 2761 }
Chris@4 2762
Chris@4 2763 test "$mode" = install && func_mode_install ${1+"$@"}
Chris@4 2764
Chris@4 2765
Chris@4 2766 # func_generate_dlsyms outputname originator pic_p
Chris@4 2767 # Extract symbols from dlprefiles and create ${outputname}S.o with
Chris@4 2768 # a dlpreopen symbol table.
Chris@4 2769 func_generate_dlsyms ()
Chris@4 2770 {
Chris@4 2771 $opt_debug
Chris@4 2772 my_outputname="$1"
Chris@4 2773 my_originator="$2"
Chris@4 2774 my_pic_p="${3-no}"
Chris@4 2775 my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
Chris@4 2776 my_dlsyms=
Chris@4 2777
Chris@4 2778 if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
Chris@4 2779 if test -n "$NM" && test -n "$global_symbol_pipe"; then
Chris@4 2780 my_dlsyms="${my_outputname}S.c"
Chris@4 2781 else
Chris@4 2782 func_error "not configured to extract global symbols from dlpreopened files"
Chris@4 2783 fi
Chris@4 2784 fi
Chris@4 2785
Chris@4 2786 if test -n "$my_dlsyms"; then
Chris@4 2787 case $my_dlsyms in
Chris@4 2788 "") ;;
Chris@4 2789 *.c)
Chris@4 2790 # Discover the nlist of each of the dlfiles.
Chris@4 2791 nlist="$output_objdir/${my_outputname}.nm"
Chris@4 2792
Chris@4 2793 func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
Chris@4 2794
Chris@4 2795 # Parse the name list into a source file.
Chris@4 2796 func_verbose "creating $output_objdir/$my_dlsyms"
Chris@4 2797
Chris@4 2798 $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
Chris@4 2799 /* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
Chris@4 2800 /* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
Chris@4 2801
Chris@4 2802 #ifdef __cplusplus
Chris@4 2803 extern \"C\" {
Chris@4 2804 #endif
Chris@4 2805
Chris@4 2806 /* External symbol declarations for the compiler. */\
Chris@4 2807 "
Chris@4 2808
Chris@4 2809 if test "$dlself" = yes; then
Chris@4 2810 func_verbose "generating symbol list for \`$output'"
Chris@4 2811
Chris@4 2812 $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
Chris@4 2813
Chris@4 2814 # Add our own program objects to the symbol list.
Chris@4 2815 progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
Chris@4 2816 for progfile in $progfiles; do
Chris@4 2817 func_verbose "extracting global C symbols from \`$progfile'"
Chris@4 2818 $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'"
Chris@4 2819 done
Chris@4 2820
Chris@4 2821 if test -n "$exclude_expsyms"; then
Chris@4 2822 $opt_dry_run || {
Chris@4 2823 eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
Chris@4 2824 eval '$MV "$nlist"T "$nlist"'
Chris@4 2825 }
Chris@4 2826 fi
Chris@4 2827
Chris@4 2828 if test -n "$export_symbols_regex"; then
Chris@4 2829 $opt_dry_run || {
Chris@4 2830 eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
Chris@4 2831 eval '$MV "$nlist"T "$nlist"'
Chris@4 2832 }
Chris@4 2833 fi
Chris@4 2834
Chris@4 2835 # Prepare the list of exported symbols
Chris@4 2836 if test -z "$export_symbols"; then
Chris@4 2837 export_symbols="$output_objdir/$outputname.exp"
Chris@4 2838 $opt_dry_run || {
Chris@4 2839 $RM $export_symbols
Chris@4 2840 eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
Chris@4 2841 case $host in
Chris@4 2842 *cygwin* | *mingw* )
Chris@4 2843 eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
Chris@4 2844 eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
Chris@4 2845 ;;
Chris@4 2846 esac
Chris@4 2847 }
Chris@4 2848 else
Chris@4 2849 $opt_dry_run || {
Chris@4 2850 eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
Chris@4 2851 eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
Chris@4 2852 eval '$MV "$nlist"T "$nlist"'
Chris@4 2853 case $host in
Chris@4 2854 *cygwin | *mingw* )
Chris@4 2855 eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
Chris@4 2856 eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
Chris@4 2857 ;;
Chris@4 2858 esac
Chris@4 2859 }
Chris@4 2860 fi
Chris@4 2861 fi
Chris@4 2862
Chris@4 2863 for dlprefile in $dlprefiles; do
Chris@4 2864 func_verbose "extracting global C symbols from \`$dlprefile'"
Chris@4 2865 func_basename "$dlprefile"
Chris@4 2866 name="$func_basename_result"
Chris@4 2867 $opt_dry_run || {
Chris@4 2868 eval '$ECHO ": $name " >> "$nlist"'
Chris@4 2869 eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'"
Chris@4 2870 }
Chris@4 2871 done
Chris@4 2872
Chris@4 2873 $opt_dry_run || {
Chris@4 2874 # Make sure we have at least an empty file.
Chris@4 2875 test -f "$nlist" || : > "$nlist"
Chris@4 2876
Chris@4 2877 if test -n "$exclude_expsyms"; then
Chris@4 2878 $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
Chris@4 2879 $MV "$nlist"T "$nlist"
Chris@4 2880 fi
Chris@4 2881
Chris@4 2882 # Try sorting and uniquifying the output.
Chris@4 2883 if $GREP -v "^: " < "$nlist" |
Chris@4 2884 if sort -k 3 </dev/null >/dev/null 2>&1; then
Chris@4 2885 sort -k 3
Chris@4 2886 else
Chris@4 2887 sort +2
Chris@4 2888 fi |
Chris@4 2889 uniq > "$nlist"S; then
Chris@4 2890 :
Chris@4 2891 else
Chris@4 2892 $GREP -v "^: " < "$nlist" > "$nlist"S
Chris@4 2893 fi
Chris@4 2894
Chris@4 2895 if test -f "$nlist"S; then
Chris@4 2896 eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
Chris@4 2897 else
Chris@4 2898 $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms"
Chris@4 2899 fi
Chris@4 2900
Chris@4 2901 $ECHO >> "$output_objdir/$my_dlsyms" "\
Chris@4 2902
Chris@4 2903 /* The mapping between symbol names and symbols. */
Chris@4 2904 typedef struct {
Chris@4 2905 const char *name;
Chris@4 2906 void *address;
Chris@4 2907 } lt_dlsymlist;
Chris@4 2908 "
Chris@4 2909 case $host in
Chris@4 2910 *cygwin* | *mingw* )
Chris@4 2911 $ECHO >> "$output_objdir/$my_dlsyms" "\
Chris@4 2912 /* DATA imports from DLLs on WIN32 con't be const, because
Chris@4 2913 runtime relocations are performed -- see ld's documentation
Chris@4 2914 on pseudo-relocs. */"
Chris@4 2915 lt_dlsym_const= ;;
Chris@4 2916 *osf5*)
Chris@4 2917 echo >> "$output_objdir/$my_dlsyms" "\
Chris@4 2918 /* This system does not cope well with relocations in const data */"
Chris@4 2919 lt_dlsym_const= ;;
Chris@4 2920 *)
Chris@4 2921 lt_dlsym_const=const ;;
Chris@4 2922 esac
Chris@4 2923
Chris@4 2924 $ECHO >> "$output_objdir/$my_dlsyms" "\
Chris@4 2925 extern $lt_dlsym_const lt_dlsymlist
Chris@4 2926 lt_${my_prefix}_LTX_preloaded_symbols[];
Chris@4 2927 $lt_dlsym_const lt_dlsymlist
Chris@4 2928 lt_${my_prefix}_LTX_preloaded_symbols[] =
Chris@4 2929 {\
Chris@4 2930 { \"$my_originator\", (void *) 0 },"
Chris@4 2931
Chris@4 2932 case $need_lib_prefix in
Chris@4 2933 no)
Chris@4 2934 eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
Chris@4 2935 ;;
Chris@4 2936 *)
Chris@4 2937 eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
Chris@4 2938 ;;
Chris@4 2939 esac
Chris@4 2940 $ECHO >> "$output_objdir/$my_dlsyms" "\
Chris@4 2941 {0, (void *) 0}
Chris@4 2942 };
Chris@4 2943
Chris@4 2944 /* This works around a problem in FreeBSD linker */
Chris@4 2945 #ifdef FREEBSD_WORKAROUND
Chris@4 2946 static const void *lt_preloaded_setup() {
Chris@4 2947 return lt_${my_prefix}_LTX_preloaded_symbols;
Chris@4 2948 }
Chris@4 2949 #endif
Chris@4 2950
Chris@4 2951 #ifdef __cplusplus
Chris@4 2952 }
Chris@4 2953 #endif\
Chris@4 2954 "
Chris@4 2955 } # !$opt_dry_run
Chris@4 2956
Chris@4 2957 pic_flag_for_symtable=
Chris@4 2958 case "$compile_command " in
Chris@4 2959 *" -static "*) ;;
Chris@4 2960 *)
Chris@4 2961 case $host in
Chris@4 2962 # compiling the symbol table file with pic_flag works around
Chris@4 2963 # a FreeBSD bug that causes programs to crash when -lm is
Chris@4 2964 # linked before any other PIC object. But we must not use
Chris@4 2965 # pic_flag when linking with -static. The problem exists in
Chris@4 2966 # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
Chris@4 2967 *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
Chris@4 2968 pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
Chris@4 2969 *-*-hpux*)
Chris@4 2970 pic_flag_for_symtable=" $pic_flag" ;;
Chris@4 2971 *)
Chris@4 2972 if test "X$my_pic_p" != Xno; then
Chris@4 2973 pic_flag_for_symtable=" $pic_flag"
Chris@4 2974 fi
Chris@4 2975 ;;
Chris@4 2976 esac
Chris@4 2977 ;;
Chris@4 2978 esac
Chris@4 2979 symtab_cflags=
Chris@4 2980 for arg in $LTCFLAGS; do
Chris@4 2981 case $arg in
Chris@4 2982 -pie | -fpie | -fPIE) ;;
Chris@4 2983 *) symtab_cflags="$symtab_cflags $arg" ;;
Chris@4 2984 esac
Chris@4 2985 done
Chris@4 2986
Chris@4 2987 # Now compile the dynamic symbol file.
Chris@4 2988 func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
Chris@4 2989
Chris@4 2990 # Clean up the generated files.
Chris@4 2991 func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
Chris@4 2992
Chris@4 2993 # Transform the symbol file into the correct name.
Chris@4 2994 symfileobj="$output_objdir/${my_outputname}S.$objext"
Chris@4 2995 case $host in
Chris@4 2996 *cygwin* | *mingw* )
Chris@4 2997 if test -f "$output_objdir/$my_outputname.def"; then
Chris@4 2998 compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
Chris@4 2999 finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
Chris@4 3000 else
Chris@4 3001 compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
Chris@4 3002 finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
Chris@4 3003 fi
Chris@4 3004 ;;
Chris@4 3005 *)
Chris@4 3006 compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
Chris@4 3007 finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
Chris@4 3008 ;;
Chris@4 3009 esac
Chris@4 3010 ;;
Chris@4 3011 *)
Chris@4 3012 func_fatal_error "unknown suffix for \`$my_dlsyms'"
Chris@4 3013 ;;
Chris@4 3014 esac
Chris@4 3015 else
Chris@4 3016 # We keep going just in case the user didn't refer to
Chris@4 3017 # lt_preloaded_symbols. The linker will fail if global_symbol_pipe
Chris@4 3018 # really was required.
Chris@4 3019
Chris@4 3020 # Nullify the symbol file.
Chris@4 3021 compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
Chris@4 3022 finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
Chris@4 3023 fi
Chris@4 3024 }
Chris@4 3025
Chris@4 3026 # func_win32_libid arg
Chris@4 3027 # return the library type of file 'arg'
Chris@4 3028 #
Chris@4 3029 # Need a lot of goo to handle *both* DLLs and import libs
Chris@4 3030 # Has to be a shell function in order to 'eat' the argument
Chris@4 3031 # that is supplied when $file_magic_command is called.
Chris@4 3032 func_win32_libid ()
Chris@4 3033 {
Chris@4 3034 $opt_debug
Chris@4 3035 win32_libid_type="unknown"
Chris@4 3036 win32_fileres=`file -L $1 2>/dev/null`
Chris@4 3037 case $win32_fileres in
Chris@4 3038 *ar\ archive\ import\ library*) # definitely import
Chris@4 3039 win32_libid_type="x86 archive import"
Chris@4 3040 ;;
Chris@4 3041 *ar\ archive*) # could be an import, or static
Chris@4 3042 if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
Chris@4 3043 $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
Chris@4 3044 win32_nmres=`eval $NM -f posix -A $1 |
Chris@4 3045 $SED -n -e '
Chris@4 3046 1,100{
Chris@4 3047 / I /{
Chris@4 3048 s,.*,import,
Chris@4 3049 p
Chris@4 3050 q
Chris@4 3051 }
Chris@4 3052 }'`
Chris@4 3053 case $win32_nmres in
Chris@4 3054 import*) win32_libid_type="x86 archive import";;
Chris@4 3055 *) win32_libid_type="x86 archive static";;
Chris@4 3056 esac
Chris@4 3057 fi
Chris@4 3058 ;;
Chris@4 3059 *DLL*)
Chris@4 3060 win32_libid_type="x86 DLL"
Chris@4 3061 ;;
Chris@4 3062 *executable*) # but shell scripts are "executable" too...
Chris@4 3063 case $win32_fileres in
Chris@4 3064 *MS\ Windows\ PE\ Intel*)
Chris@4 3065 win32_libid_type="x86 DLL"
Chris@4 3066 ;;
Chris@4 3067 esac
Chris@4 3068 ;;
Chris@4 3069 esac
Chris@4 3070 $ECHO "$win32_libid_type"
Chris@4 3071 }
Chris@4 3072
Chris@4 3073
Chris@4 3074
Chris@4 3075 # func_extract_an_archive dir oldlib
Chris@4 3076 func_extract_an_archive ()
Chris@4 3077 {
Chris@4 3078 $opt_debug
Chris@4 3079 f_ex_an_ar_dir="$1"; shift
Chris@4 3080 f_ex_an_ar_oldlib="$1"
Chris@4 3081 func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" 'exit $?'
Chris@4 3082 if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
Chris@4 3083 :
Chris@4 3084 else
Chris@4 3085 func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
Chris@4 3086 fi
Chris@4 3087 }
Chris@4 3088
Chris@4 3089
Chris@4 3090 # func_extract_archives gentop oldlib ...
Chris@4 3091 func_extract_archives ()
Chris@4 3092 {
Chris@4 3093 $opt_debug
Chris@4 3094 my_gentop="$1"; shift
Chris@4 3095 my_oldlibs=${1+"$@"}
Chris@4 3096 my_oldobjs=""
Chris@4 3097 my_xlib=""
Chris@4 3098 my_xabs=""
Chris@4 3099 my_xdir=""
Chris@4 3100
Chris@4 3101 for my_xlib in $my_oldlibs; do
Chris@4 3102 # Extract the objects.
Chris@4 3103 case $my_xlib in
Chris@4 3104 [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
Chris@4 3105 *) my_xabs=`pwd`"/$my_xlib" ;;
Chris@4 3106 esac
Chris@4 3107 func_basename "$my_xlib"
Chris@4 3108 my_xlib="$func_basename_result"
Chris@4 3109 my_xlib_u=$my_xlib
Chris@4 3110 while :; do
Chris@4 3111 case " $extracted_archives " in
Chris@4 3112 *" $my_xlib_u "*)
Chris@4 3113 func_arith $extracted_serial + 1
Chris@4 3114 extracted_serial=$func_arith_result
Chris@4 3115 my_xlib_u=lt$extracted_serial-$my_xlib ;;
Chris@4 3116 *) break ;;
Chris@4 3117 esac
Chris@4 3118 done
Chris@4 3119 extracted_archives="$extracted_archives $my_xlib_u"
Chris@4 3120 my_xdir="$my_gentop/$my_xlib_u"
Chris@4 3121
Chris@4 3122 func_mkdir_p "$my_xdir"
Chris@4 3123
Chris@4 3124 case $host in
Chris@4 3125 *-darwin*)
Chris@4 3126 func_verbose "Extracting $my_xabs"
Chris@4 3127 # Do not bother doing anything if just a dry run
Chris@4 3128 $opt_dry_run || {
Chris@4 3129 darwin_orig_dir=`pwd`
Chris@4 3130 cd $my_xdir || exit $?
Chris@4 3131 darwin_archive=$my_xabs
Chris@4 3132 darwin_curdir=`pwd`
Chris@4 3133 darwin_base_archive=`basename "$darwin_archive"`
Chris@4 3134 darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
Chris@4 3135 if test -n "$darwin_arches"; then
Chris@4 3136 darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
Chris@4 3137 darwin_arch=
Chris@4 3138 func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
Chris@4 3139 for darwin_arch in $darwin_arches ; do
Chris@4 3140 func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
Chris@4 3141 $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
Chris@4 3142 cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
Chris@4 3143 func_extract_an_archive "`pwd`" "${darwin_base_archive}"
Chris@4 3144 cd "$darwin_curdir"
Chris@4 3145 $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
Chris@4 3146 done # $darwin_arches
Chris@4 3147 ## Okay now we've a bunch of thin objects, gotta fatten them up :)
Chris@4 3148 darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u`
Chris@4 3149 darwin_file=
Chris@4 3150 darwin_files=
Chris@4 3151 for darwin_file in $darwin_filelist; do
Chris@4 3152 darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
Chris@4 3153 $LIPO -create -output "$darwin_file" $darwin_files
Chris@4 3154 done # $darwin_filelist
Chris@4 3155 $RM -rf unfat-$$
Chris@4 3156 cd "$darwin_orig_dir"
Chris@4 3157 else
Chris@4 3158 cd $darwin_orig_dir
Chris@4 3159 func_extract_an_archive "$my_xdir" "$my_xabs"
Chris@4 3160 fi # $darwin_arches
Chris@4 3161 } # !$opt_dry_run
Chris@4 3162 ;;
Chris@4 3163 *)
Chris@4 3164 func_extract_an_archive "$my_xdir" "$my_xabs"
Chris@4 3165 ;;
Chris@4 3166 esac
Chris@4 3167 my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
Chris@4 3168 done
Chris@4 3169
Chris@4 3170 func_extract_archives_result="$my_oldobjs"
Chris@4 3171 }
Chris@4 3172
Chris@4 3173
Chris@4 3174
Chris@4 3175 # func_emit_wrapper arg
Chris@4 3176 #
Chris@4 3177 # emit a libtool wrapper script on stdout
Chris@4 3178 # don't directly open a file because we may want to
Chris@4 3179 # incorporate the script contents within a cygwin/mingw
Chris@4 3180 # wrapper executable. Must ONLY be called from within
Chris@4 3181 # func_mode_link because it depends on a number of variable
Chris@4 3182 # set therein.
Chris@4 3183 #
Chris@4 3184 # arg is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
Chris@4 3185 # variable will take. If 'yes', then the emitted script
Chris@4 3186 # will assume that the directory in which it is stored is
Chris@4 3187 # the '.lib' directory. This is a cygwin/mingw-specific
Chris@4 3188 # behavior.
Chris@4 3189 func_emit_wrapper ()
Chris@4 3190 {
Chris@4 3191 func_emit_wrapper_arg1=no
Chris@4 3192 if test -n "$1" ; then
Chris@4 3193 func_emit_wrapper_arg1=$1
Chris@4 3194 fi
Chris@4 3195
Chris@4 3196 $ECHO "\
Chris@4 3197 #! $SHELL
Chris@4 3198
Chris@4 3199 # $output - temporary wrapper script for $objdir/$outputname
Chris@4 3200 # Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
Chris@4 3201 #
Chris@4 3202 # The $output program cannot be directly executed until all the libtool
Chris@4 3203 # libraries that it depends on are installed.
Chris@4 3204 #
Chris@4 3205 # This wrapper script should never be moved out of the build directory.
Chris@4 3206 # If it is, it will not operate correctly.
Chris@4 3207
Chris@4 3208 # Sed substitution that helps us do robust quoting. It backslashifies
Chris@4 3209 # metacharacters that are still active within double-quoted strings.
Chris@4 3210 Xsed='${SED} -e 1s/^X//'
Chris@4 3211 sed_quote_subst='$sed_quote_subst'
Chris@4 3212
Chris@4 3213 # Be Bourne compatible
Chris@4 3214 if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
Chris@4 3215 emulate sh
Chris@4 3216 NULLCMD=:
Chris@4 3217 # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
Chris@4 3218 # is contrary to our usage. Disable this feature.
Chris@4 3219 alias -g '\${1+\"\$@\"}'='\"\$@\"'
Chris@4 3220 setopt NO_GLOB_SUBST
Chris@4 3221 else
Chris@4 3222 case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
Chris@4 3223 fi
Chris@4 3224 BIN_SH=xpg4; export BIN_SH # for Tru64
Chris@4 3225 DUALCASE=1; export DUALCASE # for MKS sh
Chris@4 3226
Chris@4 3227 # The HP-UX ksh and POSIX shell print the target directory to stdout
Chris@4 3228 # if CDPATH is set.
Chris@4 3229 (unset CDPATH) >/dev/null 2>&1 && unset CDPATH
Chris@4 3230
Chris@4 3231 relink_command=\"$relink_command\"
Chris@4 3232
Chris@4 3233 # This environment variable determines our operation mode.
Chris@4 3234 if test \"\$libtool_install_magic\" = \"$magic\"; then
Chris@4 3235 # install mode needs the following variables:
Chris@4 3236 generated_by_libtool_version='$macro_version'
Chris@4 3237 notinst_deplibs='$notinst_deplibs'
Chris@4 3238 else
Chris@4 3239 # When we are sourced in execute mode, \$file and \$ECHO are already set.
Chris@4 3240 if test \"\$libtool_execute_magic\" != \"$magic\"; then
Chris@4 3241 ECHO=\"$qecho\"
Chris@4 3242 file=\"\$0\"
Chris@4 3243 # Make sure echo works.
Chris@4 3244 if test \"X\$1\" = X--no-reexec; then
Chris@4 3245 # Discard the --no-reexec flag, and continue.
Chris@4 3246 shift
Chris@4 3247 elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then
Chris@4 3248 # Yippee, \$ECHO works!
Chris@4 3249 :
Chris@4 3250 else
Chris@4 3251 # Restart under the correct shell, and then maybe \$ECHO will work.
Chris@4 3252 exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
Chris@4 3253 fi
Chris@4 3254 fi\
Chris@4 3255 "
Chris@4 3256 $ECHO "\
Chris@4 3257
Chris@4 3258 # Find the directory that this script lives in.
Chris@4 3259 thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
Chris@4 3260 test \"x\$thisdir\" = \"x\$file\" && thisdir=.
Chris@4 3261
Chris@4 3262 # Follow symbolic links until we get to the real thisdir.
Chris@4 3263 file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
Chris@4 3264 while test -n \"\$file\"; do
Chris@4 3265 destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
Chris@4 3266
Chris@4 3267 # If there was a directory component, then change thisdir.
Chris@4 3268 if test \"x\$destdir\" != \"x\$file\"; then
Chris@4 3269 case \"\$destdir\" in
Chris@4 3270 [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
Chris@4 3271 *) thisdir=\"\$thisdir/\$destdir\" ;;
Chris@4 3272 esac
Chris@4 3273 fi
Chris@4 3274
Chris@4 3275 file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
Chris@4 3276 file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
Chris@4 3277 done
Chris@4 3278
Chris@4 3279 # Usually 'no', except on cygwin/mingw when embedded into
Chris@4 3280 # the cwrapper.
Chris@4 3281 WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1
Chris@4 3282 if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
Chris@4 3283 # special case for '.'
Chris@4 3284 if test \"\$thisdir\" = \".\"; then
Chris@4 3285 thisdir=\`pwd\`
Chris@4 3286 fi
Chris@4 3287 # remove .libs from thisdir
Chris@4 3288 case \"\$thisdir\" in
Chris@4 3289 *[\\\\/]$objdir ) thisdir=\`\$ECHO \"X\$thisdir\" | \$Xsed -e 's%[\\\\/][^\\\\/]*$%%'\` ;;
Chris@4 3290 $objdir ) thisdir=. ;;
Chris@4 3291 esac
Chris@4 3292 fi
Chris@4 3293
Chris@4 3294 # Try to get the absolute directory name.
Chris@4 3295 absdir=\`cd \"\$thisdir\" && pwd\`
Chris@4 3296 test -n \"\$absdir\" && thisdir=\"\$absdir\"
Chris@4 3297 "
Chris@4 3298
Chris@4 3299 if test "$fast_install" = yes; then
Chris@4 3300 $ECHO "\
Chris@4 3301 program=lt-'$outputname'$exeext
Chris@4 3302 progdir=\"\$thisdir/$objdir\"
Chris@4 3303
Chris@4 3304 if test ! -f \"\$progdir/\$program\" ||
Chris@4 3305 { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
Chris@4 3306 test \"X\$file\" != \"X\$progdir/\$program\"; }; then
Chris@4 3307
Chris@4 3308 file=\"\$\$-\$program\"
Chris@4 3309
Chris@4 3310 if test ! -d \"\$progdir\"; then
Chris@4 3311 $MKDIR \"\$progdir\"
Chris@4 3312 else
Chris@4 3313 $RM \"\$progdir/\$file\"
Chris@4 3314 fi"
Chris@4 3315
Chris@4 3316 $ECHO "\
Chris@4 3317
Chris@4 3318 # relink executable if necessary
Chris@4 3319 if test -n \"\$relink_command\"; then
Chris@4 3320 if relink_command_output=\`eval \$relink_command 2>&1\`; then :
Chris@4 3321 else
Chris@4 3322 $ECHO \"\$relink_command_output\" >&2
Chris@4 3323 $RM \"\$progdir/\$file\"
Chris@4 3324 exit 1
Chris@4 3325 fi
Chris@4 3326 fi
Chris@4 3327
Chris@4 3328 $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
Chris@4 3329 { $RM \"\$progdir/\$program\";
Chris@4 3330 $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
Chris@4 3331 $RM \"\$progdir/\$file\"
Chris@4 3332 fi"
Chris@4 3333 else
Chris@4 3334 $ECHO "\
Chris@4 3335 program='$outputname'
Chris@4 3336 progdir=\"\$thisdir/$objdir\"
Chris@4 3337 "
Chris@4 3338 fi
Chris@4 3339
Chris@4 3340 $ECHO "\
Chris@4 3341
Chris@4 3342 if test -f \"\$progdir/\$program\"; then"
Chris@4 3343
Chris@4 3344 # Export our shlibpath_var if we have one.
Chris@4 3345 if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
Chris@4 3346 $ECHO "\
Chris@4 3347 # Add our own library path to $shlibpath_var
Chris@4 3348 $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
Chris@4 3349
Chris@4 3350 # Some systems cannot cope with colon-terminated $shlibpath_var
Chris@4 3351 # The second colon is a workaround for a bug in BeOS R4 sed
Chris@4 3352 $shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
Chris@4 3353
Chris@4 3354 export $shlibpath_var
Chris@4 3355 "
Chris@4 3356 fi
Chris@4 3357
Chris@4 3358 # fixup the dll searchpath if we need to.
Chris@4 3359 if test -n "$dllsearchpath"; then
Chris@4 3360 $ECHO "\
Chris@4 3361 # Add the dll search path components to the executable PATH
Chris@4 3362 PATH=$dllsearchpath:\$PATH
Chris@4 3363 "
Chris@4 3364 fi
Chris@4 3365
Chris@4 3366 $ECHO "\
Chris@4 3367 if test \"\$libtool_execute_magic\" != \"$magic\"; then
Chris@4 3368 # Run the actual program with our arguments.
Chris@4 3369 "
Chris@4 3370 case $host in
Chris@4 3371 # Backslashes separate directories on plain windows
Chris@4 3372 *-*-mingw | *-*-os2*)
Chris@4 3373 $ECHO "\
Chris@4 3374 exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
Chris@4 3375 "
Chris@4 3376 ;;
Chris@4 3377
Chris@4 3378 *)
Chris@4 3379 $ECHO "\
Chris@4 3380 exec \"\$progdir/\$program\" \${1+\"\$@\"}
Chris@4 3381 "
Chris@4 3382 ;;
Chris@4 3383 esac
Chris@4 3384 $ECHO "\
Chris@4 3385 \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
Chris@4 3386 exit 1
Chris@4 3387 fi
Chris@4 3388 else
Chris@4 3389 # The program doesn't exist.
Chris@4 3390 \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
Chris@4 3391 \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
Chris@4 3392 $ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
Chris@4 3393 exit 1
Chris@4 3394 fi
Chris@4 3395 fi\
Chris@4 3396 "
Chris@4 3397 }
Chris@4 3398 # end: func_emit_wrapper
Chris@4 3399
Chris@4 3400 # func_emit_cwrapperexe_src
Chris@4 3401 # emit the source code for a wrapper executable on stdout
Chris@4 3402 # Must ONLY be called from within func_mode_link because
Chris@4 3403 # it depends on a number of variable set therein.
Chris@4 3404 func_emit_cwrapperexe_src ()
Chris@4 3405 {
Chris@4 3406 cat <<EOF
Chris@4 3407
Chris@4 3408 /* $cwrappersource - temporary wrapper executable for $objdir/$outputname
Chris@4 3409 Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
Chris@4 3410
Chris@4 3411 The $output program cannot be directly executed until all the libtool
Chris@4 3412 libraries that it depends on are installed.
Chris@4 3413
Chris@4 3414 This wrapper executable should never be moved out of the build directory.
Chris@4 3415 If it is, it will not operate correctly.
Chris@4 3416
Chris@4 3417 Currently, it simply execs the wrapper *script* "$SHELL $output",
Chris@4 3418 but could eventually absorb all of the scripts functionality and
Chris@4 3419 exec $objdir/$outputname directly.
Chris@4 3420 */
Chris@4 3421 EOF
Chris@4 3422 cat <<"EOF"
Chris@4 3423 #include <stdio.h>
Chris@4 3424 #include <stdlib.h>
Chris@4 3425 #ifdef _MSC_VER
Chris@4 3426 # include <direct.h>
Chris@4 3427 # include <process.h>
Chris@4 3428 # include <io.h>
Chris@4 3429 # define setmode _setmode
Chris@4 3430 #else
Chris@4 3431 # include <unistd.h>
Chris@4 3432 # include <stdint.h>
Chris@4 3433 # ifdef __CYGWIN__
Chris@4 3434 # include <io.h>
Chris@4 3435 # endif
Chris@4 3436 #endif
Chris@4 3437 #include <malloc.h>
Chris@4 3438 #include <stdarg.h>
Chris@4 3439 #include <assert.h>
Chris@4 3440 #include <string.h>
Chris@4 3441 #include <ctype.h>
Chris@4 3442 #include <errno.h>
Chris@4 3443 #include <fcntl.h>
Chris@4 3444 #include <sys/stat.h>
Chris@4 3445
Chris@4 3446 #if defined(PATH_MAX)
Chris@4 3447 # define LT_PATHMAX PATH_MAX
Chris@4 3448 #elif defined(MAXPATHLEN)
Chris@4 3449 # define LT_PATHMAX MAXPATHLEN
Chris@4 3450 #else
Chris@4 3451 # define LT_PATHMAX 1024
Chris@4 3452 #endif
Chris@4 3453
Chris@4 3454 #ifndef S_IXOTH
Chris@4 3455 # define S_IXOTH 0
Chris@4 3456 #endif
Chris@4 3457 #ifndef S_IXGRP
Chris@4 3458 # define S_IXGRP 0
Chris@4 3459 #endif
Chris@4 3460
Chris@4 3461 #ifdef _MSC_VER
Chris@4 3462 # define S_IXUSR _S_IEXEC
Chris@4 3463 # define stat _stat
Chris@4 3464 # ifndef _INTPTR_T_DEFINED
Chris@4 3465 # define intptr_t int
Chris@4 3466 # endif
Chris@4 3467 #endif
Chris@4 3468
Chris@4 3469 #ifndef DIR_SEPARATOR
Chris@4 3470 # define DIR_SEPARATOR '/'
Chris@4 3471 # define PATH_SEPARATOR ':'
Chris@4 3472 #endif
Chris@4 3473
Chris@4 3474 #if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
Chris@4 3475 defined (__OS2__)
Chris@4 3476 # define HAVE_DOS_BASED_FILE_SYSTEM
Chris@4 3477 # define FOPEN_WB "wb"
Chris@4 3478 # ifndef DIR_SEPARATOR_2
Chris@4 3479 # define DIR_SEPARATOR_2 '\\'
Chris@4 3480 # endif
Chris@4 3481 # ifndef PATH_SEPARATOR_2
Chris@4 3482 # define PATH_SEPARATOR_2 ';'
Chris@4 3483 # endif
Chris@4 3484 #endif
Chris@4 3485
Chris@4 3486 #ifndef DIR_SEPARATOR_2
Chris@4 3487 # define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
Chris@4 3488 #else /* DIR_SEPARATOR_2 */
Chris@4 3489 # define IS_DIR_SEPARATOR(ch) \
Chris@4 3490 (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
Chris@4 3491 #endif /* DIR_SEPARATOR_2 */
Chris@4 3492
Chris@4 3493 #ifndef PATH_SEPARATOR_2
Chris@4 3494 # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
Chris@4 3495 #else /* PATH_SEPARATOR_2 */
Chris@4 3496 # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
Chris@4 3497 #endif /* PATH_SEPARATOR_2 */
Chris@4 3498
Chris@4 3499 #ifdef __CYGWIN__
Chris@4 3500 # define FOPEN_WB "wb"
Chris@4 3501 #endif
Chris@4 3502
Chris@4 3503 #ifndef FOPEN_WB
Chris@4 3504 # define FOPEN_WB "w"
Chris@4 3505 #endif
Chris@4 3506 #ifndef _O_BINARY
Chris@4 3507 # define _O_BINARY 0
Chris@4 3508 #endif
Chris@4 3509
Chris@4 3510 #define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type)))
Chris@4 3511 #define XFREE(stale) do { \
Chris@4 3512 if (stale) { free ((void *) stale); stale = 0; } \
Chris@4 3513 } while (0)
Chris@4 3514
Chris@4 3515 #undef LTWRAPPER_DEBUGPRINTF
Chris@4 3516 #if defined DEBUGWRAPPER
Chris@4 3517 # define LTWRAPPER_DEBUGPRINTF(args) ltwrapper_debugprintf args
Chris@4 3518 static void
Chris@4 3519 ltwrapper_debugprintf (const char *fmt, ...)
Chris@4 3520 {
Chris@4 3521 va_list args;
Chris@4 3522 va_start (args, fmt);
Chris@4 3523 (void) vfprintf (stderr, fmt, args);
Chris@4 3524 va_end (args);
Chris@4 3525 }
Chris@4 3526 #else
Chris@4 3527 # define LTWRAPPER_DEBUGPRINTF(args)
Chris@4 3528 #endif
Chris@4 3529
Chris@4 3530 const char *program_name = NULL;
Chris@4 3531
Chris@4 3532 void *xmalloc (size_t num);
Chris@4 3533 char *xstrdup (const char *string);
Chris@4 3534 const char *base_name (const char *name);
Chris@4 3535 char *find_executable (const char *wrapper);
Chris@4 3536 char *chase_symlinks (const char *pathspec);
Chris@4 3537 int make_executable (const char *path);
Chris@4 3538 int check_executable (const char *path);
Chris@4 3539 char *strendzap (char *str, const char *pat);
Chris@4 3540 void lt_fatal (const char *message, ...);
Chris@4 3541
Chris@4 3542 static const char *script_text =
Chris@4 3543 EOF
Chris@4 3544
Chris@4 3545 func_emit_wrapper yes |
Chris@4 3546 $SED -e 's/\([\\"]\)/\\\1/g' \
Chris@4 3547 -e 's/^/ "/' -e 's/$/\\n"/'
Chris@4 3548 echo ";"
Chris@4 3549
Chris@4 3550 cat <<EOF
Chris@4 3551 const char * MAGIC_EXE = "$magic_exe";
Chris@4 3552
Chris@4 3553 int
Chris@4 3554 main (int argc, char *argv[])
Chris@4 3555 {
Chris@4 3556 char **newargz;
Chris@4 3557 char *tmp_pathspec;
Chris@4 3558 char *actual_cwrapper_path;
Chris@4 3559 char *shwrapper_name;
Chris@4 3560 intptr_t rval = 127;
Chris@4 3561 FILE *shwrapper;
Chris@4 3562
Chris@4 3563 const char *dumpscript_opt = "--lt-dump-script";
Chris@4 3564 int i;
Chris@4 3565
Chris@4 3566 program_name = (char *) xstrdup (base_name (argv[0]));
Chris@4 3567 LTWRAPPER_DEBUGPRINTF (("(main) argv[0] : %s\n", argv[0]));
Chris@4 3568 LTWRAPPER_DEBUGPRINTF (("(main) program_name : %s\n", program_name));
Chris@4 3569
Chris@4 3570 /* very simple arg parsing; don't want to rely on getopt */
Chris@4 3571 for (i = 1; i < argc; i++)
Chris@4 3572 {
Chris@4 3573 if (strcmp (argv[i], dumpscript_opt) == 0)
Chris@4 3574 {
Chris@4 3575 EOF
Chris@4 3576 case "$host" in
Chris@4 3577 *mingw* | *cygwin* )
Chris@4 3578 # make stdout use "unix" line endings
Chris@4 3579 echo " setmode(1,_O_BINARY);"
Chris@4 3580 ;;
Chris@4 3581 esac
Chris@4 3582
Chris@4 3583 cat <<EOF
Chris@4 3584 printf ("%s", script_text);
Chris@4 3585 return 0;
Chris@4 3586 }
Chris@4 3587 }
Chris@4 3588
Chris@4 3589 newargz = XMALLOC (char *, argc + 2);
Chris@4 3590 EOF
Chris@4 3591
Chris@4 3592 if test -n "$TARGETSHELL" ; then
Chris@4 3593 # no path translation at all
Chris@4 3594 lt_newargv0=$TARGETSHELL
Chris@4 3595 else
Chris@4 3596 case "$host" in
Chris@4 3597 *mingw* )
Chris@4 3598 # awkward: cmd appends spaces to result
Chris@4 3599 lt_sed_strip_trailing_spaces="s/[ ]*\$//"
Chris@4 3600 lt_newargv0=`( cmd //c echo $SHELL | $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo $SHELL`
Chris@4 3601 case $lt_newargv0 in
Chris@4 3602 *.exe | *.EXE) ;;
Chris@4 3603 *) lt_newargv0=$lt_newargv0.exe ;;
Chris@4 3604 esac
Chris@4 3605 ;;
Chris@4 3606 * ) lt_newargv0=$SHELL ;;
Chris@4 3607 esac
Chris@4 3608 fi
Chris@4 3609
Chris@4 3610 cat <<EOF
Chris@4 3611 newargz[0] = (char *) xstrdup ("$lt_newargv0");
Chris@4 3612 EOF
Chris@4 3613
Chris@4 3614 cat <<"EOF"
Chris@4 3615 tmp_pathspec = find_executable (argv[0]);
Chris@4 3616 if (tmp_pathspec == NULL)
Chris@4 3617 lt_fatal ("Couldn't find %s", argv[0]);
Chris@4 3618 LTWRAPPER_DEBUGPRINTF (("(main) found exe (before symlink chase) at : %s\n",
Chris@4 3619 tmp_pathspec));
Chris@4 3620
Chris@4 3621 actual_cwrapper_path = chase_symlinks (tmp_pathspec);
Chris@4 3622 LTWRAPPER_DEBUGPRINTF (("(main) found exe (after symlink chase) at : %s\n",
Chris@4 3623 actual_cwrapper_path));
Chris@4 3624 XFREE (tmp_pathspec);
Chris@4 3625
Chris@4 3626 shwrapper_name = (char *) xstrdup (base_name (actual_cwrapper_path));
Chris@4 3627 strendzap (actual_cwrapper_path, shwrapper_name);
Chris@4 3628
Chris@4 3629 /* shwrapper_name transforms */
Chris@4 3630 strendzap (shwrapper_name, ".exe");
Chris@4 3631 tmp_pathspec = XMALLOC (char, (strlen (shwrapper_name) +
Chris@4 3632 strlen ("_ltshwrapperTMP") + 1));
Chris@4 3633 strcpy (tmp_pathspec, shwrapper_name);
Chris@4 3634 strcat (tmp_pathspec, "_ltshwrapperTMP");
Chris@4 3635 XFREE (shwrapper_name);
Chris@4 3636 shwrapper_name = tmp_pathspec;
Chris@4 3637 tmp_pathspec = 0;
Chris@4 3638 LTWRAPPER_DEBUGPRINTF (("(main) libtool shell wrapper name: %s\n",
Chris@4 3639 shwrapper_name));
Chris@4 3640 EOF
Chris@4 3641
Chris@4 3642 cat <<EOF
Chris@4 3643 newargz[1] =
Chris@4 3644 XMALLOC (char, (strlen (actual_cwrapper_path) +
Chris@4 3645 strlen ("$objdir") + 1 + strlen (shwrapper_name) + 1));
Chris@4 3646 strcpy (newargz[1], actual_cwrapper_path);
Chris@4 3647 strcat (newargz[1], "$objdir");
Chris@4 3648 strcat (newargz[1], "/");
Chris@4 3649 strcat (newargz[1], shwrapper_name);
Chris@4 3650 EOF
Chris@4 3651
Chris@4 3652
Chris@4 3653 case $host_os in
Chris@4 3654 mingw*)
Chris@4 3655 cat <<"EOF"
Chris@4 3656 {
Chris@4 3657 char* p;
Chris@4 3658 while ((p = strchr (newargz[1], '\\')) != NULL)
Chris@4 3659 {
Chris@4 3660 *p = '/';
Chris@4 3661 }
Chris@4 3662 }
Chris@4 3663 EOF
Chris@4 3664 ;;
Chris@4 3665 esac
Chris@4 3666
Chris@4 3667 cat <<"EOF"
Chris@4 3668 XFREE (shwrapper_name);
Chris@4 3669 XFREE (actual_cwrapper_path);
Chris@4 3670
Chris@4 3671 /* always write in binary mode */
Chris@4 3672 if ((shwrapper = fopen (newargz[1], FOPEN_WB)) == 0)
Chris@4 3673 {
Chris@4 3674 lt_fatal ("Could not open %s for writing", newargz[1]);
Chris@4 3675 }
Chris@4 3676 fprintf (shwrapper, "%s", script_text);
Chris@4 3677 fclose (shwrapper);
Chris@4 3678
Chris@4 3679 make_executable (newargz[1]);
Chris@4 3680
Chris@4 3681 for (i = 1; i < argc; i++)
Chris@4 3682 newargz[i + 1] = xstrdup (argv[i]);
Chris@4 3683 newargz[argc + 1] = NULL;
Chris@4 3684
Chris@4 3685 for (i = 0; i < argc + 1; i++)
Chris@4 3686 {
Chris@4 3687 LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d] : %s\n", i, newargz[i]));
Chris@4 3688 }
Chris@4 3689
Chris@4 3690 EOF
Chris@4 3691
Chris@4 3692 case $host_os in
Chris@4 3693 mingw*)
Chris@4 3694 cat <<EOF
Chris@4 3695 /* execv doesn't actually work on mingw as expected on unix */
Chris@4 3696 rval = _spawnv (_P_WAIT, "$lt_newargv0", (const char * const *) newargz);
Chris@4 3697 if (rval == -1)
Chris@4 3698 {
Chris@4 3699 /* failed to start process */
Chris@4 3700 LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"$lt_newargv0\": errno = %d\n", errno));
Chris@4 3701 return 127;
Chris@4 3702 }
Chris@4 3703 return rval;
Chris@4 3704 }
Chris@4 3705 EOF
Chris@4 3706 ;;
Chris@4 3707 *)
Chris@4 3708 cat <<EOF
Chris@4 3709 execv ("$lt_newargv0", newargz);
Chris@4 3710 return rval; /* =127, but avoids unused variable warning */
Chris@4 3711 }
Chris@4 3712 EOF
Chris@4 3713 ;;
Chris@4 3714 esac
Chris@4 3715
Chris@4 3716 cat <<"EOF"
Chris@4 3717
Chris@4 3718 void *
Chris@4 3719 xmalloc (size_t num)
Chris@4 3720 {
Chris@4 3721 void *p = (void *) malloc (num);
Chris@4 3722 if (!p)
Chris@4 3723 lt_fatal ("Memory exhausted");
Chris@4 3724
Chris@4 3725 return p;
Chris@4 3726 }
Chris@4 3727
Chris@4 3728 char *
Chris@4 3729 xstrdup (const char *string)
Chris@4 3730 {
Chris@4 3731 return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
Chris@4 3732 string) : NULL;
Chris@4 3733 }
Chris@4 3734
Chris@4 3735 const char *
Chris@4 3736 base_name (const char *name)
Chris@4 3737 {
Chris@4 3738 const char *base;
Chris@4 3739
Chris@4 3740 #if defined (HAVE_DOS_BASED_FILE_SYSTEM)
Chris@4 3741 /* Skip over the disk name in MSDOS pathnames. */
Chris@4 3742 if (isalpha ((unsigned char) name[0]) && name[1] == ':')
Chris@4 3743 name += 2;
Chris@4 3744 #endif
Chris@4 3745
Chris@4 3746 for (base = name; *name; name++)
Chris@4 3747 if (IS_DIR_SEPARATOR (*name))
Chris@4 3748 base = name + 1;
Chris@4 3749 return base;
Chris@4 3750 }
Chris@4 3751
Chris@4 3752 int
Chris@4 3753 check_executable (const char *path)
Chris@4 3754 {
Chris@4 3755 struct stat st;
Chris@4 3756
Chris@4 3757 LTWRAPPER_DEBUGPRINTF (("(check_executable) : %s\n",
Chris@4 3758 path ? (*path ? path : "EMPTY!") : "NULL!"));
Chris@4 3759 if ((!path) || (!*path))
Chris@4 3760 return 0;
Chris@4 3761
Chris@4 3762 if ((stat (path, &st) >= 0)
Chris@4 3763 && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
Chris@4 3764 return 1;
Chris@4 3765 else
Chris@4 3766 return 0;
Chris@4 3767 }
Chris@4 3768
Chris@4 3769 int
Chris@4 3770 make_executable (const char *path)
Chris@4 3771 {
Chris@4 3772 int rval = 0;
Chris@4 3773 struct stat st;
Chris@4 3774
Chris@4 3775 LTWRAPPER_DEBUGPRINTF (("(make_executable) : %s\n",
Chris@4 3776 path ? (*path ? path : "EMPTY!") : "NULL!"));
Chris@4 3777 if ((!path) || (!*path))
Chris@4 3778 return 0;
Chris@4 3779
Chris@4 3780 if (stat (path, &st) >= 0)
Chris@4 3781 {
Chris@4 3782 rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR);
Chris@4 3783 }
Chris@4 3784 return rval;
Chris@4 3785 }
Chris@4 3786
Chris@4 3787 /* Searches for the full path of the wrapper. Returns
Chris@4 3788 newly allocated full path name if found, NULL otherwise
Chris@4 3789 Does not chase symlinks, even on platforms that support them.
Chris@4 3790 */
Chris@4 3791 char *
Chris@4 3792 find_executable (const char *wrapper)
Chris@4 3793 {
Chris@4 3794 int has_slash = 0;
Chris@4 3795 const char *p;
Chris@4 3796 const char *p_next;
Chris@4 3797 /* static buffer for getcwd */
Chris@4 3798 char tmp[LT_PATHMAX + 1];
Chris@4 3799 int tmp_len;
Chris@4 3800 char *concat_name;
Chris@4 3801
Chris@4 3802 LTWRAPPER_DEBUGPRINTF (("(find_executable) : %s\n",
Chris@4 3803 wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!"));
Chris@4 3804
Chris@4 3805 if ((wrapper == NULL) || (*wrapper == '\0'))
Chris@4 3806 return NULL;
Chris@4 3807
Chris@4 3808 /* Absolute path? */
Chris@4 3809 #if defined (HAVE_DOS_BASED_FILE_SYSTEM)
Chris@4 3810 if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
Chris@4 3811 {
Chris@4 3812 concat_name = xstrdup (wrapper);
Chris@4 3813 if (check_executable (concat_name))
Chris@4 3814 return concat_name;
Chris@4 3815 XFREE (concat_name);
Chris@4 3816 }
Chris@4 3817 else
Chris@4 3818 {
Chris@4 3819 #endif
Chris@4 3820 if (IS_DIR_SEPARATOR (wrapper[0]))
Chris@4 3821 {
Chris@4 3822 concat_name = xstrdup (wrapper);
Chris@4 3823 if (check_executable (concat_name))
Chris@4 3824 return concat_name;
Chris@4 3825 XFREE (concat_name);
Chris@4 3826 }
Chris@4 3827 #if defined (HAVE_DOS_BASED_FILE_SYSTEM)
Chris@4 3828 }
Chris@4 3829 #endif
Chris@4 3830
Chris@4 3831 for (p = wrapper; *p; p++)
Chris@4 3832 if (*p == '/')
Chris@4 3833 {
Chris@4 3834 has_slash = 1;
Chris@4 3835 break;
Chris@4 3836 }
Chris@4 3837 if (!has_slash)
Chris@4 3838 {
Chris@4 3839 /* no slashes; search PATH */
Chris@4 3840 const char *path = getenv ("PATH");
Chris@4 3841 if (path != NULL)
Chris@4 3842 {
Chris@4 3843 for (p = path; *p; p = p_next)
Chris@4 3844 {
Chris@4 3845 const char *q;
Chris@4 3846 size_t p_len;
Chris@4 3847 for (q = p; *q; q++)
Chris@4 3848 if (IS_PATH_SEPARATOR (*q))
Chris@4 3849 break;
Chris@4 3850 p_len = q - p;
Chris@4 3851 p_next = (*q == '\0' ? q : q + 1);
Chris@4 3852 if (p_len == 0)
Chris@4 3853 {
Chris@4 3854 /* empty path: current directory */
Chris@4 3855 if (getcwd (tmp, LT_PATHMAX) == NULL)
Chris@4 3856 lt_fatal ("getcwd failed");
Chris@4 3857 tmp_len = strlen (tmp);
Chris@4 3858 concat_name =
Chris@4 3859 XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
Chris@4 3860 memcpy (concat_name, tmp, tmp_len);
Chris@4 3861 concat_name[tmp_len] = '/';
Chris@4 3862 strcpy (concat_name + tmp_len + 1, wrapper);
Chris@4 3863 }
Chris@4 3864 else
Chris@4 3865 {
Chris@4 3866 concat_name =
Chris@4 3867 XMALLOC (char, p_len + 1 + strlen (wrapper) + 1);
Chris@4 3868 memcpy (concat_name, p, p_len);
Chris@4 3869 concat_name[p_len] = '/';
Chris@4 3870 strcpy (concat_name + p_len + 1, wrapper);
Chris@4 3871 }
Chris@4 3872 if (check_executable (concat_name))
Chris@4 3873 return concat_name;
Chris@4 3874 XFREE (concat_name);
Chris@4 3875 }
Chris@4 3876 }
Chris@4 3877 /* not found in PATH; assume curdir */
Chris@4 3878 }
Chris@4 3879 /* Relative path | not found in path: prepend cwd */
Chris@4 3880 if (getcwd (tmp, LT_PATHMAX) == NULL)
Chris@4 3881 lt_fatal ("getcwd failed");
Chris@4 3882 tmp_len = strlen (tmp);
Chris@4 3883 concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
Chris@4 3884 memcpy (concat_name, tmp, tmp_len);
Chris@4 3885 concat_name[tmp_len] = '/';
Chris@4 3886 strcpy (concat_name + tmp_len + 1, wrapper);
Chris@4 3887
Chris@4 3888 if (check_executable (concat_name))
Chris@4 3889 return concat_name;
Chris@4 3890 XFREE (concat_name);
Chris@4 3891 return NULL;
Chris@4 3892 }
Chris@4 3893
Chris@4 3894 char *
Chris@4 3895 chase_symlinks (const char *pathspec)
Chris@4 3896 {
Chris@4 3897 #ifndef S_ISLNK
Chris@4 3898 return xstrdup (pathspec);
Chris@4 3899 #else
Chris@4 3900 char buf[LT_PATHMAX];
Chris@4 3901 struct stat s;
Chris@4 3902 char *tmp_pathspec = xstrdup (pathspec);
Chris@4 3903 char *p;
Chris@4 3904 int has_symlinks = 0;
Chris@4 3905 while (strlen (tmp_pathspec) && !has_symlinks)
Chris@4 3906 {
Chris@4 3907 LTWRAPPER_DEBUGPRINTF (("checking path component for symlinks: %s\n",
Chris@4 3908 tmp_pathspec));
Chris@4 3909 if (lstat (tmp_pathspec, &s) == 0)
Chris@4 3910 {
Chris@4 3911 if (S_ISLNK (s.st_mode) != 0)
Chris@4 3912 {
Chris@4 3913 has_symlinks = 1;
Chris@4 3914 break;
Chris@4 3915 }
Chris@4 3916
Chris@4 3917 /* search backwards for last DIR_SEPARATOR */
Chris@4 3918 p = tmp_pathspec + strlen (tmp_pathspec) - 1;
Chris@4 3919 while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
Chris@4 3920 p--;
Chris@4 3921 if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
Chris@4 3922 {
Chris@4 3923 /* no more DIR_SEPARATORS left */
Chris@4 3924 break;
Chris@4 3925 }
Chris@4 3926 *p = '\0';
Chris@4 3927 }
Chris@4 3928 else
Chris@4 3929 {
Chris@4 3930 char *errstr = strerror (errno);
Chris@4 3931 lt_fatal ("Error accessing file %s (%s)", tmp_pathspec, errstr);
Chris@4 3932 }
Chris@4 3933 }
Chris@4 3934 XFREE (tmp_pathspec);
Chris@4 3935
Chris@4 3936 if (!has_symlinks)
Chris@4 3937 {
Chris@4 3938 return xstrdup (pathspec);
Chris@4 3939 }
Chris@4 3940
Chris@4 3941 tmp_pathspec = realpath (pathspec, buf);
Chris@4 3942 if (tmp_pathspec == 0)
Chris@4 3943 {
Chris@4 3944 lt_fatal ("Could not follow symlinks for %s", pathspec);
Chris@4 3945 }
Chris@4 3946 return xstrdup (tmp_pathspec);
Chris@4 3947 #endif
Chris@4 3948 }
Chris@4 3949
Chris@4 3950 char *
Chris@4 3951 strendzap (char *str, const char *pat)
Chris@4 3952 {
Chris@4 3953 size_t len, patlen;
Chris@4 3954
Chris@4 3955 assert (str != NULL);
Chris@4 3956 assert (pat != NULL);
Chris@4 3957
Chris@4 3958 len = strlen (str);
Chris@4 3959 patlen = strlen (pat);
Chris@4 3960
Chris@4 3961 if (patlen <= len)
Chris@4 3962 {
Chris@4 3963 str += len - patlen;
Chris@4 3964 if (strcmp (str, pat) == 0)
Chris@4 3965 *str = '\0';
Chris@4 3966 }
Chris@4 3967 return str;
Chris@4 3968 }
Chris@4 3969
Chris@4 3970 static void
Chris@4 3971 lt_error_core (int exit_status, const char *mode,
Chris@4 3972 const char *message, va_list ap)
Chris@4 3973 {
Chris@4 3974 fprintf (stderr, "%s: %s: ", program_name, mode);
Chris@4 3975 vfprintf (stderr, message, ap);
Chris@4 3976 fprintf (stderr, ".\n");
Chris@4 3977
Chris@4 3978 if (exit_status >= 0)
Chris@4 3979 exit (exit_status);
Chris@4 3980 }
Chris@4 3981
Chris@4 3982 void
Chris@4 3983 lt_fatal (const char *message, ...)
Chris@4 3984 {
Chris@4 3985 va_list ap;
Chris@4 3986 va_start (ap, message);
Chris@4 3987 lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
Chris@4 3988 va_end (ap);
Chris@4 3989 }
Chris@4 3990 EOF
Chris@4 3991 }
Chris@4 3992 # end: func_emit_cwrapperexe_src
Chris@4 3993
Chris@4 3994 # func_mode_link arg...
Chris@4 3995 func_mode_link ()
Chris@4 3996 {
Chris@4 3997 $opt_debug
Chris@4 3998 case $host in
Chris@4 3999 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
Chris@4 4000 # It is impossible to link a dll without this setting, and
Chris@4 4001 # we shouldn't force the makefile maintainer to figure out
Chris@4 4002 # which system we are compiling for in order to pass an extra
Chris@4 4003 # flag for every libtool invocation.
Chris@4 4004 # allow_undefined=no
Chris@4 4005
Chris@4 4006 # FIXME: Unfortunately, there are problems with the above when trying
Chris@4 4007 # to make a dll which has undefined symbols, in which case not
Chris@4 4008 # even a static library is built. For now, we need to specify
Chris@4 4009 # -no-undefined on the libtool link line when we can be certain
Chris@4 4010 # that all symbols are satisfied, otherwise we get a static library.
Chris@4 4011 allow_undefined=yes
Chris@4 4012 ;;
Chris@4 4013 *)
Chris@4 4014 allow_undefined=yes
Chris@4 4015 ;;
Chris@4 4016 esac
Chris@4 4017 libtool_args=$nonopt
Chris@4 4018 base_compile="$nonopt $@"
Chris@4 4019 compile_command=$nonopt
Chris@4 4020 finalize_command=$nonopt
Chris@4 4021
Chris@4 4022 compile_rpath=
Chris@4 4023 finalize_rpath=
Chris@4 4024 compile_shlibpath=
Chris@4 4025 finalize_shlibpath=
Chris@4 4026 convenience=
Chris@4 4027 old_convenience=
Chris@4 4028 deplibs=
Chris@4 4029 old_deplibs=
Chris@4 4030 compiler_flags=
Chris@4 4031 linker_flags=
Chris@4 4032 dllsearchpath=
Chris@4 4033 lib_search_path=`pwd`
Chris@4 4034 inst_prefix_dir=
Chris@4 4035 new_inherited_linker_flags=
Chris@4 4036
Chris@4 4037 avoid_version=no
Chris@4 4038 dlfiles=
Chris@4 4039 dlprefiles=
Chris@4 4040 dlself=no
Chris@4 4041 export_dynamic=no
Chris@4 4042 export_symbols=
Chris@4 4043 export_symbols_regex=
Chris@4 4044 generated=
Chris@4 4045 libobjs=
Chris@4 4046 ltlibs=
Chris@4 4047 module=no
Chris@4 4048 no_install=no
Chris@4 4049 objs=
Chris@4 4050 non_pic_objects=
Chris@4 4051 precious_files_regex=
Chris@4 4052 prefer_static_libs=no
Chris@4 4053 preload=no
Chris@4 4054 prev=
Chris@4 4055 prevarg=
Chris@4 4056 release=
Chris@4 4057 rpath=
Chris@4 4058 xrpath=
Chris@4 4059 perm_rpath=
Chris@4 4060 temp_rpath=
Chris@4 4061 thread_safe=no
Chris@4 4062 vinfo=
Chris@4 4063 vinfo_number=no
Chris@4 4064 weak_libs=
Chris@4 4065 single_module="${wl}-single_module"
Chris@4 4066 func_infer_tag $base_compile
Chris@4 4067
Chris@4 4068 # We need to know -static, to get the right output filenames.
Chris@4 4069 for arg
Chris@4 4070 do
Chris@4 4071 case $arg in
Chris@4 4072 -shared)
Chris@4 4073 test "$build_libtool_libs" != yes && \
Chris@4 4074 func_fatal_configuration "can not build a shared library"
Chris@4 4075 build_old_libs=no
Chris@4 4076 break
Chris@4 4077 ;;
Chris@4 4078 -all-static | -static | -static-libtool-libs)
Chris@4 4079 case $arg in
Chris@4 4080 -all-static)
Chris@4 4081 if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
Chris@4 4082 func_warning "complete static linking is impossible in this configuration"
Chris@4 4083 fi
Chris@4 4084 if test -n "$link_static_flag"; then
Chris@4 4085 dlopen_self=$dlopen_self_static
Chris@4 4086 fi
Chris@4 4087 prefer_static_libs=yes
Chris@4 4088 ;;
Chris@4 4089 -static)
Chris@4 4090 if test -z "$pic_flag" && test -n "$link_static_flag"; then
Chris@4 4091 dlopen_self=$dlopen_self_static
Chris@4 4092 fi
Chris@4 4093 prefer_static_libs=built
Chris@4 4094 ;;
Chris@4 4095 -static-libtool-libs)
Chris@4 4096 if test -z "$pic_flag" && test -n "$link_static_flag"; then
Chris@4 4097 dlopen_self=$dlopen_self_static
Chris@4 4098 fi
Chris@4 4099 prefer_static_libs=yes
Chris@4 4100 ;;
Chris@4 4101 esac
Chris@4 4102 build_libtool_libs=no
Chris@4 4103 build_old_libs=yes
Chris@4 4104 break
Chris@4 4105 ;;
Chris@4 4106 esac
Chris@4 4107 done
Chris@4 4108
Chris@4 4109 # See if our shared archives depend on static archives.
Chris@4 4110 test -n "$old_archive_from_new_cmds" && build_old_libs=yes
Chris@4 4111
Chris@4 4112 # Go through the arguments, transforming them on the way.
Chris@4 4113 while test "$#" -gt 0; do
Chris@4 4114 arg="$1"
Chris@4 4115 shift
Chris@4 4116 func_quote_for_eval "$arg"
Chris@4 4117 qarg=$func_quote_for_eval_unquoted_result
Chris@4 4118 func_append libtool_args " $func_quote_for_eval_result"
Chris@4 4119
Chris@4 4120 # If the previous option needs an argument, assign it.
Chris@4 4121 if test -n "$prev"; then
Chris@4 4122 case $prev in
Chris@4 4123 output)
Chris@4 4124 func_append compile_command " @OUTPUT@"
Chris@4 4125 func_append finalize_command " @OUTPUT@"
Chris@4 4126 ;;
Chris@4 4127 esac
Chris@4 4128
Chris@4 4129 case $prev in
Chris@4 4130 dlfiles|dlprefiles)
Chris@4 4131 if test "$preload" = no; then
Chris@4 4132 # Add the symbol object into the linking commands.
Chris@4 4133 func_append compile_command " @SYMFILE@"
Chris@4 4134 func_append finalize_command " @SYMFILE@"
Chris@4 4135 preload=yes
Chris@4 4136 fi
Chris@4 4137 case $arg in
Chris@4 4138 *.la | *.lo) ;; # We handle these cases below.
Chris@4 4139 force)
Chris@4 4140 if test "$dlself" = no; then
Chris@4 4141 dlself=needless
Chris@4 4142 export_dynamic=yes
Chris@4 4143 fi
Chris@4 4144 prev=
Chris@4 4145 continue
Chris@4 4146 ;;
Chris@4 4147 self)
Chris@4 4148 if test "$prev" = dlprefiles; then
Chris@4 4149 dlself=yes
Chris@4 4150 elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
Chris@4 4151 dlself=yes
Chris@4 4152 else
Chris@4 4153 dlself=needless
Chris@4 4154 export_dynamic=yes
Chris@4 4155 fi
Chris@4 4156 prev=
Chris@4 4157 continue
Chris@4 4158 ;;
Chris@4 4159 *)
Chris@4 4160 if test "$prev" = dlfiles; then
Chris@4 4161 dlfiles="$dlfiles $arg"
Chris@4 4162 else
Chris@4 4163 dlprefiles="$dlprefiles $arg"
Chris@4 4164 fi
Chris@4 4165 prev=
Chris@4 4166 continue
Chris@4 4167 ;;
Chris@4 4168 esac
Chris@4 4169 ;;
Chris@4 4170 expsyms)
Chris@4 4171 export_symbols="$arg"
Chris@4 4172 test -f "$arg" \
Chris@4 4173 || func_fatal_error "symbol file \`$arg' does not exist"
Chris@4 4174 prev=
Chris@4 4175 continue
Chris@4 4176 ;;
Chris@4 4177 expsyms_regex)
Chris@4 4178 export_symbols_regex="$arg"
Chris@4 4179 prev=
Chris@4 4180 continue
Chris@4 4181 ;;
Chris@4 4182 framework)
Chris@4 4183 case $host in
Chris@4 4184 *-*-darwin*)
Chris@4 4185 case "$deplibs " in
Chris@4 4186 *" $qarg.ltframework "*) ;;
Chris@4 4187 *) deplibs="$deplibs $qarg.ltframework" # this is fixed later
Chris@4 4188 ;;
Chris@4 4189 esac
Chris@4 4190 ;;
Chris@4 4191 esac
Chris@4 4192 prev=
Chris@4 4193 continue
Chris@4 4194 ;;
Chris@4 4195 inst_prefix)
Chris@4 4196 inst_prefix_dir="$arg"
Chris@4 4197 prev=
Chris@4 4198 continue
Chris@4 4199 ;;
Chris@4 4200 objectlist)
Chris@4 4201 if test -f "$arg"; then
Chris@4 4202 save_arg=$arg
Chris@4 4203 moreargs=
Chris@4 4204 for fil in `cat "$save_arg"`
Chris@4 4205 do
Chris@4 4206 # moreargs="$moreargs $fil"
Chris@4 4207 arg=$fil
Chris@4 4208 # A libtool-controlled object.
Chris@4 4209
Chris@4 4210 # Check to see that this really is a libtool object.
Chris@4 4211 if func_lalib_unsafe_p "$arg"; then
Chris@4 4212 pic_object=
Chris@4 4213 non_pic_object=
Chris@4 4214
Chris@4 4215 # Read the .lo file
Chris@4 4216 func_source "$arg"
Chris@4 4217
Chris@4 4218 if test -z "$pic_object" ||
Chris@4 4219 test -z "$non_pic_object" ||
Chris@4 4220 test "$pic_object" = none &&
Chris@4 4221 test "$non_pic_object" = none; then
Chris@4 4222 func_fatal_error "cannot find name of object for \`$arg'"
Chris@4 4223 fi
Chris@4 4224
Chris@4 4225 # Extract subdirectory from the argument.
Chris@4 4226 func_dirname "$arg" "/" ""
Chris@4 4227 xdir="$func_dirname_result"
Chris@4 4228
Chris@4 4229 if test "$pic_object" != none; then
Chris@4 4230 # Prepend the subdirectory the object is found in.
Chris@4 4231 pic_object="$xdir$pic_object"
Chris@4 4232
Chris@4 4233 if test "$prev" = dlfiles; then
Chris@4 4234 if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
Chris@4 4235 dlfiles="$dlfiles $pic_object"
Chris@4 4236 prev=
Chris@4 4237 continue
Chris@4 4238 else
Chris@4 4239 # If libtool objects are unsupported, then we need to preload.
Chris@4 4240 prev=dlprefiles
Chris@4 4241 fi
Chris@4 4242 fi
Chris@4 4243
Chris@4 4244 # CHECK ME: I think I busted this. -Ossama
Chris@4 4245 if test "$prev" = dlprefiles; then
Chris@4 4246 # Preload the old-style object.
Chris@4 4247 dlprefiles="$dlprefiles $pic_object"
Chris@4 4248 prev=
Chris@4 4249 fi
Chris@4 4250
Chris@4 4251 # A PIC object.
Chris@4 4252 func_append libobjs " $pic_object"
Chris@4 4253 arg="$pic_object"
Chris@4 4254 fi
Chris@4 4255
Chris@4 4256 # Non-PIC object.
Chris@4 4257 if test "$non_pic_object" != none; then
Chris@4 4258 # Prepend the subdirectory the object is found in.
Chris@4 4259 non_pic_object="$xdir$non_pic_object"
Chris@4 4260
Chris@4 4261 # A standard non-PIC object
Chris@4 4262 func_append non_pic_objects " $non_pic_object"
Chris@4 4263 if test -z "$pic_object" || test "$pic_object" = none ; then
Chris@4 4264 arg="$non_pic_object"
Chris@4 4265 fi
Chris@4 4266 else
Chris@4 4267 # If the PIC object exists, use it instead.
Chris@4 4268 # $xdir was prepended to $pic_object above.
Chris@4 4269 non_pic_object="$pic_object"
Chris@4 4270 func_append non_pic_objects " $non_pic_object"
Chris@4 4271 fi
Chris@4 4272 else
Chris@4 4273 # Only an error if not doing a dry-run.
Chris@4 4274 if $opt_dry_run; then
Chris@4 4275 # Extract subdirectory from the argument.
Chris@4 4276 func_dirname "$arg" "/" ""
Chris@4 4277 xdir="$func_dirname_result"
Chris@4 4278
Chris@4 4279 func_lo2o "$arg"
Chris@4 4280 pic_object=$xdir$objdir/$func_lo2o_result
Chris@4 4281 non_pic_object=$xdir$func_lo2o_result
Chris@4 4282 func_append libobjs " $pic_object"
Chris@4 4283 func_append non_pic_objects " $non_pic_object"
Chris@4 4284 else
Chris@4 4285 func_fatal_error "\`$arg' is not a valid libtool object"
Chris@4 4286 fi
Chris@4 4287 fi
Chris@4 4288 done
Chris@4 4289 else
Chris@4 4290 func_fatal_error "link input file \`$arg' does not exist"
Chris@4 4291 fi
Chris@4 4292 arg=$save_arg
Chris@4 4293 prev=
Chris@4 4294 continue
Chris@4 4295 ;;
Chris@4 4296 precious_regex)
Chris@4 4297 precious_files_regex="$arg"
Chris@4 4298 prev=
Chris@4 4299 continue
Chris@4 4300 ;;
Chris@4 4301 release)
Chris@4 4302 release="-$arg"
Chris@4 4303 prev=
Chris@4 4304 continue
Chris@4 4305 ;;
Chris@4 4306 rpath | xrpath)
Chris@4 4307 # We need an absolute path.
Chris@4 4308 case $arg in
Chris@4 4309 [\\/]* | [A-Za-z]:[\\/]*) ;;
Chris@4 4310 *)
Chris@4 4311 func_fatal_error "only absolute run-paths are allowed"
Chris@4 4312 ;;
Chris@4 4313 esac
Chris@4 4314 if test "$prev" = rpath; then
Chris@4 4315 case "$rpath " in
Chris@4 4316 *" $arg "*) ;;
Chris@4 4317 *) rpath="$rpath $arg" ;;
Chris@4 4318 esac
Chris@4 4319 else
Chris@4 4320 case "$xrpath " in
Chris@4 4321 *" $arg "*) ;;
Chris@4 4322 *) xrpath="$xrpath $arg" ;;
Chris@4 4323 esac
Chris@4 4324 fi
Chris@4 4325 prev=
Chris@4 4326 continue
Chris@4 4327 ;;
Chris@4 4328 shrext)
Chris@4 4329 shrext_cmds="$arg"
Chris@4 4330 prev=
Chris@4 4331 continue
Chris@4 4332 ;;
Chris@4 4333 weak)
Chris@4 4334 weak_libs="$weak_libs $arg"
Chris@4 4335 prev=
Chris@4 4336 continue
Chris@4 4337 ;;
Chris@4 4338 xcclinker)
Chris@4 4339 linker_flags="$linker_flags $qarg"
Chris@4 4340 compiler_flags="$compiler_flags $qarg"
Chris@4 4341 prev=
Chris@4 4342 func_append compile_command " $qarg"
Chris@4 4343 func_append finalize_command " $qarg"
Chris@4 4344 continue
Chris@4 4345 ;;
Chris@4 4346 xcompiler)
Chris@4 4347 compiler_flags="$compiler_flags $qarg"
Chris@4 4348 prev=
Chris@4 4349 func_append compile_command " $qarg"
Chris@4 4350 func_append finalize_command " $qarg"
Chris@4 4351 continue
Chris@4 4352 ;;
Chris@4 4353 xlinker)
Chris@4 4354 linker_flags="$linker_flags $qarg"
Chris@4 4355 compiler_flags="$compiler_flags $wl$qarg"
Chris@4 4356 prev=
Chris@4 4357 func_append compile_command " $wl$qarg"
Chris@4 4358 func_append finalize_command " $wl$qarg"
Chris@4 4359 continue
Chris@4 4360 ;;
Chris@4 4361 *)
Chris@4 4362 eval "$prev=\"\$arg\""
Chris@4 4363 prev=
Chris@4 4364 continue
Chris@4 4365 ;;
Chris@4 4366 esac
Chris@4 4367 fi # test -n "$prev"
Chris@4 4368
Chris@4 4369 prevarg="$arg"
Chris@4 4370
Chris@4 4371 case $arg in
Chris@4 4372 -all-static)
Chris@4 4373 if test -n "$link_static_flag"; then
Chris@4 4374 # See comment for -static flag below, for more details.
Chris@4 4375 func_append compile_command " $link_static_flag"
Chris@4 4376 func_append finalize_command " $link_static_flag"
Chris@4 4377 fi
Chris@4 4378 continue
Chris@4 4379 ;;
Chris@4 4380
Chris@4 4381 -allow-undefined)
Chris@4 4382 # FIXME: remove this flag sometime in the future.
Chris@4 4383 func_fatal_error "\`-allow-undefined' must not be used because it is the default"
Chris@4 4384 ;;
Chris@4 4385
Chris@4 4386 -avoid-version)
Chris@4 4387 avoid_version=yes
Chris@4 4388 continue
Chris@4 4389 ;;
Chris@4 4390
Chris@4 4391 -dlopen)
Chris@4 4392 prev=dlfiles
Chris@4 4393 continue
Chris@4 4394 ;;
Chris@4 4395
Chris@4 4396 -dlpreopen)
Chris@4 4397 prev=dlprefiles
Chris@4 4398 continue
Chris@4 4399 ;;
Chris@4 4400
Chris@4 4401 -export-dynamic)
Chris@4 4402 export_dynamic=yes
Chris@4 4403 continue
Chris@4 4404 ;;
Chris@4 4405
Chris@4 4406 -export-symbols | -export-symbols-regex)
Chris@4 4407 if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
Chris@4 4408 func_fatal_error "more than one -exported-symbols argument is not allowed"
Chris@4 4409 fi
Chris@4 4410 if test "X$arg" = "X-export-symbols"; then
Chris@4 4411 prev=expsyms
Chris@4 4412 else
Chris@4 4413 prev=expsyms_regex
Chris@4 4414 fi
Chris@4 4415 continue
Chris@4 4416 ;;
Chris@4 4417
Chris@4 4418 -framework)
Chris@4 4419 prev=framework
Chris@4 4420 continue
Chris@4 4421 ;;
Chris@4 4422
Chris@4 4423 -inst-prefix-dir)
Chris@4 4424 prev=inst_prefix
Chris@4 4425 continue
Chris@4 4426 ;;
Chris@4 4427
Chris@4 4428 # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
Chris@4 4429 # so, if we see these flags be careful not to treat them like -L
Chris@4 4430 -L[A-Z][A-Z]*:*)
Chris@4 4431 case $with_gcc/$host in
Chris@4 4432 no/*-*-irix* | /*-*-irix*)
Chris@4 4433 func_append compile_command " $arg"
Chris@4 4434 func_append finalize_command " $arg"
Chris@4 4435 ;;
Chris@4 4436 esac
Chris@4 4437 continue
Chris@4 4438 ;;
Chris@4 4439
Chris@4 4440 -L*)
Chris@4 4441 func_stripname '-L' '' "$arg"
Chris@4 4442 dir=$func_stripname_result
Chris@4 4443 # We need an absolute path.
Chris@4 4444 case $dir in
Chris@4 4445 [\\/]* | [A-Za-z]:[\\/]*) ;;
Chris@4 4446 *)
Chris@4 4447 absdir=`cd "$dir" && pwd`
Chris@4 4448 test -z "$absdir" && \
Chris@4 4449 func_fatal_error "cannot determine absolute directory name of \`$dir'"
Chris@4 4450 dir="$absdir"
Chris@4 4451 ;;
Chris@4 4452 esac
Chris@4 4453 case "$deplibs " in
Chris@4 4454 *" -L$dir "*) ;;
Chris@4 4455 *)
Chris@4 4456 deplibs="$deplibs -L$dir"
Chris@4 4457 lib_search_path="$lib_search_path $dir"
Chris@4 4458 ;;
Chris@4 4459 esac
Chris@4 4460 case $host in
Chris@4 4461 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
Chris@4 4462 testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'`
Chris@4 4463 case :$dllsearchpath: in
Chris@4 4464 *":$dir:"*) ;;
Chris@4 4465 *) dllsearchpath="$dllsearchpath:$dir";;
Chris@4 4466 esac
Chris@4 4467 case :$dllsearchpath: in
Chris@4 4468 *":$testbindir:"*) ;;
Chris@4 4469 *) dllsearchpath="$dllsearchpath:$testbindir";;
Chris@4 4470 esac
Chris@4 4471 ;;
Chris@4 4472 esac
Chris@4 4473 continue
Chris@4 4474 ;;
Chris@4 4475
Chris@4 4476 -l*)
Chris@4 4477 if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
Chris@4 4478 case $host in
Chris@4 4479 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos*)
Chris@4 4480 # These systems don't actually have a C or math library (as such)
Chris@4 4481 continue
Chris@4 4482 ;;
Chris@4 4483 *-*-os2*)
Chris@4 4484 # These systems don't actually have a C library (as such)
Chris@4 4485 test "X$arg" = "X-lc" && continue
Chris@4 4486 ;;
Chris@4 4487 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
Chris@4 4488 # Do not include libc due to us having libc/libc_r.
Chris@4 4489 test "X$arg" = "X-lc" && continue
Chris@4 4490 ;;
Chris@4 4491 *-*-rhapsody* | *-*-darwin1.[012])
Chris@4 4492 # Rhapsody C and math libraries are in the System framework
Chris@4 4493 deplibs="$deplibs System.ltframework"
Chris@4 4494 continue
Chris@4 4495 ;;
Chris@4 4496 *-*-sco3.2v5* | *-*-sco5v6*)
Chris@4 4497 # Causes problems with __ctype
Chris@4 4498 test "X$arg" = "X-lc" && continue
Chris@4 4499 ;;
Chris@4 4500 *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
Chris@4 4501 # Compiler inserts libc in the correct place for threads to work
Chris@4 4502 test "X$arg" = "X-lc" && continue
Chris@4 4503 ;;
Chris@4 4504 esac
Chris@4 4505 elif test "X$arg" = "X-lc_r"; then
Chris@4 4506 case $host in
Chris@4 4507 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
Chris@4 4508 # Do not include libc_r directly, use -pthread flag.
Chris@4 4509 continue
Chris@4 4510 ;;
Chris@4 4511 esac
Chris@4 4512 fi
Chris@4 4513 deplibs="$deplibs $arg"
Chris@4 4514 continue
Chris@4 4515 ;;
Chris@4 4516
Chris@4 4517 -module)
Chris@4 4518 module=yes
Chris@4 4519 continue
Chris@4 4520 ;;
Chris@4 4521
Chris@4 4522 # Tru64 UNIX uses -model [arg] to determine the layout of C++
Chris@4 4523 # classes, name mangling, and exception handling.
Chris@4 4524 # Darwin uses the -arch flag to determine output architecture.
Chris@4 4525 -model|-arch|-isysroot)
Chris@4 4526 compiler_flags="$compiler_flags $arg"
Chris@4 4527 func_append compile_command " $arg"
Chris@4 4528 func_append finalize_command " $arg"
Chris@4 4529 prev=xcompiler
Chris@4 4530 continue
Chris@4 4531 ;;
Chris@4 4532
Chris@4 4533 -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
Chris@4 4534 compiler_flags="$compiler_flags $arg"
Chris@4 4535 func_append compile_command " $arg"
Chris@4 4536 func_append finalize_command " $arg"
Chris@4 4537 case "$new_inherited_linker_flags " in
Chris@4 4538 *" $arg "*) ;;
Chris@4 4539 * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;;
Chris@4 4540 esac
Chris@4 4541 continue
Chris@4 4542 ;;
Chris@4 4543
Chris@4 4544 -multi_module)
Chris@4 4545 single_module="${wl}-multi_module"
Chris@4 4546 continue
Chris@4 4547 ;;
Chris@4 4548
Chris@4 4549 -no-fast-install)
Chris@4 4550 fast_install=no
Chris@4 4551 continue
Chris@4 4552 ;;
Chris@4 4553
Chris@4 4554 -no-install)
Chris@4 4555 case $host in
Chris@4 4556 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin*)
Chris@4 4557 # The PATH hackery in wrapper scripts is required on Windows
Chris@4 4558 # and Darwin in order for the loader to find any dlls it needs.
Chris@4 4559 func_warning "\`-no-install' is ignored for $host"
Chris@4 4560 func_warning "assuming \`-no-fast-install' instead"
Chris@4 4561 fast_install=no
Chris@4 4562 ;;
Chris@4 4563 *) no_install=yes ;;
Chris@4 4564 esac
Chris@4 4565 continue
Chris@4 4566 ;;
Chris@4 4567
Chris@4 4568 -no-undefined)
Chris@4 4569 allow_undefined=no
Chris@4 4570 continue
Chris@4 4571 ;;
Chris@4 4572
Chris@4 4573 -objectlist)
Chris@4 4574 prev=objectlist
Chris@4 4575 continue
Chris@4 4576 ;;
Chris@4 4577
Chris@4 4578 -o) prev=output ;;
Chris@4 4579
Chris@4 4580 -precious-files-regex)
Chris@4 4581 prev=precious_regex
Chris@4 4582 continue
Chris@4 4583 ;;
Chris@4 4584
Chris@4 4585 -release)
Chris@4 4586 prev=release
Chris@4 4587 continue
Chris@4 4588 ;;
Chris@4 4589
Chris@4 4590 -rpath)
Chris@4 4591 prev=rpath
Chris@4 4592 continue
Chris@4 4593 ;;
Chris@4 4594
Chris@4 4595 -R)
Chris@4 4596 prev=xrpath
Chris@4 4597 continue
Chris@4 4598 ;;
Chris@4 4599
Chris@4 4600 -R*)
Chris@4 4601 func_stripname '-R' '' "$arg"
Chris@4 4602 dir=$func_stripname_result
Chris@4 4603 # We need an absolute path.
Chris@4 4604 case $dir in
Chris@4 4605 [\\/]* | [A-Za-z]:[\\/]*) ;;
Chris@4 4606 *)
Chris@4 4607 func_fatal_error "only absolute run-paths are allowed"
Chris@4 4608 ;;
Chris@4 4609 esac
Chris@4 4610 case "$xrpath " in
Chris@4 4611 *" $dir "*) ;;
Chris@4 4612 *) xrpath="$xrpath $dir" ;;
Chris@4 4613 esac
Chris@4 4614 continue
Chris@4 4615 ;;
Chris@4 4616
Chris@4 4617 -shared)
Chris@4 4618 # The effects of -shared are defined in a previous loop.
Chris@4 4619 continue
Chris@4 4620 ;;
Chris@4 4621
Chris@4 4622 -shrext)
Chris@4 4623 prev=shrext
Chris@4 4624 continue
Chris@4 4625 ;;
Chris@4 4626
Chris@4 4627 -static | -static-libtool-libs)
Chris@4 4628 # The effects of -static are defined in a previous loop.
Chris@4 4629 # We used to do the same as -all-static on platforms that
Chris@4 4630 # didn't have a PIC flag, but the assumption that the effects
Chris@4 4631 # would be equivalent was wrong. It would break on at least
Chris@4 4632 # Digital Unix and AIX.
Chris@4 4633 continue
Chris@4 4634 ;;
Chris@4 4635
Chris@4 4636 -thread-safe)
Chris@4 4637 thread_safe=yes
Chris@4 4638 continue
Chris@4 4639 ;;
Chris@4 4640
Chris@4 4641 -version-info)
Chris@4 4642 prev=vinfo
Chris@4 4643 continue
Chris@4 4644 ;;
Chris@4 4645
Chris@4 4646 -version-number)
Chris@4 4647 prev=vinfo
Chris@4 4648 vinfo_number=yes
Chris@4 4649 continue
Chris@4 4650 ;;
Chris@4 4651
Chris@4 4652 -weak)
Chris@4 4653 prev=weak
Chris@4 4654 continue
Chris@4 4655 ;;
Chris@4 4656
Chris@4 4657 -Wc,*)
Chris@4 4658 func_stripname '-Wc,' '' "$arg"
Chris@4 4659 args=$func_stripname_result
Chris@4 4660 arg=
Chris@4 4661 save_ifs="$IFS"; IFS=','
Chris@4 4662 for flag in $args; do
Chris@4 4663 IFS="$save_ifs"
Chris@4 4664 func_quote_for_eval "$flag"
Chris@4 4665 arg="$arg $wl$func_quote_for_eval_result"
Chris@4 4666 compiler_flags="$compiler_flags $func_quote_for_eval_result"
Chris@4 4667 done
Chris@4 4668 IFS="$save_ifs"
Chris@4 4669 func_stripname ' ' '' "$arg"
Chris@4 4670 arg=$func_stripname_result
Chris@4 4671 ;;
Chris@4 4672
Chris@4 4673 -Wl,*)
Chris@4 4674 func_stripname '-Wl,' '' "$arg"
Chris@4 4675 args=$func_stripname_result
Chris@4 4676 arg=
Chris@4 4677 save_ifs="$IFS"; IFS=','
Chris@4 4678 for flag in $args; do
Chris@4 4679 IFS="$save_ifs"
Chris@4 4680 func_quote_for_eval "$flag"
Chris@4 4681 arg="$arg $wl$func_quote_for_eval_result"
Chris@4 4682 compiler_flags="$compiler_flags $wl$func_quote_for_eval_result"
Chris@4 4683 linker_flags="$linker_flags $func_quote_for_eval_result"
Chris@4 4684 done
Chris@4 4685 IFS="$save_ifs"
Chris@4 4686 func_stripname ' ' '' "$arg"
Chris@4 4687 arg=$func_stripname_result
Chris@4 4688 ;;
Chris@4 4689
Chris@4 4690 -Xcompiler)
Chris@4 4691 prev=xcompiler
Chris@4 4692 continue
Chris@4 4693 ;;
Chris@4 4694
Chris@4 4695 -Xlinker)
Chris@4 4696 prev=xlinker
Chris@4 4697 continue
Chris@4 4698 ;;
Chris@4 4699
Chris@4 4700 -XCClinker)
Chris@4 4701 prev=xcclinker
Chris@4 4702 continue
Chris@4 4703 ;;
Chris@4 4704
Chris@4 4705 # -msg_* for osf cc
Chris@4 4706 -msg_*)
Chris@4 4707 func_quote_for_eval "$arg"
Chris@4 4708 arg="$func_quote_for_eval_result"
Chris@4 4709 ;;
Chris@4 4710
Chris@4 4711 # -64, -mips[0-9] enable 64-bit mode on the SGI compiler
Chris@4 4712 # -r[0-9][0-9]* specifies the processor on the SGI compiler
Chris@4 4713 # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler
Chris@4 4714 # +DA*, +DD* enable 64-bit mode on the HP compiler
Chris@4 4715 # -q* pass through compiler args for the IBM compiler
Chris@4 4716 # -m*, -t[45]*, -txscale* pass through architecture-specific
Chris@4 4717 # compiler args for GCC
Chris@4 4718 # -F/path gives path to uninstalled frameworks, gcc on darwin
Chris@4 4719 # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC
Chris@4 4720 # @file GCC response files
Chris@4 4721 -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
Chris@4 4722 -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*)
Chris@4 4723 func_quote_for_eval "$arg"
Chris@4 4724 arg="$func_quote_for_eval_result"
Chris@4 4725 func_append compile_command " $arg"
Chris@4 4726 func_append finalize_command " $arg"
Chris@4 4727 compiler_flags="$compiler_flags $arg"
Chris@4 4728 continue
Chris@4 4729 ;;
Chris@4 4730
Chris@4 4731 # Some other compiler flag.
Chris@4 4732 -* | +*)
Chris@4 4733 func_quote_for_eval "$arg"
Chris@4 4734 arg="$func_quote_for_eval_result"
Chris@4 4735 ;;
Chris@4 4736
Chris@4 4737 *.$objext)
Chris@4 4738 # A standard object.
Chris@4 4739 objs="$objs $arg"
Chris@4 4740 ;;
Chris@4 4741
Chris@4 4742 *.lo)
Chris@4 4743 # A libtool-controlled object.
Chris@4 4744
Chris@4 4745 # Check to see that this really is a libtool object.
Chris@4 4746 if func_lalib_unsafe_p "$arg"; then
Chris@4 4747 pic_object=
Chris@4 4748 non_pic_object=
Chris@4 4749
Chris@4 4750 # Read the .lo file
Chris@4 4751 func_source "$arg"
Chris@4 4752
Chris@4 4753 if test -z "$pic_object" ||
Chris@4 4754 test -z "$non_pic_object" ||
Chris@4 4755 test "$pic_object" = none &&
Chris@4 4756 test "$non_pic_object" = none; then
Chris@4 4757 func_fatal_error "cannot find name of object for \`$arg'"
Chris@4 4758 fi
Chris@4 4759
Chris@4 4760 # Extract subdirectory from the argument.
Chris@4 4761 func_dirname "$arg" "/" ""
Chris@4 4762 xdir="$func_dirname_result"
Chris@4 4763
Chris@4 4764 if test "$pic_object" != none; then
Chris@4 4765 # Prepend the subdirectory the object is found in.
Chris@4 4766 pic_object="$xdir$pic_object"
Chris@4 4767
Chris@4 4768 if test "$prev" = dlfiles; then
Chris@4 4769 if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
Chris@4 4770 dlfiles="$dlfiles $pic_object"
Chris@4 4771 prev=
Chris@4 4772 continue
Chris@4 4773 else
Chris@4 4774 # If libtool objects are unsupported, then we need to preload.
Chris@4 4775 prev=dlprefiles
Chris@4 4776 fi
Chris@4 4777 fi
Chris@4 4778
Chris@4 4779 # CHECK ME: I think I busted this. -Ossama
Chris@4 4780 if test "$prev" = dlprefiles; then
Chris@4 4781 # Preload the old-style object.
Chris@4 4782 dlprefiles="$dlprefiles $pic_object"
Chris@4 4783 prev=
Chris@4 4784 fi
Chris@4 4785
Chris@4 4786 # A PIC object.
Chris@4 4787 func_append libobjs " $pic_object"
Chris@4 4788 arg="$pic_object"
Chris@4 4789 fi
Chris@4 4790
Chris@4 4791 # Non-PIC object.
Chris@4 4792 if test "$non_pic_object" != none; then
Chris@4 4793 # Prepend the subdirectory the object is found in.
Chris@4 4794 non_pic_object="$xdir$non_pic_object"
Chris@4 4795
Chris@4 4796 # A standard non-PIC object
Chris@4 4797 func_append non_pic_objects " $non_pic_object"
Chris@4 4798 if test -z "$pic_object" || test "$pic_object" = none ; then
Chris@4 4799 arg="$non_pic_object"
Chris@4 4800 fi
Chris@4 4801 else
Chris@4 4802 # If the PIC object exists, use it instead.
Chris@4 4803 # $xdir was prepended to $pic_object above.
Chris@4 4804 non_pic_object="$pic_object"
Chris@4 4805 func_append non_pic_objects " $non_pic_object"
Chris@4 4806 fi
Chris@4 4807 else
Chris@4 4808 # Only an error if not doing a dry-run.
Chris@4 4809 if $opt_dry_run; then
Chris@4 4810 # Extract subdirectory from the argument.
Chris@4 4811 func_dirname "$arg" "/" ""
Chris@4 4812 xdir="$func_dirname_result"
Chris@4 4813
Chris@4 4814 func_lo2o "$arg"
Chris@4 4815 pic_object=$xdir$objdir/$func_lo2o_result
Chris@4 4816 non_pic_object=$xdir$func_lo2o_result
Chris@4 4817 func_append libobjs " $pic_object"
Chris@4 4818 func_append non_pic_objects " $non_pic_object"
Chris@4 4819 else
Chris@4 4820 func_fatal_error "\`$arg' is not a valid libtool object"
Chris@4 4821 fi
Chris@4 4822 fi
Chris@4 4823 ;;
Chris@4 4824
Chris@4 4825 *.$libext)
Chris@4 4826 # An archive.
Chris@4 4827 deplibs="$deplibs $arg"
Chris@4 4828 old_deplibs="$old_deplibs $arg"
Chris@4 4829 continue
Chris@4 4830 ;;
Chris@4 4831
Chris@4 4832 *.la)
Chris@4 4833 # A libtool-controlled library.
Chris@4 4834
Chris@4 4835 if test "$prev" = dlfiles; then
Chris@4 4836 # This library was specified with -dlopen.
Chris@4 4837 dlfiles="$dlfiles $arg"
Chris@4 4838 prev=
Chris@4 4839 elif test "$prev" = dlprefiles; then
Chris@4 4840 # The library was specified with -dlpreopen.
Chris@4 4841 dlprefiles="$dlprefiles $arg"
Chris@4 4842 prev=
Chris@4 4843 else
Chris@4 4844 deplibs="$deplibs $arg"
Chris@4 4845 fi
Chris@4 4846 continue
Chris@4 4847 ;;
Chris@4 4848
Chris@4 4849 # Some other compiler argument.
Chris@4 4850 *)
Chris@4 4851 # Unknown arguments in both finalize_command and compile_command need
Chris@4 4852 # to be aesthetically quoted because they are evaled later.
Chris@4 4853 func_quote_for_eval "$arg"
Chris@4 4854 arg="$func_quote_for_eval_result"
Chris@4 4855 ;;
Chris@4 4856 esac # arg
Chris@4 4857
Chris@4 4858 # Now actually substitute the argument into the commands.
Chris@4 4859 if test -n "$arg"; then
Chris@4 4860 func_append compile_command " $arg"
Chris@4 4861 func_append finalize_command " $arg"
Chris@4 4862 fi
Chris@4 4863 done # argument parsing loop
Chris@4 4864
Chris@4 4865 test -n "$prev" && \
Chris@4 4866 func_fatal_help "the \`$prevarg' option requires an argument"
Chris@4 4867
Chris@4 4868 if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
Chris@4 4869 eval arg=\"$export_dynamic_flag_spec\"
Chris@4 4870 func_append compile_command " $arg"
Chris@4 4871 func_append finalize_command " $arg"
Chris@4 4872 fi
Chris@4 4873
Chris@4 4874 oldlibs=
Chris@4 4875 # calculate the name of the file, without its directory
Chris@4 4876 func_basename "$output"
Chris@4 4877 outputname="$func_basename_result"
Chris@4 4878 libobjs_save="$libobjs"
Chris@4 4879
Chris@4 4880 if test -n "$shlibpath_var"; then
Chris@4 4881 # get the directories listed in $shlibpath_var
Chris@4 4882 eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
Chris@4 4883 else
Chris@4 4884 shlib_search_path=
Chris@4 4885 fi
Chris@4 4886 eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
Chris@4 4887 eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
Chris@4 4888
Chris@4 4889 func_dirname "$output" "/" ""
Chris@4 4890 output_objdir="$func_dirname_result$objdir"
Chris@4 4891 # Create the object directory.
Chris@4 4892 func_mkdir_p "$output_objdir"
Chris@4 4893
Chris@4 4894 # Determine the type of output
Chris@4 4895 case $output in
Chris@4 4896 "")
Chris@4 4897 func_fatal_help "you must specify an output file"
Chris@4 4898 ;;
Chris@4 4899 *.$libext) linkmode=oldlib ;;
Chris@4 4900 *.lo | *.$objext) linkmode=obj ;;
Chris@4 4901 *.la) linkmode=lib ;;
Chris@4 4902 *) linkmode=prog ;; # Anything else should be a program.
Chris@4 4903 esac
Chris@4 4904
Chris@4 4905 specialdeplibs=
Chris@4 4906
Chris@4 4907 libs=
Chris@4 4908 # Find all interdependent deplibs by searching for libraries
Chris@4 4909 # that are linked more than once (e.g. -la -lb -la)
Chris@4 4910 for deplib in $deplibs; do
Chris@4 4911 if $opt_duplicate_deps ; then
Chris@4 4912 case "$libs " in
Chris@4 4913 *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
Chris@4 4914 esac
Chris@4 4915 fi
Chris@4 4916 libs="$libs $deplib"
Chris@4 4917 done
Chris@4 4918
Chris@4 4919 if test "$linkmode" = lib; then
Chris@4 4920 libs="$predeps $libs $compiler_lib_search_path $postdeps"
Chris@4 4921
Chris@4 4922 # Compute libraries that are listed more than once in $predeps
Chris@4 4923 # $postdeps and mark them as special (i.e., whose duplicates are
Chris@4 4924 # not to be eliminated).
Chris@4 4925 pre_post_deps=
Chris@4 4926 if $opt_duplicate_compiler_generated_deps; then
Chris@4 4927 for pre_post_dep in $predeps $postdeps; do
Chris@4 4928 case "$pre_post_deps " in
Chris@4 4929 *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
Chris@4 4930 esac
Chris@4 4931 pre_post_deps="$pre_post_deps $pre_post_dep"
Chris@4 4932 done
Chris@4 4933 fi
Chris@4 4934 pre_post_deps=
Chris@4 4935 fi
Chris@4 4936
Chris@4 4937 deplibs=
Chris@4 4938 newdependency_libs=
Chris@4 4939 newlib_search_path=
Chris@4 4940 need_relink=no # whether we're linking any uninstalled libtool libraries
Chris@4 4941 notinst_deplibs= # not-installed libtool libraries
Chris@4 4942 notinst_path= # paths that contain not-installed libtool libraries
Chris@4 4943
Chris@4 4944 case $linkmode in
Chris@4 4945 lib)
Chris@4 4946 passes="conv dlpreopen link"
Chris@4 4947 for file in $dlfiles $dlprefiles; do
Chris@4 4948 case $file in
Chris@4 4949 *.la) ;;
Chris@4 4950 *)
Chris@4 4951 func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
Chris@4 4952 ;;
Chris@4 4953 esac
Chris@4 4954 done
Chris@4 4955 ;;
Chris@4 4956 prog)
Chris@4 4957 compile_deplibs=
Chris@4 4958 finalize_deplibs=
Chris@4 4959 alldeplibs=no
Chris@4 4960 newdlfiles=
Chris@4 4961 newdlprefiles=
Chris@4 4962 passes="conv scan dlopen dlpreopen link"
Chris@4 4963 ;;
Chris@4 4964 *) passes="conv"
Chris@4 4965 ;;
Chris@4 4966 esac
Chris@4 4967
Chris@4 4968 for pass in $passes; do
Chris@4 4969 # The preopen pass in lib mode reverses $deplibs; put it back here
Chris@4 4970 # so that -L comes before libs that need it for instance...
Chris@4 4971 if test "$linkmode,$pass" = "lib,link"; then
Chris@4 4972 ## FIXME: Find the place where the list is rebuilt in the wrong
Chris@4 4973 ## order, and fix it there properly
Chris@4 4974 tmp_deplibs=
Chris@4 4975 for deplib in $deplibs; do
Chris@4 4976 tmp_deplibs="$deplib $tmp_deplibs"
Chris@4 4977 done
Chris@4 4978 deplibs="$tmp_deplibs"
Chris@4 4979 fi
Chris@4 4980
Chris@4 4981 if test "$linkmode,$pass" = "lib,link" ||
Chris@4 4982 test "$linkmode,$pass" = "prog,scan"; then
Chris@4 4983 libs="$deplibs"
Chris@4 4984 deplibs=
Chris@4 4985 fi
Chris@4 4986 if test "$linkmode" = prog; then
Chris@4 4987 case $pass in
Chris@4 4988 dlopen) libs="$dlfiles" ;;
Chris@4 4989 dlpreopen) libs="$dlprefiles" ;;
Chris@4 4990 link)
Chris@4 4991 libs="$deplibs %DEPLIBS%"
Chris@4 4992 test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs"
Chris@4 4993 ;;
Chris@4 4994 esac
Chris@4 4995 fi
Chris@4 4996 if test "$linkmode,$pass" = "lib,dlpreopen"; then
Chris@4 4997 # Collect and forward deplibs of preopened libtool libs
Chris@4 4998 for lib in $dlprefiles; do
Chris@4 4999 # Ignore non-libtool-libs
Chris@4 5000 dependency_libs=
Chris@4 5001 case $lib in
Chris@4 5002 *.la) func_source "$lib" ;;
Chris@4 5003 esac
Chris@4 5004
Chris@4 5005 # Collect preopened libtool deplibs, except any this library
Chris@4 5006 # has declared as weak libs
Chris@4 5007 for deplib in $dependency_libs; do
Chris@4 5008 deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"`
Chris@4 5009 case " $weak_libs " in
Chris@4 5010 *" $deplib_base "*) ;;
Chris@4 5011 *) deplibs="$deplibs $deplib" ;;
Chris@4 5012 esac
Chris@4 5013 done
Chris@4 5014 done
Chris@4 5015 libs="$dlprefiles"
Chris@4 5016 fi
Chris@4 5017 if test "$pass" = dlopen; then
Chris@4 5018 # Collect dlpreopened libraries
Chris@4 5019 save_deplibs="$deplibs"
Chris@4 5020 deplibs=
Chris@4 5021 fi
Chris@4 5022
Chris@4 5023 for deplib in $libs; do
Chris@4 5024 lib=
Chris@4 5025 found=no
Chris@4 5026 case $deplib in
Chris@4 5027 -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
Chris@4 5028 if test "$linkmode,$pass" = "prog,link"; then
Chris@4 5029 compile_deplibs="$deplib $compile_deplibs"
Chris@4 5030 finalize_deplibs="$deplib $finalize_deplibs"
Chris@4 5031 else
Chris@4 5032 compiler_flags="$compiler_flags $deplib"
Chris@4 5033 if test "$linkmode" = lib ; then
Chris@4 5034 case "$new_inherited_linker_flags " in
Chris@4 5035 *" $deplib "*) ;;
Chris@4 5036 * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
Chris@4 5037 esac
Chris@4 5038 fi
Chris@4 5039 fi
Chris@4 5040 continue
Chris@4 5041 ;;
Chris@4 5042 -l*)
Chris@4 5043 if test "$linkmode" != lib && test "$linkmode" != prog; then
Chris@4 5044 func_warning "\`-l' is ignored for archives/objects"
Chris@4 5045 continue
Chris@4 5046 fi
Chris@4 5047 func_stripname '-l' '' "$deplib"
Chris@4 5048 name=$func_stripname_result
Chris@4 5049 if test "$linkmode" = lib; then
Chris@4 5050 searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
Chris@4 5051 else
Chris@4 5052 searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
Chris@4 5053 fi
Chris@4 5054 for searchdir in $searchdirs; do
Chris@4 5055 for search_ext in .la $std_shrext .so .a; do
Chris@4 5056 # Search the libtool library
Chris@4 5057 lib="$searchdir/lib${name}${search_ext}"
Chris@4 5058 if test -f "$lib"; then
Chris@4 5059 if test "$search_ext" = ".la"; then
Chris@4 5060 found=yes
Chris@4 5061 else
Chris@4 5062 found=no
Chris@4 5063 fi
Chris@4 5064 break 2
Chris@4 5065 fi
Chris@4 5066 done
Chris@4 5067 done
Chris@4 5068 if test "$found" != yes; then
Chris@4 5069 # deplib doesn't seem to be a libtool library
Chris@4 5070 if test "$linkmode,$pass" = "prog,link"; then
Chris@4 5071 compile_deplibs="$deplib $compile_deplibs"
Chris@4 5072 finalize_deplibs="$deplib $finalize_deplibs"
Chris@4 5073 else
Chris@4 5074 deplibs="$deplib $deplibs"
Chris@4 5075 test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
Chris@4 5076 fi
Chris@4 5077 continue
Chris@4 5078 else # deplib is a libtool library
Chris@4 5079 # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
Chris@4 5080 # We need to do some special things here, and not later.
Chris@4 5081 if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
Chris@4 5082 case " $predeps $postdeps " in
Chris@4 5083 *" $deplib "*)
Chris@4 5084 if func_lalib_p "$lib"; then
Chris@4 5085 library_names=
Chris@4 5086 old_library=
Chris@4 5087 func_source "$lib"
Chris@4 5088 for l in $old_library $library_names; do
Chris@4 5089 ll="$l"
Chris@4 5090 done
Chris@4 5091 if test "X$ll" = "X$old_library" ; then # only static version available
Chris@4 5092 found=no
Chris@4 5093 func_dirname "$lib" "" "."
Chris@4 5094 ladir="$func_dirname_result"
Chris@4 5095 lib=$ladir/$old_library
Chris@4 5096 if test "$linkmode,$pass" = "prog,link"; then
Chris@4 5097 compile_deplibs="$deplib $compile_deplibs"
Chris@4 5098 finalize_deplibs="$deplib $finalize_deplibs"
Chris@4 5099 else
Chris@4 5100 deplibs="$deplib $deplibs"
Chris@4 5101 test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
Chris@4 5102 fi
Chris@4 5103 continue
Chris@4 5104 fi
Chris@4 5105 fi
Chris@4 5106 ;;
Chris@4 5107 *) ;;
Chris@4 5108 esac
Chris@4 5109 fi
Chris@4 5110 fi
Chris@4 5111 ;; # -l
Chris@4 5112 *.ltframework)
Chris@4 5113 if test "$linkmode,$pass" = "prog,link"; then
Chris@4 5114 compile_deplibs="$deplib $compile_deplibs"
Chris@4 5115 finalize_deplibs="$deplib $finalize_deplibs"
Chris@4 5116 else
Chris@4 5117 deplibs="$deplib $deplibs"
Chris@4 5118 if test "$linkmode" = lib ; then
Chris@4 5119 case "$new_inherited_linker_flags " in
Chris@4 5120 *" $deplib "*) ;;
Chris@4 5121 * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
Chris@4 5122 esac
Chris@4 5123 fi
Chris@4 5124 fi
Chris@4 5125 continue
Chris@4 5126 ;;
Chris@4 5127 -L*)
Chris@4 5128 case $linkmode in
Chris@4 5129 lib)
Chris@4 5130 deplibs="$deplib $deplibs"
Chris@4 5131 test "$pass" = conv && continue
Chris@4 5132 newdependency_libs="$deplib $newdependency_libs"
Chris@4 5133 func_stripname '-L' '' "$deplib"
Chris@4 5134 newlib_search_path="$newlib_search_path $func_stripname_result"
Chris@4 5135 ;;
Chris@4 5136 prog)
Chris@4 5137 if test "$pass" = conv; then
Chris@4 5138 deplibs="$deplib $deplibs"
Chris@4 5139 continue
Chris@4 5140 fi
Chris@4 5141 if test "$pass" = scan; then
Chris@4 5142 deplibs="$deplib $deplibs"
Chris@4 5143 else
Chris@4 5144 compile_deplibs="$deplib $compile_deplibs"
Chris@4 5145 finalize_deplibs="$deplib $finalize_deplibs"
Chris@4 5146 fi
Chris@4 5147 func_stripname '-L' '' "$deplib"
Chris@4 5148 newlib_search_path="$newlib_search_path $func_stripname_result"
Chris@4 5149 ;;
Chris@4 5150 *)
Chris@4 5151 func_warning "\`-L' is ignored for archives/objects"
Chris@4 5152 ;;
Chris@4 5153 esac # linkmode
Chris@4 5154 continue
Chris@4 5155 ;; # -L
Chris@4 5156 -R*)
Chris@4 5157 if test "$pass" = link; then
Chris@4 5158 func_stripname '-R' '' "$deplib"
Chris@4 5159 dir=$func_stripname_result
Chris@4 5160 # Make sure the xrpath contains only unique directories.
Chris@4 5161 case "$xrpath " in
Chris@4 5162 *" $dir "*) ;;
Chris@4 5163 *) xrpath="$xrpath $dir" ;;
Chris@4 5164 esac
Chris@4 5165 fi
Chris@4 5166 deplibs="$deplib $deplibs"
Chris@4 5167 continue
Chris@4 5168 ;;
Chris@4 5169 *.la) lib="$deplib" ;;
Chris@4 5170 *.$libext)
Chris@4 5171 if test "$pass" = conv; then
Chris@4 5172 deplibs="$deplib $deplibs"
Chris@4 5173 continue
Chris@4 5174 fi
Chris@4 5175 case $linkmode in
Chris@4 5176 lib)
Chris@4 5177 # Linking convenience modules into shared libraries is allowed,
Chris@4 5178 # but linking other static libraries is non-portable.
Chris@4 5179 case " $dlpreconveniencelibs " in
Chris@4 5180 *" $deplib "*) ;;
Chris@4 5181 *)
Chris@4 5182 valid_a_lib=no
Chris@4 5183 case $deplibs_check_method in
Chris@4 5184 match_pattern*)
Chris@4 5185 set dummy $deplibs_check_method; shift
Chris@4 5186 match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
Chris@4 5187 if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \
Chris@4 5188 | $EGREP "$match_pattern_regex" > /dev/null; then
Chris@4 5189 valid_a_lib=yes
Chris@4 5190 fi
Chris@4 5191 ;;
Chris@4 5192 pass_all)
Chris@4 5193 valid_a_lib=yes
Chris@4 5194 ;;
Chris@4 5195 esac
Chris@4 5196 if test "$valid_a_lib" != yes; then
Chris@4 5197 $ECHO
Chris@4 5198 $ECHO "*** Warning: Trying to link with static lib archive $deplib."
Chris@4 5199 $ECHO "*** I have the capability to make that library automatically link in when"
Chris@4 5200 $ECHO "*** you link to this library. But I can only do this if you have a"
Chris@4 5201 $ECHO "*** shared version of the library, which you do not appear to have"
Chris@4 5202 $ECHO "*** because the file extensions .$libext of this argument makes me believe"
Chris@4 5203 $ECHO "*** that it is just a static archive that I should not use here."
Chris@4 5204 else
Chris@4 5205 $ECHO
Chris@4 5206 $ECHO "*** Warning: Linking the shared library $output against the"
Chris@4 5207 $ECHO "*** static library $deplib is not portable!"
Chris@4 5208 deplibs="$deplib $deplibs"
Chris@4 5209 fi
Chris@4 5210 ;;
Chris@4 5211 esac
Chris@4 5212 continue
Chris@4 5213 ;;
Chris@4 5214 prog)
Chris@4 5215 if test "$pass" != link; then
Chris@4 5216 deplibs="$deplib $deplibs"
Chris@4 5217 else
Chris@4 5218 compile_deplibs="$deplib $compile_deplibs"
Chris@4 5219 finalize_deplibs="$deplib $finalize_deplibs"
Chris@4 5220 fi
Chris@4 5221 continue
Chris@4 5222 ;;
Chris@4 5223 esac # linkmode
Chris@4 5224 ;; # *.$libext
Chris@4 5225 *.lo | *.$objext)
Chris@4 5226 if test "$pass" = conv; then
Chris@4 5227 deplibs="$deplib $deplibs"
Chris@4 5228 elif test "$linkmode" = prog; then
Chris@4 5229 if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
Chris@4 5230 # If there is no dlopen support or we're linking statically,
Chris@4 5231 # we need to preload.
Chris@4 5232 newdlprefiles="$newdlprefiles $deplib"
Chris@4 5233 compile_deplibs="$deplib $compile_deplibs"
Chris@4 5234 finalize_deplibs="$deplib $finalize_deplibs"
Chris@4 5235 else
Chris@4 5236 newdlfiles="$newdlfiles $deplib"
Chris@4 5237 fi
Chris@4 5238 fi
Chris@4 5239 continue
Chris@4 5240 ;;
Chris@4 5241 %DEPLIBS%)
Chris@4 5242 alldeplibs=yes
Chris@4 5243 continue
Chris@4 5244 ;;
Chris@4 5245 esac # case $deplib
Chris@4 5246
Chris@4 5247 if test "$found" = yes || test -f "$lib"; then :
Chris@4 5248 else
Chris@4 5249 func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
Chris@4 5250 fi
Chris@4 5251
Chris@4 5252 # Check to see that this really is a libtool archive.
Chris@4 5253 func_lalib_unsafe_p "$lib" \
Chris@4 5254 || func_fatal_error "\`$lib' is not a valid libtool archive"
Chris@4 5255
Chris@4 5256 func_dirname "$lib" "" "."
Chris@4 5257 ladir="$func_dirname_result"
Chris@4 5258
Chris@4 5259 dlname=
Chris@4 5260 dlopen=
Chris@4 5261 dlpreopen=
Chris@4 5262 libdir=
Chris@4 5263 library_names=
Chris@4 5264 old_library=
Chris@4 5265 inherited_linker_flags=
Chris@4 5266 # If the library was installed with an old release of libtool,
Chris@4 5267 # it will not redefine variables installed, or shouldnotlink
Chris@4 5268 installed=yes
Chris@4 5269 shouldnotlink=no
Chris@4 5270 avoidtemprpath=
Chris@4 5271
Chris@4 5272
Chris@4 5273 # Read the .la file
Chris@4 5274 func_source "$lib"
Chris@4 5275
Chris@4 5276 # Convert "-framework foo" to "foo.ltframework"
Chris@4 5277 if test -n "$inherited_linker_flags"; then
Chris@4 5278 tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'`
Chris@4 5279 for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
Chris@4 5280 case " $new_inherited_linker_flags " in
Chris@4 5281 *" $tmp_inherited_linker_flag "*) ;;
Chris@4 5282 *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";;
Chris@4 5283 esac
Chris@4 5284 done
Chris@4 5285 fi
Chris@4 5286 dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
Chris@4 5287 if test "$linkmode,$pass" = "lib,link" ||
Chris@4 5288 test "$linkmode,$pass" = "prog,scan" ||
Chris@4 5289 { test "$linkmode" != prog && test "$linkmode" != lib; }; then
Chris@4 5290 test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
Chris@4 5291 test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
Chris@4 5292 fi
Chris@4 5293
Chris@4 5294 if test "$pass" = conv; then
Chris@4 5295 # Only check for convenience libraries
Chris@4 5296 deplibs="$lib $deplibs"
Chris@4 5297 if test -z "$libdir"; then
Chris@4 5298 if test -z "$old_library"; then
Chris@4 5299 func_fatal_error "cannot find name of link library for \`$lib'"
Chris@4 5300 fi
Chris@4 5301 # It is a libtool convenience library, so add in its objects.
Chris@4 5302 convenience="$convenience $ladir/$objdir/$old_library"
Chris@4 5303 old_convenience="$old_convenience $ladir/$objdir/$old_library"
Chris@4 5304 elif test "$linkmode" != prog && test "$linkmode" != lib; then
Chris@4 5305 func_fatal_error "\`$lib' is not a convenience library"
Chris@4 5306 fi
Chris@4 5307 tmp_libs=
Chris@4 5308 for deplib in $dependency_libs; do
Chris@4 5309 deplibs="$deplib $deplibs"
Chris@4 5310 if $opt_duplicate_deps ; then
Chris@4 5311 case "$tmp_libs " in
Chris@4 5312 *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
Chris@4 5313 esac
Chris@4 5314 fi
Chris@4 5315 tmp_libs="$tmp_libs $deplib"
Chris@4 5316 done
Chris@4 5317 continue
Chris@4 5318 fi # $pass = conv
Chris@4 5319
Chris@4 5320
Chris@4 5321 # Get the name of the library we link against.
Chris@4 5322 linklib=
Chris@4 5323 for l in $old_library $library_names; do
Chris@4 5324 linklib="$l"
Chris@4 5325 done
Chris@4 5326 if test -z "$linklib"; then
Chris@4 5327 func_fatal_error "cannot find name of link library for \`$lib'"
Chris@4 5328 fi
Chris@4 5329
Chris@4 5330 # This library was specified with -dlopen.
Chris@4 5331 if test "$pass" = dlopen; then
Chris@4 5332 if test -z "$libdir"; then
Chris@4 5333 func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
Chris@4 5334 fi
Chris@4 5335 if test -z "$dlname" ||
Chris@4 5336 test "$dlopen_support" != yes ||
Chris@4 5337 test "$build_libtool_libs" = no; then
Chris@4 5338 # If there is no dlname, no dlopen support or we're linking
Chris@4 5339 # statically, we need to preload. We also need to preload any
Chris@4 5340 # dependent libraries so libltdl's deplib preloader doesn't
Chris@4 5341 # bomb out in the load deplibs phase.
Chris@4 5342 dlprefiles="$dlprefiles $lib $dependency_libs"
Chris@4 5343 else
Chris@4 5344 newdlfiles="$newdlfiles $lib"
Chris@4 5345 fi
Chris@4 5346 continue
Chris@4 5347 fi # $pass = dlopen
Chris@4 5348
Chris@4 5349 # We need an absolute path.
Chris@4 5350 case $ladir in
Chris@4 5351 [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
Chris@4 5352 *)
Chris@4 5353 abs_ladir=`cd "$ladir" && pwd`
Chris@4 5354 if test -z "$abs_ladir"; then
Chris@4 5355 func_warning "cannot determine absolute directory name of \`$ladir'"
Chris@4 5356 func_warning "passing it literally to the linker, although it might fail"
Chris@4 5357 abs_ladir="$ladir"
Chris@4 5358 fi
Chris@4 5359 ;;
Chris@4 5360 esac
Chris@4 5361 func_basename "$lib"
Chris@4 5362 laname="$func_basename_result"
Chris@4 5363
Chris@4 5364 # Find the relevant object directory and library name.
Chris@4 5365 if test "X$installed" = Xyes; then
Chris@4 5366 if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
Chris@4 5367 func_warning "library \`$lib' was moved."
Chris@4 5368 dir="$ladir"
Chris@4 5369 absdir="$abs_ladir"
Chris@4 5370 libdir="$abs_ladir"
Chris@4 5371 else
Chris@4 5372 dir="$libdir"
Chris@4 5373 absdir="$libdir"
Chris@4 5374 fi
Chris@4 5375 test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
Chris@4 5376 else
Chris@4 5377 if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
Chris@4 5378 dir="$ladir"
Chris@4 5379 absdir="$abs_ladir"
Chris@4 5380 # Remove this search path later
Chris@4 5381 notinst_path="$notinst_path $abs_ladir"
Chris@4 5382 else
Chris@4 5383 dir="$ladir/$objdir"
Chris@4 5384 absdir="$abs_ladir/$objdir"
Chris@4 5385 # Remove this search path later
Chris@4 5386 notinst_path="$notinst_path $abs_ladir"
Chris@4 5387 fi
Chris@4 5388 fi # $installed = yes
Chris@4 5389 func_stripname 'lib' '.la' "$laname"
Chris@4 5390 name=$func_stripname_result
Chris@4 5391
Chris@4 5392 # This library was specified with -dlpreopen.
Chris@4 5393 if test "$pass" = dlpreopen; then
Chris@4 5394 if test -z "$libdir" && test "$linkmode" = prog; then
Chris@4 5395 func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
Chris@4 5396 fi
Chris@4 5397 # Prefer using a static library (so that no silly _DYNAMIC symbols
Chris@4 5398 # are required to link).
Chris@4 5399 if test -n "$old_library"; then
Chris@4 5400 newdlprefiles="$newdlprefiles $dir/$old_library"
Chris@4 5401 # Keep a list of preopened convenience libraries to check
Chris@4 5402 # that they are being used correctly in the link pass.
Chris@4 5403 test -z "$libdir" && \
Chris@4 5404 dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library"
Chris@4 5405 # Otherwise, use the dlname, so that lt_dlopen finds it.
Chris@4 5406 elif test -n "$dlname"; then
Chris@4 5407 newdlprefiles="$newdlprefiles $dir/$dlname"
Chris@4 5408 else
Chris@4 5409 newdlprefiles="$newdlprefiles $dir/$linklib"
Chris@4 5410 fi
Chris@4 5411 fi # $pass = dlpreopen
Chris@4 5412
Chris@4 5413 if test -z "$libdir"; then
Chris@4 5414 # Link the convenience library
Chris@4 5415 if test "$linkmode" = lib; then
Chris@4 5416 deplibs="$dir/$old_library $deplibs"
Chris@4 5417 elif test "$linkmode,$pass" = "prog,link"; then
Chris@4 5418 compile_deplibs="$dir/$old_library $compile_deplibs"
Chris@4 5419 finalize_deplibs="$dir/$old_library $finalize_deplibs"
Chris@4 5420 else
Chris@4 5421 deplibs="$lib $deplibs" # used for prog,scan pass
Chris@4 5422 fi
Chris@4 5423 continue
Chris@4 5424 fi
Chris@4 5425
Chris@4 5426
Chris@4 5427 if test "$linkmode" = prog && test "$pass" != link; then
Chris@4 5428 newlib_search_path="$newlib_search_path $ladir"
Chris@4 5429 deplibs="$lib $deplibs"
Chris@4 5430
Chris@4 5431 linkalldeplibs=no
Chris@4 5432 if test "$link_all_deplibs" != no || test -z "$library_names" ||
Chris@4 5433 test "$build_libtool_libs" = no; then
Chris@4 5434 linkalldeplibs=yes
Chris@4 5435 fi
Chris@4 5436
Chris@4 5437 tmp_libs=
Chris@4 5438 for deplib in $dependency_libs; do
Chris@4 5439 case $deplib in
Chris@4 5440 -L*) func_stripname '-L' '' "$deplib"
Chris@4 5441 newlib_search_path="$newlib_search_path $func_stripname_result"
Chris@4 5442 ;;
Chris@4 5443 esac
Chris@4 5444 # Need to link against all dependency_libs?
Chris@4 5445 if test "$linkalldeplibs" = yes; then
Chris@4 5446 deplibs="$deplib $deplibs"
Chris@4 5447 else
Chris@4 5448 # Need to hardcode shared library paths
Chris@4 5449 # or/and link against static libraries
Chris@4 5450 newdependency_libs="$deplib $newdependency_libs"
Chris@4 5451 fi
Chris@4 5452 if $opt_duplicate_deps ; then
Chris@4 5453 case "$tmp_libs " in
Chris@4 5454 *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
Chris@4 5455 esac
Chris@4 5456 fi
Chris@4 5457 tmp_libs="$tmp_libs $deplib"
Chris@4 5458 done # for deplib
Chris@4 5459 continue
Chris@4 5460 fi # $linkmode = prog...
Chris@4 5461
Chris@4 5462 if test "$linkmode,$pass" = "prog,link"; then
Chris@4 5463 if test -n "$library_names" &&
Chris@4 5464 { { test "$prefer_static_libs" = no ||
Chris@4 5465 test "$prefer_static_libs,$installed" = "built,yes"; } ||
Chris@4 5466 test -z "$old_library"; }; then
Chris@4 5467 # We need to hardcode the library path
Chris@4 5468 if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
Chris@4 5469 # Make sure the rpath contains only unique directories.
Chris@4 5470 case "$temp_rpath:" in
Chris@4 5471 *"$absdir:"*) ;;
Chris@4 5472 *) temp_rpath="$temp_rpath$absdir:" ;;
Chris@4 5473 esac
Chris@4 5474 fi
Chris@4 5475
Chris@4 5476 # Hardcode the library path.
Chris@4 5477 # Skip directories that are in the system default run-time
Chris@4 5478 # search path.
Chris@4 5479 case " $sys_lib_dlsearch_path " in
Chris@4 5480 *" $absdir "*) ;;
Chris@4 5481 *)
Chris@4 5482 case "$compile_rpath " in
Chris@4 5483 *" $absdir "*) ;;
Chris@4 5484 *) compile_rpath="$compile_rpath $absdir"
Chris@4 5485 esac
Chris@4 5486 ;;
Chris@4 5487 esac
Chris@4 5488 case " $sys_lib_dlsearch_path " in
Chris@4 5489 *" $libdir "*) ;;
Chris@4 5490 *)
Chris@4 5491 case "$finalize_rpath " in
Chris@4 5492 *" $libdir "*) ;;
Chris@4 5493 *) finalize_rpath="$finalize_rpath $libdir"
Chris@4 5494 esac
Chris@4 5495 ;;
Chris@4 5496 esac
Chris@4 5497 fi # $linkmode,$pass = prog,link...
Chris@4 5498
Chris@4 5499 if test "$alldeplibs" = yes &&
Chris@4 5500 { test "$deplibs_check_method" = pass_all ||
Chris@4 5501 { test "$build_libtool_libs" = yes &&
Chris@4 5502 test -n "$library_names"; }; }; then
Chris@4 5503 # We only need to search for static libraries
Chris@4 5504 continue
Chris@4 5505 fi
Chris@4 5506 fi
Chris@4 5507
Chris@4 5508 link_static=no # Whether the deplib will be linked statically
Chris@4 5509 use_static_libs=$prefer_static_libs
Chris@4 5510 if test "$use_static_libs" = built && test "$installed" = yes; then
Chris@4 5511 use_static_libs=no
Chris@4 5512 fi
Chris@4 5513 if test -n "$library_names" &&
Chris@4 5514 { test "$use_static_libs" = no || test -z "$old_library"; }; then
Chris@4 5515 case $host in
Chris@4 5516 *cygwin* | *mingw*)
Chris@4 5517 # No point in relinking DLLs because paths are not encoded
Chris@4 5518 notinst_deplibs="$notinst_deplibs $lib"
Chris@4 5519 need_relink=no
Chris@4 5520 ;;
Chris@4 5521 *)
Chris@4 5522 if test "$installed" = no; then
Chris@4 5523 notinst_deplibs="$notinst_deplibs $lib"
Chris@4 5524 need_relink=yes
Chris@4 5525 fi
Chris@4 5526 ;;
Chris@4 5527 esac
Chris@4 5528 # This is a shared library
Chris@4 5529
Chris@4 5530 # Warn about portability, can't link against -module's on some
Chris@4 5531 # systems (darwin). Don't bleat about dlopened modules though!
Chris@4 5532 dlopenmodule=""
Chris@4 5533 for dlpremoduletest in $dlprefiles; do
Chris@4 5534 if test "X$dlpremoduletest" = "X$lib"; then
Chris@4 5535 dlopenmodule="$dlpremoduletest"
Chris@4 5536 break
Chris@4 5537 fi
Chris@4 5538 done
Chris@4 5539 if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
Chris@4 5540 $ECHO
Chris@4 5541 if test "$linkmode" = prog; then
Chris@4 5542 $ECHO "*** Warning: Linking the executable $output against the loadable module"
Chris@4 5543 else
Chris@4 5544 $ECHO "*** Warning: Linking the shared library $output against the loadable module"
Chris@4 5545 fi
Chris@4 5546 $ECHO "*** $linklib is not portable!"
Chris@4 5547 fi
Chris@4 5548 if test "$linkmode" = lib &&
Chris@4 5549 test "$hardcode_into_libs" = yes; then
Chris@4 5550 # Hardcode the library path.
Chris@4 5551 # Skip directories that are in the system default run-time
Chris@4 5552 # search path.
Chris@4 5553 case " $sys_lib_dlsearch_path " in
Chris@4 5554 *" $absdir "*) ;;
Chris@4 5555 *)
Chris@4 5556 case "$compile_rpath " in
Chris@4 5557 *" $absdir "*) ;;
Chris@4 5558 *) compile_rpath="$compile_rpath $absdir"
Chris@4 5559 esac
Chris@4 5560 ;;
Chris@4 5561 esac
Chris@4 5562 case " $sys_lib_dlsearch_path " in
Chris@4 5563 *" $libdir "*) ;;
Chris@4 5564 *)
Chris@4 5565 case "$finalize_rpath " in
Chris@4 5566 *" $libdir "*) ;;
Chris@4 5567 *) finalize_rpath="$finalize_rpath $libdir"
Chris@4 5568 esac
Chris@4 5569 ;;
Chris@4 5570 esac
Chris@4 5571 fi
Chris@4 5572
Chris@4 5573 if test -n "$old_archive_from_expsyms_cmds"; then
Chris@4 5574 # figure out the soname
Chris@4 5575 set dummy $library_names
Chris@4 5576 shift
Chris@4 5577 realname="$1"
Chris@4 5578 shift
Chris@4 5579 libname=`eval "\\$ECHO \"$libname_spec\""`
Chris@4 5580 # use dlname if we got it. it's perfectly good, no?
Chris@4 5581 if test -n "$dlname"; then
Chris@4 5582 soname="$dlname"
Chris@4 5583 elif test -n "$soname_spec"; then
Chris@4 5584 # bleh windows
Chris@4 5585 case $host in
Chris@4 5586 *cygwin* | mingw*)
Chris@4 5587 func_arith $current - $age
Chris@4 5588 major=$func_arith_result
Chris@4 5589 versuffix="-$major"
Chris@4 5590 ;;
Chris@4 5591 esac
Chris@4 5592 eval soname=\"$soname_spec\"
Chris@4 5593 else
Chris@4 5594 soname="$realname"
Chris@4 5595 fi
Chris@4 5596
Chris@4 5597 # Make a new name for the extract_expsyms_cmds to use
Chris@4 5598 soroot="$soname"
Chris@4 5599 func_basename "$soroot"
Chris@4 5600 soname="$func_basename_result"
Chris@4 5601 func_stripname 'lib' '.dll' "$soname"
Chris@4 5602 newlib=libimp-$func_stripname_result.a
Chris@4 5603
Chris@4 5604 # If the library has no export list, then create one now
Chris@4 5605 if test -f "$output_objdir/$soname-def"; then :
Chris@4 5606 else
Chris@4 5607 func_verbose "extracting exported symbol list from \`$soname'"
Chris@4 5608 func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
Chris@4 5609 fi
Chris@4 5610
Chris@4 5611 # Create $newlib
Chris@4 5612 if test -f "$output_objdir/$newlib"; then :; else
Chris@4 5613 func_verbose "generating import library for \`$soname'"
Chris@4 5614 func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
Chris@4 5615 fi
Chris@4 5616 # make sure the library variables are pointing to the new library
Chris@4 5617 dir=$output_objdir
Chris@4 5618 linklib=$newlib
Chris@4 5619 fi # test -n "$old_archive_from_expsyms_cmds"
Chris@4 5620
Chris@4 5621 if test "$linkmode" = prog || test "$mode" != relink; then
Chris@4 5622 add_shlibpath=
Chris@4 5623 add_dir=
Chris@4 5624 add=
Chris@4 5625 lib_linked=yes
Chris@4 5626 case $hardcode_action in
Chris@4 5627 immediate | unsupported)
Chris@4 5628 if test "$hardcode_direct" = no; then
Chris@4 5629 add="$dir/$linklib"
Chris@4 5630 case $host in
Chris@4 5631 *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
Chris@4 5632 *-*-sysv4*uw2*) add_dir="-L$dir" ;;
Chris@4 5633 *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
Chris@4 5634 *-*-unixware7*) add_dir="-L$dir" ;;
Chris@4 5635 *-*-darwin* )
Chris@4 5636 # if the lib is a (non-dlopened) module then we can not
Chris@4 5637 # link against it, someone is ignoring the earlier warnings
Chris@4 5638 if /usr/bin/file -L $add 2> /dev/null |
Chris@4 5639 $GREP ": [^:]* bundle" >/dev/null ; then
Chris@4 5640 if test "X$dlopenmodule" != "X$lib"; then
Chris@4 5641 $ECHO "*** Warning: lib $linklib is a module, not a shared library"
Chris@4 5642 if test -z "$old_library" ; then
Chris@4 5643 $ECHO
Chris@4 5644 $ECHO "*** And there doesn't seem to be a static archive available"
Chris@4 5645 $ECHO "*** The link will probably fail, sorry"
Chris@4 5646 else
Chris@4 5647 add="$dir/$old_library"
Chris@4 5648 fi
Chris@4 5649 elif test -n "$old_library"; then
Chris@4 5650 add="$dir/$old_library"
Chris@4 5651 fi
Chris@4 5652 fi
Chris@4 5653 esac
Chris@4 5654 elif test "$hardcode_minus_L" = no; then
Chris@4 5655 case $host in
Chris@4 5656 *-*-sunos*) add_shlibpath="$dir" ;;
Chris@4 5657 esac
Chris@4 5658 add_dir="-L$dir"
Chris@4 5659 add="-l$name"
Chris@4 5660 elif test "$hardcode_shlibpath_var" = no; then
Chris@4 5661 add_shlibpath="$dir"
Chris@4 5662 add="-l$name"
Chris@4 5663 else
Chris@4 5664 lib_linked=no
Chris@4 5665 fi
Chris@4 5666 ;;
Chris@4 5667 relink)
Chris@4 5668 if test "$hardcode_direct" = yes &&
Chris@4 5669 test "$hardcode_direct_absolute" = no; then
Chris@4 5670 add="$dir/$linklib"
Chris@4 5671 elif test "$hardcode_minus_L" = yes; then
Chris@4 5672 add_dir="-L$dir"
Chris@4 5673 # Try looking first in the location we're being installed to.
Chris@4 5674 if test -n "$inst_prefix_dir"; then
Chris@4 5675 case $libdir in
Chris@4 5676 [\\/]*)
Chris@4 5677 add_dir="$add_dir -L$inst_prefix_dir$libdir"
Chris@4 5678 ;;
Chris@4 5679 esac
Chris@4 5680 fi
Chris@4 5681 add="-l$name"
Chris@4 5682 elif test "$hardcode_shlibpath_var" = yes; then
Chris@4 5683 add_shlibpath="$dir"
Chris@4 5684 add="-l$name"
Chris@4 5685 else
Chris@4 5686 lib_linked=no
Chris@4 5687 fi
Chris@4 5688 ;;
Chris@4 5689 *) lib_linked=no ;;
Chris@4 5690 esac
Chris@4 5691
Chris@4 5692 if test "$lib_linked" != yes; then
Chris@4 5693 func_fatal_configuration "unsupported hardcode properties"
Chris@4 5694 fi
Chris@4 5695
Chris@4 5696 if test -n "$add_shlibpath"; then
Chris@4 5697 case :$compile_shlibpath: in
Chris@4 5698 *":$add_shlibpath:"*) ;;
Chris@4 5699 *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
Chris@4 5700 esac
Chris@4 5701 fi
Chris@4 5702 if test "$linkmode" = prog; then
Chris@4 5703 test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
Chris@4 5704 test -n "$add" && compile_deplibs="$add $compile_deplibs"
Chris@4 5705 else
Chris@4 5706 test -n "$add_dir" && deplibs="$add_dir $deplibs"
Chris@4 5707 test -n "$add" && deplibs="$add $deplibs"
Chris@4 5708 if test "$hardcode_direct" != yes &&
Chris@4 5709 test "$hardcode_minus_L" != yes &&
Chris@4 5710 test "$hardcode_shlibpath_var" = yes; then
Chris@4 5711 case :$finalize_shlibpath: in
Chris@4 5712 *":$libdir:"*) ;;
Chris@4 5713 *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
Chris@4 5714 esac
Chris@4 5715 fi
Chris@4 5716 fi
Chris@4 5717 fi
Chris@4 5718
Chris@4 5719 if test "$linkmode" = prog || test "$mode" = relink; then
Chris@4 5720 add_shlibpath=
Chris@4 5721 add_dir=
Chris@4 5722 add=
Chris@4 5723 # Finalize command for both is simple: just hardcode it.
Chris@4 5724 if test "$hardcode_direct" = yes &&
Chris@4 5725 test "$hardcode_direct_absolute" = no; then
Chris@4 5726 add="$libdir/$linklib"
Chris@4 5727 elif test "$hardcode_minus_L" = yes; then
Chris@4 5728 add_dir="-L$libdir"
Chris@4 5729 add="-l$name"
Chris@4 5730 elif test "$hardcode_shlibpath_var" = yes; then
Chris@4 5731 case :$finalize_shlibpath: in
Chris@4 5732 *":$libdir:"*) ;;
Chris@4 5733 *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
Chris@4 5734 esac
Chris@4 5735 add="-l$name"
Chris@4 5736 elif test "$hardcode_automatic" = yes; then
Chris@4 5737 if test -n "$inst_prefix_dir" &&
Chris@4 5738 test -f "$inst_prefix_dir$libdir/$linklib" ; then
Chris@4 5739 add="$inst_prefix_dir$libdir/$linklib"
Chris@4 5740 else
Chris@4 5741 add="$libdir/$linklib"
Chris@4 5742 fi
Chris@4 5743 else
Chris@4 5744 # We cannot seem to hardcode it, guess we'll fake it.
Chris@4 5745 add_dir="-L$libdir"
Chris@4 5746 # Try looking first in the location we're being installed to.
Chris@4 5747 if test -n "$inst_prefix_dir"; then
Chris@4 5748 case $libdir in
Chris@4 5749 [\\/]*)
Chris@4 5750 add_dir="$add_dir -L$inst_prefix_dir$libdir"
Chris@4 5751 ;;
Chris@4 5752 esac
Chris@4 5753 fi
Chris@4 5754 add="-l$name"
Chris@4 5755 fi
Chris@4 5756
Chris@4 5757 if test "$linkmode" = prog; then
Chris@4 5758 test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
Chris@4 5759 test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
Chris@4 5760 else
Chris@4 5761 test -n "$add_dir" && deplibs="$add_dir $deplibs"
Chris@4 5762 test -n "$add" && deplibs="$add $deplibs"
Chris@4 5763 fi
Chris@4 5764 fi
Chris@4 5765 elif test "$linkmode" = prog; then
Chris@4 5766 # Here we assume that one of hardcode_direct or hardcode_minus_L
Chris@4 5767 # is not unsupported. This is valid on all known static and
Chris@4 5768 # shared platforms.
Chris@4 5769 if test "$hardcode_direct" != unsupported; then
Chris@4 5770 test -n "$old_library" && linklib="$old_library"
Chris@4 5771 compile_deplibs="$dir/$linklib $compile_deplibs"
Chris@4 5772 finalize_deplibs="$dir/$linklib $finalize_deplibs"
Chris@4 5773 else
Chris@4 5774 compile_deplibs="-l$name -L$dir $compile_deplibs"
Chris@4 5775 finalize_deplibs="-l$name -L$dir $finalize_deplibs"
Chris@4 5776 fi
Chris@4 5777 elif test "$build_libtool_libs" = yes; then
Chris@4 5778 # Not a shared library
Chris@4 5779 if test "$deplibs_check_method" != pass_all; then
Chris@4 5780 # We're trying link a shared library against a static one
Chris@4 5781 # but the system doesn't support it.
Chris@4 5782
Chris@4 5783 # Just print a warning and add the library to dependency_libs so
Chris@4 5784 # that the program can be linked against the static library.
Chris@4 5785 $ECHO
Chris@4 5786 $ECHO "*** Warning: This system can not link to static lib archive $lib."
Chris@4 5787 $ECHO "*** I have the capability to make that library automatically link in when"
Chris@4 5788 $ECHO "*** you link to this library. But I can only do this if you have a"
Chris@4 5789 $ECHO "*** shared version of the library, which you do not appear to have."
Chris@4 5790 if test "$module" = yes; then
Chris@4 5791 $ECHO "*** But as you try to build a module library, libtool will still create "
Chris@4 5792 $ECHO "*** a static module, that should work as long as the dlopening application"
Chris@4 5793 $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime."
Chris@4 5794 if test -z "$global_symbol_pipe"; then
Chris@4 5795 $ECHO
Chris@4 5796 $ECHO "*** However, this would only work if libtool was able to extract symbol"
Chris@4 5797 $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
Chris@4 5798 $ECHO "*** not find such a program. So, this module is probably useless."
Chris@4 5799 $ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
Chris@4 5800 fi
Chris@4 5801 if test "$build_old_libs" = no; then
Chris@4 5802 build_libtool_libs=module
Chris@4 5803 build_old_libs=yes
Chris@4 5804 else
Chris@4 5805 build_libtool_libs=no
Chris@4 5806 fi
Chris@4 5807 fi
Chris@4 5808 else
Chris@4 5809 deplibs="$dir/$old_library $deplibs"
Chris@4 5810 link_static=yes
Chris@4 5811 fi
Chris@4 5812 fi # link shared/static library?
Chris@4 5813
Chris@4 5814 if test "$linkmode" = lib; then
Chris@4 5815 if test -n "$dependency_libs" &&
Chris@4 5816 { test "$hardcode_into_libs" != yes ||
Chris@4 5817 test "$build_old_libs" = yes ||
Chris@4 5818 test "$link_static" = yes; }; then
Chris@4 5819 # Extract -R from dependency_libs
Chris@4 5820 temp_deplibs=
Chris@4 5821 for libdir in $dependency_libs; do
Chris@4 5822 case $libdir in
Chris@4 5823 -R*) func_stripname '-R' '' "$libdir"
Chris@4 5824 temp_xrpath=$func_stripname_result
Chris@4 5825 case " $xrpath " in
Chris@4 5826 *" $temp_xrpath "*) ;;
Chris@4 5827 *) xrpath="$xrpath $temp_xrpath";;
Chris@4 5828 esac;;
Chris@4 5829 *) temp_deplibs="$temp_deplibs $libdir";;
Chris@4 5830 esac
Chris@4 5831 done
Chris@4 5832 dependency_libs="$temp_deplibs"
Chris@4 5833 fi
Chris@4 5834
Chris@4 5835 newlib_search_path="$newlib_search_path $absdir"
Chris@4 5836 # Link against this library
Chris@4 5837 test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
Chris@4 5838 # ... and its dependency_libs
Chris@4 5839 tmp_libs=
Chris@4 5840 for deplib in $dependency_libs; do
Chris@4 5841 newdependency_libs="$deplib $newdependency_libs"
Chris@4 5842 if $opt_duplicate_deps ; then
Chris@4 5843 case "$tmp_libs " in
Chris@4 5844 *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
Chris@4 5845 esac
Chris@4 5846 fi
Chris@4 5847 tmp_libs="$tmp_libs $deplib"
Chris@4 5848 done
Chris@4 5849
Chris@4 5850 if test "$link_all_deplibs" != no; then
Chris@4 5851 # Add the search paths of all dependency libraries
Chris@4 5852 for deplib in $dependency_libs; do
Chris@4 5853 case $deplib in
Chris@4 5854 -L*) path="$deplib" ;;
Chris@4 5855 *.la)
Chris@4 5856 func_dirname "$deplib" "" "."
Chris@4 5857 dir="$func_dirname_result"
Chris@4 5858 # We need an absolute path.
Chris@4 5859 case $dir in
Chris@4 5860 [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
Chris@4 5861 *)
Chris@4 5862 absdir=`cd "$dir" && pwd`
Chris@4 5863 if test -z "$absdir"; then
Chris@4 5864 func_warning "cannot determine absolute directory name of \`$dir'"
Chris@4 5865 absdir="$dir"
Chris@4 5866 fi
Chris@4 5867 ;;
Chris@4 5868 esac
Chris@4 5869 if $GREP "^installed=no" $deplib > /dev/null; then
Chris@4 5870 case $host in
Chris@4 5871 *-*-darwin*)
Chris@4 5872 depdepl=
Chris@4 5873 eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
Chris@4 5874 if test -n "$deplibrary_names" ; then
Chris@4 5875 for tmp in $deplibrary_names ; do
Chris@4 5876 depdepl=$tmp
Chris@4 5877 done
Chris@4 5878 if test -f "$absdir/$objdir/$depdepl" ; then
Chris@4 5879 depdepl="$absdir/$objdir/$depdepl"
Chris@4 5880 darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
Chris@4 5881 if test -z "$darwin_install_name"; then
Chris@4 5882 darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
Chris@4 5883 fi
Chris@4 5884 compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
Chris@4 5885 linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}"
Chris@4 5886 path=
Chris@4 5887 fi
Chris@4 5888 fi
Chris@4 5889 ;;
Chris@4 5890 *)
Chris@4 5891 path="-L$absdir/$objdir"
Chris@4 5892 ;;
Chris@4 5893 esac
Chris@4 5894 else
Chris@4 5895 eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
Chris@4 5896 test -z "$libdir" && \
Chris@4 5897 func_fatal_error "\`$deplib' is not a valid libtool archive"
Chris@4 5898 test "$absdir" != "$libdir" && \
Chris@4 5899 func_warning "\`$deplib' seems to be moved"
Chris@4 5900
Chris@4 5901 path="-L$absdir"
Chris@4 5902 fi
Chris@4 5903 ;;
Chris@4 5904 esac
Chris@4 5905 case " $deplibs " in
Chris@4 5906 *" $path "*) ;;
Chris@4 5907 *) deplibs="$path $deplibs" ;;
Chris@4 5908 esac
Chris@4 5909 done
Chris@4 5910 fi # link_all_deplibs != no
Chris@4 5911 fi # linkmode = lib
Chris@4 5912 done # for deplib in $libs
Chris@4 5913 if test "$pass" = link; then
Chris@4 5914 if test "$linkmode" = "prog"; then
Chris@4 5915 compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
Chris@4 5916 finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
Chris@4 5917 else
Chris@4 5918 compiler_flags="$compiler_flags "`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
Chris@4 5919 fi
Chris@4 5920 fi
Chris@4 5921 dependency_libs="$newdependency_libs"
Chris@4 5922 if test "$pass" = dlpreopen; then
Chris@4 5923 # Link the dlpreopened libraries before other libraries
Chris@4 5924 for deplib in $save_deplibs; do
Chris@4 5925 deplibs="$deplib $deplibs"
Chris@4 5926 done
Chris@4 5927 fi
Chris@4 5928 if test "$pass" != dlopen; then
Chris@4 5929 if test "$pass" != conv; then
Chris@4 5930 # Make sure lib_search_path contains only unique directories.
Chris@4 5931 lib_search_path=
Chris@4 5932 for dir in $newlib_search_path; do
Chris@4 5933 case "$lib_search_path " in
Chris@4 5934 *" $dir "*) ;;
Chris@4 5935 *) lib_search_path="$lib_search_path $dir" ;;
Chris@4 5936 esac
Chris@4 5937 done
Chris@4 5938 newlib_search_path=
Chris@4 5939 fi
Chris@4 5940
Chris@4 5941 if test "$linkmode,$pass" != "prog,link"; then
Chris@4 5942 vars="deplibs"
Chris@4 5943 else
Chris@4 5944 vars="compile_deplibs finalize_deplibs"
Chris@4 5945 fi
Chris@4 5946 for var in $vars dependency_libs; do
Chris@4 5947 # Add libraries to $var in reverse order
Chris@4 5948 eval tmp_libs=\"\$$var\"
Chris@4 5949 new_libs=
Chris@4 5950 for deplib in $tmp_libs; do
Chris@4 5951 # FIXME: Pedantically, this is the right thing to do, so
Chris@4 5952 # that some nasty dependency loop isn't accidentally
Chris@4 5953 # broken:
Chris@4 5954 #new_libs="$deplib $new_libs"
Chris@4 5955 # Pragmatically, this seems to cause very few problems in
Chris@4 5956 # practice:
Chris@4 5957 case $deplib in
Chris@4 5958 -L*) new_libs="$deplib $new_libs" ;;
Chris@4 5959 -R*) ;;
Chris@4 5960 *)
Chris@4 5961 # And here is the reason: when a library appears more
Chris@4 5962 # than once as an explicit dependence of a library, or
Chris@4 5963 # is implicitly linked in more than once by the
Chris@4 5964 # compiler, it is considered special, and multiple
Chris@4 5965 # occurrences thereof are not removed. Compare this
Chris@4 5966 # with having the same library being listed as a
Chris@4 5967 # dependency of multiple other libraries: in this case,
Chris@4 5968 # we know (pedantically, we assume) the library does not
Chris@4 5969 # need to be listed more than once, so we keep only the
Chris@4 5970 # last copy. This is not always right, but it is rare
Chris@4 5971 # enough that we require users that really mean to play
Chris@4 5972 # such unportable linking tricks to link the library
Chris@4 5973 # using -Wl,-lname, so that libtool does not consider it
Chris@4 5974 # for duplicate removal.
Chris@4 5975 case " $specialdeplibs " in
Chris@4 5976 *" $deplib "*) new_libs="$deplib $new_libs" ;;
Chris@4 5977 *)
Chris@4 5978 case " $new_libs " in
Chris@4 5979 *" $deplib "*) ;;
Chris@4 5980 *) new_libs="$deplib $new_libs" ;;
Chris@4 5981 esac
Chris@4 5982 ;;
Chris@4 5983 esac
Chris@4 5984 ;;
Chris@4 5985 esac
Chris@4 5986 done
Chris@4 5987 tmp_libs=
Chris@4 5988 for deplib in $new_libs; do
Chris@4 5989 case $deplib in
Chris@4 5990 -L*)
Chris@4 5991 case " $tmp_libs " in
Chris@4 5992 *" $deplib "*) ;;
Chris@4 5993 *) tmp_libs="$tmp_libs $deplib" ;;
Chris@4 5994 esac
Chris@4 5995 ;;
Chris@4 5996 *) tmp_libs="$tmp_libs $deplib" ;;
Chris@4 5997 esac
Chris@4 5998 done
Chris@4 5999 eval $var=\"$tmp_libs\"
Chris@4 6000 done # for var
Chris@4 6001 fi
Chris@4 6002 # Last step: remove runtime libs from dependency_libs
Chris@4 6003 # (they stay in deplibs)
Chris@4 6004 tmp_libs=
Chris@4 6005 for i in $dependency_libs ; do
Chris@4 6006 case " $predeps $postdeps $compiler_lib_search_path " in
Chris@4 6007 *" $i "*)
Chris@4 6008 i=""
Chris@4 6009 ;;
Chris@4 6010 esac
Chris@4 6011 if test -n "$i" ; then
Chris@4 6012 tmp_libs="$tmp_libs $i"
Chris@4 6013 fi
Chris@4 6014 done
Chris@4 6015 dependency_libs=$tmp_libs
Chris@4 6016 done # for pass
Chris@4 6017 if test "$linkmode" = prog; then
Chris@4 6018 dlfiles="$newdlfiles"
Chris@4 6019 fi
Chris@4 6020 if test "$linkmode" = prog || test "$linkmode" = lib; then
Chris@4 6021 dlprefiles="$newdlprefiles"
Chris@4 6022 fi
Chris@4 6023
Chris@4 6024 case $linkmode in
Chris@4 6025 oldlib)
Chris@4 6026 if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
Chris@4 6027 func_warning "\`-dlopen' is ignored for archives"
Chris@4 6028 fi
Chris@4 6029
Chris@4 6030 case " $deplibs" in
Chris@4 6031 *\ -l* | *\ -L*)
Chris@4 6032 func_warning "\`-l' and \`-L' are ignored for archives" ;;
Chris@4 6033 esac
Chris@4 6034
Chris@4 6035 test -n "$rpath" && \
Chris@4 6036 func_warning "\`-rpath' is ignored for archives"
Chris@4 6037
Chris@4 6038 test -n "$xrpath" && \
Chris@4 6039 func_warning "\`-R' is ignored for archives"
Chris@4 6040
Chris@4 6041 test -n "$vinfo" && \
Chris@4 6042 func_warning "\`-version-info/-version-number' is ignored for archives"
Chris@4 6043
Chris@4 6044 test -n "$release" && \
Chris@4 6045 func_warning "\`-release' is ignored for archives"
Chris@4 6046
Chris@4 6047 test -n "$export_symbols$export_symbols_regex" && \
Chris@4 6048 func_warning "\`-export-symbols' is ignored for archives"
Chris@4 6049
Chris@4 6050 # Now set the variables for building old libraries.
Chris@4 6051 build_libtool_libs=no
Chris@4 6052 oldlibs="$output"
Chris@4 6053 objs="$objs$old_deplibs"
Chris@4 6054 ;;
Chris@4 6055
Chris@4 6056 lib)
Chris@4 6057 # Make sure we only generate libraries of the form `libNAME.la'.
Chris@4 6058 case $outputname in
Chris@4 6059 lib*)
Chris@4 6060 func_stripname 'lib' '.la' "$outputname"
Chris@4 6061 name=$func_stripname_result
Chris@4 6062 eval shared_ext=\"$shrext_cmds\"
Chris@4 6063 eval libname=\"$libname_spec\"
Chris@4 6064 ;;
Chris@4 6065 *)
Chris@4 6066 test "$module" = no && \
Chris@4 6067 func_fatal_help "libtool library \`$output' must begin with \`lib'"
Chris@4 6068
Chris@4 6069 if test "$need_lib_prefix" != no; then
Chris@4 6070 # Add the "lib" prefix for modules if required
Chris@4 6071 func_stripname '' '.la' "$outputname"
Chris@4 6072 name=$func_stripname_result
Chris@4 6073 eval shared_ext=\"$shrext_cmds\"
Chris@4 6074 eval libname=\"$libname_spec\"
Chris@4 6075 else
Chris@4 6076 func_stripname '' '.la' "$outputname"
Chris@4 6077 libname=$func_stripname_result
Chris@4 6078 fi
Chris@4 6079 ;;
Chris@4 6080 esac
Chris@4 6081
Chris@4 6082 if test -n "$objs"; then
Chris@4 6083 if test "$deplibs_check_method" != pass_all; then
Chris@4 6084 func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
Chris@4 6085 else
Chris@4 6086 $ECHO
Chris@4 6087 $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
Chris@4 6088 $ECHO "*** objects $objs is not portable!"
Chris@4 6089 libobjs="$libobjs $objs"
Chris@4 6090 fi
Chris@4 6091 fi
Chris@4 6092
Chris@4 6093 test "$dlself" != no && \
Chris@4 6094 func_warning "\`-dlopen self' is ignored for libtool libraries"
Chris@4 6095
Chris@4 6096 set dummy $rpath
Chris@4 6097 shift
Chris@4 6098 test "$#" -gt 1 && \
Chris@4 6099 func_warning "ignoring multiple \`-rpath's for a libtool library"
Chris@4 6100
Chris@4 6101 install_libdir="$1"
Chris@4 6102
Chris@4 6103 oldlibs=
Chris@4 6104 if test -z "$rpath"; then
Chris@4 6105 if test "$build_libtool_libs" = yes; then
Chris@4 6106 # Building a libtool convenience library.
Chris@4 6107 # Some compilers have problems with a `.al' extension so
Chris@4 6108 # convenience libraries should have the same extension an
Chris@4 6109 # archive normally would.
Chris@4 6110 oldlibs="$output_objdir/$libname.$libext $oldlibs"
Chris@4 6111 build_libtool_libs=convenience
Chris@4 6112 build_old_libs=yes
Chris@4 6113 fi
Chris@4 6114
Chris@4 6115 test -n "$vinfo" && \
Chris@4 6116 func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
Chris@4 6117
Chris@4 6118 test -n "$release" && \
Chris@4 6119 func_warning "\`-release' is ignored for convenience libraries"
Chris@4 6120 else
Chris@4 6121
Chris@4 6122 # Parse the version information argument.
Chris@4 6123 save_ifs="$IFS"; IFS=':'
Chris@4 6124 set dummy $vinfo 0 0 0
Chris@4 6125 shift
Chris@4 6126 IFS="$save_ifs"
Chris@4 6127
Chris@4 6128 test -n "$7" && \
Chris@4 6129 func_fatal_help "too many parameters to \`-version-info'"
Chris@4 6130
Chris@4 6131 # convert absolute version numbers to libtool ages
Chris@4 6132 # this retains compatibility with .la files and attempts
Chris@4 6133 # to make the code below a bit more comprehensible
Chris@4 6134
Chris@4 6135 case $vinfo_number in
Chris@4 6136 yes)
Chris@4 6137 number_major="$1"
Chris@4 6138 number_minor="$2"
Chris@4 6139 number_revision="$3"
Chris@4 6140 #
Chris@4 6141 # There are really only two kinds -- those that
Chris@4 6142 # use the current revision as the major version
Chris@4 6143 # and those that subtract age and use age as
Chris@4 6144 # a minor version. But, then there is irix
Chris@4 6145 # which has an extra 1 added just for fun
Chris@4 6146 #
Chris@4 6147 case $version_type in
Chris@4 6148 darwin|linux|osf|windows|none)
Chris@4 6149 func_arith $number_major + $number_minor
Chris@4 6150 current=$func_arith_result
Chris@4 6151 age="$number_minor"
Chris@4 6152 revision="$number_revision"
Chris@4 6153 ;;
Chris@4 6154 freebsd-aout|freebsd-elf|sunos)
Chris@4 6155 current="$number_major"
Chris@4 6156 revision="$number_minor"
Chris@4 6157 age="0"
Chris@4 6158 ;;
Chris@4 6159 irix|nonstopux)
Chris@4 6160 func_arith $number_major + $number_minor
Chris@4 6161 current=$func_arith_result
Chris@4 6162 age="$number_minor"
Chris@4 6163 revision="$number_minor"
Chris@4 6164 lt_irix_increment=no
Chris@4 6165 ;;
Chris@4 6166 *)
Chris@4 6167 func_fatal_configuration "$modename: unknown library version type \`$version_type'"
Chris@4 6168 ;;
Chris@4 6169 esac
Chris@4 6170 ;;
Chris@4 6171 no)
Chris@4 6172 current="$1"
Chris@4 6173 revision="$2"
Chris@4 6174 age="$3"
Chris@4 6175 ;;
Chris@4 6176 esac
Chris@4 6177
Chris@4 6178 # Check that each of the things are valid numbers.
Chris@4 6179 case $current in
Chris@4 6180 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]) ;;
Chris@4 6181 *)
Chris@4 6182 func_error "CURRENT \`$current' must be a nonnegative integer"
Chris@4 6183 func_fatal_error "\`$vinfo' is not valid version information"
Chris@4 6184 ;;
Chris@4 6185 esac
Chris@4 6186
Chris@4 6187 case $revision in
Chris@4 6188 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]) ;;
Chris@4 6189 *)
Chris@4 6190 func_error "REVISION \`$revision' must be a nonnegative integer"
Chris@4 6191 func_fatal_error "\`$vinfo' is not valid version information"
Chris@4 6192 ;;
Chris@4 6193 esac
Chris@4 6194
Chris@4 6195 case $age in
Chris@4 6196 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]) ;;
Chris@4 6197 *)
Chris@4 6198 func_error "AGE \`$age' must be a nonnegative integer"
Chris@4 6199 func_fatal_error "\`$vinfo' is not valid version information"
Chris@4 6200 ;;
Chris@4 6201 esac
Chris@4 6202
Chris@4 6203 if test "$age" -gt "$current"; then
Chris@4 6204 func_error "AGE \`$age' is greater than the current interface number \`$current'"
Chris@4 6205 func_fatal_error "\`$vinfo' is not valid version information"
Chris@4 6206 fi
Chris@4 6207
Chris@4 6208 # Calculate the version variables.
Chris@4 6209 major=
Chris@4 6210 versuffix=
Chris@4 6211 verstring=
Chris@4 6212 case $version_type in
Chris@4 6213 none) ;;
Chris@4 6214
Chris@4 6215 darwin)
Chris@4 6216 # Like Linux, but with the current version available in
Chris@4 6217 # verstring for coding it into the library header
Chris@4 6218 func_arith $current - $age
Chris@4 6219 major=.$func_arith_result
Chris@4 6220 versuffix="$major.$age.$revision"
Chris@4 6221 # Darwin ld doesn't like 0 for these options...
Chris@4 6222 func_arith $current + 1
Chris@4 6223 minor_current=$func_arith_result
Chris@4 6224 xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
Chris@4 6225 verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
Chris@4 6226 ;;
Chris@4 6227
Chris@4 6228 freebsd-aout)
Chris@4 6229 major=".$current"
Chris@4 6230 versuffix=".$current.$revision";
Chris@4 6231 ;;
Chris@4 6232
Chris@4 6233 freebsd-elf)
Chris@4 6234 major=".$current"
Chris@4 6235 versuffix=".$current"
Chris@4 6236 ;;
Chris@4 6237
Chris@4 6238 irix | nonstopux)
Chris@4 6239 if test "X$lt_irix_increment" = "Xno"; then
Chris@4 6240 func_arith $current - $age
Chris@4 6241 else
Chris@4 6242 func_arith $current - $age + 1
Chris@4 6243 fi
Chris@4 6244 major=$func_arith_result
Chris@4 6245
Chris@4 6246 case $version_type in
Chris@4 6247 nonstopux) verstring_prefix=nonstopux ;;
Chris@4 6248 *) verstring_prefix=sgi ;;
Chris@4 6249 esac
Chris@4 6250 verstring="$verstring_prefix$major.$revision"
Chris@4 6251
Chris@4 6252 # Add in all the interfaces that we are compatible with.
Chris@4 6253 loop=$revision
Chris@4 6254 while test "$loop" -ne 0; do
Chris@4 6255 func_arith $revision - $loop
Chris@4 6256 iface=$func_arith_result
Chris@4 6257 func_arith $loop - 1
Chris@4 6258 loop=$func_arith_result
Chris@4 6259 verstring="$verstring_prefix$major.$iface:$verstring"
Chris@4 6260 done
Chris@4 6261
Chris@4 6262 # Before this point, $major must not contain `.'.
Chris@4 6263 major=.$major
Chris@4 6264 versuffix="$major.$revision"
Chris@4 6265 ;;
Chris@4 6266
Chris@4 6267 linux)
Chris@4 6268 func_arith $current - $age
Chris@4 6269 major=.$func_arith_result
Chris@4 6270 versuffix="$major.$age.$revision"
Chris@4 6271 ;;
Chris@4 6272
Chris@4 6273 osf)
Chris@4 6274 func_arith $current - $age
Chris@4 6275 major=.$func_arith_result
Chris@4 6276 versuffix=".$current.$age.$revision"
Chris@4 6277 verstring="$current.$age.$revision"
Chris@4 6278
Chris@4 6279 # Add in all the interfaces that we are compatible with.
Chris@4 6280 loop=$age
Chris@4 6281 while test "$loop" -ne 0; do
Chris@4 6282 func_arith $current - $loop
Chris@4 6283 iface=$func_arith_result
Chris@4 6284 func_arith $loop - 1
Chris@4 6285 loop=$func_arith_result
Chris@4 6286 verstring="$verstring:${iface}.0"
Chris@4 6287 done
Chris@4 6288
Chris@4 6289 # Make executables depend on our current version.
Chris@4 6290 verstring="$verstring:${current}.0"
Chris@4 6291 ;;
Chris@4 6292
Chris@4 6293 qnx)
Chris@4 6294 major=".$current"
Chris@4 6295 versuffix=".$current"
Chris@4 6296 ;;
Chris@4 6297
Chris@4 6298 sunos)
Chris@4 6299 major=".$current"
Chris@4 6300 versuffix=".$current.$revision"
Chris@4 6301 ;;
Chris@4 6302
Chris@4 6303 windows)
Chris@4 6304 # Use '-' rather than '.', since we only want one
Chris@4 6305 # extension on DOS 8.3 filesystems.
Chris@4 6306 func_arith $current - $age
Chris@4 6307 major=$func_arith_result
Chris@4 6308 versuffix="-$major"
Chris@4 6309 ;;
Chris@4 6310
Chris@4 6311 *)
Chris@4 6312 func_fatal_configuration "unknown library version type \`$version_type'"
Chris@4 6313 ;;
Chris@4 6314 esac
Chris@4 6315
Chris@4 6316 # Clear the version info if we defaulted, and they specified a release.
Chris@4 6317 if test -z "$vinfo" && test -n "$release"; then
Chris@4 6318 major=
Chris@4 6319 case $version_type in
Chris@4 6320 darwin)
Chris@4 6321 # we can't check for "0.0" in archive_cmds due to quoting
Chris@4 6322 # problems, so we reset it completely
Chris@4 6323 verstring=
Chris@4 6324 ;;
Chris@4 6325 *)
Chris@4 6326 verstring="0.0"
Chris@4 6327 ;;
Chris@4 6328 esac
Chris@4 6329 if test "$need_version" = no; then
Chris@4 6330 versuffix=
Chris@4 6331 else
Chris@4 6332 versuffix=".0.0"
Chris@4 6333 fi
Chris@4 6334 fi
Chris@4 6335
Chris@4 6336 # Remove version info from name if versioning should be avoided
Chris@4 6337 if test "$avoid_version" = yes && test "$need_version" = no; then
Chris@4 6338 major=
Chris@4 6339 versuffix=
Chris@4 6340 verstring=""
Chris@4 6341 fi
Chris@4 6342
Chris@4 6343 # Check to see if the archive will have undefined symbols.
Chris@4 6344 if test "$allow_undefined" = yes; then
Chris@4 6345 if test "$allow_undefined_flag" = unsupported; then
Chris@4 6346 func_warning "undefined symbols not allowed in $host shared libraries"
Chris@4 6347 build_libtool_libs=no
Chris@4 6348 build_old_libs=yes
Chris@4 6349 fi
Chris@4 6350 else
Chris@4 6351 # Don't allow undefined symbols.
Chris@4 6352 allow_undefined_flag="$no_undefined_flag"
Chris@4 6353 fi
Chris@4 6354
Chris@4 6355 fi
Chris@4 6356
Chris@4 6357 func_generate_dlsyms "$libname" "$libname" "yes"
Chris@4 6358 libobjs="$libobjs $symfileobj"
Chris@4 6359 test "X$libobjs" = "X " && libobjs=
Chris@4 6360
Chris@4 6361 if test "$mode" != relink; then
Chris@4 6362 # Remove our outputs, but don't remove object files since they
Chris@4 6363 # may have been created when compiling PIC objects.
Chris@4 6364 removelist=
Chris@4 6365 tempremovelist=`$ECHO "$output_objdir/*"`
Chris@4 6366 for p in $tempremovelist; do
Chris@4 6367 case $p in
Chris@4 6368 *.$objext)
Chris@4 6369 ;;
Chris@4 6370 $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
Chris@4 6371 if test "X$precious_files_regex" != "X"; then
Chris@4 6372 if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
Chris@4 6373 then
Chris@4 6374 continue
Chris@4 6375 fi
Chris@4 6376 fi
Chris@4 6377 removelist="$removelist $p"
Chris@4 6378 ;;
Chris@4 6379 *) ;;
Chris@4 6380 esac
Chris@4 6381 done
Chris@4 6382 test -n "$removelist" && \
Chris@4 6383 func_show_eval "${RM}r \$removelist"
Chris@4 6384 fi
Chris@4 6385
Chris@4 6386 # Now set the variables for building old libraries.
Chris@4 6387 if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
Chris@4 6388 oldlibs="$oldlibs $output_objdir/$libname.$libext"
Chris@4 6389
Chris@4 6390 # Transform .lo files to .o files.
Chris@4 6391 oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
Chris@4 6392 fi
Chris@4 6393
Chris@4 6394 # Eliminate all temporary directories.
Chris@4 6395 #for path in $notinst_path; do
Chris@4 6396 # lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"`
Chris@4 6397 # deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"`
Chris@4 6398 # dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "s% -L$path % %g"`
Chris@4 6399 #done
Chris@4 6400
Chris@4 6401 if test -n "$xrpath"; then
Chris@4 6402 # If the user specified any rpath flags, then add them.
Chris@4 6403 temp_xrpath=
Chris@4 6404 for libdir in $xrpath; do
Chris@4 6405 temp_xrpath="$temp_xrpath -R$libdir"
Chris@4 6406 case "$finalize_rpath " in
Chris@4 6407 *" $libdir "*) ;;
Chris@4 6408 *) finalize_rpath="$finalize_rpath $libdir" ;;
Chris@4 6409 esac
Chris@4 6410 done
Chris@4 6411 if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
Chris@4 6412 dependency_libs="$temp_xrpath $dependency_libs"
Chris@4 6413 fi
Chris@4 6414 fi
Chris@4 6415
Chris@4 6416 # Make sure dlfiles contains only unique files that won't be dlpreopened
Chris@4 6417 old_dlfiles="$dlfiles"
Chris@4 6418 dlfiles=
Chris@4 6419 for lib in $old_dlfiles; do
Chris@4 6420 case " $dlprefiles $dlfiles " in
Chris@4 6421 *" $lib "*) ;;
Chris@4 6422 *) dlfiles="$dlfiles $lib" ;;
Chris@4 6423 esac
Chris@4 6424 done
Chris@4 6425
Chris@4 6426 # Make sure dlprefiles contains only unique files
Chris@4 6427 old_dlprefiles="$dlprefiles"
Chris@4 6428 dlprefiles=
Chris@4 6429 for lib in $old_dlprefiles; do
Chris@4 6430 case "$dlprefiles " in
Chris@4 6431 *" $lib "*) ;;
Chris@4 6432 *) dlprefiles="$dlprefiles $lib" ;;
Chris@4 6433 esac
Chris@4 6434 done
Chris@4 6435
Chris@4 6436 if test "$build_libtool_libs" = yes; then
Chris@4 6437 if test -n "$rpath"; then
Chris@4 6438 case $host in
Chris@4 6439 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*)
Chris@4 6440 # these systems don't actually have a c library (as such)!
Chris@4 6441 ;;
Chris@4 6442 *-*-rhapsody* | *-*-darwin1.[012])
Chris@4 6443 # Rhapsody C library is in the System framework
Chris@4 6444 deplibs="$deplibs System.ltframework"
Chris@4 6445 ;;
Chris@4 6446 *-*-netbsd*)
Chris@4 6447 # Don't link with libc until the a.out ld.so is fixed.
Chris@4 6448 ;;
Chris@4 6449 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
Chris@4 6450 # Do not include libc due to us having libc/libc_r.
Chris@4 6451 ;;
Chris@4 6452 *-*-sco3.2v5* | *-*-sco5v6*)
Chris@4 6453 # Causes problems with __ctype
Chris@4 6454 ;;
Chris@4 6455 *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
Chris@4 6456 # Compiler inserts libc in the correct place for threads to work
Chris@4 6457 ;;
Chris@4 6458 *)
Chris@4 6459 # Add libc to deplibs on all other systems if necessary.
Chris@4 6460 if test "$build_libtool_need_lc" = "yes"; then
Chris@4 6461 deplibs="$deplibs -lc"
Chris@4 6462 fi
Chris@4 6463 ;;
Chris@4 6464 esac
Chris@4 6465 fi
Chris@4 6466
Chris@4 6467 # Transform deplibs into only deplibs that can be linked in shared.
Chris@4 6468 name_save=$name
Chris@4 6469 libname_save=$libname
Chris@4 6470 release_save=$release
Chris@4 6471 versuffix_save=$versuffix
Chris@4 6472 major_save=$major
Chris@4 6473 # I'm not sure if I'm treating the release correctly. I think
Chris@4 6474 # release should show up in the -l (ie -lgmp5) so we don't want to
Chris@4 6475 # add it in twice. Is that correct?
Chris@4 6476 release=""
Chris@4 6477 versuffix=""
Chris@4 6478 major=""
Chris@4 6479 newdeplibs=
Chris@4 6480 droppeddeps=no
Chris@4 6481 case $deplibs_check_method in
Chris@4 6482 pass_all)
Chris@4 6483 # Don't check for shared/static. Everything works.
Chris@4 6484 # This might be a little naive. We might want to check
Chris@4 6485 # whether the library exists or not. But this is on
Chris@4 6486 # osf3 & osf4 and I'm not really sure... Just
Chris@4 6487 # implementing what was already the behavior.
Chris@4 6488 newdeplibs=$deplibs
Chris@4 6489 ;;
Chris@4 6490 test_compile)
Chris@4 6491 # This code stresses the "libraries are programs" paradigm to its
Chris@4 6492 # limits. Maybe even breaks it. We compile a program, linking it
Chris@4 6493 # against the deplibs as a proxy for the library. Then we can check
Chris@4 6494 # whether they linked in statically or dynamically with ldd.
Chris@4 6495 $opt_dry_run || $RM conftest.c
Chris@4 6496 cat > conftest.c <<EOF
Chris@4 6497 int main() { return 0; }
Chris@4 6498 EOF
Chris@4 6499 $opt_dry_run || $RM conftest
Chris@4 6500 if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
Chris@4 6501 ldd_output=`ldd conftest`
Chris@4 6502 for i in $deplibs; do
Chris@4 6503 case $i in
Chris@4 6504 -l*)
Chris@4 6505 func_stripname -l '' "$i"
Chris@4 6506 name=$func_stripname_result
Chris@4 6507 if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
Chris@4 6508 case " $predeps $postdeps " in
Chris@4 6509 *" $i "*)
Chris@4 6510 newdeplibs="$newdeplibs $i"
Chris@4 6511 i=""
Chris@4 6512 ;;
Chris@4 6513 esac
Chris@4 6514 fi
Chris@4 6515 if test -n "$i" ; then
Chris@4 6516 libname=`eval "\\$ECHO \"$libname_spec\""`
Chris@4 6517 deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
Chris@4 6518 set dummy $deplib_matches; shift
Chris@4 6519 deplib_match=$1
Chris@4 6520 if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
Chris@4 6521 newdeplibs="$newdeplibs $i"
Chris@4 6522 else
Chris@4 6523 droppeddeps=yes
Chris@4 6524 $ECHO
Chris@4 6525 $ECHO "*** Warning: dynamic linker does not accept needed library $i."
Chris@4 6526 $ECHO "*** I have the capability to make that library automatically link in when"
Chris@4 6527 $ECHO "*** you link to this library. But I can only do this if you have a"
Chris@4 6528 $ECHO "*** shared version of the library, which I believe you do not have"
Chris@4 6529 $ECHO "*** because a test_compile did reveal that the linker did not use it for"
Chris@4 6530 $ECHO "*** its dynamic dependency list that programs get resolved with at runtime."
Chris@4 6531 fi
Chris@4 6532 fi
Chris@4 6533 ;;
Chris@4 6534 *)
Chris@4 6535 newdeplibs="$newdeplibs $i"
Chris@4 6536 ;;
Chris@4 6537 esac
Chris@4 6538 done
Chris@4 6539 else
Chris@4 6540 # Error occurred in the first compile. Let's try to salvage
Chris@4 6541 # the situation: Compile a separate program for each library.
Chris@4 6542 for i in $deplibs; do
Chris@4 6543 case $i in
Chris@4 6544 -l*)
Chris@4 6545 func_stripname -l '' "$i"
Chris@4 6546 name=$func_stripname_result
Chris@4 6547 $opt_dry_run || $RM conftest
Chris@4 6548 if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
Chris@4 6549 ldd_output=`ldd conftest`
Chris@4 6550 if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
Chris@4 6551 case " $predeps $postdeps " in
Chris@4 6552 *" $i "*)
Chris@4 6553 newdeplibs="$newdeplibs $i"
Chris@4 6554 i=""
Chris@4 6555 ;;
Chris@4 6556 esac
Chris@4 6557 fi
Chris@4 6558 if test -n "$i" ; then
Chris@4 6559 libname=`eval "\\$ECHO \"$libname_spec\""`
Chris@4 6560 deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
Chris@4 6561 set dummy $deplib_matches; shift
Chris@4 6562 deplib_match=$1
Chris@4 6563 if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
Chris@4 6564 newdeplibs="$newdeplibs $i"
Chris@4 6565 else
Chris@4 6566 droppeddeps=yes
Chris@4 6567 $ECHO
Chris@4 6568 $ECHO "*** Warning: dynamic linker does not accept needed library $i."
Chris@4 6569 $ECHO "*** I have the capability to make that library automatically link in when"
Chris@4 6570 $ECHO "*** you link to this library. But I can only do this if you have a"
Chris@4 6571 $ECHO "*** shared version of the library, which you do not appear to have"
Chris@4 6572 $ECHO "*** because a test_compile did reveal that the linker did not use this one"
Chris@4 6573 $ECHO "*** as a dynamic dependency that programs can get resolved with at runtime."
Chris@4 6574 fi
Chris@4 6575 fi
Chris@4 6576 else
Chris@4 6577 droppeddeps=yes
Chris@4 6578 $ECHO
Chris@4 6579 $ECHO "*** Warning! Library $i is needed by this library but I was not able to"
Chris@4 6580 $ECHO "*** make it link in! You will probably need to install it or some"
Chris@4 6581 $ECHO "*** library that it depends on before this library will be fully"
Chris@4 6582 $ECHO "*** functional. Installing it before continuing would be even better."
Chris@4 6583 fi
Chris@4 6584 ;;
Chris@4 6585 *)
Chris@4 6586 newdeplibs="$newdeplibs $i"
Chris@4 6587 ;;
Chris@4 6588 esac
Chris@4 6589 done
Chris@4 6590 fi
Chris@4 6591 ;;
Chris@4 6592 file_magic*)
Chris@4 6593 set dummy $deplibs_check_method; shift
Chris@4 6594 file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
Chris@4 6595 for a_deplib in $deplibs; do
Chris@4 6596 case $a_deplib in
Chris@4 6597 -l*)
Chris@4 6598 func_stripname -l '' "$a_deplib"
Chris@4 6599 name=$func_stripname_result
Chris@4 6600 if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
Chris@4 6601 case " $predeps $postdeps " in
Chris@4 6602 *" $a_deplib "*)
Chris@4 6603 newdeplibs="$newdeplibs $a_deplib"
Chris@4 6604 a_deplib=""
Chris@4 6605 ;;
Chris@4 6606 esac
Chris@4 6607 fi
Chris@4 6608 if test -n "$a_deplib" ; then
Chris@4 6609 libname=`eval "\\$ECHO \"$libname_spec\""`
Chris@4 6610 for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
Chris@4 6611 potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
Chris@4 6612 for potent_lib in $potential_libs; do
Chris@4 6613 # Follow soft links.
Chris@4 6614 if ls -lLd "$potent_lib" 2>/dev/null |
Chris@4 6615 $GREP " -> " >/dev/null; then
Chris@4 6616 continue
Chris@4 6617 fi
Chris@4 6618 # The statement above tries to avoid entering an
Chris@4 6619 # endless loop below, in case of cyclic links.
Chris@4 6620 # We might still enter an endless loop, since a link
Chris@4 6621 # loop can be closed while we follow links,
Chris@4 6622 # but so what?
Chris@4 6623 potlib="$potent_lib"
Chris@4 6624 while test -h "$potlib" 2>/dev/null; do
Chris@4 6625 potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
Chris@4 6626 case $potliblink in
Chris@4 6627 [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
Chris@4 6628 *) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
Chris@4 6629 esac
Chris@4 6630 done
Chris@4 6631 if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
Chris@4 6632 $SED -e 10q |
Chris@4 6633 $EGREP "$file_magic_regex" > /dev/null; then
Chris@4 6634 newdeplibs="$newdeplibs $a_deplib"
Chris@4 6635 a_deplib=""
Chris@4 6636 break 2
Chris@4 6637 fi
Chris@4 6638 done
Chris@4 6639 done
Chris@4 6640 fi
Chris@4 6641 if test -n "$a_deplib" ; then
Chris@4 6642 droppeddeps=yes
Chris@4 6643 $ECHO
Chris@4 6644 $ECHO "*** Warning: linker path does not have real file for library $a_deplib."
Chris@4 6645 $ECHO "*** I have the capability to make that library automatically link in when"
Chris@4 6646 $ECHO "*** you link to this library. But I can only do this if you have a"
Chris@4 6647 $ECHO "*** shared version of the library, which you do not appear to have"
Chris@4 6648 $ECHO "*** because I did check the linker path looking for a file starting"
Chris@4 6649 if test -z "$potlib" ; then
Chris@4 6650 $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
Chris@4 6651 else
Chris@4 6652 $ECHO "*** with $libname and none of the candidates passed a file format test"
Chris@4 6653 $ECHO "*** using a file magic. Last file checked: $potlib"
Chris@4 6654 fi
Chris@4 6655 fi
Chris@4 6656 ;;
Chris@4 6657 *)
Chris@4 6658 # Add a -L argument.
Chris@4 6659 newdeplibs="$newdeplibs $a_deplib"
Chris@4 6660 ;;
Chris@4 6661 esac
Chris@4 6662 done # Gone through all deplibs.
Chris@4 6663 ;;
Chris@4 6664 match_pattern*)
Chris@4 6665 set dummy $deplibs_check_method; shift
Chris@4 6666 match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
Chris@4 6667 for a_deplib in $deplibs; do
Chris@4 6668 case $a_deplib in
Chris@4 6669 -l*)
Chris@4 6670 func_stripname -l '' "$a_deplib"
Chris@4 6671 name=$func_stripname_result
Chris@4 6672 if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
Chris@4 6673 case " $predeps $postdeps " in
Chris@4 6674 *" $a_deplib "*)
Chris@4 6675 newdeplibs="$newdeplibs $a_deplib"
Chris@4 6676 a_deplib=""
Chris@4 6677 ;;
Chris@4 6678 esac
Chris@4 6679 fi
Chris@4 6680 if test -n "$a_deplib" ; then
Chris@4 6681 libname=`eval "\\$ECHO \"$libname_spec\""`
Chris@4 6682 for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
Chris@4 6683 potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
Chris@4 6684 for potent_lib in $potential_libs; do
Chris@4 6685 potlib="$potent_lib" # see symlink-check above in file_magic test
Chris@4 6686 if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \
Chris@4 6687 $EGREP "$match_pattern_regex" > /dev/null; then
Chris@4 6688 newdeplibs="$newdeplibs $a_deplib"
Chris@4 6689 a_deplib=""
Chris@4 6690 break 2
Chris@4 6691 fi
Chris@4 6692 done
Chris@4 6693 done
Chris@4 6694 fi
Chris@4 6695 if test -n "$a_deplib" ; then
Chris@4 6696 droppeddeps=yes
Chris@4 6697 $ECHO
Chris@4 6698 $ECHO "*** Warning: linker path does not have real file for library $a_deplib."
Chris@4 6699 $ECHO "*** I have the capability to make that library automatically link in when"
Chris@4 6700 $ECHO "*** you link to this library. But I can only do this if you have a"
Chris@4 6701 $ECHO "*** shared version of the library, which you do not appear to have"
Chris@4 6702 $ECHO "*** because I did check the linker path looking for a file starting"
Chris@4 6703 if test -z "$potlib" ; then
Chris@4 6704 $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
Chris@4 6705 else
Chris@4 6706 $ECHO "*** with $libname and none of the candidates passed a file format test"
Chris@4 6707 $ECHO "*** using a regex pattern. Last file checked: $potlib"
Chris@4 6708 fi
Chris@4 6709 fi
Chris@4 6710 ;;
Chris@4 6711 *)
Chris@4 6712 # Add a -L argument.
Chris@4 6713 newdeplibs="$newdeplibs $a_deplib"
Chris@4 6714 ;;
Chris@4 6715 esac
Chris@4 6716 done # Gone through all deplibs.
Chris@4 6717 ;;
Chris@4 6718 none | unknown | *)
Chris@4 6719 newdeplibs=""
Chris@4 6720 tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \
Chris@4 6721 -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'`
Chris@4 6722 if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
Chris@4 6723 for i in $predeps $postdeps ; do
Chris@4 6724 # can't use Xsed below, because $i might contain '/'
Chris@4 6725 tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"`
Chris@4 6726 done
Chris@4 6727 fi
Chris@4 6728 if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' |
Chris@4 6729 $GREP . >/dev/null; then
Chris@4 6730 $ECHO
Chris@4 6731 if test "X$deplibs_check_method" = "Xnone"; then
Chris@4 6732 $ECHO "*** Warning: inter-library dependencies are not supported in this platform."
Chris@4 6733 else
Chris@4 6734 $ECHO "*** Warning: inter-library dependencies are not known to be supported."
Chris@4 6735 fi
Chris@4 6736 $ECHO "*** All declared inter-library dependencies are being dropped."
Chris@4 6737 droppeddeps=yes
Chris@4 6738 fi
Chris@4 6739 ;;
Chris@4 6740 esac
Chris@4 6741 versuffix=$versuffix_save
Chris@4 6742 major=$major_save
Chris@4 6743 release=$release_save
Chris@4 6744 libname=$libname_save
Chris@4 6745 name=$name_save
Chris@4 6746
Chris@4 6747 case $host in
Chris@4 6748 *-*-rhapsody* | *-*-darwin1.[012])
Chris@4 6749 # On Rhapsody replace the C library with the System framework
Chris@4 6750 newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
Chris@4 6751 ;;
Chris@4 6752 esac
Chris@4 6753
Chris@4 6754 if test "$droppeddeps" = yes; then
Chris@4 6755 if test "$module" = yes; then
Chris@4 6756 $ECHO
Chris@4 6757 $ECHO "*** Warning: libtool could not satisfy all declared inter-library"
Chris@4 6758 $ECHO "*** dependencies of module $libname. Therefore, libtool will create"
Chris@4 6759 $ECHO "*** a static module, that should work as long as the dlopening"
Chris@4 6760 $ECHO "*** application is linked with the -dlopen flag."
Chris@4 6761 if test -z "$global_symbol_pipe"; then
Chris@4 6762 $ECHO
Chris@4 6763 $ECHO "*** However, this would only work if libtool was able to extract symbol"
Chris@4 6764 $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
Chris@4 6765 $ECHO "*** not find such a program. So, this module is probably useless."
Chris@4 6766 $ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
Chris@4 6767 fi
Chris@4 6768 if test "$build_old_libs" = no; then
Chris@4 6769 oldlibs="$output_objdir/$libname.$libext"
Chris@4 6770 build_libtool_libs=module
Chris@4 6771 build_old_libs=yes
Chris@4 6772 else
Chris@4 6773 build_libtool_libs=no
Chris@4 6774 fi
Chris@4 6775 else
Chris@4 6776 $ECHO "*** The inter-library dependencies that have been dropped here will be"
Chris@4 6777 $ECHO "*** automatically added whenever a program is linked with this library"
Chris@4 6778 $ECHO "*** or is declared to -dlopen it."
Chris@4 6779
Chris@4 6780 if test "$allow_undefined" = no; then
Chris@4 6781 $ECHO
Chris@4 6782 $ECHO "*** Since this library must not contain undefined symbols,"
Chris@4 6783 $ECHO "*** because either the platform does not support them or"
Chris@4 6784 $ECHO "*** it was explicitly requested with -no-undefined,"
Chris@4 6785 $ECHO "*** libtool will only create a static version of it."
Chris@4 6786 if test "$build_old_libs" = no; then
Chris@4 6787 oldlibs="$output_objdir/$libname.$libext"
Chris@4 6788 build_libtool_libs=module
Chris@4 6789 build_old_libs=yes
Chris@4 6790 else
Chris@4 6791 build_libtool_libs=no
Chris@4 6792 fi
Chris@4 6793 fi
Chris@4 6794 fi
Chris@4 6795 fi
Chris@4 6796 # Done checking deplibs!
Chris@4 6797 deplibs=$newdeplibs
Chris@4 6798 fi
Chris@4 6799 # Time to change all our "foo.ltframework" stuff back to "-framework foo"
Chris@4 6800 case $host in
Chris@4 6801 *-*-darwin*)
Chris@4 6802 newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
Chris@4 6803 new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
Chris@4 6804 deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
Chris@4 6805 ;;
Chris@4 6806 esac
Chris@4 6807
Chris@4 6808 # move library search paths that coincide with paths to not yet
Chris@4 6809 # installed libraries to the beginning of the library search list
Chris@4 6810 new_libs=
Chris@4 6811 for path in $notinst_path; do
Chris@4 6812 case " $new_libs " in
Chris@4 6813 *" -L$path/$objdir "*) ;;
Chris@4 6814 *)
Chris@4 6815 case " $deplibs " in
Chris@4 6816 *" -L$path/$objdir "*)
Chris@4 6817 new_libs="$new_libs -L$path/$objdir" ;;
Chris@4 6818 esac
Chris@4 6819 ;;
Chris@4 6820 esac
Chris@4 6821 done
Chris@4 6822 for deplib in $deplibs; do
Chris@4 6823 case $deplib in
Chris@4 6824 -L*)
Chris@4 6825 case " $new_libs " in
Chris@4 6826 *" $deplib "*) ;;
Chris@4 6827 *) new_libs="$new_libs $deplib" ;;
Chris@4 6828 esac
Chris@4 6829 ;;
Chris@4 6830 *) new_libs="$new_libs $deplib" ;;
Chris@4 6831 esac
Chris@4 6832 done
Chris@4 6833 deplibs="$new_libs"
Chris@4 6834
Chris@4 6835 # All the library-specific variables (install_libdir is set above).
Chris@4 6836 library_names=
Chris@4 6837 old_library=
Chris@4 6838 dlname=
Chris@4 6839
Chris@4 6840 # Test again, we may have decided not to build it any more
Chris@4 6841 if test "$build_libtool_libs" = yes; then
Chris@4 6842 if test "$hardcode_into_libs" = yes; then
Chris@4 6843 # Hardcode the library paths
Chris@4 6844 hardcode_libdirs=
Chris@4 6845 dep_rpath=
Chris@4 6846 rpath="$finalize_rpath"
Chris@4 6847 test "$mode" != relink && rpath="$compile_rpath$rpath"
Chris@4 6848 for libdir in $rpath; do
Chris@4 6849 if test -n "$hardcode_libdir_flag_spec"; then
Chris@4 6850 if test -n "$hardcode_libdir_separator"; then
Chris@4 6851 if test -z "$hardcode_libdirs"; then
Chris@4 6852 hardcode_libdirs="$libdir"
Chris@4 6853 else
Chris@4 6854 # Just accumulate the unique libdirs.
Chris@4 6855 case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
Chris@4 6856 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
Chris@4 6857 ;;
Chris@4 6858 *)
Chris@4 6859 hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
Chris@4 6860 ;;
Chris@4 6861 esac
Chris@4 6862 fi
Chris@4 6863 else
Chris@4 6864 eval flag=\"$hardcode_libdir_flag_spec\"
Chris@4 6865 dep_rpath="$dep_rpath $flag"
Chris@4 6866 fi
Chris@4 6867 elif test -n "$runpath_var"; then
Chris@4 6868 case "$perm_rpath " in
Chris@4 6869 *" $libdir "*) ;;
Chris@4 6870 *) perm_rpath="$perm_rpath $libdir" ;;
Chris@4 6871 esac
Chris@4 6872 fi
Chris@4 6873 done
Chris@4 6874 # Substitute the hardcoded libdirs into the rpath.
Chris@4 6875 if test -n "$hardcode_libdir_separator" &&
Chris@4 6876 test -n "$hardcode_libdirs"; then
Chris@4 6877 libdir="$hardcode_libdirs"
Chris@4 6878 if test -n "$hardcode_libdir_flag_spec_ld"; then
Chris@4 6879 eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
Chris@4 6880 else
Chris@4 6881 eval dep_rpath=\"$hardcode_libdir_flag_spec\"
Chris@4 6882 fi
Chris@4 6883 fi
Chris@4 6884 if test -n "$runpath_var" && test -n "$perm_rpath"; then
Chris@4 6885 # We should set the runpath_var.
Chris@4 6886 rpath=
Chris@4 6887 for dir in $perm_rpath; do
Chris@4 6888 rpath="$rpath$dir:"
Chris@4 6889 done
Chris@4 6890 eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
Chris@4 6891 fi
Chris@4 6892 test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
Chris@4 6893 fi
Chris@4 6894
Chris@4 6895 shlibpath="$finalize_shlibpath"
Chris@4 6896 test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
Chris@4 6897 if test -n "$shlibpath"; then
Chris@4 6898 eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
Chris@4 6899 fi
Chris@4 6900
Chris@4 6901 # Get the real and link names of the library.
Chris@4 6902 eval shared_ext=\"$shrext_cmds\"
Chris@4 6903 eval library_names=\"$library_names_spec\"
Chris@4 6904 set dummy $library_names
Chris@4 6905 shift
Chris@4 6906 realname="$1"
Chris@4 6907 shift
Chris@4 6908
Chris@4 6909 if test -n "$soname_spec"; then
Chris@4 6910 eval soname=\"$soname_spec\"
Chris@4 6911 else
Chris@4 6912 soname="$realname"
Chris@4 6913 fi
Chris@4 6914 if test -z "$dlname"; then
Chris@4 6915 dlname=$soname
Chris@4 6916 fi
Chris@4 6917
Chris@4 6918 lib="$output_objdir/$realname"
Chris@4 6919 linknames=
Chris@4 6920 for link
Chris@4 6921 do
Chris@4 6922 linknames="$linknames $link"
Chris@4 6923 done
Chris@4 6924
Chris@4 6925 # Use standard objects if they are pic
Chris@4 6926 test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
Chris@4 6927 test "X$libobjs" = "X " && libobjs=
Chris@4 6928
Chris@4 6929 delfiles=
Chris@4 6930 if test -n "$export_symbols" && test -n "$include_expsyms"; then
Chris@4 6931 $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
Chris@4 6932 export_symbols="$output_objdir/$libname.uexp"
Chris@4 6933 delfiles="$delfiles $export_symbols"
Chris@4 6934 fi
Chris@4 6935
Chris@4 6936 orig_export_symbols=
Chris@4 6937 case $host_os in
Chris@4 6938 cygwin* | mingw*)
Chris@4 6939 if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
Chris@4 6940 # exporting using user supplied symfile
Chris@4 6941 if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
Chris@4 6942 # and it's NOT already a .def file. Must figure out
Chris@4 6943 # which of the given symbols are data symbols and tag
Chris@4 6944 # them as such. So, trigger use of export_symbols_cmds.
Chris@4 6945 # export_symbols gets reassigned inside the "prepare
Chris@4 6946 # the list of exported symbols" if statement, so the
Chris@4 6947 # include_expsyms logic still works.
Chris@4 6948 orig_export_symbols="$export_symbols"
Chris@4 6949 export_symbols=
Chris@4 6950 always_export_symbols=yes
Chris@4 6951 fi
Chris@4 6952 fi
Chris@4 6953 ;;
Chris@4 6954 esac
Chris@4 6955
Chris@4 6956 # Prepare the list of exported symbols
Chris@4 6957 if test -z "$export_symbols"; then
Chris@4 6958 if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
Chris@4 6959 func_verbose "generating symbol list for \`$libname.la'"
Chris@4 6960 export_symbols="$output_objdir/$libname.exp"
Chris@4 6961 $opt_dry_run || $RM $export_symbols
Chris@4 6962 cmds=$export_symbols_cmds
Chris@4 6963 save_ifs="$IFS"; IFS='~'
Chris@4 6964 for cmd in $cmds; do
Chris@4 6965 IFS="$save_ifs"
Chris@4 6966 eval cmd=\"$cmd\"
Chris@4 6967 func_len " $cmd"
Chris@4 6968 len=$func_len_result
Chris@4 6969 if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
Chris@4 6970 func_show_eval "$cmd" 'exit $?'
Chris@4 6971 skipped_export=false
Chris@4 6972 else
Chris@4 6973 # The command line is too long to execute in one step.
Chris@4 6974 func_verbose "using reloadable object file for export list..."
Chris@4 6975 skipped_export=:
Chris@4 6976 # Break out early, otherwise skipped_export may be
Chris@4 6977 # set to false by a later but shorter cmd.
Chris@4 6978 break
Chris@4 6979 fi
Chris@4 6980 done
Chris@4 6981 IFS="$save_ifs"
Chris@4 6982 if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then
Chris@4 6983 func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
Chris@4 6984 func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
Chris@4 6985 fi
Chris@4 6986 fi
Chris@4 6987 fi
Chris@4 6988
Chris@4 6989 if test -n "$export_symbols" && test -n "$include_expsyms"; then
Chris@4 6990 tmp_export_symbols="$export_symbols"
Chris@4 6991 test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
Chris@4 6992 $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
Chris@4 6993 fi
Chris@4 6994
Chris@4 6995 if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
Chris@4 6996 # The given exports_symbols file has to be filtered, so filter it.
Chris@4 6997 func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
Chris@4 6998 # FIXME: $output_objdir/$libname.filter potentially contains lots of
Chris@4 6999 # 's' commands which not all seds can handle. GNU sed should be fine
Chris@4 7000 # though. Also, the filter scales superlinearly with the number of
Chris@4 7001 # global variables. join(1) would be nice here, but unfortunately
Chris@4 7002 # isn't a blessed tool.
Chris@4 7003 $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
Chris@4 7004 delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
Chris@4 7005 export_symbols=$output_objdir/$libname.def
Chris@4 7006 $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
Chris@4 7007 fi
Chris@4 7008
Chris@4 7009 tmp_deplibs=
Chris@4 7010 for test_deplib in $deplibs; do
Chris@4 7011 case " $convenience " in
Chris@4 7012 *" $test_deplib "*) ;;
Chris@4 7013 *)
Chris@4 7014 tmp_deplibs="$tmp_deplibs $test_deplib"
Chris@4 7015 ;;
Chris@4 7016 esac
Chris@4 7017 done
Chris@4 7018 deplibs="$tmp_deplibs"
Chris@4 7019
Chris@4 7020 if test -n "$convenience"; then
Chris@4 7021 if test -n "$whole_archive_flag_spec" &&
Chris@4 7022 test "$compiler_needs_object" = yes &&
Chris@4 7023 test -z "$libobjs"; then
Chris@4 7024 # extract the archives, so we have objects to list.
Chris@4 7025 # TODO: could optimize this to just extract one archive.
Chris@4 7026 whole_archive_flag_spec=
Chris@4 7027 fi
Chris@4 7028 if test -n "$whole_archive_flag_spec"; then
Chris@4 7029 save_libobjs=$libobjs
Chris@4 7030 eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
Chris@4 7031 test "X$libobjs" = "X " && libobjs=
Chris@4 7032 else
Chris@4 7033 gentop="$output_objdir/${outputname}x"
Chris@4 7034 generated="$generated $gentop"
Chris@4 7035
Chris@4 7036 func_extract_archives $gentop $convenience
Chris@4 7037 libobjs="$libobjs $func_extract_archives_result"
Chris@4 7038 test "X$libobjs" = "X " && libobjs=
Chris@4 7039 fi
Chris@4 7040 fi
Chris@4 7041
Chris@4 7042 if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
Chris@4 7043 eval flag=\"$thread_safe_flag_spec\"
Chris@4 7044 linker_flags="$linker_flags $flag"
Chris@4 7045 fi
Chris@4 7046
Chris@4 7047 # Make a backup of the uninstalled library when relinking
Chris@4 7048 if test "$mode" = relink; then
Chris@4 7049 $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
Chris@4 7050 fi
Chris@4 7051
Chris@4 7052 # Do each of the archive commands.
Chris@4 7053 if test "$module" = yes && test -n "$module_cmds" ; then
Chris@4 7054 if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
Chris@4 7055 eval test_cmds=\"$module_expsym_cmds\"
Chris@4 7056 cmds=$module_expsym_cmds
Chris@4 7057 else
Chris@4 7058 eval test_cmds=\"$module_cmds\"
Chris@4 7059 cmds=$module_cmds
Chris@4 7060 fi
Chris@4 7061 else
Chris@4 7062 if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
Chris@4 7063 eval test_cmds=\"$archive_expsym_cmds\"
Chris@4 7064 cmds=$archive_expsym_cmds
Chris@4 7065 else
Chris@4 7066 eval test_cmds=\"$archive_cmds\"
Chris@4 7067 cmds=$archive_cmds
Chris@4 7068 fi
Chris@4 7069 fi
Chris@4 7070
Chris@4 7071 if test "X$skipped_export" != "X:" &&
Chris@4 7072 func_len " $test_cmds" &&
Chris@4 7073 len=$func_len_result &&
Chris@4 7074 test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
Chris@4 7075 :
Chris@4 7076 else
Chris@4 7077 # The command line is too long to link in one step, link piecewise
Chris@4 7078 # or, if using GNU ld and skipped_export is not :, use a linker
Chris@4 7079 # script.
Chris@4 7080
Chris@4 7081 # Save the value of $output and $libobjs because we want to
Chris@4 7082 # use them later. If we have whole_archive_flag_spec, we
Chris@4 7083 # want to use save_libobjs as it was before
Chris@4 7084 # whole_archive_flag_spec was expanded, because we can't
Chris@4 7085 # assume the linker understands whole_archive_flag_spec.
Chris@4 7086 # This may have to be revisited, in case too many
Chris@4 7087 # convenience libraries get linked in and end up exceeding
Chris@4 7088 # the spec.
Chris@4 7089 if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
Chris@4 7090 save_libobjs=$libobjs
Chris@4 7091 fi
Chris@4 7092 save_output=$output
Chris@4 7093 output_la=`$ECHO "X$output" | $Xsed -e "$basename"`
Chris@4 7094
Chris@4 7095 # Clear the reloadable object creation command queue and
Chris@4 7096 # initialize k to one.
Chris@4 7097 test_cmds=
Chris@4 7098 concat_cmds=
Chris@4 7099 objlist=
Chris@4 7100 last_robj=
Chris@4 7101 k=1
Chris@4 7102
Chris@4 7103 if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
Chris@4 7104 output=${output_objdir}/${output_la}.lnkscript
Chris@4 7105 func_verbose "creating GNU ld script: $output"
Chris@4 7106 $ECHO 'INPUT (' > $output
Chris@4 7107 for obj in $save_libobjs
Chris@4 7108 do
Chris@4 7109 $ECHO "$obj" >> $output
Chris@4 7110 done
Chris@4 7111 $ECHO ')' >> $output
Chris@4 7112 delfiles="$delfiles $output"
Chris@4 7113 elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
Chris@4 7114 output=${output_objdir}/${output_la}.lnk
Chris@4 7115 func_verbose "creating linker input file list: $output"
Chris@4 7116 : > $output
Chris@4 7117 set x $save_libobjs
Chris@4 7118 shift
Chris@4 7119 firstobj=
Chris@4 7120 if test "$compiler_needs_object" = yes; then
Chris@4 7121 firstobj="$1 "
Chris@4 7122 shift
Chris@4 7123 fi
Chris@4 7124 for obj
Chris@4 7125 do
Chris@4 7126 $ECHO "$obj" >> $output
Chris@4 7127 done
Chris@4 7128 delfiles="$delfiles $output"
Chris@4 7129 output=$firstobj\"$file_list_spec$output\"
Chris@4 7130 else
Chris@4 7131 if test -n "$save_libobjs"; then
Chris@4 7132 func_verbose "creating reloadable object files..."
Chris@4 7133 output=$output_objdir/$output_la-${k}.$objext
Chris@4 7134 eval test_cmds=\"$reload_cmds\"
Chris@4 7135 func_len " $test_cmds"
Chris@4 7136 len0=$func_len_result
Chris@4 7137 len=$len0
Chris@4 7138
Chris@4 7139 # Loop over the list of objects to be linked.
Chris@4 7140 for obj in $save_libobjs
Chris@4 7141 do
Chris@4 7142 func_len " $obj"
Chris@4 7143 func_arith $len + $func_len_result
Chris@4 7144 len=$func_arith_result
Chris@4 7145 if test "X$objlist" = X ||
Chris@4 7146 test "$len" -lt "$max_cmd_len"; then
Chris@4 7147 func_append objlist " $obj"
Chris@4 7148 else
Chris@4 7149 # The command $test_cmds is almost too long, add a
Chris@4 7150 # command to the queue.
Chris@4 7151 if test "$k" -eq 1 ; then
Chris@4 7152 # The first file doesn't have a previous command to add.
Chris@4 7153 eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
Chris@4 7154 else
Chris@4 7155 # All subsequent reloadable object files will link in
Chris@4 7156 # the last one created.
Chris@4 7157 eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj~\$RM $last_robj\"
Chris@4 7158 fi
Chris@4 7159 last_robj=$output_objdir/$output_la-${k}.$objext
Chris@4 7160 func_arith $k + 1
Chris@4 7161 k=$func_arith_result
Chris@4 7162 output=$output_objdir/$output_la-${k}.$objext
Chris@4 7163 objlist=$obj
Chris@4 7164 func_len " $last_robj"
Chris@4 7165 func_arith $len0 + $func_len_result
Chris@4 7166 len=$func_arith_result
Chris@4 7167 fi
Chris@4 7168 done
Chris@4 7169 # Handle the remaining objects by creating one last
Chris@4 7170 # reloadable object file. All subsequent reloadable object
Chris@4 7171 # files will link in the last one created.
Chris@4 7172 test -z "$concat_cmds" || concat_cmds=$concat_cmds~
Chris@4 7173 eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
Chris@4 7174 if test -n "$last_robj"; then
Chris@4 7175 eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
Chris@4 7176 fi
Chris@4 7177 delfiles="$delfiles $output"
Chris@4 7178
Chris@4 7179 else
Chris@4 7180 output=
Chris@4 7181 fi
Chris@4 7182
Chris@4 7183 if ${skipped_export-false}; then
Chris@4 7184 func_verbose "generating symbol list for \`$libname.la'"
Chris@4 7185 export_symbols="$output_objdir/$libname.exp"
Chris@4 7186 $opt_dry_run || $RM $export_symbols
Chris@4 7187 libobjs=$output
Chris@4 7188 # Append the command to create the export file.
Chris@4 7189 test -z "$concat_cmds" || concat_cmds=$concat_cmds~
Chris@4 7190 eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
Chris@4 7191 if test -n "$last_robj"; then
Chris@4 7192 eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
Chris@4 7193 fi
Chris@4 7194 fi
Chris@4 7195
Chris@4 7196 test -n "$save_libobjs" &&
Chris@4 7197 func_verbose "creating a temporary reloadable object file: $output"
Chris@4 7198
Chris@4 7199 # Loop through the commands generated above and execute them.
Chris@4 7200 save_ifs="$IFS"; IFS='~'
Chris@4 7201 for cmd in $concat_cmds; do
Chris@4 7202 IFS="$save_ifs"
Chris@4 7203 $opt_silent || {
Chris@4 7204 func_quote_for_expand "$cmd"
Chris@4 7205 eval "func_echo $func_quote_for_expand_result"
Chris@4 7206 }
Chris@4 7207 $opt_dry_run || eval "$cmd" || {
Chris@4 7208 lt_exit=$?
Chris@4 7209
Chris@4 7210 # Restore the uninstalled library and exit
Chris@4 7211 if test "$mode" = relink; then
Chris@4 7212 ( cd "$output_objdir" && \
Chris@4 7213 $RM "${realname}T" && \
Chris@4 7214 $MV "${realname}U" "$realname" )
Chris@4 7215 fi
Chris@4 7216
Chris@4 7217 exit $lt_exit
Chris@4 7218 }
Chris@4 7219 done
Chris@4 7220 IFS="$save_ifs"
Chris@4 7221
Chris@4 7222 if test -n "$export_symbols_regex" && ${skipped_export-false}; then
Chris@4 7223 func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
Chris@4 7224 func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
Chris@4 7225 fi
Chris@4 7226 fi
Chris@4 7227
Chris@4 7228 if ${skipped_export-false}; then
Chris@4 7229 if test -n "$export_symbols" && test -n "$include_expsyms"; then
Chris@4 7230 tmp_export_symbols="$export_symbols"
Chris@4 7231 test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
Chris@4 7232 $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
Chris@4 7233 fi
Chris@4 7234
Chris@4 7235 if test -n "$orig_export_symbols"; then
Chris@4 7236 # The given exports_symbols file has to be filtered, so filter it.
Chris@4 7237 func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
Chris@4 7238 # FIXME: $output_objdir/$libname.filter potentially contains lots of
Chris@4 7239 # 's' commands which not all seds can handle. GNU sed should be fine
Chris@4 7240 # though. Also, the filter scales superlinearly with the number of
Chris@4 7241 # global variables. join(1) would be nice here, but unfortunately
Chris@4 7242 # isn't a blessed tool.
Chris@4 7243 $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
Chris@4 7244 delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
Chris@4 7245 export_symbols=$output_objdir/$libname.def
Chris@4 7246 $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
Chris@4 7247 fi
Chris@4 7248 fi
Chris@4 7249
Chris@4 7250 libobjs=$output
Chris@4 7251 # Restore the value of output.
Chris@4 7252 output=$save_output
Chris@4 7253
Chris@4 7254 if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
Chris@4 7255 eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
Chris@4 7256 test "X$libobjs" = "X " && libobjs=
Chris@4 7257 fi
Chris@4 7258 # Expand the library linking commands again to reset the
Chris@4 7259 # value of $libobjs for piecewise linking.
Chris@4 7260
Chris@4 7261 # Do each of the archive commands.
Chris@4 7262 if test "$module" = yes && test -n "$module_cmds" ; then
Chris@4 7263 if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
Chris@4 7264 cmds=$module_expsym_cmds
Chris@4 7265 else
Chris@4 7266 cmds=$module_cmds
Chris@4 7267 fi
Chris@4 7268 else
Chris@4 7269 if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
Chris@4 7270 cmds=$archive_expsym_cmds
Chris@4 7271 else
Chris@4 7272 cmds=$archive_cmds
Chris@4 7273 fi
Chris@4 7274 fi
Chris@4 7275 fi
Chris@4 7276
Chris@4 7277 if test -n "$delfiles"; then
Chris@4 7278 # Append the command to remove temporary files to $cmds.
Chris@4 7279 eval cmds=\"\$cmds~\$RM $delfiles\"
Chris@4 7280 fi
Chris@4 7281
Chris@4 7282 # Add any objects from preloaded convenience libraries
Chris@4 7283 if test -n "$dlprefiles"; then
Chris@4 7284 gentop="$output_objdir/${outputname}x"
Chris@4 7285 generated="$generated $gentop"
Chris@4 7286
Chris@4 7287 func_extract_archives $gentop $dlprefiles
Chris@4 7288 libobjs="$libobjs $func_extract_archives_result"
Chris@4 7289 test "X$libobjs" = "X " && libobjs=
Chris@4 7290 fi
Chris@4 7291
Chris@4 7292 save_ifs="$IFS"; IFS='~'
Chris@4 7293 for cmd in $cmds; do
Chris@4 7294 IFS="$save_ifs"
Chris@4 7295 eval cmd=\"$cmd\"
Chris@4 7296 $opt_silent || {
Chris@4 7297 func_quote_for_expand "$cmd"
Chris@4 7298 eval "func_echo $func_quote_for_expand_result"
Chris@4 7299 }
Chris@4 7300 $opt_dry_run || eval "$cmd" || {
Chris@4 7301 lt_exit=$?
Chris@4 7302
Chris@4 7303 # Restore the uninstalled library and exit
Chris@4 7304 if test "$mode" = relink; then
Chris@4 7305 ( cd "$output_objdir" && \
Chris@4 7306 $RM "${realname}T" && \
Chris@4 7307 $MV "${realname}U" "$realname" )
Chris@4 7308 fi
Chris@4 7309
Chris@4 7310 exit $lt_exit
Chris@4 7311 }
Chris@4 7312 done
Chris@4 7313 IFS="$save_ifs"
Chris@4 7314
Chris@4 7315 # Restore the uninstalled library and exit
Chris@4 7316 if test "$mode" = relink; then
Chris@4 7317 $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
Chris@4 7318
Chris@4 7319 if test -n "$convenience"; then
Chris@4 7320 if test -z "$whole_archive_flag_spec"; then
Chris@4 7321 func_show_eval '${RM}r "$gentop"'
Chris@4 7322 fi
Chris@4 7323 fi
Chris@4 7324
Chris@4 7325 exit $EXIT_SUCCESS
Chris@4 7326 fi
Chris@4 7327
Chris@4 7328 # Create links to the real library.
Chris@4 7329 for linkname in $linknames; do
Chris@4 7330 if test "$realname" != "$linkname"; then
Chris@4 7331 func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
Chris@4 7332 fi
Chris@4 7333 done
Chris@4 7334
Chris@4 7335 # If -module or -export-dynamic was specified, set the dlname.
Chris@4 7336 if test "$module" = yes || test "$export_dynamic" = yes; then
Chris@4 7337 # On all known operating systems, these are identical.
Chris@4 7338 dlname="$soname"
Chris@4 7339 fi
Chris@4 7340 fi
Chris@4 7341 ;;
Chris@4 7342
Chris@4 7343 obj)
Chris@4 7344 if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
Chris@4 7345 func_warning "\`-dlopen' is ignored for objects"
Chris@4 7346 fi
Chris@4 7347
Chris@4 7348 case " $deplibs" in
Chris@4 7349 *\ -l* | *\ -L*)
Chris@4 7350 func_warning "\`-l' and \`-L' are ignored for objects" ;;
Chris@4 7351 esac
Chris@4 7352
Chris@4 7353 test -n "$rpath" && \
Chris@4 7354 func_warning "\`-rpath' is ignored for objects"
Chris@4 7355
Chris@4 7356 test -n "$xrpath" && \
Chris@4 7357 func_warning "\`-R' is ignored for objects"
Chris@4 7358
Chris@4 7359 test -n "$vinfo" && \
Chris@4 7360 func_warning "\`-version-info' is ignored for objects"
Chris@4 7361
Chris@4 7362 test -n "$release" && \
Chris@4 7363 func_warning "\`-release' is ignored for objects"
Chris@4 7364
Chris@4 7365 case $output in
Chris@4 7366 *.lo)
Chris@4 7367 test -n "$objs$old_deplibs" && \
Chris@4 7368 func_fatal_error "cannot build library object \`$output' from non-libtool objects"
Chris@4 7369
Chris@4 7370 libobj=$output
Chris@4 7371 func_lo2o "$libobj"
Chris@4 7372 obj=$func_lo2o_result
Chris@4 7373 ;;
Chris@4 7374 *)
Chris@4 7375 libobj=
Chris@4 7376 obj="$output"
Chris@4 7377 ;;
Chris@4 7378 esac
Chris@4 7379
Chris@4 7380 # Delete the old objects.
Chris@4 7381 $opt_dry_run || $RM $obj $libobj
Chris@4 7382
Chris@4 7383 # Objects from convenience libraries. This assumes
Chris@4 7384 # single-version convenience libraries. Whenever we create
Chris@4 7385 # different ones for PIC/non-PIC, this we'll have to duplicate
Chris@4 7386 # the extraction.
Chris@4 7387 reload_conv_objs=
Chris@4 7388 gentop=
Chris@4 7389 # reload_cmds runs $LD directly, so let us get rid of
Chris@4 7390 # -Wl from whole_archive_flag_spec and hope we can get by with
Chris@4 7391 # turning comma into space..
Chris@4 7392 wl=
Chris@4 7393
Chris@4 7394 if test -n "$convenience"; then
Chris@4 7395 if test -n "$whole_archive_flag_spec"; then
Chris@4 7396 eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
Chris@4 7397 reload_conv_objs=$reload_objs\ `$ECHO "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'`
Chris@4 7398 else
Chris@4 7399 gentop="$output_objdir/${obj}x"
Chris@4 7400 generated="$generated $gentop"
Chris@4 7401
Chris@4 7402 func_extract_archives $gentop $convenience
Chris@4 7403 reload_conv_objs="$reload_objs $func_extract_archives_result"
Chris@4 7404 fi
Chris@4 7405 fi
Chris@4 7406
Chris@4 7407 # Create the old-style object.
Chris@4 7408 reload_objs="$objs$old_deplibs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
Chris@4 7409
Chris@4 7410 output="$obj"
Chris@4 7411 func_execute_cmds "$reload_cmds" 'exit $?'
Chris@4 7412
Chris@4 7413 # Exit if we aren't doing a library object file.
Chris@4 7414 if test -z "$libobj"; then
Chris@4 7415 if test -n "$gentop"; then
Chris@4 7416 func_show_eval '${RM}r "$gentop"'
Chris@4 7417 fi
Chris@4 7418
Chris@4 7419 exit $EXIT_SUCCESS
Chris@4 7420 fi
Chris@4 7421
Chris@4 7422 if test "$build_libtool_libs" != yes; then
Chris@4 7423 if test -n "$gentop"; then
Chris@4 7424 func_show_eval '${RM}r "$gentop"'
Chris@4 7425 fi
Chris@4 7426
Chris@4 7427 # Create an invalid libtool object if no PIC, so that we don't
Chris@4 7428 # accidentally link it into a program.
Chris@4 7429 # $show "echo timestamp > $libobj"
Chris@4 7430 # $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
Chris@4 7431 exit $EXIT_SUCCESS
Chris@4 7432 fi
Chris@4 7433
Chris@4 7434 if test -n "$pic_flag" || test "$pic_mode" != default; then
Chris@4 7435 # Only do commands if we really have different PIC objects.
Chris@4 7436 reload_objs="$libobjs $reload_conv_objs"
Chris@4 7437 output="$libobj"
Chris@4 7438 func_execute_cmds "$reload_cmds" 'exit $?'
Chris@4 7439 fi
Chris@4 7440
Chris@4 7441 if test -n "$gentop"; then
Chris@4 7442 func_show_eval '${RM}r "$gentop"'
Chris@4 7443 fi
Chris@4 7444
Chris@4 7445 exit $EXIT_SUCCESS
Chris@4 7446 ;;
Chris@4 7447
Chris@4 7448 prog)
Chris@4 7449 case $host in
Chris@4 7450 *cygwin*) func_stripname '' '.exe' "$output"
Chris@4 7451 output=$func_stripname_result.exe;;
Chris@4 7452 esac
Chris@4 7453 test -n "$vinfo" && \
Chris@4 7454 func_warning "\`-version-info' is ignored for programs"
Chris@4 7455
Chris@4 7456 test -n "$release" && \
Chris@4 7457 func_warning "\`-release' is ignored for programs"
Chris@4 7458
Chris@4 7459 test "$preload" = yes \
Chris@4 7460 && test "$dlopen_support" = unknown \
Chris@4 7461 && test "$dlopen_self" = unknown \
Chris@4 7462 && test "$dlopen_self_static" = unknown && \
Chris@4 7463 func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
Chris@4 7464
Chris@4 7465 case $host in
Chris@4 7466 *-*-rhapsody* | *-*-darwin1.[012])
Chris@4 7467 # On Rhapsody replace the C library is the System framework
Chris@4 7468 compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
Chris@4 7469 finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
Chris@4 7470 ;;
Chris@4 7471 esac
Chris@4 7472
Chris@4 7473 case $host in
Chris@4 7474 *-*-darwin*)
Chris@4 7475 # Don't allow lazy linking, it breaks C++ global constructors
Chris@4 7476 # But is supposedly fixed on 10.4 or later (yay!).
Chris@4 7477 if test "$tagname" = CXX ; then
Chris@4 7478 case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
Chris@4 7479 10.[0123])
Chris@4 7480 compile_command="$compile_command ${wl}-bind_at_load"
Chris@4 7481 finalize_command="$finalize_command ${wl}-bind_at_load"
Chris@4 7482 ;;
Chris@4 7483 esac
Chris@4 7484 fi
Chris@4 7485 # Time to change all our "foo.ltframework" stuff back to "-framework foo"
Chris@4 7486 compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
Chris@4 7487 finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
Chris@4 7488 ;;
Chris@4 7489 esac
Chris@4 7490
Chris@4 7491
Chris@4 7492 # move library search paths that coincide with paths to not yet
Chris@4 7493 # installed libraries to the beginning of the library search list
Chris@4 7494 new_libs=
Chris@4 7495 for path in $notinst_path; do
Chris@4 7496 case " $new_libs " in
Chris@4 7497 *" -L$path/$objdir "*) ;;
Chris@4 7498 *)
Chris@4 7499 case " $compile_deplibs " in
Chris@4 7500 *" -L$path/$objdir "*)
Chris@4 7501 new_libs="$new_libs -L$path/$objdir" ;;
Chris@4 7502 esac
Chris@4 7503 ;;
Chris@4 7504 esac
Chris@4 7505 done
Chris@4 7506 for deplib in $compile_deplibs; do
Chris@4 7507 case $deplib in
Chris@4 7508 -L*)
Chris@4 7509 case " $new_libs " in
Chris@4 7510 *" $deplib "*) ;;
Chris@4 7511 *) new_libs="$new_libs $deplib" ;;
Chris@4 7512 esac
Chris@4 7513 ;;
Chris@4 7514 *) new_libs="$new_libs $deplib" ;;
Chris@4 7515 esac
Chris@4 7516 done
Chris@4 7517 compile_deplibs="$new_libs"
Chris@4 7518
Chris@4 7519
Chris@4 7520 compile_command="$compile_command $compile_deplibs"
Chris@4 7521 finalize_command="$finalize_command $finalize_deplibs"
Chris@4 7522
Chris@4 7523 if test -n "$rpath$xrpath"; then
Chris@4 7524 # If the user specified any rpath flags, then add them.
Chris@4 7525 for libdir in $rpath $xrpath; do
Chris@4 7526 # This is the magic to use -rpath.
Chris@4 7527 case "$finalize_rpath " in
Chris@4 7528 *" $libdir "*) ;;
Chris@4 7529 *) finalize_rpath="$finalize_rpath $libdir" ;;
Chris@4 7530 esac
Chris@4 7531 done
Chris@4 7532 fi
Chris@4 7533
Chris@4 7534 # Now hardcode the library paths
Chris@4 7535 rpath=
Chris@4 7536 hardcode_libdirs=
Chris@4 7537 for libdir in $compile_rpath $finalize_rpath; do
Chris@4 7538 if test -n "$hardcode_libdir_flag_spec"; then
Chris@4 7539 if test -n "$hardcode_libdir_separator"; then
Chris@4 7540 if test -z "$hardcode_libdirs"; then
Chris@4 7541 hardcode_libdirs="$libdir"
Chris@4 7542 else
Chris@4 7543 # Just accumulate the unique libdirs.
Chris@4 7544 case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
Chris@4 7545 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
Chris@4 7546 ;;
Chris@4 7547 *)
Chris@4 7548 hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
Chris@4 7549 ;;
Chris@4 7550 esac
Chris@4 7551 fi
Chris@4 7552 else
Chris@4 7553 eval flag=\"$hardcode_libdir_flag_spec\"
Chris@4 7554 rpath="$rpath $flag"
Chris@4 7555 fi
Chris@4 7556 elif test -n "$runpath_var"; then
Chris@4 7557 case "$perm_rpath " in
Chris@4 7558 *" $libdir "*) ;;
Chris@4 7559 *) perm_rpath="$perm_rpath $libdir" ;;
Chris@4 7560 esac
Chris@4 7561 fi
Chris@4 7562 case $host in
Chris@4 7563 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
Chris@4 7564 testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
Chris@4 7565 case :$dllsearchpath: in
Chris@4 7566 *":$libdir:"*) ;;
Chris@4 7567 *) dllsearchpath="$dllsearchpath:$libdir";;
Chris@4 7568 esac
Chris@4 7569 case :$dllsearchpath: in
Chris@4 7570 *":$testbindir:"*) ;;
Chris@4 7571 *) dllsearchpath="$dllsearchpath:$testbindir";;
Chris@4 7572 esac
Chris@4 7573 ;;
Chris@4 7574 esac
Chris@4 7575 done
Chris@4 7576 # Substitute the hardcoded libdirs into the rpath.
Chris@4 7577 if test -n "$hardcode_libdir_separator" &&
Chris@4 7578 test -n "$hardcode_libdirs"; then
Chris@4 7579 libdir="$hardcode_libdirs"
Chris@4 7580 eval rpath=\" $hardcode_libdir_flag_spec\"
Chris@4 7581 fi
Chris@4 7582 compile_rpath="$rpath"
Chris@4 7583
Chris@4 7584 rpath=
Chris@4 7585 hardcode_libdirs=
Chris@4 7586 for libdir in $finalize_rpath; do
Chris@4 7587 if test -n "$hardcode_libdir_flag_spec"; then
Chris@4 7588 if test -n "$hardcode_libdir_separator"; then
Chris@4 7589 if test -z "$hardcode_libdirs"; then
Chris@4 7590 hardcode_libdirs="$libdir"
Chris@4 7591 else
Chris@4 7592 # Just accumulate the unique libdirs.
Chris@4 7593 case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
Chris@4 7594 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
Chris@4 7595 ;;
Chris@4 7596 *)
Chris@4 7597 hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
Chris@4 7598 ;;
Chris@4 7599 esac
Chris@4 7600 fi
Chris@4 7601 else
Chris@4 7602 eval flag=\"$hardcode_libdir_flag_spec\"
Chris@4 7603 rpath="$rpath $flag"
Chris@4 7604 fi
Chris@4 7605 elif test -n "$runpath_var"; then
Chris@4 7606 case "$finalize_perm_rpath " in
Chris@4 7607 *" $libdir "*) ;;
Chris@4 7608 *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
Chris@4 7609 esac
Chris@4 7610 fi
Chris@4 7611 done
Chris@4 7612 # Substitute the hardcoded libdirs into the rpath.
Chris@4 7613 if test -n "$hardcode_libdir_separator" &&
Chris@4 7614 test -n "$hardcode_libdirs"; then
Chris@4 7615 libdir="$hardcode_libdirs"
Chris@4 7616 eval rpath=\" $hardcode_libdir_flag_spec\"
Chris@4 7617 fi
Chris@4 7618 finalize_rpath="$rpath"
Chris@4 7619
Chris@4 7620 if test -n "$libobjs" && test "$build_old_libs" = yes; then
Chris@4 7621 # Transform all the library objects into standard objects.
Chris@4 7622 compile_command=`$ECHO "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
Chris@4 7623 finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
Chris@4 7624 fi
Chris@4 7625
Chris@4 7626 func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
Chris@4 7627
Chris@4 7628 # template prelinking step
Chris@4 7629 if test -n "$prelink_cmds"; then
Chris@4 7630 func_execute_cmds "$prelink_cmds" 'exit $?'
Chris@4 7631 fi
Chris@4 7632
Chris@4 7633 wrappers_required=yes
Chris@4 7634 case $host in
Chris@4 7635 *cygwin* | *mingw* )
Chris@4 7636 if test "$build_libtool_libs" != yes; then
Chris@4 7637 wrappers_required=no
Chris@4 7638 fi
Chris@4 7639 ;;
Chris@4 7640 *)
Chris@4 7641 if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
Chris@4 7642 wrappers_required=no
Chris@4 7643 fi
Chris@4 7644 ;;
Chris@4 7645 esac
Chris@4 7646 if test "$wrappers_required" = no; then
Chris@4 7647 # Replace the output file specification.
Chris@4 7648 compile_command=`$ECHO "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
Chris@4 7649 link_command="$compile_command$compile_rpath"
Chris@4 7650
Chris@4 7651 # We have no uninstalled library dependencies, so finalize right now.
Chris@4 7652 exit_status=0
Chris@4 7653 func_show_eval "$link_command" 'exit_status=$?'
Chris@4 7654
Chris@4 7655 # Delete the generated files.
Chris@4 7656 if test -f "$output_objdir/${outputname}S.${objext}"; then
Chris@4 7657 func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
Chris@4 7658 fi
Chris@4 7659
Chris@4 7660 exit $exit_status
Chris@4 7661 fi
Chris@4 7662
Chris@4 7663 if test -n "$compile_shlibpath$finalize_shlibpath"; then
Chris@4 7664 compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
Chris@4 7665 fi
Chris@4 7666 if test -n "$finalize_shlibpath"; then
Chris@4 7667 finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
Chris@4 7668 fi
Chris@4 7669
Chris@4 7670 compile_var=
Chris@4 7671 finalize_var=
Chris@4 7672 if test -n "$runpath_var"; then
Chris@4 7673 if test -n "$perm_rpath"; then
Chris@4 7674 # We should set the runpath_var.
Chris@4 7675 rpath=
Chris@4 7676 for dir in $perm_rpath; do
Chris@4 7677 rpath="$rpath$dir:"
Chris@4 7678 done
Chris@4 7679 compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
Chris@4 7680 fi
Chris@4 7681 if test -n "$finalize_perm_rpath"; then
Chris@4 7682 # We should set the runpath_var.
Chris@4 7683 rpath=
Chris@4 7684 for dir in $finalize_perm_rpath; do
Chris@4 7685 rpath="$rpath$dir:"
Chris@4 7686 done
Chris@4 7687 finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
Chris@4 7688 fi
Chris@4 7689 fi
Chris@4 7690
Chris@4 7691 if test "$no_install" = yes; then
Chris@4 7692 # We don't need to create a wrapper script.
Chris@4 7693 link_command="$compile_var$compile_command$compile_rpath"
Chris@4 7694 # Replace the output file specification.
Chris@4 7695 link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
Chris@4 7696 # Delete the old output file.
Chris@4 7697 $opt_dry_run || $RM $output
Chris@4 7698 # Link the executable and exit
Chris@4 7699 func_show_eval "$link_command" 'exit $?'
Chris@4 7700 exit $EXIT_SUCCESS
Chris@4 7701 fi
Chris@4 7702
Chris@4 7703 if test "$hardcode_action" = relink; then
Chris@4 7704 # Fast installation is not supported
Chris@4 7705 link_command="$compile_var$compile_command$compile_rpath"
Chris@4 7706 relink_command="$finalize_var$finalize_command$finalize_rpath"
Chris@4 7707
Chris@4 7708 func_warning "this platform does not like uninstalled shared libraries"
Chris@4 7709 func_warning "\`$output' will be relinked during installation"
Chris@4 7710 else
Chris@4 7711 if test "$fast_install" != no; then
Chris@4 7712 link_command="$finalize_var$compile_command$finalize_rpath"
Chris@4 7713 if test "$fast_install" = yes; then
Chris@4 7714 relink_command=`$ECHO "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
Chris@4 7715 else
Chris@4 7716 # fast_install is set to needless
Chris@4 7717 relink_command=
Chris@4 7718 fi
Chris@4 7719 else
Chris@4 7720 link_command="$compile_var$compile_command$compile_rpath"
Chris@4 7721 relink_command="$finalize_var$finalize_command$finalize_rpath"
Chris@4 7722 fi
Chris@4 7723 fi
Chris@4 7724
Chris@4 7725 # Replace the output file specification.
Chris@4 7726 link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
Chris@4 7727
Chris@4 7728 # Delete the old output files.
Chris@4 7729 $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
Chris@4 7730
Chris@4 7731 func_show_eval "$link_command" 'exit $?'
Chris@4 7732
Chris@4 7733 # Now create the wrapper script.
Chris@4 7734 func_verbose "creating $output"
Chris@4 7735
Chris@4 7736 # Quote the relink command for shipping.
Chris@4 7737 if test -n "$relink_command"; then
Chris@4 7738 # Preserve any variables that may affect compiler behavior
Chris@4 7739 for var in $variables_saved_for_relink; do
Chris@4 7740 if eval test -z \"\${$var+set}\"; then
Chris@4 7741 relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
Chris@4 7742 elif eval var_value=\$$var; test -z "$var_value"; then
Chris@4 7743 relink_command="$var=; export $var; $relink_command"
Chris@4 7744 else
Chris@4 7745 func_quote_for_eval "$var_value"
Chris@4 7746 relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
Chris@4 7747 fi
Chris@4 7748 done
Chris@4 7749 relink_command="(cd `pwd`; $relink_command)"
Chris@4 7750 relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
Chris@4 7751 fi
Chris@4 7752
Chris@4 7753 # Quote $ECHO for shipping.
Chris@4 7754 if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then
Chris@4 7755 case $progpath in
Chris@4 7756 [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";;
Chris@4 7757 *) qecho="$SHELL `pwd`/$progpath --fallback-echo";;
Chris@4 7758 esac
Chris@4 7759 qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"`
Chris@4 7760 else
Chris@4 7761 qecho=`$ECHO "X$ECHO" | $Xsed -e "$sed_quote_subst"`
Chris@4 7762 fi
Chris@4 7763
Chris@4 7764 # Only actually do things if not in dry run mode.
Chris@4 7765 $opt_dry_run || {
Chris@4 7766 # win32 will think the script is a binary if it has
Chris@4 7767 # a .exe suffix, so we strip it off here.
Chris@4 7768 case $output in
Chris@4 7769 *.exe) func_stripname '' '.exe' "$output"
Chris@4 7770 output=$func_stripname_result ;;
Chris@4 7771 esac
Chris@4 7772 # test for cygwin because mv fails w/o .exe extensions
Chris@4 7773 case $host in
Chris@4 7774 *cygwin*)
Chris@4 7775 exeext=.exe
Chris@4 7776 func_stripname '' '.exe' "$outputname"
Chris@4 7777 outputname=$func_stripname_result ;;
Chris@4 7778 *) exeext= ;;
Chris@4 7779 esac
Chris@4 7780 case $host in
Chris@4 7781 *cygwin* | *mingw* )
Chris@4 7782 func_dirname_and_basename "$output" "" "."
Chris@4 7783 output_name=$func_basename_result
Chris@4 7784 output_path=$func_dirname_result
Chris@4 7785 cwrappersource="$output_path/$objdir/lt-$output_name.c"
Chris@4 7786 cwrapper="$output_path/$output_name.exe"
Chris@4 7787 $RM $cwrappersource $cwrapper
Chris@4 7788 trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
Chris@4 7789
Chris@4 7790 func_emit_cwrapperexe_src > $cwrappersource
Chris@4 7791
Chris@4 7792 # we should really use a build-platform specific compiler
Chris@4 7793 # here, but OTOH, the wrappers (shell script and this C one)
Chris@4 7794 # are only useful if you want to execute the "real" binary.
Chris@4 7795 # Since the "real" binary is built for $host, then this
Chris@4 7796 # wrapper might as well be built for $host, too.
Chris@4 7797 $opt_dry_run || {
Chris@4 7798 $LTCC $LTCFLAGS -o $cwrapper $cwrappersource
Chris@4 7799 $STRIP $cwrapper
Chris@4 7800 }
Chris@4 7801
Chris@4 7802 # Now, create the wrapper script for func_source use:
Chris@4 7803 func_ltwrapper_scriptname $cwrapper
Chris@4 7804 $RM $func_ltwrapper_scriptname_result
Chris@4 7805 trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
Chris@4 7806 $opt_dry_run || {
Chris@4 7807 # note: this script will not be executed, so do not chmod.
Chris@4 7808 if test "x$build" = "x$host" ; then
Chris@4 7809 $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
Chris@4 7810 else
Chris@4 7811 func_emit_wrapper no > $func_ltwrapper_scriptname_result
Chris@4 7812 fi
Chris@4 7813 }
Chris@4 7814 ;;
Chris@4 7815 * )
Chris@4 7816 $RM $output
Chris@4 7817 trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
Chris@4 7818
Chris@4 7819 func_emit_wrapper no > $output
Chris@4 7820 chmod +x $output
Chris@4 7821 ;;
Chris@4 7822 esac
Chris@4 7823 }
Chris@4 7824 exit $EXIT_SUCCESS
Chris@4 7825 ;;
Chris@4 7826 esac
Chris@4 7827
Chris@4 7828 # See if we need to build an old-fashioned archive.
Chris@4 7829 for oldlib in $oldlibs; do
Chris@4 7830
Chris@4 7831 if test "$build_libtool_libs" = convenience; then
Chris@4 7832 oldobjs="$libobjs_save $symfileobj"
Chris@4 7833 addlibs="$convenience"
Chris@4 7834 build_libtool_libs=no
Chris@4 7835 else
Chris@4 7836 if test "$build_libtool_libs" = module; then
Chris@4 7837 oldobjs="$libobjs_save"
Chris@4 7838 build_libtool_libs=no
Chris@4 7839 else
Chris@4 7840 oldobjs="$old_deplibs $non_pic_objects"
Chris@4 7841 if test "$preload" = yes && test -f "$symfileobj"; then
Chris@4 7842 oldobjs="$oldobjs $symfileobj"
Chris@4 7843 fi
Chris@4 7844 fi
Chris@4 7845 addlibs="$old_convenience"
Chris@4 7846 fi
Chris@4 7847
Chris@4 7848 if test -n "$addlibs"; then
Chris@4 7849 gentop="$output_objdir/${outputname}x"
Chris@4 7850 generated="$generated $gentop"
Chris@4 7851
Chris@4 7852 func_extract_archives $gentop $addlibs
Chris@4 7853 oldobjs="$oldobjs $func_extract_archives_result"
Chris@4 7854 fi
Chris@4 7855
Chris@4 7856 # Do each command in the archive commands.
Chris@4 7857 if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
Chris@4 7858 cmds=$old_archive_from_new_cmds
Chris@4 7859 else
Chris@4 7860
Chris@4 7861 # Add any objects from preloaded convenience libraries
Chris@4 7862 if test -n "$dlprefiles"; then
Chris@4 7863 gentop="$output_objdir/${outputname}x"
Chris@4 7864 generated="$generated $gentop"
Chris@4 7865
Chris@4 7866 func_extract_archives $gentop $dlprefiles
Chris@4 7867 oldobjs="$oldobjs $func_extract_archives_result"
Chris@4 7868 fi
Chris@4 7869
Chris@4 7870 # POSIX demands no paths to be encoded in archives. We have
Chris@4 7871 # to avoid creating archives with duplicate basenames if we
Chris@4 7872 # might have to extract them afterwards, e.g., when creating a
Chris@4 7873 # static archive out of a convenience library, or when linking
Chris@4 7874 # the entirety of a libtool archive into another (currently
Chris@4 7875 # not supported by libtool).
Chris@4 7876 if (for obj in $oldobjs
Chris@4 7877 do
Chris@4 7878 func_basename "$obj"
Chris@4 7879 $ECHO "$func_basename_result"
Chris@4 7880 done | sort | sort -uc >/dev/null 2>&1); then
Chris@4 7881 :
Chris@4 7882 else
Chris@4 7883 $ECHO "copying selected object files to avoid basename conflicts..."
Chris@4 7884 gentop="$output_objdir/${outputname}x"
Chris@4 7885 generated="$generated $gentop"
Chris@4 7886 func_mkdir_p "$gentop"
Chris@4 7887 save_oldobjs=$oldobjs
Chris@4 7888 oldobjs=
Chris@4 7889 counter=1
Chris@4 7890 for obj in $save_oldobjs
Chris@4 7891 do
Chris@4 7892 func_basename "$obj"
Chris@4 7893 objbase="$func_basename_result"
Chris@4 7894 case " $oldobjs " in
Chris@4 7895 " ") oldobjs=$obj ;;
Chris@4 7896 *[\ /]"$objbase "*)
Chris@4 7897 while :; do
Chris@4 7898 # Make sure we don't pick an alternate name that also
Chris@4 7899 # overlaps.
Chris@4 7900 newobj=lt$counter-$objbase
Chris@4 7901 func_arith $counter + 1
Chris@4 7902 counter=$func_arith_result
Chris@4 7903 case " $oldobjs " in
Chris@4 7904 *[\ /]"$newobj "*) ;;
Chris@4 7905 *) if test ! -f "$gentop/$newobj"; then break; fi ;;
Chris@4 7906 esac
Chris@4 7907 done
Chris@4 7908 func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
Chris@4 7909 oldobjs="$oldobjs $gentop/$newobj"
Chris@4 7910 ;;
Chris@4 7911 *) oldobjs="$oldobjs $obj" ;;
Chris@4 7912 esac
Chris@4 7913 done
Chris@4 7914 fi
Chris@4 7915 eval cmds=\"$old_archive_cmds\"
Chris@4 7916
Chris@4 7917 func_len " $cmds"
Chris@4 7918 len=$func_len_result
Chris@4 7919 if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
Chris@4 7920 cmds=$old_archive_cmds
Chris@4 7921 else
Chris@4 7922 # the command line is too long to link in one step, link in parts
Chris@4 7923 func_verbose "using piecewise archive linking..."
Chris@4 7924 save_RANLIB=$RANLIB
Chris@4 7925 RANLIB=:
Chris@4 7926 objlist=
Chris@4 7927 concat_cmds=
Chris@4 7928 save_oldobjs=$oldobjs
Chris@4 7929 oldobjs=
Chris@4 7930 # Is there a better way of finding the last object in the list?
Chris@4 7931 for obj in $save_oldobjs
Chris@4 7932 do
Chris@4 7933 last_oldobj=$obj
Chris@4 7934 done
Chris@4 7935 eval test_cmds=\"$old_archive_cmds\"
Chris@4 7936 func_len " $test_cmds"
Chris@4 7937 len0=$func_len_result
Chris@4 7938 len=$len0
Chris@4 7939 for obj in $save_oldobjs
Chris@4 7940 do
Chris@4 7941 func_len " $obj"
Chris@4 7942 func_arith $len + $func_len_result
Chris@4 7943 len=$func_arith_result
Chris@4 7944 func_append objlist " $obj"
Chris@4 7945 if test "$len" -lt "$max_cmd_len"; then
Chris@4 7946 :
Chris@4 7947 else
Chris@4 7948 # the above command should be used before it gets too long
Chris@4 7949 oldobjs=$objlist
Chris@4 7950 if test "$obj" = "$last_oldobj" ; then
Chris@4 7951 RANLIB=$save_RANLIB
Chris@4 7952 fi
Chris@4 7953 test -z "$concat_cmds" || concat_cmds=$concat_cmds~
Chris@4 7954 eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
Chris@4 7955 objlist=
Chris@4 7956 len=$len0
Chris@4 7957 fi
Chris@4 7958 done
Chris@4 7959 RANLIB=$save_RANLIB
Chris@4 7960 oldobjs=$objlist
Chris@4 7961 if test "X$oldobjs" = "X" ; then
Chris@4 7962 eval cmds=\"\$concat_cmds\"
Chris@4 7963 else
Chris@4 7964 eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
Chris@4 7965 fi
Chris@4 7966 fi
Chris@4 7967 fi
Chris@4 7968 func_execute_cmds "$cmds" 'exit $?'
Chris@4 7969 done
Chris@4 7970
Chris@4 7971 test -n "$generated" && \
Chris@4 7972 func_show_eval "${RM}r$generated"
Chris@4 7973
Chris@4 7974 # Now create the libtool archive.
Chris@4 7975 case $output in
Chris@4 7976 *.la)
Chris@4 7977 old_library=
Chris@4 7978 test "$build_old_libs" = yes && old_library="$libname.$libext"
Chris@4 7979 func_verbose "creating $output"
Chris@4 7980
Chris@4 7981 # Preserve any variables that may affect compiler behavior
Chris@4 7982 for var in $variables_saved_for_relink; do
Chris@4 7983 if eval test -z \"\${$var+set}\"; then
Chris@4 7984 relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
Chris@4 7985 elif eval var_value=\$$var; test -z "$var_value"; then
Chris@4 7986 relink_command="$var=; export $var; $relink_command"
Chris@4 7987 else
Chris@4 7988 func_quote_for_eval "$var_value"
Chris@4 7989 relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
Chris@4 7990 fi
Chris@4 7991 done
Chris@4 7992 # Quote the link command for shipping.
Chris@4 7993 relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
Chris@4 7994 relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
Chris@4 7995 if test "$hardcode_automatic" = yes ; then
Chris@4 7996 relink_command=
Chris@4 7997 fi
Chris@4 7998
Chris@4 7999 # Only create the output if not a dry run.
Chris@4 8000 $opt_dry_run || {
Chris@4 8001 for installed in no yes; do
Chris@4 8002 if test "$installed" = yes; then
Chris@4 8003 if test -z "$install_libdir"; then
Chris@4 8004 break
Chris@4 8005 fi
Chris@4 8006 output="$output_objdir/$outputname"i
Chris@4 8007 # Replace all uninstalled libtool libraries with the installed ones
Chris@4 8008 newdependency_libs=
Chris@4 8009 for deplib in $dependency_libs; do
Chris@4 8010 case $deplib in
Chris@4 8011 *.la)
Chris@4 8012 func_basename "$deplib"
Chris@4 8013 name="$func_basename_result"
Chris@4 8014 eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
Chris@4 8015 test -z "$libdir" && \
Chris@4 8016 func_fatal_error "\`$deplib' is not a valid libtool archive"
Chris@4 8017 newdependency_libs="$newdependency_libs $libdir/$name"
Chris@4 8018 ;;
Chris@4 8019 *) newdependency_libs="$newdependency_libs $deplib" ;;
Chris@4 8020 esac
Chris@4 8021 done
Chris@4 8022 dependency_libs="$newdependency_libs"
Chris@4 8023 newdlfiles=
Chris@4 8024
Chris@4 8025 for lib in $dlfiles; do
Chris@4 8026 case $lib in
Chris@4 8027 *.la)
Chris@4 8028 func_basename "$lib"
Chris@4 8029 name="$func_basename_result"
Chris@4 8030 eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
Chris@4 8031 test -z "$libdir" && \
Chris@4 8032 func_fatal_error "\`$lib' is not a valid libtool archive"
Chris@4 8033 newdlfiles="$newdlfiles $libdir/$name"
Chris@4 8034 ;;
Chris@4 8035 *) newdlfiles="$newdlfiles $lib" ;;
Chris@4 8036 esac
Chris@4 8037 done
Chris@4 8038 dlfiles="$newdlfiles"
Chris@4 8039 newdlprefiles=
Chris@4 8040 for lib in $dlprefiles; do
Chris@4 8041 case $lib in
Chris@4 8042 *.la)
Chris@4 8043 # Only pass preopened files to the pseudo-archive (for
Chris@4 8044 # eventual linking with the app. that links it) if we
Chris@4 8045 # didn't already link the preopened objects directly into
Chris@4 8046 # the library:
Chris@4 8047 func_basename "$lib"
Chris@4 8048 name="$func_basename_result"
Chris@4 8049 eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
Chris@4 8050 test -z "$libdir" && \
Chris@4 8051 func_fatal_error "\`$lib' is not a valid libtool archive"
Chris@4 8052 newdlprefiles="$newdlprefiles $libdir/$name"
Chris@4 8053 ;;
Chris@4 8054 esac
Chris@4 8055 done
Chris@4 8056 dlprefiles="$newdlprefiles"
Chris@4 8057 else
Chris@4 8058 newdlfiles=
Chris@4 8059 for lib in $dlfiles; do
Chris@4 8060 case $lib in
Chris@4 8061 [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
Chris@4 8062 *) abs=`pwd`"/$lib" ;;
Chris@4 8063 esac
Chris@4 8064 newdlfiles="$newdlfiles $abs"
Chris@4 8065 done
Chris@4 8066 dlfiles="$newdlfiles"
Chris@4 8067 newdlprefiles=
Chris@4 8068 for lib in $dlprefiles; do
Chris@4 8069 case $lib in
Chris@4 8070 [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
Chris@4 8071 *) abs=`pwd`"/$lib" ;;
Chris@4 8072 esac
Chris@4 8073 newdlprefiles="$newdlprefiles $abs"
Chris@4 8074 done
Chris@4 8075 dlprefiles="$newdlprefiles"
Chris@4 8076 fi
Chris@4 8077 $RM $output
Chris@4 8078 # place dlname in correct position for cygwin
Chris@4 8079 tdlname=$dlname
Chris@4 8080 case $host,$output,$installed,$module,$dlname in
Chris@4 8081 *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
Chris@4 8082 esac
Chris@4 8083 $ECHO > $output "\
Chris@4 8084 # $outputname - a libtool library file
Chris@4 8085 # Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
Chris@4 8086 #
Chris@4 8087 # Please DO NOT delete this file!
Chris@4 8088 # It is necessary for linking the library.
Chris@4 8089
Chris@4 8090 # The name that we can dlopen(3).
Chris@4 8091 dlname='$tdlname'
Chris@4 8092
Chris@4 8093 # Names of this library.
Chris@4 8094 library_names='$library_names'
Chris@4 8095
Chris@4 8096 # The name of the static archive.
Chris@4 8097 old_library='$old_library'
Chris@4 8098
Chris@4 8099 # Linker flags that can not go in dependency_libs.
Chris@4 8100 inherited_linker_flags='$new_inherited_linker_flags'
Chris@4 8101
Chris@4 8102 # Libraries that this one depends upon.
Chris@4 8103 dependency_libs='$dependency_libs'
Chris@4 8104
Chris@4 8105 # Names of additional weak libraries provided by this library
Chris@4 8106 weak_library_names='$weak_libs'
Chris@4 8107
Chris@4 8108 # Version information for $libname.
Chris@4 8109 current=$current
Chris@4 8110 age=$age
Chris@4 8111 revision=$revision
Chris@4 8112
Chris@4 8113 # Is this an already installed library?
Chris@4 8114 installed=$installed
Chris@4 8115
Chris@4 8116 # Should we warn about portability when linking against -modules?
Chris@4 8117 shouldnotlink=$module
Chris@4 8118
Chris@4 8119 # Files to dlopen/dlpreopen
Chris@4 8120 dlopen='$dlfiles'
Chris@4 8121 dlpreopen='$dlprefiles'
Chris@4 8122
Chris@4 8123 # Directory that this library needs to be installed in:
Chris@4 8124 libdir='$install_libdir'"
Chris@4 8125 if test "$installed" = no && test "$need_relink" = yes; then
Chris@4 8126 $ECHO >> $output "\
Chris@4 8127 relink_command=\"$relink_command\""
Chris@4 8128 fi
Chris@4 8129 done
Chris@4 8130 }
Chris@4 8131
Chris@4 8132 # Do a symbolic link so that the libtool archive can be found in
Chris@4 8133 # LD_LIBRARY_PATH before the program is installed.
Chris@4 8134 func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
Chris@4 8135 ;;
Chris@4 8136 esac
Chris@4 8137 exit $EXIT_SUCCESS
Chris@4 8138 }
Chris@4 8139
Chris@4 8140 { test "$mode" = link || test "$mode" = relink; } &&
Chris@4 8141 func_mode_link ${1+"$@"}
Chris@4 8142
Chris@4 8143
Chris@4 8144 # func_mode_uninstall arg...
Chris@4 8145 func_mode_uninstall ()
Chris@4 8146 {
Chris@4 8147 $opt_debug
Chris@4 8148 RM="$nonopt"
Chris@4 8149 files=
Chris@4 8150 rmforce=
Chris@4 8151 exit_status=0
Chris@4 8152
Chris@4 8153 # This variable tells wrapper scripts just to set variables rather
Chris@4 8154 # than running their programs.
Chris@4 8155 libtool_install_magic="$magic"
Chris@4 8156
Chris@4 8157 for arg
Chris@4 8158 do
Chris@4 8159 case $arg in
Chris@4 8160 -f) RM="$RM $arg"; rmforce=yes ;;
Chris@4 8161 -*) RM="$RM $arg" ;;
Chris@4 8162 *) files="$files $arg" ;;
Chris@4 8163 esac
Chris@4 8164 done
Chris@4 8165
Chris@4 8166 test -z "$RM" && \
Chris@4 8167 func_fatal_help "you must specify an RM program"
Chris@4 8168
Chris@4 8169 rmdirs=
Chris@4 8170
Chris@4 8171 origobjdir="$objdir"
Chris@4 8172 for file in $files; do
Chris@4 8173 func_dirname "$file" "" "."
Chris@4 8174 dir="$func_dirname_result"
Chris@4 8175 if test "X$dir" = X.; then
Chris@4 8176 objdir="$origobjdir"
Chris@4 8177 else
Chris@4 8178 objdir="$dir/$origobjdir"
Chris@4 8179 fi
Chris@4 8180 func_basename "$file"
Chris@4 8181 name="$func_basename_result"
Chris@4 8182 test "$mode" = uninstall && objdir="$dir"
Chris@4 8183
Chris@4 8184 # Remember objdir for removal later, being careful to avoid duplicates
Chris@4 8185 if test "$mode" = clean; then
Chris@4 8186 case " $rmdirs " in
Chris@4 8187 *" $objdir "*) ;;
Chris@4 8188 *) rmdirs="$rmdirs $objdir" ;;
Chris@4 8189 esac
Chris@4 8190 fi
Chris@4 8191
Chris@4 8192 # Don't error if the file doesn't exist and rm -f was used.
Chris@4 8193 if { test -L "$file"; } >/dev/null 2>&1 ||
Chris@4 8194 { test -h "$file"; } >/dev/null 2>&1 ||
Chris@4 8195 test -f "$file"; then
Chris@4 8196 :
Chris@4 8197 elif test -d "$file"; then
Chris@4 8198 exit_status=1
Chris@4 8199 continue
Chris@4 8200 elif test "$rmforce" = yes; then
Chris@4 8201 continue
Chris@4 8202 fi
Chris@4 8203
Chris@4 8204 rmfiles="$file"
Chris@4 8205
Chris@4 8206 case $name in
Chris@4 8207 *.la)
Chris@4 8208 # Possibly a libtool archive, so verify it.
Chris@4 8209 if func_lalib_p "$file"; then
Chris@4 8210 func_source $dir/$name
Chris@4 8211
Chris@4 8212 # Delete the libtool libraries and symlinks.
Chris@4 8213 for n in $library_names; do
Chris@4 8214 rmfiles="$rmfiles $objdir/$n"
Chris@4 8215 done
Chris@4 8216 test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
Chris@4 8217
Chris@4 8218 case "$mode" in
Chris@4 8219 clean)
Chris@4 8220 case " $library_names " in
Chris@4 8221 # " " in the beginning catches empty $dlname
Chris@4 8222 *" $dlname "*) ;;
Chris@4 8223 *) rmfiles="$rmfiles $objdir/$dlname" ;;
Chris@4 8224 esac
Chris@4 8225 test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
Chris@4 8226 ;;
Chris@4 8227 uninstall)
Chris@4 8228 if test -n "$library_names"; then
Chris@4 8229 # Do each command in the postuninstall commands.
Chris@4 8230 func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
Chris@4 8231 fi
Chris@4 8232
Chris@4 8233 if test -n "$old_library"; then
Chris@4 8234 # Do each command in the old_postuninstall commands.
Chris@4 8235 func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
Chris@4 8236 fi
Chris@4 8237 # FIXME: should reinstall the best remaining shared library.
Chris@4 8238 ;;
Chris@4 8239 esac
Chris@4 8240 fi
Chris@4 8241 ;;
Chris@4 8242
Chris@4 8243 *.lo)
Chris@4 8244 # Possibly a libtool object, so verify it.
Chris@4 8245 if func_lalib_p "$file"; then
Chris@4 8246
Chris@4 8247 # Read the .lo file
Chris@4 8248 func_source $dir/$name
Chris@4 8249
Chris@4 8250 # Add PIC object to the list of files to remove.
Chris@4 8251 if test -n "$pic_object" &&
Chris@4 8252 test "$pic_object" != none; then
Chris@4 8253 rmfiles="$rmfiles $dir/$pic_object"
Chris@4 8254 fi
Chris@4 8255
Chris@4 8256 # Add non-PIC object to the list of files to remove.
Chris@4 8257 if test -n "$non_pic_object" &&
Chris@4 8258 test "$non_pic_object" != none; then
Chris@4 8259 rmfiles="$rmfiles $dir/$non_pic_object"
Chris@4 8260 fi
Chris@4 8261 fi
Chris@4 8262 ;;
Chris@4 8263
Chris@4 8264 *)
Chris@4 8265 if test "$mode" = clean ; then
Chris@4 8266 noexename=$name
Chris@4 8267 case $file in
Chris@4 8268 *.exe)
Chris@4 8269 func_stripname '' '.exe' "$file"
Chris@4 8270 file=$func_stripname_result
Chris@4 8271 func_stripname '' '.exe' "$name"
Chris@4 8272 noexename=$func_stripname_result
Chris@4 8273 # $file with .exe has already been added to rmfiles,
Chris@4 8274 # add $file without .exe
Chris@4 8275 rmfiles="$rmfiles $file"
Chris@4 8276 ;;
Chris@4 8277 esac
Chris@4 8278 # Do a test to see if this is a libtool program.
Chris@4 8279 if func_ltwrapper_p "$file"; then
Chris@4 8280 if func_ltwrapper_executable_p "$file"; then
Chris@4 8281 func_ltwrapper_scriptname "$file"
Chris@4 8282 relink_command=
Chris@4 8283 func_source $func_ltwrapper_scriptname_result
Chris@4 8284 rmfiles="$rmfiles $func_ltwrapper_scriptname_result"
Chris@4 8285 else
Chris@4 8286 relink_command=
Chris@4 8287 func_source $dir/$noexename
Chris@4 8288 fi
Chris@4 8289
Chris@4 8290 # note $name still contains .exe if it was in $file originally
Chris@4 8291 # as does the version of $file that was added into $rmfiles
Chris@4 8292 rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
Chris@4 8293 if test "$fast_install" = yes && test -n "$relink_command"; then
Chris@4 8294 rmfiles="$rmfiles $objdir/lt-$name"
Chris@4 8295 fi
Chris@4 8296 if test "X$noexename" != "X$name" ; then
Chris@4 8297 rmfiles="$rmfiles $objdir/lt-${noexename}.c"
Chris@4 8298 fi
Chris@4 8299 fi
Chris@4 8300 fi
Chris@4 8301 ;;
Chris@4 8302 esac
Chris@4 8303 func_show_eval "$RM $rmfiles" 'exit_status=1'
Chris@4 8304 done
Chris@4 8305 objdir="$origobjdir"
Chris@4 8306
Chris@4 8307 # Try to remove the ${objdir}s in the directories where we deleted files
Chris@4 8308 for dir in $rmdirs; do
Chris@4 8309 if test -d "$dir"; then
Chris@4 8310 func_show_eval "rmdir $dir >/dev/null 2>&1"
Chris@4 8311 fi
Chris@4 8312 done
Chris@4 8313
Chris@4 8314 exit $exit_status
Chris@4 8315 }
Chris@4 8316
Chris@4 8317 { test "$mode" = uninstall || test "$mode" = clean; } &&
Chris@4 8318 func_mode_uninstall ${1+"$@"}
Chris@4 8319
Chris@4 8320 test -z "$mode" && {
Chris@4 8321 help="$generic_help"
Chris@4 8322 func_fatal_help "you must specify a MODE"
Chris@4 8323 }
Chris@4 8324
Chris@4 8325 test -z "$exec_cmd" && \
Chris@4 8326 func_fatal_help "invalid operation mode \`$mode'"
Chris@4 8327
Chris@4 8328 if test -n "$exec_cmd"; then
Chris@4 8329 eval exec "$exec_cmd"
Chris@4 8330 exit $EXIT_FAILURE
Chris@4 8331 fi
Chris@4 8332
Chris@4 8333 exit $exit_status
Chris@4 8334
Chris@4 8335
Chris@4 8336 # The TAGs below are defined such that we never get into a situation
Chris@4 8337 # in which we disable both kinds of libraries. Given conflicting
Chris@4 8338 # choices, we go for a static library, that is the most portable,
Chris@4 8339 # since we can't tell whether shared libraries were disabled because
Chris@4 8340 # the user asked for that or because the platform doesn't support
Chris@4 8341 # them. This is particularly important on AIX, because we don't
Chris@4 8342 # support having both static and shared libraries enabled at the same
Chris@4 8343 # time on that platform, so we default to a shared-only configuration.
Chris@4 8344 # If a disable-shared tag is given, we'll fallback to a static-only
Chris@4 8345 # configuration. But we'll never go from static-only to shared-only.
Chris@4 8346
Chris@4 8347 # ### BEGIN LIBTOOL TAG CONFIG: disable-shared
Chris@4 8348 build_libtool_libs=no
Chris@4 8349 build_old_libs=yes
Chris@4 8350 # ### END LIBTOOL TAG CONFIG: disable-shared
Chris@4 8351
Chris@4 8352 # ### BEGIN LIBTOOL TAG CONFIG: disable-static
Chris@4 8353 build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
Chris@4 8354 # ### END LIBTOOL TAG CONFIG: disable-static
Chris@4 8355
Chris@4 8356 # Local Variables:
Chris@4 8357 # mode:shell-script
Chris@4 8358 # sh-indentation:2
Chris@4 8359 # End:
Chris@4 8360 # vi:sw=2
Chris@4 8361