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