annotate src/liblo-0.26/libtool @ 4:e13257ea84a4

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