annotate src/liblo-0.26/libtool @ 55:284acf908dcd

Add source for PortAudio stable v190600_20161030
author Chris Cannam
date Tue, 03 Jan 2017 13:44:07 +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