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