1# ltmain.sh - Provide generalized library-building support services. 2# NOTE: Changing this file will not affect anything until you rerun ltconfig. 3# 4# Copyright (C) 1996-1999 Free Software Foundation, Inc. 5# Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 6# 7# This program is free software; you can redistribute it and/or modify 8# it under the terms of the GNU General Public License as published by 9# the Free Software Foundation; either version 2 of the License, or 10# (at your option) any later version. 11# 12# This program is distributed in the hope that it will be useful, but 13# WITHOUT ANY WARRANTY; without even the implied warranty of 14# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15# General Public License for more details. 16# 17# You should have received a copy of the GNU General Public License 18# along with this program; if not, write to the Free Software 19# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 20# 21# As a special exception to the GNU General Public License, if you 22# distribute this file as part of a program that contains a 23# configuration script generated by Autoconf, you may include it under 24# the same distribution terms that you use for the rest of that program. 25 26# Check that we have a working $echo. 27if test "X$1" = X--no-reexec; then 28 # Discard the --no-reexec flag, and continue. 29 shift 30elif test "X$1" = X--fallback-echo; then 31 # used as fallback echo 32 shift 33 cat <<EOF 34$* 35EOF 36 exit 0 37elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then 38 # Yippee, $echo works! 39 : 40else 41 # Restart under the correct shell, and then maybe $echo will work. 42 exec $SHELL "$0" --no-reexec ${1+"$@"} 43fi 44 45# The name of this program. 46progname=`$echo "$0" | sed 's%^.*/%%'` 47modename="$progname" 48 49# Constants. 50PROGRAM=ltmain.sh 51PACKAGE=libtool 52VERSION=1.2f 53TIMESTAMP=" (1.385 1999/03/15 17:24:54)" 54 55default_mode= 56help="Try \`$progname --help' for more information." 57magic="%%%MAGIC variable%%%" 58mkdir="mkdir" 59mv="mv -f" 60rm="rm -f" 61 62# Sed substitution that helps us do robust quoting. It backslashifies 63# metacharacters that are still active within double-quoted strings. 64Xsed='sed -e 1s/^X//' 65sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g' 66SP2NL='tr \040 \012' 67NL2SP='tr \012 \040' 68 69# NLS nuisances. 70# Only set LANG and LC_ALL to C if already set. 71# These must not be set unconditionally because not all systems understand 72# e.g. LANG=C (notably SCO). 73# We save the old values to restore during execute mode. 74if test "${LC_ALL+set}" = set; then 75 save_LC_ALL="$LC_ALL"; LC_ALL=C; export LC_ALL 76fi 77if test "${LANG+set}" = set; then 78 save_LANG="$LANG"; LANG=C; export LANG 79fi 80 81if test "$LTCONFIG_VERSION" != "$VERSION"; then 82 echo "$modename: ltconfig version \`$LTCONFIG_VERSION' does not match $PROGRAM version \`$VERSION'" 1>&2 83 echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 84 exit 1 85fi 86 87if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then 88 echo "$modename: not configured to build any kind of library" 1>&2 89 echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 90 exit 1 91fi 92 93# Global variables. 94mode=$default_mode 95nonopt= 96prev= 97prevopt= 98run= 99show="$echo" 100show_help= 101execute_dlfiles= 102lo2o="s/\\.lo\$/.${objext}/" 103 104# Parse our command line options once, thoroughly. 105while test $# -gt 0 106do 107 arg="$1" 108 shift 109 110 case "$arg" in 111 -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; 112 *) optarg= ;; 113 esac 114 115 # If the previous option needs an argument, assign it. 116 if test -n "$prev"; then 117 case "$prev" in 118 execute_dlfiles) 119 eval "$prev=\"\$$prev \$arg\"" 120 ;; 121 *) 122 eval "$prev=\$arg" 123 ;; 124 esac 125 126 prev= 127 prevopt= 128 continue 129 fi 130 131 # Have we seen a non-optional argument yet? 132 case "$arg" in 133 --help) 134 show_help=yes 135 ;; 136 137 --version) 138 echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP" 139 exit 0 140 ;; 141 142 --config) 143 sed -e '1,/^### BEGIN LIBTOOL CONFIG/d' -e '/^### END LIBTOOL CONFIG/,$d' $0 144 exit 0 145 ;; 146 147 --debug) 148 echo "$progname: enabling shell trace mode" 149 set -x 150 ;; 151 152 --dry-run | -n) 153 run=: 154 ;; 155 156 --features) 157 echo "host: $host" 158 if test "$build_libtool_libs" = yes; then 159 echo "enable shared libraries" 160 else 161 echo "disable shared libraries" 162 fi 163 if test "$build_old_libs" = yes; then 164 echo "enable static libraries" 165 else 166 echo "disable static libraries" 167 fi 168 exit 0 169 ;; 170 171 --finish) mode="finish" ;; 172 173 --mode) prevopt="--mode" prev=mode ;; 174 --mode=*) mode="$optarg" ;; 175 176 --quiet | --silent) 177 show=: 178 ;; 179 180 -dlopen) 181 prevopt="-dlopen" 182 prev=execute_dlfiles 183 ;; 184 185 -*) 186 $echo "$modename: unrecognized option \`$arg'" 1>&2 187 $echo "$help" 1>&2 188 exit 1 189 ;; 190 191 *) 192 nonopt="$arg" 193 break 194 ;; 195 esac 196done 197 198if test -n "$prevopt"; then 199 $echo "$modename: option \`$prevopt' requires an argument" 1>&2 200 $echo "$help" 1>&2 201 exit 1 202fi 203 204if test -z "$show_help"; then 205 206 # Infer the operation mode. 207 if test -z "$mode"; then 208 case "$nonopt" in 209 *cc | *++ | gcc* | *-gcc*) 210 mode=link 211 for arg 212 do 213 case "$arg" in 214 -c) 215 mode=compile 216 break 217 ;; 218 esac 219 done 220 ;; 221 *db | *dbx | *strace | *truss) 222 mode=execute 223 ;; 224 *install*|cp|mv) 225 mode=install 226 ;; 227 *rm) 228 mode=uninstall 229 ;; 230 *) 231 # If we have no mode, but dlfiles were specified, then do execute mode. 232 test -n "$execute_dlfiles" && mode=execute 233 234 # Just use the default operation mode. 235 if test -z "$mode"; then 236 if test -n "$nonopt"; then 237 $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2 238 else 239 $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2 240 fi 241 fi 242 ;; 243 esac 244 fi 245 246 # Only execute mode is allowed to have -dlopen flags. 247 if test -n "$execute_dlfiles" && test "$mode" != execute; then 248 $echo "$modename: unrecognized option \`-dlopen'" 1>&2 249 $echo "$help" 1>&2 250 exit 1 251 fi 252 253 # Change the help message to a mode-specific one. 254 generic_help="$help" 255 help="Try \`$modename --help --mode=$mode' for more information." 256 257 # These modes are in order of execution frequency so that they run quickly. 258 case "$mode" in 259 # libtool compile mode 260 compile) 261 modename="$modename: compile" 262 # Get the compilation command and the source file. 263 base_compile= 264 lastarg= 265 srcfile="$nonopt" 266 suppress_output= 267 268 user_target=no 269 for arg 270 do 271 # Accept any command-line options. 272 case "$arg" in 273 -o) 274 if test "$user_target" != "no"; then 275 $echo "$modename: you cannot specify \`-o' more than once" 1>&2 276 exit 1 277 fi 278 user_target=next 279 ;; 280 281 -static) 282 build_old_libs=yes 283 continue 284 ;; 285 esac 286 287 case "$user_target" in 288 next) 289 # The next one is the -o target name 290 user_target=yes 291 continue 292 ;; 293 yes) 294 # We got the output file 295 user_target=set 296 libobj="$arg" 297 continue 298 ;; 299 esac 300 301 # Accept the current argument as the source file. 302 lastarg="$srcfile" 303 srcfile="$arg" 304 305 # Aesthetically quote the previous argument. 306 307 # Backslashify any backslashes, double quotes, and dollar signs. 308 # These are the only characters that are still specially 309 # interpreted inside of double-quoted scrings. 310 lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` 311 312 # Double-quote args containing other shell metacharacters. 313 # Many Bourne shells cannot handle close brackets correctly in scan 314 # sets, so we specify it separately. 315 case "$lastarg" in 316 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) 317 lastarg="\"$lastarg\"" 318 ;; 319 esac 320 321 # Add the previous argument to base_compile. 322 if test -z "$base_compile"; then 323 base_compile="$lastarg" 324 else 325 base_compile="$base_compile $lastarg" 326 fi 327 done 328 329 case "$user_target" in 330 set) 331 ;; 332 no) 333 # Get the name of the library object. 334 libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` 335 ;; 336 *) 337 $echo "$modename: you must specify a target with \`-o'" 1>&2 338 exit 1 339 ;; 340 esac 341 342 # Recognize several different file suffixes. 343 # If the user specifies -o file.o, it is replaced with file.lo 344 xform='[cCFSfmso]' 345 case "$libobj" in 346 *.ada) xform=ada ;; 347 *.adb) xform=adb ;; 348 *.ads) xform=ads ;; 349 *.asm) xform=asm ;; 350 *.c++) xform=c++ ;; 351 *.cc) xform=cc ;; 352 *.cpp) xform=cpp ;; 353 *.cxx) xform=cxx ;; 354 *.f90) xform=f90 ;; 355 *.for) xform=for ;; 356 esac 357 358 libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` 359 360 case "$libobj" in 361 *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; 362 *) 363 $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 364 exit 1 365 ;; 366 esac 367 368 if test -z "$base_compile"; then 369 $echo "$modename: you must specify a compilation command" 1>&2 370 $echo "$help" 1>&2 371 exit 1 372 fi 373 374 # Delete any leftover library objects. 375 if test "$build_old_libs" = yes; then 376 removelist="$obj $libobj" 377 else 378 removelist="$libobj" 379 fi 380 381 $run $rm $removelist 382 trap "$run $rm $removelist; exit 1" 1 2 15 383 384 # Calculate the filename of the output object if compiler does 385 # not support -o with -c 386 if test "$compiler_c_o" = no; then 387 output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\..*$%%'`.${objext} 388 lockfile="$output_obj.lock" 389 removelist="$removelist $output_obj $lockfile" 390 trap "$run $rm $removelist; exit 1" 1 2 15 391 else 392 need_locks=no 393 lockfile= 394 fi 395 396 # Lock this critical section if it is needed 397 # We use this script file to make the link, it avoids creating a new file 398 if test "$need_locks" = yes; then 399 until ln "$0" "$lockfile" 2>/dev/null; do 400 $show "Waiting for $lockfile to be removed" 401 sleep 2 402 done 403 elif test "$need_locks" = warn; then 404 if test -f "$lockfile"; then 405 echo "\ 406*** ERROR, $lockfile exists and contains: 407`cat $lockfile 2>/dev/null` 408 409This indicates that another process is trying to use the same 410temporary object file, and libtool could not work around it because 411your compiler does not support \`-c' and \`-o' together. If you 412repeat this compilation, it may succeed, by chance, but you had better 413avoid parallel builds (make -j) in this platform, or get a better 414compiler." 415 416 $run $rm $removelist 417 exit 1 418 fi 419 echo $srcfile > "$lockfile" 420 fi 421 422 if test -n "$fix_srcfile_path"; then 423 eval srcfile=\"$fix_srcfile_path\" 424 fi 425 426 # Only build a PIC object if we are building libtool libraries. 427 if test "$build_libtool_libs" = yes; then 428 # Without this assignment, base_compile gets emptied. 429 fbsd_hideous_sh_bug=$base_compile 430 431 # All platforms use -DPIC, to notify preprocessed assembler code. 432 command="$base_compile $pic_flag -DPIC $srcfile" 433 if test "$build_old_libs" = yes; then 434 lo_libobj="$libobj" 435 dir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'` 436 if test "X$dir" = "X$libobj"; then 437 dir="$objdir" 438 else 439 dir="$dir/$objdir" 440 fi 441 libobj="$dir/"`$echo "X$libobj" | $Xsed -e 's%^.*/%%'` 442 443 if test -d "$dir"; then 444 $show "$rm $libobj" 445 $run $rm $libobj 446 else 447 $show "$mkdir $dir" 448 $run $mkdir $dir 449 status=$? 450 if test $status -ne 0 && test ! -d $dir; then 451 exit $status 452 fi 453 fi 454 fi 455 if test "$compiler_o_lo" = yes; then 456 output_obj="$libobj" 457 command="$command -o $output_obj" 458 elif test "$compiler_c_o" = yes; then 459 output_obj="$obj" 460 command="$command -o $output_obj" 461 fi 462 463 $show "$command" 464 if $run eval "$command"; then : 465 else 466 test -n "$output_obj" && $run $rm $removelist 467 exit 1 468 fi 469 470 if test "$need_locks" = warn && 471 test x"`cat $lockfile 2>/dev/null`" != x"$srcfile"; then 472 echo "\ 473*** ERROR, $lockfile contains: 474`cat $lockfile 2>/dev/null` 475 476but it should contain: 477$srcfile 478 479This indicates that another process is trying to use the same 480temporary object file, and libtool could not work around it because 481your compiler does not support \`-c' and \`-o' together. If you 482repeat this compilation, it may succeed, by chance, but you had better 483avoid parallel builds (make -j) in this platform, or get a better 484compiler." 485 486 $run $rm $removelist 487 exit 1 488 fi 489 490 # Just move the object if needed, then go on to compile the next one 491 if test x"$output_obj" != x"$libobj"; then 492 $show "$mv $output_obj $libobj" 493 if $run $mv $output_obj $libobj; then : 494 else 495 error=$? 496 $run $rm $removelist 497 exit $error 498 fi 499 fi 500 501 # If we have no pic_flag, then copy the object into place and finish. 502 if test -z "$pic_flag" && test "$build_old_libs" = yes; then 503 # Rename the .lo from within objdir to obj 504 if test -f $obj; then 505 $show $rm $obj 506 $run $rm $obj 507 fi 508 509 $show "$mv $libobj $obj" 510 if $run $mv $libobj $obj; then : 511 else 512 error=$? 513 $run $rm $removelist 514 exit $error 515 fi 516 517 # Now arrange that obj and lo_libobj become the same file 518 $show "$LN_S $obj $lo_libobj" 519 if $run $LN_S $obj $lo_libobj; then 520 exit 0 521 else 522 error=$? 523 $run $rm $removelist 524 exit $error 525 fi 526 fi 527 528 # Allow error messages only from the first compilation. 529 suppress_output=' >/dev/null 2>&1' 530 fi 531 532 # Only build a position-dependent object if we build old libraries. 533 if test "$build_old_libs" = yes; then 534 command="$base_compile $srcfile" 535 if test "$compiler_c_o" = yes; then 536 command="$command -o $obj" 537 output_obj="$obj" 538 fi 539 540 # Suppress compiler output if we already did a PIC compilation. 541 command="$command$suppress_output" 542 $show "$command" 543 if $run eval "$command"; then : 544 else 545 $run $rm $removelist 546 exit 1 547 fi 548 549 if test "$need_locks" = warn && 550 test x"`cat $lockfile 2>/dev/null`" != x"$srcfile"; then 551 echo "\ 552*** ERROR, $lockfile contains: 553`cat $lockfile 2>/dev/null` 554 555but it should contain: 556$srcfile 557 558This indicates that another process is trying to use the same 559temporary object file, and libtool could not work around it because 560your compiler does not support \`-c' and \`-o' together. If you 561repeat this compilation, it may succeed, by chance, but you had better 562avoid parallel builds (make -j) in this platform, or get a better 563compiler." 564 565 $run $rm $removelist 566 exit 1 567 fi 568 569 # Just move the object if needed 570 if test x"$output_obj" != x"$obj"; then 571 $show "$mv $output_obj $obj" 572 if $run $mv $output_obj $obj; then : 573 else 574 error=$? 575 $run $rm $removelist 576 exit $error 577 fi 578 fi 579 580 # Create an invalid libtool object if no PIC, so that we do not 581 # accidentally link it into a program. 582 if test "$build_libtool_libs" != yes; then 583 $show "echo timestamp > $libobj" 584 $run eval "echo timestamp > \$libobj" || exit $? 585 else 586 # Move the .lo from within objdir 587 $show "$mv $libobj $lo_libobj" 588 if $run $mv $libobj $lo_libobj; then : 589 else 590 error=$? 591 $run $rm $removelist 592 exit $error 593 fi 594 fi 595 fi 596 597 # Unlock the critical section if it was locked 598 if test "$need_locks" != no; then 599 $rm "$lockfile" 600 fi 601 602 exit 0 603 ;; 604 605 # libtool link mode 606 link) 607 modename="$modename: link" 608 C_compiler="$CC" # save it, to compile generated C sources 609 CC="$nonopt" 610 case "$host" in 611 *-*-cygwin* | *-*-mingw* | *-*-os2*) 612 # It is impossible to link a dll without this setting, and 613 # we shouldn't force the makefile maintainer to figure out 614 # which system we are compiling for in order to pass an extra 615 # flag for every libtool invokation. 616 # allow_undefined=no 617 618 # FIXME: Unfortunately, there are problems with the above when trying 619 # to make a dll which has undefined symbols, in which case not 620 # even a static library is built. For now, we need to specify 621 # -no-undefined on the libtool link line when we can be certain 622 # that all symbols are satisfied, otherwise we get a static library. 623 allow_undefined=yes 624 625 # This is a source program that is used to create dlls on Windows 626 # Don't remove nor modify the starting and closing comments 627# /* ltdll.c starts here */ 628# #define WIN32_LEAN_AND_MEAN 629# #include <windows.h> 630# #undef WIN32_LEAN_AND_MEAN 631# #include <stdio.h> 632# 633# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); 634# 635# #include <cygwin/cygwin_dll.h> 636# DECLARE_CYGWIN_DLL( DllMain ); 637# HINSTANCE __hDllInstance_base; 638# 639# BOOL APIENTRY 640# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) 641# { 642# __hDllInstance_base = hInst; 643# return TRUE; 644# } 645# /* ltdll.c ends here */ 646 # This is a source program that is used to create import libraries 647 # on Windows for dlls which lack them. Don't remove nor modify the 648 # starting and closing comments 649# /* impgen.c starts here */ 650# /* Copyright (C) 1999 Free Software Foundation, Inc. 651# 652# This file is part of GNU libtool. 653# 654# This program is free software; you can redistribute it and/or modify 655# it under the terms of the GNU General Public License as published by 656# the Free Software Foundation; either version 2 of the License, or 657# (at your option) any later version. 658# 659# This program is distributed in the hope that it will be useful, 660# but WITHOUT ANY WARRANTY; without even the implied warranty of 661# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 662# GNU General Public License for more details. 663# 664# You should have received a copy of the GNU General Public License 665# along with this program; if not, write to the Free Software 666# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 667# */ 668# 669# #include <stdio.h> /* for printf() */ 670# #include <unistd.h> /* for open(), lseek(), read() */ 671# #include <fcntl.h> /* for O_RDONLY, O_BINARY */ 672# #include <string.h> /* for strdup() */ 673# 674# static unsigned int 675# pe_get16 (fd, offset) 676# int fd; 677# int offset; 678# { 679# unsigned char b[2]; 680# lseek (fd, offset, SEEK_SET); 681# read (fd, b, 2); 682# return b[0] + (b[1]<<8); 683# } 684# 685# static unsigned int 686# pe_get32 (fd, offset) 687# int fd; 688# int offset; 689# { 690# unsigned char b[4]; 691# lseek (fd, offset, SEEK_SET); 692# read (fd, b, 4); 693# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); 694# } 695# 696# static unsigned int 697# pe_as32 (ptr) 698# void *ptr; 699# { 700# unsigned char *b = ptr; 701# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); 702# } 703# 704# int 705# main (argc, argv) 706# int argc; 707# char *argv[]; 708# { 709# int dll; 710# unsigned long pe_header_offset, opthdr_ofs, num_entries, i; 711# unsigned long export_rva, export_size, nsections, secptr, expptr; 712# unsigned long name_rvas, nexp; 713# unsigned char *expdata, *erva; 714# char *filename, *dll_name; 715# 716# filename = argv[1]; 717# 718# dll = open(filename, O_RDONLY|O_BINARY); 719# if (!dll) 720# return 1; 721# 722# dll_name = filename; 723# 724# for (i=0; filename[i]; i++) 725# if (filename[i] == '/' || filename[i] == '\\' || filename[i] == ':') 726# dll_name = filename + i +1; 727# 728# pe_header_offset = pe_get32 (dll, 0x3c); 729# opthdr_ofs = pe_header_offset + 4 + 20; 730# num_entries = pe_get32 (dll, opthdr_ofs + 92); 731# 732# if (num_entries < 1) /* no exports */ 733# return 1; 734# 735# export_rva = pe_get32 (dll, opthdr_ofs + 96); 736# export_size = pe_get32 (dll, opthdr_ofs + 100); 737# nsections = pe_get16 (dll, pe_header_offset + 4 +2); 738# secptr = (pe_header_offset + 4 + 20 + 739# pe_get16 (dll, pe_header_offset + 4 + 16)); 740# 741# expptr = 0; 742# for (i = 0; i < nsections; i++) 743# { 744# char sname[8]; 745# unsigned long secptr1 = secptr + 40 * i; 746# unsigned long vaddr = pe_get32 (dll, secptr1 + 12); 747# unsigned long vsize = pe_get32 (dll, secptr1 + 16); 748# unsigned long fptr = pe_get32 (dll, secptr1 + 20); 749# lseek(dll, secptr1, SEEK_SET); 750# read(dll, sname, 8); 751# if (vaddr <= export_rva && vaddr+vsize > export_rva) 752# { 753# expptr = fptr + (export_rva - vaddr); 754# if (export_rva + export_size > vaddr + vsize) 755# export_size = vsize - (export_rva - vaddr); 756# break; 757# } 758# } 759# 760# expdata = (unsigned char*)malloc(export_size); 761# lseek (dll, expptr, SEEK_SET); 762# read (dll, expdata, export_size); 763# erva = expdata - export_rva; 764# 765# nexp = pe_as32 (expdata+24); 766# name_rvas = pe_as32 (expdata+32); 767# 768# printf ("EXPORTS\n"); 769# for (i = 0; i<nexp; i++) 770# { 771# unsigned long name_rva = pe_as32 (erva+name_rvas+i*4); 772# printf ("\t%s @ %ld ;\n", erva+name_rva, 1+ i); 773# } 774# 775# return 0; 776# } 777# /* impgen.c ends here */ 778 ;; 779 *) 780 allow_undefined=yes 781 ;; 782 esac 783 compile_command="$CC" 784 finalize_command="$CC" 785 786 compile_rpath= 787 finalize_rpath= 788 compile_shlibpath= 789 finalize_shlibpath= 790 convenience= 791 old_convenience= 792 deplibs= 793 linkopts= 794 795 if test -n "$shlibpath_var"; then 796 # get the directories listed in $shlibpath_var 797 eval lib_search_path=\`\$echo \"X \${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` 798 else 799 lib_search_path= 800 fi 801 # now prepend the system-specific ones 802 eval lib_search_path=\"$sys_lib_search_path_spec\$lib_search_path\" 803 eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" 804 805 avoid_version=no 806 dlfiles= 807 dlprefiles= 808 dlself=no 809 export_dynamic=no 810 export_symbols= 811 export_symbols_regex= 812 generated= 813 libobjs= 814 link_against_libtool_libs= 815 ltlibs= 816 module=no 817 objs= 818 preload=no 819 prev= 820 prevarg= 821 release= 822 rpath= 823 xrpath= 824 perm_rpath= 825 temp_rpath= 826 thread_safe=no 827 vinfo= 828 829 # We need to know -static, to get the right output filenames. 830 for arg 831 do 832 case "$arg" in 833 -all-static | -static) 834 if test "X$arg" = "X-all-static" && test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then 835 $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2 836 fi 837 build_libtool_libs=no 838 build_old_libs=yes 839 break 840 ;; 841 esac 842 done 843 844 # See if our shared archives depend on static archives. 845 test -n "$old_archive_from_new_cmds" && build_old_libs=yes 846 847 # Go through the arguments, transforming them on the way. 848 while test $# -gt 0; do 849 arg="$1" 850 shift 851 852 # If the previous option needs an argument, assign it. 853 if test -n "$prev"; then 854 case "$prev" in 855 output) 856 compile_command="$compile_command @OUTPUT@" 857 finalize_command="$finalize_command @OUTPUT@" 858 ;; 859 esac 860 861 case "$prev" in 862 dlfiles|dlprefiles) 863 if test "$preload" = no; then 864 # Add the symbol object into the linking commands. 865 compile_command="$compile_command @SYMFILE@" 866 finalize_command="$finalize_command @SYMFILE@" 867 preload=yes 868 fi 869 case "$arg" in 870 *.la | *.lo) ;; # We handle these cases below. 871 self) 872 if test "$prev" = dlprefiles; then 873 dlself=yes 874 elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then 875 dlself=yes 876 fi 877 prev= 878 continue 879 ;; 880 *) 881 dlprefiles="$dlprefiles $arg" 882 test "$prev" = dlfiles && dlfiles="$dlfiles $arg" 883 prev= 884 ;; 885 esac 886 ;; 887 expsyms) 888 export_symbols="$arg" 889 if test ! -f "$arg"; then 890 $echo "$modename: symbol file \`$arg' does not exist" 891 exit 1 892 fi 893 prev= 894 continue 895 ;; 896 expsyms_regex) 897 export_symbols_regex="$arg" 898 prev= 899 continue 900 ;; 901 release) 902 release="-$arg" 903 prev= 904 continue 905 ;; 906 rpath) 907 rpath="$rpath $arg" 908 prev= 909 continue 910 ;; 911 xrpath) 912 xrpath="$xrpath $arg" 913 prev= 914 continue 915 ;; 916 *) 917 eval "$prev=\"\$arg\"" 918 prev= 919 continue 920 ;; 921 esac 922 fi 923 924 prevarg="$arg" 925 926 case "$arg" in 927 -all-static) 928 if test -n "$link_static_flag"; then 929 compile_command="$compile_command $link_static_flag" 930 finalize_command="$finalize_command $link_static_flag" 931 dlopen_self=$dlopen_self_static 932 fi 933 continue 934 ;; 935 936 -allow-undefined) 937 # FIXME: remove this flag sometime in the future. 938 $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2 939 continue 940 ;; 941 942 -avoid-version) 943 avoid_version=yes 944 continue 945 ;; 946 947 -dlopen) 948 prev=dlfiles 949 continue 950 ;; 951 952 -dlpreopen) 953 prev=dlprefiles 954 continue 955 ;; 956 957 -export-dynamic) 958 if test "$export_dynamic" != yes; then 959 export_dynamic=yes 960 if test -n "$export_dynamic_flag_spec"; then 961 eval arg=\"$export_dynamic_flag_spec\" 962 else 963 arg= 964 fi 965 fi 966 ;; 967 968 -export-symbols | -export-symbols-regex) 969 if test -n "$export_symbols" || test -n "$export_symbols_regex"; then 970 $echo "$modename: cannot have more than one -exported-symbols" 971 exit 1 972 fi 973 if test "$arg" = "-export-symbols"; then 974 prev=expsyms 975 else 976 prev=expsyms_regex 977 fi 978 continue 979 ;; 980 981 -L*) 982 dir=`$echo "X$arg" | $Xsed -e 's%^-L\(.*\)$%\1%'` 983 case "$dir" in 984 /* | [A-Za-z]:[/\\]*) 985 # Add the corresponding hardcode_libdir_flag, if it is not identical. 986 ;; 987 *) 988 $echo "$modename: \`-L$dir' cannot specify a relative directory" 1>&2 989 exit 1 990 ;; 991 esac 992 case " $deplibs " in 993 *" $arg "*) ;; 994 *) deplibs="$deplibs $arg";; 995 esac 996 case " $lib_search_path " in 997 *" $dir "*) ;; 998 *) lib_search_path="$lib_search_path $dir";; 999 esac 1000 case "$host" in 1001 *-*-cygwin* | *-*-mingw* | *-*-os2*) 1002 dllsearchdir=`cd "$dir" && pwd || echo "$dir"` 1003 case ":$dllsearchpath:" in 1004 ::) dllsearchpath="$dllsearchdir";; 1005 *":$dllsearchdir:"*) ;; 1006 *) dllsearchpath="$dllsearchpath:$dllsearchdir";; 1007 esac 1008 ;; 1009 esac 1010 ;; 1011 1012 -l*) 1013 deplibs="$deplibs $arg" 1014 ;; 1015 1016 -module) 1017 if test "$module" != yes; then 1018 module=yes 1019 if test -n "$export_dynamic_flag_spec"; then 1020 eval arg=\"$export_dynamic_flag_spec\" 1021 else 1022 arg= 1023 fi 1024 fi 1025 ;; 1026 1027 -no-undefined) 1028 allow_undefined=no 1029 continue 1030 ;; 1031 1032 -o) prev=output ;; 1033 1034 -release) 1035 prev=release 1036 continue 1037 ;; 1038 1039 -rpath) 1040 prev=rpath 1041 continue 1042 ;; 1043 1044 -R) 1045 prev=xrpath 1046 continue 1047 ;; 1048 1049 -R*) 1050 xrpath="$xrpath "`$echo "X$arg" | $Xsed -e 's/^-R//'` 1051 continue 1052 ;; 1053 1054 -static) 1055 # If we have no pic_flag, then this is the same as -all-static. 1056 if test -z "$pic_flag" && test -n "$link_static_flag"; then 1057 compile_command="$compile_command $link_static_flag" 1058 finalize_command="$finalize_command $link_static_flag" 1059 dlopen_self=$dlopen_self_static 1060 fi 1061 continue 1062 ;; 1063 1064 -thread-safe) 1065 thread_safe=yes 1066 continue 1067 ;; 1068 1069 -version-info) 1070 prev=vinfo 1071 continue 1072 ;; 1073 1074 # Some other compiler flag. 1075 -* | +*) 1076 # Unknown arguments in both finalize_command and compile_command need 1077 # to be aesthetically quoted because they are evaled later. 1078 arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 1079 case "$arg" in 1080 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) 1081 arg="\"$arg\"" 1082 ;; 1083 esac 1084 ;; 1085 1086 *.o | *.obj | *.a | *.lib) 1087 # A standard object. 1088 objs="$objs $arg" 1089 ;; 1090 1091 *.lo) 1092 # A library object. 1093 if test "$prev" = dlfiles; then 1094 dlfiles="$dlfiles $arg" 1095 if test "$build_libtool_libs" = yes && test "$dlopen" = yes; then 1096 prev= 1097 continue 1098 else 1099 # If libtool objects are unsupported, then we need to preload. 1100 prev=dlprefiles 1101 fi 1102 fi 1103 1104 if test "$prev" = dlprefiles; then 1105 # Preload the old-style object. 1106 dlprefiles="$dlprefiles "`$echo "X$arg" | $Xsed -e "$lo2o"` 1107 prev= 1108 fi 1109 libobjs="$libobjs $arg" 1110 ;; 1111 1112 *.la) 1113 # A libtool-controlled library. 1114 1115 dlname= 1116 libdir= 1117 library_names= 1118 old_library= 1119 1120 # Check to see that this really is a libtool archive. 1121 if (sed -e '2q' $arg | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : 1122 else 1123 $echo "$modename: \`$arg' is not a valid libtool archive" 1>&2 1124 exit 1 1125 fi 1126 1127 # If the library was installed with an old release of libtool, 1128 # it will not redefine variable installed. 1129 installed=yes 1130 1131 # If there is no directory component, then add one. 1132 case "$arg" in 1133 */* | *\\*) . $arg ;; 1134 *) . ./$arg ;; 1135 esac 1136 1137 # Get the name of the library we link against. 1138 linklib= 1139 for l in $old_library $library_names; do 1140 linklib="$l" 1141 done 1142 1143 if test -z "$linklib"; then 1144 $echo "$modename: cannot find name of link library for \`$arg'" 1>&2 1145 exit 1 1146 fi 1147 1148 # Find the relevant object directory and library name. 1149 name=`$echo "X$arg" | $Xsed -e 's%^.*/%%' -e 's/\.la$//' -e 's/^lib//'` 1150 1151 if test "X$installed" = Xyes; then 1152 dir="$libdir" 1153 else 1154 dir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` 1155 if test "X$dir" = "X$arg"; then 1156 dir="$objdir" 1157 else 1158 dir="$dir/$objdir" 1159 fi 1160 fi 1161 1162 if test -n "$dependency_libs"; then 1163 # Extract -R from dependency_libs 1164 temp_deplibs= 1165 for deplib in $dependency_libs; do 1166 case "$deplib" in 1167 -R*) temp_xrpath=`$echo "X$deplib" | $Xsed -e 's/^-R//'` 1168 case " $rpath $xrpath " in 1169 *" $temp_xrpath "*) ;; 1170 *) xrpath="$xrpath $temp_xrpath";; 1171 esac;; 1172 -L*) case "$compile_command $temp_deplibs " in 1173 *" $deplib "*) ;; 1174 *) temp_deplibs="$temp_deplibs $deplib";; 1175 esac;; 1176 *) temp_deplibs="$temp_deplibs $deplib";; 1177 esac 1178 done 1179 dependency_libs="$temp_deplibs" 1180 fi 1181 1182 if test -z "$libdir"; then 1183 # It is a libtool convenience library, so add in its objects. 1184 convenience="$convenience $dir/$old_library" 1185 old_convenience="$old_convenience $dir/$old_library" 1186 deplibs="$deplibs$dependency_libs" 1187 compile_command="$compile_command $dir/$old_library$dependency_libs" 1188 finalize_command="$finalize_command $dir/$old_library$dependency_libs" 1189 continue 1190 fi 1191 1192 # This library was specified with -dlopen. 1193 if test "$prev" = dlfiles; then 1194 dlfiles="$dlfiles $arg" 1195 if test -z "$dlname" || test "$dlopen" != yes || test "$build_libtool_libs" = no; then 1196 # If there is no dlname, no dlopen support or we're linking statically, 1197 # we need to preload. 1198 prev=dlprefiles 1199 else 1200 # We should not create a dependency on this library, but we 1201 # may need any libraries it requires. 1202 compile_command="$compile_command$dependency_libs" 1203 finalize_command="$finalize_command$dependency_libs" 1204 prev= 1205 continue 1206 fi 1207 fi 1208 1209 # The library was specified with -dlpreopen. 1210 if test "$prev" = dlprefiles; then 1211 # Prefer using a static library (so that no silly _DYNAMIC symbols 1212 # are required to link). 1213 if test -n "$old_library"; then 1214 dlprefiles="$dlprefiles $dir/$old_library" 1215 else 1216 dlprefiles="$dlprefiles $dir/$linklib" 1217 fi 1218 prev= 1219 fi 1220 1221 if test "$build_libtool_libs" = yes && test -n "$library_names"; then 1222 link_against_libtool_libs="$link_against_libtool_libs $arg" 1223 if test -n "$shlibpath_var"; then 1224 # Make sure the rpath contains only unique directories. 1225 case "$temp_rpath " in 1226 *" $dir "*) ;; 1227 *) temp_rpath="$temp_rpath $dir" ;; 1228 esac 1229 fi 1230 1231 # We need an absolute path. 1232 case "$dir" in 1233 /* | [A-Za-z]:[/\\]*) absdir="$dir" ;; 1234 *) 1235 absdir=`cd "$dir" && pwd` 1236 if test -z "$absdir"; then 1237 $echo "$modename: cannot determine absolute directory name of \`$libdir'" 1>&2 1238 exit 1 1239 fi 1240 ;; 1241 esac 1242 1243 # This is the magic to use -rpath. 1244 # Skip directories that are in the system default run-time 1245 # search path, unless they have been requested with -R. 1246 case " $sys_lib_dlsearch_path " in 1247 *" $absdir "*) ;; 1248 *) 1249 case "$compile_rpath " in 1250 *" $absdir "*) ;; 1251 *) compile_rpath="$compile_rpath $absdir" 1252 esac 1253 ;; 1254 esac 1255 1256 case " $sys_lib_dlsearch_path " in 1257 *" $libdir "*) ;; 1258 *) 1259 case "$finalize_rpath " in 1260 *" $libdir "*) ;; 1261 *) finalize_rpath="$finalize_rpath $libdir" 1262 esac 1263 ;; 1264 esac 1265 1266 lib_linked=yes 1267 case "$hardcode_action" in 1268 immediate | unsupported) 1269 if test "$hardcode_direct" = no; then 1270 compile_command="$compile_command $dir/$linklib" 1271 deplibs="$deplibs $dir/$linklib" 1272 case "$host" in 1273 *-*-cygwin* | *-*-mingw* | *-*-os2*) 1274 dllsearchdir=`cd "$dir" && pwd || echo "$dir"` 1275 if test -n "$dllsearchpath"; then 1276 dllsearchpath="$dllsearchpath:$dllsearchdir" 1277 else 1278 dllsearchpath="$dllsearchdir" 1279 fi 1280 ;; 1281 esac 1282 elif test "$hardcode_minus_L" = no; then 1283 case "$host" in 1284 *-*-sunos*) 1285 compile_shlibpath="$compile_shlibpath$dir:" 1286 ;; 1287 esac 1288 case "$compile_command " in 1289 *" -L$dir "*) ;; 1290 *) compile_command="$compile_command -L$dir";; 1291 esac 1292 compile_command="$compile_command -l$name" 1293 deplibs="$deplibs -L$dir -l$name" 1294 elif test "$hardcode_shlibpath_var" = no; then 1295 case ":$compile_shlibpath:" in 1296 *":$dir:"*) ;; 1297 *) compile_shlibpath="$compile_shlibpath$dir:";; 1298 esac 1299 compile_command="$compile_command -l$name" 1300 deplibs="$deplibs -l$name" 1301 else 1302 lib_linked=no 1303 fi 1304 ;; 1305 1306 relink) 1307 if test "$hardcode_direct" = yes; then 1308 compile_command="$compile_command $absdir/$linklib" 1309 deplibs="$deplibs $absdir/$linklib" 1310 elif test "$hardcode_minus_L" = yes; then 1311 case "$compile_command " in 1312 *" -L$absdir "*) ;; 1313 *) compile_command="$compile_command -L$absdir";; 1314 esac 1315 compile_command="$compile_command -l$name" 1316 deplibs="$deplibs -L$absdir -l$name" 1317 elif test "$hardcode_shlibpath_var" = yes; then 1318 case ":$compile_shlibpath:" in 1319 *":$absdir:"*) ;; 1320 *) compile_shlibpath="$compile_shlibpath$absdir:";; 1321 esac 1322 compile_command="$compile_command -l$name" 1323 deplibs="$deplibs -l$name" 1324 else 1325 lib_linked=no 1326 fi 1327 ;; 1328 1329 *) 1330 lib_linked=no 1331 ;; 1332 esac 1333 1334 if test "$lib_linked" != yes; then 1335 $echo "$modename: configuration error: unsupported hardcode properties" 1336 exit 1 1337 fi 1338 1339 # Finalize command for both is simple: just hardcode it. 1340 if test "$hardcode_direct" = yes; then 1341 finalize_command="$finalize_command $libdir/$linklib" 1342 elif test "$hardcode_minus_L" = yes; then 1343 case "$finalize_command " in 1344 *" -L$libdir "*) ;; 1345 *) finalize_command="$finalize_command -L$libdir";; 1346 esac 1347 finalize_command="$finalize_command -l$name" 1348 elif test "$hardcode_shlibpath_var" = yes; then 1349 case ":$finalize_shlibpath:" in 1350 *":$libdir:"*) ;; 1351 *) finalize_shlibpath="$finalize_shlibpath$libdir:";; 1352 esac 1353 finalize_command="$finalize_command -l$name" 1354 else 1355 # We cannot seem to hardcode it, guess we'll fake it. 1356 case "$finalize_command " in 1357 *" -L$dir "*) ;; 1358 *) finalize_command="$finalize_command -L$libdir";; 1359 esac 1360 finalize_command="$finalize_command -l$name" 1361 fi 1362 else 1363 # Transform directly to old archives if we don't build new libraries. 1364 if test -n "$pic_flag" && test -z "$old_library"; then 1365 $echo "$modename: cannot find static library for \`$arg'" 1>&2 1366 exit 1 1367 fi 1368 1369 # Here we assume that one of hardcode_direct or hardcode_minus_L 1370 # is not unsupported. This is valid on all known static and 1371 # shared platforms. 1372 if test "$hardcode_direct" != unsupported; then 1373 test -n "$old_library" && linklib="$old_library" 1374 compile_command="$compile_command $dir/$linklib" 1375 finalize_command="$finalize_command $dir/$linklib" 1376 else 1377 case "$compile_command " in 1378 *" -L$dir "*) ;; 1379 *) compile_command="$compile_command -L$dir";; 1380 esac 1381 compile_command="$compile_command -l$name" 1382 case "$finalize_command " in 1383 *" -L$dir "*) ;; 1384 *) finalize_command="$finalize_command -L$dir";; 1385 esac 1386 finalize_command="$finalize_command -l$name" 1387 fi 1388 fi 1389 1390 # Add in any libraries that this one depends upon. 1391 compile_command="$compile_command$dependency_libs" 1392 finalize_command="$finalize_command$dependency_libs" 1393 continue 1394 ;; 1395 1396 # Some other compiler argument. 1397 *) 1398 # Unknown arguments in both finalize_command and compile_command need 1399 # to be aesthetically quoted because they are evaled later. 1400 arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 1401 case "$arg" in 1402 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) 1403 arg="\"$arg\"" 1404 ;; 1405 esac 1406 ;; 1407 esac 1408 1409 # Now actually substitute the argument into the commands. 1410 if test -n "$arg"; then 1411 compile_command="$compile_command $arg" 1412 finalize_command="$finalize_command $arg" 1413 fi 1414 done 1415 1416 if test -n "$prev"; then 1417 $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 1418 $echo "$help" 1>&2 1419 exit 1 1420 fi 1421 1422 oldlibs= 1423 # calculate the name of the file, without its directory 1424 outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'` 1425 libobjs_save="$libobjs" 1426 1427 case "$output" in 1428 "") 1429 $echo "$modename: you must specify an output file" 1>&2 1430 $echo "$help" 1>&2 1431 exit 1 1432 ;; 1433 1434 *.a | *.lib) 1435 if test -n "$link_against_libtool_libs"; then 1436 $echo "$modename: error: cannot link libtool libraries into archives" 1>&2 1437 exit 1 1438 fi 1439 1440 if test -n "$deplibs"; then 1441 $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 1442 fi 1443 1444 if test -n "$dlfiles$dlprefiles"; then 1445 $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2 1446 fi 1447 1448 if test -n "$rpath"; then 1449 $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2 1450 fi 1451 1452 if test -n "$xrpath"; then 1453 $echo "$modename: warning: \`-R' is ignored for archives" 1>&2 1454 fi 1455 1456 if test -n "$vinfo"; then 1457 $echo "$modename: warning: \`-version-info' is ignored for archives" 1>&2 1458 fi 1459 1460 if test -n "$release"; then 1461 $echo "$modename: warning: \`-release' is ignored for archives" 1>&2 1462 fi 1463 1464 if test -n "$export_symbols"; then 1465 $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2 1466 fi 1467 1468 # Now set the variables for building old libraries. 1469 build_libtool_libs=no 1470 oldlibs="$output" 1471 ;; 1472 1473 *.la) 1474 # Make sure we only generate libraries of the form `libNAME.la'. 1475 case "$outputname" in 1476 lib*) 1477 name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` 1478 eval libname=\"$libname_spec\" 1479 ;; 1480 *) 1481 if test "$module" = no; then 1482 $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2 1483 $echo "$help" 1>&2 1484 exit 1 1485 fi 1486 if test "$need_lib_prefix" != no; then 1487 # Add the "lib" prefix for modules if required 1488 name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` 1489 eval libname=\"$libname_spec\" 1490 else 1491 libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` 1492 fi 1493 ;; 1494 esac 1495 1496 output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` 1497 if test "X$output_objdir" = "X$output"; then 1498 output_objdir="$objdir" 1499 else 1500 output_objdir="$output_objdir/$objdir" 1501 fi 1502 1503 # All the library-specific variables (install_libdir is set above). 1504 library_names= 1505 old_library= 1506 dlname= 1507 1508 if test -n "$objs"; then 1509 $echo "$modename: cannot build libtool library \`$output' from non-libtool objects:$objs" 2>&1 1510 exit 1 1511 fi 1512 1513 # How the heck are we supposed to write a wrapper for a shared library? 1514 if test -n "$link_against_libtool_libs"; then 1515 $echo "$modename: error: cannot link shared libraries into libtool libraries" 1>&2 1516 exit 1 1517 fi 1518 1519 if test -n "$dlfiles$dlprefiles"; then 1520 $echo "$modename: warning: \`-dlopen' is ignored for libtool libraries" 1>&2 1521 fi 1522 1523 set dummy $rpath 1524 if test $# -gt 2; then 1525 $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2 1526 fi 1527 install_libdir="$2" 1528 1529 oldlibs= 1530 if test -z "$rpath"; then 1531 if test "$build_libtool_libs" = yes; then 1532 # Building a libtool convenience library. 1533 libext=al 1534 oldlibs="$output_objdir/$libname.$libext $oldlibs" 1535 build_libtool_libs=convenience 1536 build_old_libs=yes 1537 fi 1538 dependency_libs="$deplibs" 1539 1540 if test -n "$vinfo"; then 1541 $echo "$modename: warning: \`-version-info' is ignored for convenience libraries" 1>&2 1542 fi 1543 1544 if test -n "$release"; then 1545 $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2 1546 fi 1547 else 1548 1549 # Parse the version information argument. 1550 IFS="${IFS= }"; save_ifs="$IFS"; IFS=':' 1551 set dummy $vinfo 0 0 0 1552 IFS="$save_ifs" 1553 1554 if test -n "$8"; then 1555 $echo "$modename: too many parameters to \`-version-info'" 1>&2 1556 $echo "$help" 1>&2 1557 exit 1 1558 fi 1559 1560 current="$2" 1561 revision="$3" 1562 age="$4" 1563 1564 # Check that each of the things are valid numbers. 1565 case "$current" in 1566 0 | [1-9] | [1-9][0-9]*) ;; 1567 *) 1568 $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2 1569 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 1570 exit 1 1571 ;; 1572 esac 1573 1574 case "$revision" in 1575 0 | [1-9] | [1-9][0-9]*) ;; 1576 *) 1577 $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2 1578 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 1579 exit 1 1580 ;; 1581 esac 1582 1583 case "$age" in 1584 0 | [1-9] | [1-9][0-9]*) ;; 1585 *) 1586 $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2 1587 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 1588 exit 1 1589 ;; 1590 esac 1591 1592 if test $age -gt $current; then 1593 $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 1594 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 1595 exit 1 1596 fi 1597 1598 # Calculate the version variables. 1599 major= 1600 versuffix= 1601 verstring= 1602 case "$version_type" in 1603 none) ;; 1604 1605 irix) 1606 major=`expr $current - $age + 1` 1607 versuffix="$major.$revision" 1608 verstring="sgi$major.$revision" 1609 1610 # Add in all the interfaces that we are compatible with. 1611 loop=$revision 1612 while test $loop != 0; do 1613 iface=`expr $revision - $loop` 1614 loop=`expr $loop - 1` 1615 verstring="sgi$major.$iface:$verstring" 1616 done 1617 ;; 1618 1619 linux) 1620 major=.`expr $current - $age` 1621 versuffix="$major.$age.$revision" 1622 ;; 1623 1624 osf) 1625 major=`expr $current - $age` 1626 versuffix=".$current.$age.$revision" 1627 verstring="$current.$age.$revision" 1628 1629 # Add in all the interfaces that we are compatible with. 1630 loop=$age 1631 while test $loop != 0; do 1632 iface=`expr $current - $loop` 1633 loop=`expr $loop - 1` 1634 verstring="$verstring:${iface}.0" 1635 done 1636 1637 # Make executables depend on our current version. 1638 verstring="$verstring:${current}.0" 1639 ;; 1640 1641 sunos) 1642 major=".$current" 1643 versuffix=".$current.$revision" 1644 ;; 1645 1646 freebsd-aout) 1647 major=".$current" 1648 versuffix=".$current.$revision"; 1649 ;; 1650 1651 freebsd-elf) 1652 major=".$current" 1653 versuffix=".$current"; 1654 ;; 1655 1656 windows) 1657 # Like Linux, but with '-' rather than '.', since we only 1658 # want one extension on Windows 95. 1659 major=`expr $current - $age` 1660 versuffix="-$major-$age-$revision" 1661 ;; 1662 1663 *) 1664 $echo "$modename: unknown library version type \`$version_type'" 1>&2 1665 echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 1666 exit 1 1667 ;; 1668 esac 1669 1670 # Clear the version info if we defaulted, and they specified a release. 1671 if test -z "$vinfo" && test -n "$release"; then 1672 major= 1673 verstring="0.0" 1674 if test "$need_version" = no; then 1675 versuffix= 1676 else 1677 versuffix=".0.0" 1678 fi 1679 fi 1680 1681 # Remove version info from name if versioning should be avoided 1682 if test "$avoid_version" = yes && test "$need_version" = no; then 1683 major= 1684 versuffix= 1685 verstring="" 1686 fi 1687 1688 # Check to see if the archive will have undefined symbols. 1689 if test "$allow_undefined" = yes; then 1690 if test "$allow_undefined_flag" = unsupported; then 1691 $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2 1692 build_libtool_libs=no 1693 build_old_libs=yes 1694 fi 1695 else 1696 # Don't allow undefined symbols. 1697 allow_undefined_flag="$no_undefined_flag" 1698 fi 1699 1700 dependency_libs="$deplibs" 1701 case "$host" in 1702 *-*-cygwin* | *-*-mingw* | *-*-os2*) 1703 # these systems don't actually have a c library (as such)! 1704 ;; 1705 *) 1706 # Add libc to deplibs on all other systems. 1707 deplibs="$deplibs -lc" 1708 ;; 1709 esac 1710 fi 1711 1712 # Create the output directory, or remove our outputs if we need to. 1713 if test -d $output_objdir; then 1714 $show "${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.*" 1715 $run ${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.* 1716 else 1717 $show "$mkdir $output_objdir" 1718 $run $mkdir $output_objdir 1719 status=$? 1720 if test $status -ne 0 && test ! -d $output_objdir; then 1721 exit $status 1722 fi 1723 fi 1724 1725 # Now set the variables for building old libraries. 1726 if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then 1727 oldlibs="$oldlibs $output_objdir/$libname.$libext" 1728 1729 # Transform .lo files to .o files. 1730 oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` 1731 fi 1732 1733 if test "$build_libtool_libs" = yes; then 1734 # Transform deplibs into only deplibs that can be linked in shared. 1735 name_save=$name 1736 libname_save=$libname 1737 release_save=$release 1738 versuffix_save=$versuffix 1739 major_save=$major 1740 # I'm not sure if I'm treating the release correctly. I think 1741 # release should show up in the -l (ie -lgmp5) so we don't want to 1742 # add it in twice. Is that correct? 1743 release="" 1744 versuffix="" 1745 major="" 1746 newdeplibs= 1747 droppeddeps=no 1748 case "$deplibs_check_method" in 1749 pass_all) 1750 newdeplibs=$deplibs 1751 ;; # Don't check for shared/static. Everything works. 1752 # This might be a little naive. We might want to check 1753 # whether the library exists or not. But this is on 1754 # osf3 & osf4 and I'm not really sure... Just 1755 # implementing what was already the behaviour. 1756 test_compile) 1757 # This code stresses the "libraries are programs" paradigm to its 1758 # limits. Maybe even breaks it. We compile a program, linking it 1759 # against the deplibs as a proxy for the library. Then we can check 1760 # whether they linked in statically or dynamically with ldd. 1761 $rm conftest.c 1762 cat > conftest.c <<EOF 1763 int main() { return 0; } 1764EOF 1765 $rm conftest 1766 $C_compiler -o conftest conftest.c $deplibs 1767 if test $? -eq 0 ; then 1768 ldd_output=`ldd conftest` 1769 for i in $deplibs; do 1770 name="`expr $i : '-l\(.*\)'`" 1771 # If $name is empty we are operating on a -L argument. 1772 if test "$name" != "" ; then 1773 libname=`eval \\$echo \"$libname_spec\"` 1774 deplib_matches=`eval \\$echo \"$library_names_spec\"` 1775 set dummy $deplib_matches 1776 deplib_match=$2 1777 if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 1778 newdeplibs="$newdeplibs $i" 1779 else 1780 droppeddeps=yes 1781 echo 1782 echo "*** Warning: This library needs some functionality provided by $i." 1783 echo "*** I have the capability to make that library automatically link in when" 1784 echo "*** you link to this library. But I can only do this if you have a" 1785 echo "*** shared version of the library, which you do not appear to have." 1786 fi 1787 else 1788 newdeplibs="$newdeplibs $i" 1789 fi 1790 done 1791 else 1792 # Error occured in the first compile. Let's try to salvage the situation: 1793 # Compile a seperate program for each library. 1794 for i in $deplibs; do 1795 name="`expr $i : '-l\(.*\)'`" 1796 # If $name is empty we are operating on a -L argument. 1797 if test "$name" != "" ; then 1798 $rm conftest 1799 $C_compiler -o conftest conftest.c $i 1800 # Did it work? 1801 if test $? -eq 0 ; then 1802 ldd_output=`ldd conftest` 1803 libname=`eval \\$echo \"$libname_spec\"` 1804 deplib_matches=`eval \\$echo \"$library_names_spec\"` 1805 set dummy $deplib_matches 1806 deplib_match=$2 1807 if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 1808 newdeplibs="$newdeplibs $i" 1809 else 1810 droppeddeps=yes 1811 echo 1812 echo "*** Warning: This library needs some functionality provided by $i." 1813 echo "*** I have the capability to make that library automatically link in when" 1814 echo "*** you link to this library. But I can only do this if you have a" 1815 echo "*** shared version of the library, which you do not appear to have." 1816 fi 1817 else 1818 droppeddeps=yes 1819 echo 1820 echo "*** Warning! Library $i is needed by this library but I was not able to" 1821 echo "*** make it link in! You will probably need to install it or some" 1822 echo "*** library that it depends on before this library will be fully" 1823 echo "*** functional. Installing it before continuing would be even better." 1824 fi 1825 else 1826 newdeplibs="$newdeplibs $i" 1827 fi 1828 done 1829 fi 1830 deplibs=$newdeplibs 1831 ;; 1832 file_magic*) 1833 set dummy $deplibs_check_method 1834 file_magic_regex="`expr \"$deplibs_check_method\" : \"$2 \(.*\)\"`" 1835 for a_deplib in $deplibs; do 1836 name="`expr $a_deplib : '-l\(.*\)'`" 1837 # If $name is empty we are operating on a -L argument. 1838 if test "$name" != "" ; then 1839 libname=`eval \\$echo \"$libname_spec\"` 1840 for i in $lib_search_path; do 1841 potential_libs=`ls $i/$libname[.-]* 2>/dev/null` 1842 for potent_lib in $potential_libs; do 1843 # Follow soft links. 1844 if ls -lLd "$potlib" 2>/dev/null \ 1845 | grep " -> " >/dev/null; then 1846 continue 1847 fi 1848 # The statement above tries to avoid entering an 1849 # endless loop below, in case of cyclic links. 1850 # We might still enter an endless loop, since a link 1851 # loop can be closed while we follow links, 1852 # but so what? 1853 potlib="$potent_lib" 1854 while test -h "$potlib" 2>/dev/null; do 1855 potliblink=`ls -ld $potlib | sed 's/.* -> //'` 1856 case "$potliblink" in 1857 /*) potlib="$potliblink";; 1858 *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; 1859 esac 1860 done 1861 if eval $file_magic_cmd \"\$potlib\" \ 1862 | sed 10q \ 1863 | egrep "$file_magic_regex" > /dev/null; then 1864 newdeplibs="$newdeplibs $a_deplib" 1865 a_deplib="" 1866 break 2 1867 fi 1868 done 1869 done 1870 if test -n "$a_deplib" ; then 1871 droppeddeps=yes 1872 echo 1873 echo "*** Warning: This library needs some functionality provided by $a_deplib." 1874 echo "*** I have the capability to make that library automatically link in when" 1875 echo "*** you link to this library. But I can only do this if you have a" 1876 echo "*** shared version of the library, which you do not appear to have." 1877 fi 1878 else 1879 # Add a -L argument. 1880 newdeplibs="$newdeplibs $a_deplib" 1881 fi 1882 done # Gone through all deplibs. 1883 ;; 1884 none | unknown | *) newdeplibs="" 1885 if $echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ 1886 -e 's/ -[LR][^ ]*//g' -e 's/[ ]//g' | 1887 grep . >/dev/null; then 1888 echo 1889 if test "X$deplibs_check_method" = "Xnone"; then 1890 echo "*** Warning: inter-library dependencies are not supported in this platform." 1891 else 1892 echo "*** Warning: inter-library dependencies are not known to be supported." 1893 fi 1894 echo "*** All declared inter-library dependencies are being dropped." 1895 droppeddeps=yes 1896 fi 1897 ;; 1898 esac 1899 versuffix=$versuffix_save 1900 major=$major_save 1901 release=$release_save 1902 libname=$libname_save 1903 name=$name_save 1904 1905 if test "$droppeddeps" = yes; then 1906 if test "$module" = yes; then 1907 echo 1908 echo "*** Warning: libtool could not satisfy all declared inter-library" 1909 echo "*** dependencies of module $libname. Therefore, libtool will create" 1910 echo "*** a static module, that should work as long as the dlopening" 1911 echo "*** application is linked with the -dlopen flag." 1912 if test -z "$global_symbol_pipe"; then 1913 echo 1914 echo "*** However, this would only work if libtool was able to extract symbol" 1915 echo "*** lists from a program, using \`nm' or equivalent, but libtool could" 1916 echo "*** not find such a program. So, this module is probably useless." 1917 echo "*** \`nm' from GNU binutils and a full rebuild may help." 1918 fi 1919 if test "$build_old_libs" = no; then 1920 oldlibs="$output_objdir/$libname.$libext" 1921 build_libtool_libs=module 1922 build_old_libs=yes 1923 else 1924 build_libtool_libs=no 1925 fi 1926 dlname= 1927 library_names= 1928 else 1929 echo "*** The inter-library dependencies that have been dropped here will be" 1930 echo "*** automatically added whenever a program is linked with this library" 1931 echo "*** or is declared to -dlopen it." 1932 fi 1933 fi 1934 fi 1935 1936 # test again, we may have decided not to build it any more 1937 if test "$build_libtool_libs" = yes; then 1938 deplibs=$newdeplibs 1939 # Done checking deplibs! 1940 1941 # Get the real and link names of the library. 1942 eval library_names=\"$library_names_spec\" 1943 set dummy $library_names 1944 realname="$2" 1945 shift; shift 1946 1947 if test -n "$soname_spec"; then 1948 eval soname=\"$soname_spec\" 1949 else 1950 soname="$realname" 1951 fi 1952 1953 lib="$output_objdir/$realname" 1954 for link 1955 do 1956 linknames="$linknames $link" 1957 done 1958 1959 # Ensure that we have .o objects for linkers which dislike .lo 1960 # (e.g. aix) incase we are running --disable-static 1961 for obj in $libobjs; do 1962 oldobj=`$echo "X$obj" | $Xsed -e "$lo2o"` 1963 test -f $oldobj || ${LN_S} $obj $oldobj 1964 done 1965 1966 # Use standard objects if they are pic 1967 test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 1968 1969 if test -n "$whole_archive_flag_spec"; then 1970 if test -n "$convenience"; then 1971 eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 1972 fi 1973 else 1974 for xlib in $convenience; do 1975 # Extract the objects. 1976 xdir="$xlib"x 1977 generated="$generated $xdir" 1978 xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` 1979 1980 $show "${rm}r $xdir" 1981 $run ${rm}r "$xdir" 1982 $show "mkdir $xdir" 1983 $run mkdir "$xdir" 1984 status=$? 1985 if test $status -ne 0 && test ! -d "$xdir"; then 1986 exit $status 1987 fi 1988 $show "(cd $xdir && $AR x ../$xlib)" 1989 $run eval "(cd \$xdir && $AR x ../\$xlib)" || exit $? 1990 1991 libobjs="$libobjs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP` 1992 done 1993 fi 1994 1995 if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then 1996 eval flag=\"$thread_safe_flag_spec\" 1997 1998 linkopts="$linkopts $flag" 1999 fi 2000 2001 # Prepare the list of exported symbols 2002 if test -z "$export_symbols"; then 2003 if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then 2004 $show "generating symbol list for \`$libname.la'" 2005 export_symbols="$objdir/$libname.exp" 2006 $run $rm $export_symbols 2007 eval cmds=\"$export_symbols_cmds\" 2008 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' 2009 for cmd in $cmds; do 2010 IFS="$save_ifs" 2011 $show "$cmd" 2012 $run eval "$cmd" || exit $? 2013 done 2014 IFS="$save_ifs" 2015 if test -n "$export_symbols_regex"; then 2016 $show "egrep -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\"" 2017 $run eval 'egrep -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' 2018 $show "$mv \"${export_symbols}T\" \"$export_symbols\"" 2019 $run eval '$mv "${export_symbols}T" "$export_symbols"' 2020 fi 2021 fi 2022 fi 2023 2024 if test -n "$export_symbols" && test -n "$include_expsyms"; then 2025 $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"' 2026 fi 2027 2028 # Do each of the archive commands. 2029 if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 2030 eval cmds=\"$archive_expsym_cmds\" 2031 else 2032 eval cmds=\"$archive_cmds\" 2033 fi 2034 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' 2035 for cmd in $cmds; do 2036 IFS="$save_ifs" 2037 $show "$cmd" 2038 $run eval "$cmd" || exit $? 2039 done 2040 IFS="$save_ifs" 2041 2042 # Create links to the real library. 2043 for linkname in $linknames; do 2044 if test "$realname" != "$linkname"; then 2045 $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)" 2046 $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $? 2047 fi 2048 done 2049 2050 # If -module or -export-dynamic was specified, set the dlname. 2051 if test "$module" = yes || test "$export_dynamic" = yes; then 2052 # On all known operating systems, these are identical. 2053 dlname="$soname" 2054 fi 2055 fi 2056 ;; 2057 2058 *.lo | *.o | *.obj) 2059 if test -n "$link_against_libtool_libs"; then 2060 $echo "$modename: error: cannot link libtool libraries into objects" 1>&2 2061 exit 1 2062 fi 2063 2064 if test -n "$deplibs"; then 2065 $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 2066 fi 2067 2068 if test -n "$dlfiles$dlprefiles"; then 2069 $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2 2070 fi 2071 2072 if test -n "$rpath"; then 2073 $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2 2074 fi 2075 2076 if test -n "$xrpath"; then 2077 $echo "$modename: warning: \`-R' is ignored for objects" 1>&2 2078 fi 2079 2080 if test -n "$vinfo"; then 2081 $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2 2082 fi 2083 2084 if test -n "$release"; then 2085 $echo "$modename: warning: \`-release' is ignored for objects" 1>&2 2086 fi 2087 2088 case "$output" in 2089 *.lo) 2090 if test -n "$objs"; then 2091 $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 2092 exit 1 2093 fi 2094 libobj="$output" 2095 obj=`$echo "X$output" | $Xsed -e "$lo2o"` 2096 ;; 2097 *) 2098 libobj= 2099 obj="$output" 2100 ;; 2101 esac 2102 2103 # Delete the old objects. 2104 $run $rm $obj $libobj 2105 2106 # Create the old-style object. 2107 reload_objs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP` 2108 2109 output="$obj" 2110 eval cmds=\"$reload_cmds\" 2111 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' 2112 for cmd in $cmds; do 2113 IFS="$save_ifs" 2114 $show "$cmd" 2115 $run eval "$cmd" || exit $? 2116 done 2117 IFS="$save_ifs" 2118 2119 # Exit if we aren't doing a library object file. 2120 test -z "$libobj" && exit 0 2121 2122 if test "$build_libtool_libs" != yes; then 2123 # Create an invalid libtool object if no PIC, so that we don't 2124 # accidentally link it into a program. 2125 $show "echo timestamp > $libobj" 2126 $run eval "echo timestamp > $libobj" || exit $? 2127 exit 0 2128 fi 2129 2130 if test -n "$pic_flag"; then 2131 # Only do commands if we really have different PIC objects. 2132 reload_objs="$libobjs" 2133 output="$libobj" 2134 eval cmds=\"$reload_cmds\" 2135 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' 2136 for cmd in $cmds; do 2137 IFS="$save_ifs" 2138 $show "$cmd" 2139 $run eval "$cmd" || exit $? 2140 done 2141 IFS="$save_ifs" 2142 else 2143 # Just create a symlink. 2144 $show $rm $libobj 2145 $run $rm $libobj 2146 $show "$LN_S $obj $libobj" 2147 $run $LN_S $obj $libobj || exit $? 2148 fi 2149 2150 exit 0 2151 ;; 2152 2153 # Anything else should be a program. 2154 *) 2155 if test -n "$vinfo"; then 2156 $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2 2157 fi 2158 2159 if test -n "$release"; then 2160 $echo "$modename: warning: \`-release' is ignored for programs" 1>&2 2161 fi 2162 2163 if test "$preload" = yes; then 2164 if test "$dlopen" = unknown && test "$dlopen_self" = unknown && 2165 test "$dlopen_self_static" = unknown; then 2166 $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support." 2167 fi 2168 fi 2169 2170 if test "$dlself" = yes && test "$export_dynamic" = no; then 2171 $echo "$modename: error: \`-dlopen self' requires \`-export-dynamic'" 1>&2 2172 exit 1 2173 fi 2174 2175 if test -n "$rpath$xrpath"; then 2176 # If the user specified any rpath flags, then add them. 2177 for libdir in $rpath $xrpath; do 2178 # This is the magic to use -rpath. 2179 case "$compile_rpath " in 2180 *" $libdir "*) ;; 2181 *) compile_rpath="$compile_rpath $libdir" ;; 2182 esac 2183 case "$finalize_rpath " in 2184 *" $libdir "*) ;; 2185 *) finalize_rpath="$finalize_rpath $libdir" ;; 2186 esac 2187 done 2188 fi 2189 2190 # Now hardcode the library paths 2191 rpath= 2192 hardcode_libdirs= 2193 for libdir in $compile_rpath $finalize_rpath; do 2194 if test -n "$hardcode_libdir_flag_spec"; then 2195 if test -n "$hardcode_libdir_separator"; then 2196 if test -z "$hardcode_libdirs"; then 2197 hardcode_libdirs="$libdir" 2198 else 2199 # Just accumulate the unique libdirs. 2200 case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in 2201 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 2202 ;; 2203 *) 2204 hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 2205 ;; 2206 esac 2207 fi 2208 else 2209 eval flag=\"$hardcode_libdir_flag_spec\" 2210 2211 rpath="$rpath $flag" 2212 fi 2213 elif test -n "$runpath_var"; then 2214 case "$perm_rpath " in 2215 *" $libdir "*) ;; 2216 *) perm_rpath="$perm_rpath $libdir" ;; 2217 esac 2218 fi 2219 done 2220 # Substitute the hardcoded libdirs into the rpath. 2221 if test -n "$hardcode_libdir_separator" && 2222 test -n "$hardcode_libdirs"; then 2223 libdir="$hardcode_libdirs" 2224 eval rpath=\" $hardcode_libdir_flag_spec\" 2225 fi 2226 compile_rpath="$rpath" 2227 2228 rpath= 2229 hardcode_libdirs= 2230 for libdir in $finalize_rpath; do 2231 if test -n "$hardcode_libdir_flag_spec"; then 2232 if test -n "$hardcode_libdir_separator"; then 2233 if test -z "$hardcode_libdirs"; then 2234 hardcode_libdirs="$libdir" 2235 else 2236 # Just accumulate the unique libdirs. 2237 case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in 2238 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 2239 ;; 2240 *) 2241 hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 2242 ;; 2243 esac 2244 fi 2245 else 2246 eval flag=\"$hardcode_libdir_flag_spec\" 2247 2248 rpath="$rpath $flag" 2249 fi 2250 elif test -n "$runpath_var"; then 2251 case "$finalize_perm_rpath " in 2252 *" $libdir "*) ;; 2253 *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; 2254 esac 2255 fi 2256 done 2257 # Substitute the hardcoded libdirs into the rpath. 2258 if test -n "$hardcode_libdir_separator" && 2259 test -n "$hardcode_libdirs"; then 2260 libdir="$hardcode_libdirs" 2261 eval rpath=\" $hardcode_libdir_flag_spec\" 2262 fi 2263 finalize_rpath="$rpath" 2264 2265 output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` 2266 if test "X$output_objdir" = "X$output"; then 2267 output_objdir="$objdir" 2268 else 2269 output_objdir="$output_objdir/$objdir" 2270 fi 2271 2272 if test -n "$libobjs" && test "$build_old_libs" = yes; then 2273 # Transform all the library objects into standard objects. 2274 compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 2275 finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 2276 fi 2277 2278 dlsyms= 2279 if test -n "$dlfiles$dlprefiles" || test "$dlself" = yes; then 2280 if test -n "$NM" && test -n "$global_symbol_pipe"; then 2281 dlsyms="${outputname}S.c" 2282 else 2283 $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2 2284 fi 2285 fi 2286 2287 if test -n "$dlsyms"; then 2288 case "$dlsyms" in 2289 "") ;; 2290 *.c) 2291 # Discover the nlist of each of the dlfiles. 2292 nlist="$objdir/${output}.nm" 2293 2294 if test -d $objdir; then 2295 $show "$rm $nlist ${nlist}S ${nlist}T" 2296 $run $rm "$nlist" "${nlist}S" "${nlist}T" 2297 else 2298 $show "$mkdir $objdir" 2299 $run $mkdir $objdir 2300 status=$? 2301 if test $status -ne 0 && test ! -d $objdir; then 2302 exit $status 2303 fi 2304 fi 2305 2306 # Parse the name list into a source file. 2307 $show "creating $objdir/$dlsyms" 2308 2309 $echo > "$objdir/$dlsyms" "\ 2310/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */ 2311/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */ 2312 2313#ifdef __cplusplus 2314extern \"C\" { 2315#endif 2316 2317/* Prevent the only kind of declaration conflicts we can make. */ 2318#define lt_preloaded_symbols some_other_symbol 2319 2320/* External symbol declarations for the compiler. */\ 2321" 2322 2323 if test "$dlself" = yes; then 2324 $show "generating symbol list for \`$output'" 2325 2326 echo ': @PROGRAM@ ' > "$nlist" 2327 2328 # Add our own program objects to the symbol list. 2329 progfiles=`$echo "X$objs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 2330 for arg in $progfiles; do 2331 $show "extracting global C symbols from \`$arg'" 2332 $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" 2333 done 2334 2335 if test -n "$exclude_expsyms"; then 2336 $run eval 'egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' 2337 $run eval '$mv "$nlist"T "$nlist"' 2338 fi 2339 2340 if test -n "$export_symbols_regex"; then 2341 $run eval 'egrep -e "$export_symbols_regex" "$nlist" > "$nlist"T' 2342 $run eval '$mv "$nlist"T "$nlist"' 2343 fi 2344 2345 # Prepare the list of exported symbols 2346 if test -z "$export_symbols"; then 2347 export_symbols="$objdir/$output.exp" 2348 $run $rm $export_symbols 2349 $run eval "sed -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' 2350 else 2351 $run $rm $export_symbols 2352 $run eval "sed -e 's/\([][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$objdir/$output.exp"' 2353 $run eval 'grep -f "$objdir/$output.exp" < "$nlist" > "$nlist"T' 2354 $run eval 'mv "$nlist"T "$nlist"' 2355 fi 2356 fi 2357 2358 for arg in $dlprefiles; do 2359 $show "extracting global C symbols from \`$arg'" 2360 name=`echo "$arg" | sed -e 's%^.*/%%'` 2361 $run eval 'echo ": $name " >> "$nlist"' 2362 $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" 2363 done 2364 2365 if test -z "$run"; then 2366 # Make sure we have at least an empty file. 2367 test -f "$nlist" || : > "$nlist" 2368 2369 if test -n "$exclude_expsyms"; then 2370 egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T 2371 $mv "$nlist"T "$nlist" 2372 fi 2373 2374 # Try sorting and uniquifying the output. 2375 if grep -v "^: " < "$nlist" | sort +2 | uniq > "$nlist"S; then 2376 : 2377 else 2378 grep -v "^: " < "$nlist" > "$nlist"S 2379 fi 2380 2381 if test -f "$nlist"S; then 2382 eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"' 2383 else 2384 echo '/* NONE */' >> "$output_objdir/$dlsyms" 2385 fi 2386 2387 $echo >> "$output_objdir/$dlsyms" "\ 2388 2389#undef lt_preloaded_symbols 2390 2391#if defined (__STDC__) && __STDC__ 2392# define lt_ptr_t void * 2393#else 2394# define lt_ptr_t char * 2395# define const 2396#endif 2397 2398/* The mapping between symbol names and symbols. */ 2399const struct { 2400 const char *name; 2401 lt_ptr_t address; 2402} 2403lt_preloaded_symbols[] = 2404{\ 2405" 2406 2407 sed -n -e 's/^: \([^ ]*\) $/ {\"\1\", (lt_ptr_t) 0},/p' \ 2408 -e 's/^. \([^ ]*\) \([^ ]*\)$/ {"\2", (lt_ptr_t) \&\2},/p' \ 2409 < "$nlist" >> "$output_objdir/$dlsyms" 2410 2411 $echo >> "$output_objdir/$dlsyms" "\ 2412 {0, (lt_ptr_t) 0} 2413}; 2414 2415/* This works around a problem in FreeBSD linker */ 2416#ifdef FREEBSD_WORKAROUND 2417static const void *lt_preloaded_setup() { 2418 return lt_preloaded_symbols; 2419} 2420#endif 2421 2422#ifdef __cplusplus 2423} 2424#endif\ 2425" 2426 fi 2427 2428 pic_flag_for_symtable= 2429 case "$host" in 2430 # compiling the symbol table file with pic_flag works around 2431 # a FreeBSD bug that causes programs to crash when -lm is 2432 # linked before any other PIC object. But we must not use 2433 # pic_flag when linking with -static. The problem exists in 2434 # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. 2435 *-*-freebsd2*|*-*-freebsd3.0*) 2436 case "$compile_command " in 2437 *" -static "*) ;; 2438 *) pic_flag_for_symtable=" $pic_flag -DPIC -DFREEBSD_WORKAROUND";; 2439 esac 2440 esac 2441 2442 # Now compile the dynamic symbol file. 2443 $show "(cd $objdir && $C_compiler -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" 2444 $run eval '(cd $objdir && $C_compiler -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? 2445 2446 # Transform the symbol file into the correct name. 2447 compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$objdir/${output}S.${objext}%"` 2448 finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$objdir/${output}S.${objext}%"` 2449 ;; 2450 *) 2451 $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 2452 exit 1 2453 ;; 2454 esac 2455 else 2456 # We keep going just in case the user didn't refer to 2457 # lt_preloaded_symbols. The linker will fail if global_symbol_pipe 2458 # really was required. 2459 2460 # Nullify the symbol file. 2461 compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` 2462 finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` 2463 fi 2464 2465 if test -z "$link_against_libtool_libs" || test "$build_libtool_libs" != yes; then 2466 # Replace the output file specification. 2467 compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` 2468 link_command="$compile_command$compile_rpath" 2469 2470 # We have no uninstalled library dependencies, so finalize right now. 2471 $show "$link_command" 2472 $run eval "$link_command" 2473 exit $? 2474 fi 2475 2476 if test -n "$shlibpath_var"; then 2477 # We should set the shlibpath_var 2478 rpath= 2479 for dir in $temp_rpath; do 2480 case "$dir" in 2481 /* | [A-Za-z]:[/\\]*) 2482 # Absolute path. 2483 rpath="$rpath$dir:" 2484 ;; 2485 *) 2486 # Relative path: add a thisdir entry. 2487 rpath="$rpath\$thisdir/$dir:" 2488 ;; 2489 esac 2490 done 2491 temp_rpath="$rpath" 2492 fi 2493 2494 if test -n "$compile_shlibpath$finalize_shlibpath"; then 2495 compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" 2496 fi 2497 if test -n "$finalize_shlibpath"; then 2498 finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" 2499 fi 2500 2501 compile_var= 2502 finalize_var= 2503 if test -n "$runpath_var"; then 2504 if test -n "$perm_rpath"; then 2505 # We should set the runpath_var. 2506 rpath= 2507 for dir in $perm_rpath; do 2508 rpath="$rpath$dir:" 2509 done 2510 compile_var="$runpath_var=\"$rpath\$$runpath_var\" " 2511 fi 2512 if test -n "$finalize_perm_rpath"; then 2513 # We should set the runpath_var. 2514 rpath= 2515 for dir in $finalize_perm_rpath; do 2516 rpath="$rpath$dir:" 2517 done 2518 finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " 2519 fi 2520 fi 2521 2522 if test "$hardcode_action" = relink; then 2523 # Fast installation is not supported 2524 link_command="$compile_var$compile_command$compile_rpath" 2525 relink_command="$finalize_var$finalize_command$finalize_rpath" 2526 2527 # AGH! Flame the AIX and HP-UX people for me, will ya? 2528 $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2 2529 $echo "$modename: \`$output' will be relinked during installation" 1>&2 2530 else 2531 if test "$fast_install" != no; then 2532 link_command="$finalize_var$compile_command$finalize_rpath" 2533 if test "$fast_install" = yes; then 2534 relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` 2535 else 2536 # fast_install is set to needless 2537 relink_command= 2538 fi 2539 else 2540 link_command="$compile_var$compile_command$compile_rpath" 2541 relink_command="$finalize_var$finalize_command$finalize_rpath" 2542 fi 2543 fi 2544 2545 # Replace the output file specification. 2546 link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` 2547 2548 # Create the binary in the object directory, then wrap it. 2549 if test ! -d $output_objdir; then 2550 $show "$mkdir $output_objdir" 2551 $run $mkdir $output_objdir 2552 status=$? 2553 if test $status -ne 0 && test ! -d $objdir; then 2554 exit $status 2555 fi 2556 fi 2557 2558 # Delete the old output file. 2559 $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname 2560 2561 $show "$link_command" 2562 $run eval "$link_command" || exit $? 2563 2564 # Now create the wrapper script. 2565 $show "creating $output" 2566 2567 # Quote the relink command for shipping. 2568 if test -n "$relink_command"; then 2569 relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` 2570 fi 2571 2572 # Quote $echo for shipping. 2573 if test "X$echo" = "X$SHELL $0 --fallback-echo"; then 2574 case "$0" in 2575 /* | [A-Za-z]:[/\\]*) qecho="$SHELL $0 --fallback-echo";; 2576 *) qecho="$SHELL `pwd`/$0 --fallback-echo";; 2577 esac 2578 qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"` 2579 else 2580 qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"` 2581 fi 2582 2583 # Only actually do things if our run command is non-null. 2584 if test -z "$run"; then 2585 # win32 will think the script is a binary if it has 2586 # a .exe suffix, so we strip it off here. 2587 case $output in 2588 *.exe) output=`echo $output|sed 's,.exe$,,'` ;; 2589 esac 2590 $rm $output 2591 trap "$rm $output; exit 1" 1 2 15 2592 2593 $echo > $output "\ 2594#! $SHELL 2595 2596# $output - temporary wrapper script for $objdir/$outputname 2597# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP 2598# 2599# The $output program cannot be directly executed until all the libtool 2600# libraries that it depends on are installed. 2601# 2602# This wrapper script should never be moved out of the build directory. 2603# If it is, it will not operate correctly. 2604 2605# Sed substitution that helps us do robust quoting. It backslashifies 2606# metacharacters that are still active within double-quoted strings. 2607Xsed='sed -e 1s/^X//' 2608sed_quote_subst='$sed_quote_subst' 2609 2610# The HP-UX ksh and POSIX shell print the target directory to stdout 2611# if CDPATH is set. 2612if test \"\${CDPATH+set}\" = set; then CDPATH=; export CDPATH; fi 2613 2614relink_command=\"$relink_command\" 2615 2616# This environment variable determines our operation mode. 2617if test \"\$libtool_install_magic\" = \"$magic\"; then 2618 # install mode needs the following variable: 2619 link_against_libtool_libs='$link_against_libtool_libs' 2620else 2621 # When we are sourced in execute mode, \$file and \$echo are already set. 2622 if test \"\$libtool_execute_magic\" != \"$magic\"; then 2623 echo=\"$qecho\" 2624 file=\"\$0\" 2625 # Make sure echo works. 2626 if test \"X\$1\" = X--no-reexec; then 2627 # Discard the --no-reexec flag, and continue. 2628 shift 2629 elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then 2630 # Yippee, \$echo works! 2631 : 2632 else 2633 # Restart under the correct shell, and then maybe \$echo will work. 2634 exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} 2635 fi 2636 fi\ 2637" 2638 $echo >> $output "\ 2639 2640 # Find the directory that this script lives in. 2641 thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` 2642 test \"x\$thisdir\" = \"x\$file\" && thisdir=. 2643 2644 # Follow symbolic links until we get to the real thisdir. 2645 file=\`ls -ld \"\$file\" | sed -n 's/.*-> //p'\` 2646 while test -n \"\$file\"; do 2647 destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` 2648 2649 # If there was a directory component, then change thisdir. 2650 if test \"x\$destdir\" != \"x\$file\"; then 2651 case \"\$destdir\" in 2652 /* | [A-Za-z]:[/\\]*) thisdir=\"\$destdir\" ;; 2653 *) thisdir=\"\$thisdir/\$destdir\" ;; 2654 esac 2655 fi 2656 2657 file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` 2658 file=\`ls -ld \"\$thisdir/\$file\" | sed -n 's/.*-> //p'\` 2659 done 2660 2661 # Try to get the absolute directory name. 2662 absdir=\`cd \"\$thisdir\" && pwd\` 2663 test -n \"\$absdir\" && thisdir=\"\$absdir\" 2664" 2665 2666 if test "$fast_install" = yes; then 2667 echo >> $output "\ 2668 program=lt-'$outputname' 2669 progdir=\"\$thisdir/$objdir\" 2670 2671 if test ! -f \"\$progdir/\$program\" || \\ 2672 { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | sed 1q\`; \\ 2673 test \"X\$file\" != \"X\$progdir/\$program\"; }; then 2674 2675 file=\"\$\$-\$program\" 2676 2677 if test ! -d \"\$progdir\"; then 2678 $mkdir \"\$progdir\" 2679 else 2680 $rm \"\$progdir/\$file\" 2681 fi" 2682 2683 echo >> $output "\ 2684 2685 # relink executable if necessary 2686 if test -n \"\$relink_command\"; then 2687 if (cd \"\$thisdir\" && eval \$relink_command); then : 2688 else 2689 $rm \"\$progdir/\$file\" 2690 exit 1 2691 fi 2692 fi 2693 2694 $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || 2695 { $rm \"\$progdir/\$program\"; 2696 $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; } 2697 $rm \"\$progdir/\$file\" 2698 fi" 2699 else 2700 echo >> $output "\ 2701 program='$outputname' 2702 progdir=\"\$thisdir/$objdir\" 2703" 2704 fi 2705 2706 echo >> $output "\ 2707 2708 if test -f \"\$progdir/\$program\"; then" 2709 2710 # Export our shlibpath_var if we have one. 2711 if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 2712 $echo >> $output "\ 2713 # Add our own library path to $shlibpath_var 2714 $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" 2715 2716 # Some systems cannot cope with colon-terminated $shlibpath_var 2717 # The second colon is a workaround for a bug in BeOS R4 sed 2718 $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` 2719 2720 export $shlibpath_var 2721" 2722 fi 2723 2724 # fixup the dll searchpath if we need to. 2725 if test -n "$dllsearchpath"; then 2726 $echo >> $output "\ 2727 # Add the dll search path components to the executable PATH 2728 PATH=$dllsearchpath:\$PATH 2729" 2730 fi 2731 2732 $echo >> $output "\ 2733 if test \"\$libtool_execute_magic\" != \"$magic\"; then 2734 # Run the actual program with our arguments. 2735" 2736 case $host in 2737 *-*-cygwin* | *-*-mingw | *-*-os2*) 2738 # win32 systems need to use the prog path for dll 2739 # lookup to work 2740 $echo >> $output "\ 2741 exec \$progdir\\\\\$program \${1+\"\$@\"} 2742" 2743 ;; 2744 *) 2745 $echo >> $output "\ 2746 # Export the path to the program. 2747 PATH=\"\$progdir:\$PATH\" 2748 export PATH 2749 2750 exec \$program \${1+\"\$@\"} 2751" 2752 ;; 2753 esac 2754 $echo >> $output "\ 2755 \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\" 2756 exit 1 2757 fi 2758 else 2759 # The program doesn't exist. 2760 \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2 2761 \$echo \"This script is just a wrapper for \$program.\" 1>&2 2762 echo \"See the $PACKAGE documentation for more information.\" 1>&2 2763 exit 1 2764 fi 2765fi\ 2766" 2767 chmod +x $output 2768 fi 2769 exit 0 2770 ;; 2771 esac 2772 2773 # See if we need to build an old-fashioned archive. 2774 for oldlib in $oldlibs; do 2775 2776 if test "$build_libtool_libs" = convenience; then 2777 oldobjs="$libobjs_save" 2778 addlibs="$convenience" 2779 build_libtool_libs=no 2780 else 2781 if test "$build_libtool_libs" = module; then 2782 oldobjs="$libobjs_save" 2783 build_libtool_libs=no 2784 else 2785 oldobjs="$objs "`$echo "X$libobjs_save" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP` 2786 fi 2787 addlibs="$old_convenience" 2788 fi 2789 2790 # Add in members from convenience archives. 2791 for xlib in $addlibs; do 2792 # Extract the objects. 2793 xdir="$xlib"x 2794 generated="$generated $xdir" 2795 xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` 2796 2797 $show "${rm}r $xdir" 2798 $run ${rm}r "$xdir" 2799 $show "mkdir $xdir" 2800 $run mkdir "$xdir" 2801 status=$? 2802 if test $status -ne 0 && test ! -d "$xdir"; then 2803 exit $status 2804 fi 2805 $show "(cd $xdir && $AR x ../$xlib)" 2806 $run eval "(cd \$xdir && $AR x ../\$xlib)" || exit $? 2807 2808 oldobjs="$oldobjs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP` 2809 done 2810 2811 # Do each command in the archive commands. 2812 if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then 2813 eval cmds=\"$old_archive_from_new_cmds\" 2814 else 2815 eval cmds=\"$old_archive_cmds\" 2816 fi 2817 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' 2818 for cmd in $cmds; do 2819 IFS="$save_ifs" 2820 $show "$cmd" 2821 $run eval "$cmd" || exit $? 2822 done 2823 IFS="$save_ifs" 2824 done 2825 2826 if test -n "$generated"; then 2827 $show "${rm}r$generated" 2828 $run ${rm}r$generated 2829 fi 2830 2831 # Now create the libtool archive. 2832 case "$output" in 2833 *.la) 2834 old_library= 2835 test "$build_old_libs" = yes && old_library="$libname.$libext" 2836 $show "creating $output" 2837 2838 if test -n "$xrpath"; then 2839 temp_xrpath= 2840 for libdir in $xrpath; do 2841 temp_xrpath="$temp_xrpath -R$libdir" 2842 done 2843 dependency_libs="$temp_xrpath $dependency_libs" 2844 fi 2845 2846 # Only create the output if not a dry run. 2847 if test -z "$run"; then 2848 $echo > $output "\ 2849# $output - a libtool library file 2850# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP 2851 2852# The name that we can dlopen(3). 2853dlname='$dlname' 2854 2855# Names of this library. 2856library_names='$library_names' 2857 2858# The name of the static archive. 2859old_library='$old_library' 2860 2861# Libraries that this one depends upon. 2862dependency_libs='$dependency_libs' 2863 2864# Version information for $libname. 2865current=$current 2866age=$age 2867revision=$revision 2868 2869# Is this an already installed library? 2870installed=no 2871 2872# Directory that this library needs to be installed in: 2873libdir='$install_libdir'\ 2874" 2875 2876 $rm "$output_objdir/$outputname"i 2877 sed 's/^installed=no$/installed=yes/' \ 2878 < "$output" > "$output_objdir/$outputname"i || exit 1 2879 fi 2880 2881 # Do a symbolic link so that the libtool archive can be found in 2882 # LD_LIBRARY_PATH before the program is installed. 2883 $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" 2884 $run eval "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" || exit $? 2885 ;; 2886 esac 2887 exit 0 2888 ;; 2889 2890 # libtool install mode 2891 install) 2892 modename="$modename: install" 2893 2894 # There may be an optional sh(1) argument at the beginning of 2895 # install_prog (especially on Windows NT). 2896 if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh; then 2897 # Aesthetically quote it. 2898 arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` 2899 case "$arg" in 2900 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) 2901 arg="\"$arg\"" 2902 ;; 2903 esac 2904 install_prog="$arg " 2905 arg="$1" 2906 shift 2907 else 2908 install_prog= 2909 arg="$nonopt" 2910 fi 2911 2912 # The real first argument should be the name of the installation program. 2913 # Aesthetically quote it. 2914 arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 2915 case "$arg" in 2916 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) 2917 arg="\"$arg\"" 2918 ;; 2919 esac 2920 install_prog="$install_prog$arg" 2921 2922 # We need to accept at least all the BSD install flags. 2923 dest= 2924 files= 2925 opts= 2926 prev= 2927 install_type= 2928 isdir=no 2929 stripme= 2930 for arg 2931 do 2932 if test -n "$dest"; then 2933 files="$files $dest" 2934 dest="$arg" 2935 continue 2936 fi 2937 2938 case "$arg" in 2939 -d) isdir=yes ;; 2940 -f) prev="-f" ;; 2941 -g) prev="-g" ;; 2942 -m) prev="-m" ;; 2943 -o) prev="-o" ;; 2944 -s) 2945 stripme=" -s" 2946 continue 2947 ;; 2948 -*) ;; 2949 2950 *) 2951 # If the previous option needed an argument, then skip it. 2952 if test -n "$prev"; then 2953 prev= 2954 else 2955 dest="$arg" 2956 continue 2957 fi 2958 ;; 2959 esac 2960 2961 # Aesthetically quote the argument. 2962 arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 2963 case "$arg" in 2964 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) 2965 arg="\"$arg\"" 2966 ;; 2967 esac 2968 install_prog="$install_prog $arg" 2969 done 2970 2971 if test -z "$install_prog"; then 2972 $echo "$modename: you must specify an install program" 1>&2 2973 $echo "$help" 1>&2 2974 exit 1 2975 fi 2976 2977 if test -n "$prev"; then 2978 $echo "$modename: the \`$prev' option requires an argument" 1>&2 2979 $echo "$help" 1>&2 2980 exit 1 2981 fi 2982 2983 if test -z "$files"; then 2984 if test -z "$dest"; then 2985 $echo "$modename: no file or destination specified" 1>&2 2986 else 2987 $echo "$modename: you must specify a destination" 1>&2 2988 fi 2989 $echo "$help" 1>&2 2990 exit 1 2991 fi 2992 2993 # Strip any trailing slash from the destination. 2994 dest=`$echo "X$dest" | $Xsed -e 's%/$%%'` 2995 2996 # Check to see that the destination is a directory. 2997 test -d "$dest" && isdir=yes 2998 if test "$isdir" = yes; then 2999 destdir="$dest" 3000 destname= 3001 else 3002 destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'` 3003 test "X$destdir" = "X$dest" && destdir=. 3004 destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'` 3005 3006 # Not a directory, so check to see that there is only one file specified. 3007 set dummy $files 3008 if test $# -gt 2; then 3009 $echo "$modename: \`$dest' is not a directory" 1>&2 3010 $echo "$help" 1>&2 3011 exit 1 3012 fi 3013 fi 3014 case "$destdir" in 3015 /* | [A-Za-z]:[/\\]*) ;; 3016 *) 3017 for file in $files; do 3018 case "$file" in 3019 *.lo) ;; 3020 *) 3021 $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 3022 $echo "$help" 1>&2 3023 exit 1 3024 ;; 3025 esac 3026 done 3027 ;; 3028 esac 3029 3030 # This variable tells wrapper scripts just to set variables rather 3031 # than running their programs. 3032 libtool_install_magic="$magic" 3033 3034 staticlibs= 3035 future_libdirs= 3036 current_libdirs= 3037 for file in $files; do 3038 3039 # Do each installation. 3040 case "$file" in 3041 *.a | *.lib) 3042 # Do the static libraries later. 3043 staticlibs="$staticlibs $file" 3044 ;; 3045 3046 *.la) 3047 # Check to see that this really is a libtool archive. 3048 if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : 3049 else 3050 $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 3051 $echo "$help" 1>&2 3052 exit 1 3053 fi 3054 3055 library_names= 3056 old_library= 3057 # If there is no directory component, then add one. 3058 case "$file" in 3059 */* | *\\*) . $file ;; 3060 *) . ./$file ;; 3061 esac 3062 3063 # Add the libdir to current_libdirs if it is the destination. 3064 if test "X$destdir" = "X$libdir"; then 3065 case "$current_libdirs " in 3066 *" $libdir "*) ;; 3067 *) current_libdirs="$current_libdirs $libdir" ;; 3068 esac 3069 else 3070 # Note the libdir as a future libdir. 3071 case "$future_libdirs " in 3072 *" $libdir "*) ;; 3073 *) future_libdirs="$future_libdirs $libdir" ;; 3074 esac 3075 fi 3076 3077 dir="`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/" 3078 test "X$dir" = "X$file/" && dir= 3079 dir="$dir$objdir" 3080 3081 # See the names of the shared library. 3082 set dummy $library_names 3083 if test -n "$2"; then 3084 realname="$2" 3085 shift 3086 shift 3087 3088 # Install the shared library and build the symlinks. 3089 $show "$install_prog $dir/$realname $destdir/$realname" 3090 $run eval "$install_prog $dir/$realname $destdir/$realname" || exit $? 3091 test "X$dlname" = "X$realname" && dlname= 3092 3093 if test $# -gt 0; then 3094 # Delete the old symlinks, and create new ones. 3095 for linkname 3096 do 3097 test "X$dlname" = "X$linkname" && dlname= 3098 if test "$linkname" != "$realname"; then 3099 $show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" 3100 $run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" 3101 fi 3102 done 3103 fi 3104 3105 if test -n "$dlname"; then 3106 # Install the dynamically-loadable library. 3107 $show "$install_prog $dir/$dlname $destdir/$dlname" 3108 $run eval "$install_prog $dir/$dlname $destdir/$dlname" || exit $? 3109 fi 3110 3111 # Do each command in the postinstall commands. 3112 lib="$destdir/$realname" 3113 eval cmds=\"$postinstall_cmds\" 3114 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' 3115 for cmd in $cmds; do 3116 IFS="$save_ifs" 3117 $show "$cmd" 3118 $run eval "$cmd" || exit $? 3119 done 3120 IFS="$save_ifs" 3121 fi 3122 3123 # Install the pseudo-library for information purposes. 3124 name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 3125 instname="$dir/$name"i 3126 if test ! -f "$instname"; then 3127 # Just in case it was removed... 3128 $show "Creating $instname" 3129 $rm "$instname" 3130 sed 's/^installed=no$/installed=yes/' "$file" > "$instname" 3131 fi 3132 $show "$install_prog $instname $destdir/$name" 3133 $run eval "$install_prog $instname $destdir/$name" || exit $? 3134 3135 # Maybe install the static library, too. 3136 test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" 3137 ;; 3138 3139 *.lo) 3140 # Install (i.e. copy) a libtool object. 3141 3142 # Figure out destination file name, if it wasn't already specified. 3143 if test -n "$destname"; then 3144 destfile="$destdir/$destname" 3145 else 3146 destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 3147 destfile="$destdir/$destfile" 3148 fi 3149 3150 # Deduce the name of the destination old-style object file. 3151 case "$destfile" in 3152 *.lo) 3153 staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"` 3154 ;; 3155 *.o | *.obj) 3156 staticdest="$destfile" 3157 destfile= 3158 ;; 3159 *) 3160 $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 3161 $echo "$help" 1>&2 3162 exit 1 3163 ;; 3164 esac 3165 3166 # Install the libtool object if requested. 3167 if test -n "$destfile"; then 3168 $show "$install_prog $file $destfile" 3169 $run eval "$install_prog $file $destfile" || exit $? 3170 fi 3171 3172 # Install the old object if enabled. 3173 if test "$build_old_libs" = yes; then 3174 # Deduce the name of the old-style object file. 3175 staticobj=`$echo "X$file" | $Xsed -e "$lo2o"` 3176 3177 $show "$install_prog $staticobj $staticdest" 3178 $run eval "$install_prog \$staticobj \$staticdest" || exit $? 3179 fi 3180 exit 0 3181 ;; 3182 3183 *) 3184 # Figure out destination file name, if it wasn't already specified. 3185 if test -n "$destname"; then 3186 destfile="$destdir/$destname" 3187 else 3188 destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 3189 destfile="$destdir/$destfile" 3190 fi 3191 3192 # Do a test to see if this is really a libtool program. 3193 if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 3194 link_against_libtool_libs= 3195 relink_command= 3196 3197 # If there is no directory component, then add one. 3198 case "$file" in 3199 */* | *\\*) . $file ;; 3200 *) . ./$file ;; 3201 esac 3202 3203 # Check the variables that should have been set. 3204 if test -z "$link_against_libtool_libs"; then 3205 $echo "$modename: invalid libtool wrapper script \`$file'" 1>&2 3206 exit 1 3207 fi 3208 3209 finalize=yes 3210 for lib in $link_against_libtool_libs; do 3211 # Check to see that each library is installed. 3212 libdir= 3213 if test -f "$lib"; then 3214 # If there is no directory component, then add one. 3215 case "$lib" in 3216 */* | *\\*) . $lib ;; 3217 *) . ./$lib ;; 3218 esac 3219 fi 3220 libfile="$libdir/`$echo "X$lib" | $Xsed -e 's%^.*/%%g'`" 3221 if test -n "$libdir" && test ! -f "$libfile"; then 3222 $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 3223 finalize=no 3224 fi 3225 done 3226 3227 outputname= 3228 if test "$fast_install" = no && test -n "$relink_command"; then 3229 if test "$finalize" = yes; then 3230 outputname="/tmp/$$-$file" 3231 # Replace the output file specification. 3232 relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` 3233 3234 $echo "$modename: warning: relinking \`$file' on behalf of your buggy system linker" 1>&2 3235 $show "$relink_command" 3236 if $run eval "$relink_command"; then : 3237 else 3238 $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 3239 continue 3240 fi 3241 file="$outputname" 3242 else 3243 $echo "$modename: warning: cannot relink \`$file' on behalf of your buggy system linker" 1>&2 3244 fi 3245 else 3246 # Install the binary that we compiled earlier. 3247 file=`$echo "X$file" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` 3248 fi 3249 fi 3250 3251 $show "$install_prog$stripme $file $destfile" 3252 $run eval "$install_prog\$stripme \$file \$destfile" || exit $? 3253 test -n "$outputname" && $rm $outputname 3254 ;; 3255 esac 3256 done 3257 3258 for file in $staticlibs; do 3259 name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 3260 3261 # Set up the ranlib parameters. 3262 oldlib="$destdir/$name" 3263 3264 $show "$install_prog $file $oldlib" 3265 $run eval "$install_prog \$file \$oldlib" || exit $? 3266 3267 # Do each command in the postinstall commands. 3268 eval cmds=\"$old_postinstall_cmds\" 3269 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' 3270 for cmd in $cmds; do 3271 IFS="$save_ifs" 3272 $show "$cmd" 3273 $run eval "$cmd" || exit $? 3274 done 3275 IFS="$save_ifs" 3276 done 3277 3278 if test -n "$future_libdirs"; then 3279 $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2 3280 fi 3281 3282 if test -n "$current_libdirs"; then 3283 # Maybe just do a dry run. 3284 test -n "$run" && current_libdirs=" -n$current_libdirs" 3285 exec $SHELL $0 --finish$current_libdirs 3286 exit 1 3287 fi 3288 3289 exit 0 3290 ;; 3291 3292 # libtool finish mode 3293 finish) 3294 modename="$modename: finish" 3295 libdirs="$nonopt" 3296 admincmds= 3297 3298 if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then 3299 for dir 3300 do 3301 libdirs="$libdirs $dir" 3302 done 3303 3304 for libdir in $libdirs; do 3305 if test -n "$finish_cmds"; then 3306 # Do each command in the finish commands. 3307 eval cmds=\"$finish_cmds\" 3308 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' 3309 for cmd in $cmds; do 3310 IFS="$save_ifs" 3311 $show "$cmd" 3312 $run eval "$cmd" || admincmds="$admincmds 3313 $cmd" 3314 done 3315 IFS="$save_ifs" 3316 fi 3317 if test -n "$finish_eval"; then 3318 # Do the single finish_eval. 3319 eval cmds=\"$finish_eval\" 3320 $run eval "$cmds" || admincmds="$admincmds 3321 $cmds" 3322 fi 3323 done 3324 fi 3325 3326 # Exit here if they wanted silent mode. 3327 test "$show" = : && exit 0 3328 3329 echo "----------------------------------------------------------------------" 3330 echo "Libraries have been installed in:" 3331 for libdir in $libdirs; do 3332 echo " $libdir" 3333 done 3334 echo 3335 echo "If you ever happen to want to link against installed libraries" 3336 echo "in a given directory, LIBDIR, you must either use libtool, and" 3337 echo "specify the full pathname of the library, or use \`-LLIBDIR'" 3338 echo "flag during linking and do at least one of the following:" 3339 if test -n "$shlibpath_var"; then 3340 echo " - add LIBDIR to the \`$shlibpath_var' environment variable" 3341 echo " during execution" 3342 fi 3343 if test -n "$runpath_var"; then 3344 echo " - add LIBDIR to the \`$runpath_var' environment variable" 3345 echo " during linking" 3346 fi 3347 if test -n "$hardcode_libdir_flag_spec"; then 3348 libdir=LIBDIR 3349 eval flag=\"$hardcode_libdir_flag_spec\" 3350 3351 echo " - use the \`$flag' linker flag" 3352 fi 3353 if test -n "$admincmds"; then 3354 echo " - have your system administrator run these commands:$admincmds" 3355 fi 3356 if test -f /etc/ld.so.conf; then 3357 echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" 3358 fi 3359 echo 3360 echo "See any operating system documentation about shared libraries for" 3361 echo "more information, such as the ld(1) and ld.so(8) manual pages." 3362 echo "----------------------------------------------------------------------" 3363 exit 0 3364 ;; 3365 3366 # libtool execute mode 3367 execute) 3368 modename="$modename: execute" 3369 3370 # The first argument is the command name. 3371 cmd="$nonopt" 3372 if test -z "$cmd"; then 3373 $echo "$modename: you must specify a COMMAND" 1>&2 3374 $echo "$help" 3375 exit 1 3376 fi 3377 3378 # Handle -dlopen flags immediately. 3379 for file in $execute_dlfiles; do 3380 if test ! -f "$file"; then 3381 $echo "$modename: \`$file' is not a file" 1>&2 3382 $echo "$help" 1>&2 3383 exit 1 3384 fi 3385 3386 dir= 3387 case "$file" in 3388 *.la) 3389 # Check to see that this really is a libtool archive. 3390 if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : 3391 else 3392 $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 3393 $echo "$help" 1>&2 3394 exit 1 3395 fi 3396 3397 # Read the libtool library. 3398 dlname= 3399 library_names= 3400 3401 # If there is no directory component, then add one. 3402 case "$file" in 3403 */* | *\\*) . $file ;; 3404 *) . ./$file ;; 3405 esac 3406 3407 # Skip this library if it cannot be dlopened. 3408 if test -z "$dlname"; then 3409 # Warn if it was a shared library. 3410 test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'" 3411 continue 3412 fi 3413 3414 dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` 3415 test "X$dir" = "X$file" && dir=. 3416 3417 if test -f "$dir/$objdir/$dlname"; then 3418 dir="$dir/$objdir" 3419 else 3420 $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 3421 exit 1 3422 fi 3423 ;; 3424 3425 *.lo) 3426 # Just add the directory containing the .lo file. 3427 dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` 3428 test "X$dir" = "X$file" && dir=. 3429 ;; 3430 3431 *) 3432 $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2 3433 continue 3434 ;; 3435 esac 3436 3437 # Get the absolute pathname. 3438 absdir=`cd "$dir" && pwd` 3439 test -n "$absdir" && dir="$absdir" 3440 3441 # Now add the directory to shlibpath_var. 3442 if eval "test -z \"\$$shlibpath_var\""; then 3443 eval "$shlibpath_var=\"\$dir\"" 3444 else 3445 eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" 3446 fi 3447 done 3448 3449 # This variable tells wrapper scripts just to set shlibpath_var 3450 # rather than running their programs. 3451 libtool_execute_magic="$magic" 3452 3453 # Check if any of the arguments is a wrapper script. 3454 args= 3455 for file 3456 do 3457 case "$file" in 3458 -*) ;; 3459 *) 3460 # Do a test to see if this is really a libtool program. 3461 if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 3462 # If there is no directory component, then add one. 3463 case "$file" in 3464 */* | *\\*) . $file ;; 3465 *) . ./$file ;; 3466 esac 3467 3468 # Transform arg to wrapped name. 3469 file="$progdir/$program" 3470 fi 3471 ;; 3472 esac 3473 # Quote arguments (to preserve shell metacharacters). 3474 file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"` 3475 args="$args \"$file\"" 3476 done 3477 3478 if test -z "$run"; then 3479 # Export the shlibpath_var. 3480 eval "export $shlibpath_var" 3481 3482 # Restore saved enviroment variables 3483 if test "${save_LC_ALL+set}" = set; then 3484 LC_ALL="$save_LC_ALL"; export LC_ALL 3485 fi 3486 if test "${save_LANG+set}" = set; then 3487 LANG="$save_LANG"; export LANG 3488 fi 3489 3490 # Now actually exec the command. 3491 eval "exec \$cmd$args" 3492 3493 $echo "$modename: cannot exec \$cmd$args" 3494 exit 1 3495 else 3496 # Display what would be done. 3497 eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\"" 3498 $echo "export $shlibpath_var" 3499 $echo "$cmd$args" 3500 exit 0 3501 fi 3502 ;; 3503 3504 # libtool uninstall mode 3505 uninstall) 3506 modename="$modename: uninstall" 3507 rm="$nonopt" 3508 files= 3509 3510 for arg 3511 do 3512 case "$arg" in 3513 -*) rm="$rm $arg" ;; 3514 *) files="$files $arg" ;; 3515 esac 3516 done 3517 3518 if test -z "$rm"; then 3519 $echo "$modename: you must specify an RM program" 1>&2 3520 $echo "$help" 1>&2 3521 exit 1 3522 fi 3523 3524 for file in $files; do 3525 dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` 3526 test "X$dir" = "X$file" && dir=. 3527 name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 3528 3529 rmfiles="$file" 3530 3531 case "$name" in 3532 *.la) 3533 # Possibly a libtool archive, so verify it. 3534 if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 3535 . $dir/$name 3536 3537 # Delete the libtool libraries and symlinks. 3538 for n in $library_names; do 3539 rmfiles="$rmfiles $dir/$n" 3540 test "X$n" = "X$dlname" && dlname= 3541 done 3542 test -n "$dlname" && rmfiles="$rmfiles $dir/$dlname" 3543 test -n "$old_library" && rmfiles="$rmfiles $dir/$old_library" 3544 3545 $show "$rm $rmfiles" 3546 $run $rm $rmfiles 3547 3548 if test -n "$library_names"; then 3549 # Do each command in the postuninstall commands. 3550 eval cmds=\"$postuninstall_cmds\" 3551 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' 3552 for cmd in $cmds; do 3553 IFS="$save_ifs" 3554 $show "$cmd" 3555 $run eval "$cmd" 3556 done 3557 IFS="$save_ifs" 3558 fi 3559 3560 if test -n "$old_library"; then 3561 # Do each command in the old_postuninstall commands. 3562 eval cmds=\"$old_postuninstall_cmds\" 3563 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' 3564 for cmd in $cmds; do 3565 IFS="$save_ifs" 3566 $show "$cmd" 3567 $run eval "$cmd" 3568 done 3569 IFS="$save_ifs" 3570 fi 3571 3572 # FIXME: should reinstall the best remaining shared library. 3573 fi 3574 ;; 3575 3576 *.lo) 3577 if test "$build_old_libs" = yes; then 3578 oldobj=`$echo "X$name" | $Xsed -e "$lo2o"` 3579 rmfiles="$rmfiles $dir/$oldobj" 3580 fi 3581 $show "$rm $rmfiles" 3582 $run $rm $rmfiles 3583 ;; 3584 3585 *) 3586 $show "$rm $rmfiles" 3587 $run $rm $rmfiles 3588 ;; 3589 esac 3590 done 3591 exit 0 3592 ;; 3593 3594 "") 3595 $echo "$modename: you must specify a MODE" 1>&2 3596 $echo "$generic_help" 1>&2 3597 exit 1 3598 ;; 3599 esac 3600 3601 $echo "$modename: invalid operation mode \`$mode'" 1>&2 3602 $echo "$generic_help" 1>&2 3603 exit 1 3604fi # test -z "$show_help" 3605 3606# We need to display help for each of the modes. 3607case "$mode" in 3608"") $echo \ 3609"Usage: $modename [OPTION]... [MODE-ARG]... 3610 3611Provide generalized library-building support services. 3612 3613 --config show all configuration variables 3614 --debug enable verbose shell tracing 3615-n, --dry-run display commands without modifying any files 3616 --features display basic configuration information and exit 3617 --finish same as \`--mode=finish' 3618 --help display this help message and exit 3619 --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] 3620 --quiet same as \`--silent' 3621 --silent don't print informational messages 3622 --version print version information 3623 3624MODE must be one of the following: 3625 3626 compile compile a source file into a libtool object 3627 execute automatically set library path, then run a program 3628 finish complete the installation of libtool libraries 3629 install install libraries or executables 3630 link create a library or an executable 3631 uninstall remove libraries from an installed directory 3632 3633MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for 3634a more detailed description of MODE." 3635 exit 0 3636 ;; 3637 3638compile) 3639 $echo \ 3640"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE 3641 3642Compile a source file into a libtool library object. 3643 3644This mode accepts the following additional options: 3645 3646 -o OUTPUT-FILE set the output file name to OUTPUT-FILE 3647 -static always build a \`.o' file suitable for static linking 3648 3649COMPILE-COMMAND is a command to be used in creating a \`standard' object file 3650from the given SOURCEFILE. 3651 3652The output file name is determined by removing the directory component from 3653SOURCEFILE, then substituting the C source code suffix \`.c' with the 3654library object suffix, \`.lo'." 3655 ;; 3656 3657execute) 3658 $echo \ 3659"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]... 3660 3661Automatically set library path, then run a program. 3662 3663This mode accepts the following additional options: 3664 3665 -dlopen FILE add the directory containing FILE to the library path 3666 3667This mode sets the library path environment variable according to \`-dlopen' 3668flags. 3669 3670If any of the ARGS are libtool executable wrappers, then they are translated 3671into their corresponding uninstalled binary, and any of their required library 3672directories are added to the library path. 3673 3674Then, COMMAND is executed, with ARGS as arguments." 3675 ;; 3676 3677finish) 3678 $echo \ 3679"Usage: $modename [OPTION]... --mode=finish [LIBDIR]... 3680 3681Complete the installation of libtool libraries. 3682 3683Each LIBDIR is a directory that contains libtool libraries. 3684 3685The commands that this mode executes may require superuser privileges. Use 3686the \`--dry-run' option if you just want to see what would be executed." 3687 ;; 3688 3689install) 3690 $echo \ 3691"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND... 3692 3693Install executables or libraries. 3694 3695INSTALL-COMMAND is the installation command. The first component should be 3696either the \`install' or \`cp' program. 3697 3698The rest of the components are interpreted as arguments to that command (only 3699BSD-compatible install options are recognized)." 3700 ;; 3701 3702link) 3703 $echo \ 3704"Usage: $modename [OPTION]... --mode=link LINK-COMMAND... 3705 3706Link object files or libraries together to form another library, or to 3707create an executable program. 3708 3709LINK-COMMAND is a command using the C compiler that you would use to create 3710a program from several object files. 3711 3712The following components of LINK-COMMAND are treated specially: 3713 3714 -all-static do not do any dynamic linking at all 3715 -avoid-version do not add a version suffix if possible 3716 -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime 3717 -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols 3718 -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) 3719 -export-symbols SYMFILE 3720 try to export only the symbols listed in SYMFILE 3721 -LLIBDIR search LIBDIR for required installed libraries 3722 -lNAME OUTPUT-FILE requires the installed library libNAME 3723 -module build a library that can dlopened 3724 -no-undefined declare that a library does not refer to external symbols 3725 -o OUTPUT-FILE create OUTPUT-FILE from the specified objects 3726 -release RELEASE specify package release information 3727 -rpath LIBDIR the created library will eventually be installed in LIBDIR 3728 -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries 3729 -static do not do any dynamic linking of libtool libraries 3730 -version-info CURRENT[:REVISION[:AGE]] 3731 specify library version info [each variable defaults to 0] 3732 3733All other options (arguments beginning with \`-') are ignored. 3734 3735Every other argument is treated as a filename. Files ending in \`.la' are 3736treated as uninstalled libtool libraries, other files are standard or library 3737object files. 3738 3739If the OUTPUT-FILE ends in \`.la', then a libtool library is created, 3740only library objects (\`.lo' files) may be specified, and \`-rpath' is 3741required, except when creating a convenience library. 3742 3743If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created 3744using \`ar' and \`ranlib', or on Windows using \`lib'. 3745 3746If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file 3747is created, otherwise an executable program is created." 3748 ;; 3749 3750uninstall) 3751 $echo 3752"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... 3753 3754Remove libraries from an installation directory. 3755 3756RM is the name of the program to use to delete files associated with each FILE 3757(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 3758to RM. 3759 3760If FILE is a libtool library, all the files associated with it are deleted. 3761Otherwise, only FILE itself is deleted using RM." 3762 ;; 3763 3764*) 3765 $echo "$modename: invalid operation mode \`$mode'" 1>&2 3766 $echo "$help" 1>&2 3767 exit 1 3768 ;; 3769esac 3770 3771echo 3772$echo "Try \`$modename --help' for more information about other modes." 3773 3774exit 0 3775 3776# Local Variables: 3777# mode:shell-script 3778# sh-indentation:2 3779# End: 3780