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.5 58TIMESTAMP=" (1.385.2.206 2000/05/27 11:12:27)" 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 *-*-rhapsody*) 1799 # rhapsody is a little odd... 1800 deplibs="$deplibs -framework System" 1801 ;; 1802 *) 1803 # Add libc to deplibs on all other systems. 1804 deplibs="$deplibs -lc" 1805 ;; 1806 esac 1807 fi 1808 1809 # Create the output directory, or remove our outputs if we need to. 1810 if test -d $output_objdir; then 1811 $show "${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.*" 1812 $run ${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.* 1813 else 1814 $show "$mkdir $output_objdir" 1815 $run $mkdir $output_objdir 1816 status=$? 1817 if test $status -ne 0 && test ! -d $output_objdir; then 1818 exit $status 1819 fi 1820 fi 1821 1822 # Now set the variables for building old libraries. 1823 if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then 1824 oldlibs="$oldlibs $output_objdir/$libname.$libext" 1825 1826 # Transform .lo files to .o files. 1827 oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` 1828 fi 1829 1830 if test "$build_libtool_libs" = yes; then 1831 # Transform deplibs into only deplibs that can be linked in shared. 1832 name_save=$name 1833 libname_save=$libname 1834 release_save=$release 1835 versuffix_save=$versuffix 1836 major_save=$major 1837 # I'm not sure if I'm treating the release correctly. I think 1838 # release should show up in the -l (ie -lgmp5) so we don't want to 1839 # add it in twice. Is that correct? 1840 release="" 1841 versuffix="" 1842 major="" 1843 newdeplibs= 1844 droppeddeps=no 1845 case "$deplibs_check_method" in 1846 pass_all) 1847 # Don't check for shared/static. Everything works. 1848 # This might be a little naive. We might want to check 1849 # whether the library exists or not. But this is on 1850 # osf3 & osf4 and I'm not really sure... Just 1851 # implementing what was already the behaviour. 1852 newdeplibs=$deplibs 1853 ;; 1854 test_compile) 1855 # This code stresses the "libraries are programs" paradigm to its 1856 # limits. Maybe even breaks it. We compile a program, linking it 1857 # against the deplibs as a proxy for the library. Then we can check 1858 # whether they linked in statically or dynamically with ldd. 1859 $rm conftest.c 1860 cat > conftest.c <<EOF 1861 int main() { return 0; } 1862EOF 1863 $rm conftest 1864 $CC -o conftest conftest.c $deplibs 1865 if test $? -eq 0 ; then 1866 ldd_output=`ldd conftest` 1867 for i in $deplibs; do 1868 name="`expr $i : '-l\(.*\)'`" 1869 # If $name is empty we are operating on a -L argument. 1870 if test "$name" != "" ; then 1871 libname=`eval \\$echo \"$libname_spec\"` 1872 deplib_matches=`eval \\$echo \"$library_names_spec\"` 1873 set dummy $deplib_matches 1874 deplib_match=$2 1875 if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 1876 newdeplibs="$newdeplibs $i" 1877 else 1878 droppeddeps=yes 1879 echo 1880 echo "*** Warning: This library needs some functionality provided by $i." 1881 echo "*** I have the capability to make that library automatically link in when" 1882 echo "*** you link to this library. But I can only do this if you have a" 1883 echo "*** shared version of the library, which you do not appear to have." 1884 fi 1885 else 1886 newdeplibs="$newdeplibs $i" 1887 fi 1888 done 1889 else 1890 # Error occured in the first compile. Let's try to salvage the situation: 1891 # Compile a seperate program for each library. 1892 for i in $deplibs; do 1893 name="`expr $i : '-l\(.*\)'`" 1894 # If $name is empty we are operating on a -L argument. 1895 if test "$name" != "" ; then 1896 $rm conftest 1897 $CC -o conftest conftest.c $i 1898 # Did it work? 1899 if test $? -eq 0 ; then 1900 ldd_output=`ldd conftest` 1901 libname=`eval \\$echo \"$libname_spec\"` 1902 deplib_matches=`eval \\$echo \"$library_names_spec\"` 1903 set dummy $deplib_matches 1904 deplib_match=$2 1905 if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 1906 newdeplibs="$newdeplibs $i" 1907 else 1908 droppeddeps=yes 1909 echo 1910 echo "*** Warning: This library needs some functionality provided by $i." 1911 echo "*** I have the capability to make that library automatically link in when" 1912 echo "*** you link to this library. But I can only do this if you have a" 1913 echo "*** shared version of the library, which you do not appear to have." 1914 fi 1915 else 1916 droppeddeps=yes 1917 echo 1918 echo "*** Warning! Library $i is needed by this library but I was not able to" 1919 echo "*** make it link in! You will probably need to install it or some" 1920 echo "*** library that it depends on before this library will be fully" 1921 echo "*** functional. Installing it before continuing would be even better." 1922 fi 1923 else 1924 newdeplibs="$newdeplibs $i" 1925 fi 1926 done 1927 fi 1928 ;; 1929 file_magic*) 1930 set dummy $deplibs_check_method 1931 file_magic_regex="`expr \"$deplibs_check_method\" : \"$2 \(.*\)\"`" 1932 for a_deplib in $deplibs; do 1933 name="`expr $a_deplib : '-l\(.*\)'`" 1934 # If $name is empty we are operating on a -L argument. 1935 if test "$name" != "" ; then 1936 libname=`eval \\$echo \"$libname_spec\"` 1937 for i in $lib_search_path; do 1938 potential_libs=`ls $i/$libname[.-]* 2>/dev/null` 1939 for potent_lib in $potential_libs; do 1940 # Follow soft links. 1941 if ls -lLd "$potent_lib" 2>/dev/null \ 1942 | grep " -> " >/dev/null; then 1943 continue 1944 fi 1945 # The statement above tries to avoid entering an 1946 # endless loop below, in case of cyclic links. 1947 # We might still enter an endless loop, since a link 1948 # loop can be closed while we follow links, 1949 # but so what? 1950 potlib="$potent_lib" 1951 while test -h "$potlib" 2>/dev/null; do 1952 potliblink=`ls -ld $potlib | sed 's/.* -> //'` 1953 case "$potliblink" in 1954 [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; 1955 *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; 1956 esac 1957 done 1958 if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \ 1959 | sed 10q \ 1960 | egrep "$file_magic_regex" > /dev/null; then 1961 newdeplibs="$newdeplibs $a_deplib" 1962 a_deplib="" 1963 break 2 1964 fi 1965 done 1966 done 1967 if test -n "$a_deplib" ; then 1968 droppeddeps=yes 1969 echo 1970 echo "*** Warning: This library needs some functionality provided by $a_deplib." 1971 echo "*** I have the capability to make that library automatically link in when" 1972 echo "*** you link to this library. But I can only do this if you have a" 1973 echo "*** shared version of the library, which you do not appear to have." 1974 fi 1975 else 1976 # Add a -L argument. 1977 newdeplibs="$newdeplibs $a_deplib" 1978 fi 1979 done # Gone through all deplibs. 1980 ;; 1981 none | unknown | *) 1982 newdeplibs="" 1983 if $echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ 1984 -e 's/ -[LR][^ ]*//g' -e 's/[ ]//g' | 1985 grep . >/dev/null; then 1986 echo 1987 if test "X$deplibs_check_method" = "Xnone"; then 1988 echo "*** Warning: inter-library dependencies are not supported in this platform." 1989 else 1990 echo "*** Warning: inter-library dependencies are not known to be supported." 1991 fi 1992 echo "*** All declared inter-library dependencies are being dropped." 1993 droppeddeps=yes 1994 fi 1995 ;; 1996 esac 1997 versuffix=$versuffix_save 1998 major=$major_save 1999 release=$release_save 2000 libname=$libname_save 2001 name=$name_save 2002 2003 if test "$droppeddeps" = yes; then 2004 if test "$module" = yes; then 2005 echo 2006 echo "*** Warning: libtool could not satisfy all declared inter-library" 2007 echo "*** dependencies of module $libname. Therefore, libtool will create" 2008 echo "*** a static module, that should work as long as the dlopening" 2009 echo "*** application is linked with the -dlopen flag." 2010 if test -z "$global_symbol_pipe"; then 2011 echo 2012 echo "*** However, this would only work if libtool was able to extract symbol" 2013 echo "*** lists from a program, using \`nm' or equivalent, but libtool could" 2014 echo "*** not find such a program. So, this module is probably useless." 2015 echo "*** \`nm' from GNU binutils and a full rebuild may help." 2016 fi 2017 if test "$build_old_libs" = no; then 2018 oldlibs="$output_objdir/$libname.$libext" 2019 build_libtool_libs=module 2020 build_old_libs=yes 2021 else 2022 build_libtool_libs=no 2023 fi 2024 else 2025 echo "*** The inter-library dependencies that have been dropped here will be" 2026 echo "*** automatically added whenever a program is linked with this library" 2027 echo "*** or is declared to -dlopen it." 2028 fi 2029 fi 2030 # Done checking deplibs! 2031 deplibs=$newdeplibs 2032 fi 2033 2034 # All the library-specific variables (install_libdir is set above). 2035 library_names= 2036 old_library= 2037 dlname= 2038 2039 # Test again, we may have decided not to build it any more 2040 if test "$build_libtool_libs" = yes; then 2041 # Get the real and link names of the library. 2042 eval library_names=\"$library_names_spec\" 2043 set dummy $library_names 2044 realname="$2" 2045 shift; shift 2046 2047 if test -n "$soname_spec"; then 2048 eval soname=\"$soname_spec\" 2049 else 2050 soname="$realname" 2051 fi 2052 2053 lib="$output_objdir/$realname" 2054 for link 2055 do 2056 linknames="$linknames $link" 2057 done 2058 2059 # Ensure that we have .o objects for linkers which dislike .lo 2060 # (e.g. aix) in case we are running --disable-static 2061 for obj in $libobjs; do 2062 xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` 2063 if test "X$xdir" = "X$obj"; then 2064 xdir="." 2065 else 2066 xdir="$xdir" 2067 fi 2068 baseobj=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` 2069 oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"` 2070 if test ! -f $xdir/$oldobj; then 2071 $show "(cd $xdir && ${LN_S} $baseobj $oldobj)" 2072 $run eval '(cd $xdir && ${LN_S} $baseobj $oldobj)' || exit $? 2073 fi 2074 done 2075 2076 # Use standard objects if they are pic 2077 test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 2078 2079 # Prepare the list of exported symbols 2080 if test -z "$export_symbols"; then 2081 if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then 2082 $show "generating symbol list for \`$libname.la'" 2083 export_symbols="$output_objdir/$libname.exp" 2084 $run $rm $export_symbols 2085 eval cmds=\"$export_symbols_cmds\" 2086 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' 2087 for cmd in $cmds; do 2088 IFS="$save_ifs" 2089 $show "$cmd" 2090 $run eval "$cmd" || exit $? 2091 done 2092 IFS="$save_ifs" 2093 if test -n "$export_symbols_regex"; then 2094 $show "egrep -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\"" 2095 $run eval 'egrep -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' 2096 $show "$mv \"${export_symbols}T\" \"$export_symbols\"" 2097 $run eval '$mv "${export_symbols}T" "$export_symbols"' 2098 fi 2099 fi 2100 fi 2101 2102 if test -n "$export_symbols" && test -n "$include_expsyms"; then 2103 $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"' 2104 fi 2105 2106 if test -n "$convenience"; then 2107 if test -n "$whole_archive_flag_spec"; then 2108 eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 2109 else 2110 gentop="$output_objdir/${outputname}x" 2111 $show "${rm}r $gentop" 2112 $run ${rm}r "$gentop" 2113 $show "mkdir $gentop" 2114 $run mkdir "$gentop" 2115 status=$? 2116 if test $status -ne 0 && test ! -d "$gentop"; then 2117 exit $status 2118 fi 2119 generated="$generated $gentop" 2120 2121 for xlib in $convenience; do 2122 # Extract the objects. 2123 case "$xlib" in 2124 [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; 2125 *) xabs=`pwd`"/$xlib" ;; 2126 esac 2127 xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` 2128 xdir="$gentop/$xlib" 2129 2130 $show "${rm}r $xdir" 2131 $run ${rm}r "$xdir" 2132 $show "mkdir $xdir" 2133 $run mkdir "$xdir" 2134 status=$? 2135 if test $status -ne 0 && test ! -d "$xdir"; then 2136 exit $status 2137 fi 2138 $show "(cd $xdir && $AR x $xabs)" 2139 $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? 2140 2141 libobjs="$libobjs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP` 2142 done 2143 fi 2144 fi 2145 2146 if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then 2147 eval flag=\"$thread_safe_flag_spec\" 2148 linkopts="$linkopts $flag" 2149 fi 2150 2151 # Do each of the archive commands. 2152 if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 2153 eval cmds=\"$archive_expsym_cmds\" 2154 else 2155 eval cmds=\"$archive_cmds\" 2156 fi 2157 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' 2158 for cmd in $cmds; do 2159 IFS="$save_ifs" 2160 $show "$cmd" 2161 $run eval "$cmd" || exit $? 2162 done 2163 IFS="$save_ifs" 2164 2165 # Create links to the real library. 2166 for linkname in $linknames; do 2167 if test "$realname" != "$linkname"; then 2168 $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)" 2169 $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $? 2170 fi 2171 done 2172 2173 # If -module or -export-dynamic was specified, set the dlname. 2174 if test "$module" = yes || test "$export_dynamic" = yes; then 2175 # On all known operating systems, these are identical. 2176 dlname="$soname" 2177 fi 2178 fi 2179 ;; 2180 2181 *.lo | *.o | *.obj) 2182 if test -n "$link_against_libtool_libs"; then 2183 $echo "$modename: error: cannot link libtool libraries into objects" 1>&2 2184 exit 1 2185 fi 2186 2187 if test -n "$deplibs"; then 2188 $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 2189 fi 2190 2191 if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 2192 $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2 2193 fi 2194 2195 if test -n "$rpath"; then 2196 $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2 2197 fi 2198 2199 if test -n "$xrpath"; then 2200 $echo "$modename: warning: \`-R' is ignored for objects" 1>&2 2201 fi 2202 2203 if test -n "$vinfo"; then 2204 $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2 2205 fi 2206 2207 if test -n "$release"; then 2208 $echo "$modename: warning: \`-release' is ignored for objects" 1>&2 2209 fi 2210 2211 case "$output" in 2212 *.lo) 2213 if test -n "$objs"; then 2214 $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 2215 exit 1 2216 fi 2217 libobj="$output" 2218 obj=`$echo "X$output" | $Xsed -e "$lo2o"` 2219 ;; 2220 *) 2221 libobj= 2222 obj="$output" 2223 ;; 2224 esac 2225 2226 # Delete the old objects. 2227 $run $rm $obj $libobj 2228 2229 # Objects from convenience libraries. This assumes 2230 # single-version convenience libraries. Whenever we create 2231 # different ones for PIC/non-PIC, this we'll have to duplicate 2232 # the extraction. 2233 reload_conv_objs= 2234 gentop= 2235 # reload_cmds runs $LD directly, so let us get rid of 2236 # -Wl from whole_archive_flag_spec 2237 wl= 2238 2239 if test -n "$convenience"; then 2240 if test -n "$whole_archive_flag_spec"; then 2241 eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\" 2242 else 2243 gentop="$output_objdir/${obj}x" 2244 $show "${rm}r $gentop" 2245 $run ${rm}r "$gentop" 2246 $show "mkdir $gentop" 2247 $run mkdir "$gentop" 2248 status=$? 2249 if test $status -ne 0 && test ! -d "$gentop"; then 2250 exit $status 2251 fi 2252 generated="$generated $gentop" 2253 2254 for xlib in $convenience; do 2255 # Extract the objects. 2256 case "$xlib" in 2257 [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; 2258 *) xabs=`pwd`"/$xlib" ;; 2259 esac 2260 xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` 2261 xdir="$gentop/$xlib" 2262 2263 $show "${rm}r $xdir" 2264 $run ${rm}r "$xdir" 2265 $show "mkdir $xdir" 2266 $run mkdir "$xdir" 2267 status=$? 2268 if test $status -ne 0 && test ! -d "$xdir"; then 2269 exit $status 2270 fi 2271 $show "(cd $xdir && $AR x $xabs)" 2272 $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? 2273 2274 reload_conv_objs="$reload_objs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP` 2275 done 2276 fi 2277 fi 2278 2279 # Create the old-style object. 2280 reload_objs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" 2281 2282 output="$obj" 2283 eval cmds=\"$reload_cmds\" 2284 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' 2285 for cmd in $cmds; do 2286 IFS="$save_ifs" 2287 $show "$cmd" 2288 $run eval "$cmd" || exit $? 2289 done 2290 IFS="$save_ifs" 2291 2292 # Exit if we aren't doing a library object file. 2293 if test -z "$libobj"; then 2294 if test -n "$gentop"; then 2295 $show "${rm}r $gentop" 2296 $run ${rm}r $gentop 2297 fi 2298 2299 exit 0 2300 fi 2301 2302 if test "$build_libtool_libs" != yes; then 2303 if test -n "$gentop"; then 2304 $show "${rm}r $gentop" 2305 $run ${rm}r $gentop 2306 fi 2307 2308 # Create an invalid libtool object if no PIC, so that we don't 2309 # accidentally link it into a program. 2310 $show "echo timestamp > $libobj" 2311 $run eval "echo timestamp > $libobj" || exit $? 2312 exit 0 2313 fi 2314 2315 if test -n "$pic_flag"; then 2316 # Only do commands if we really have different PIC objects. 2317 reload_objs="$libobjs $reload_conv_objs" 2318 output="$libobj" 2319 eval cmds=\"$reload_cmds\" 2320 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' 2321 for cmd in $cmds; do 2322 IFS="$save_ifs" 2323 $show "$cmd" 2324 $run eval "$cmd" || exit $? 2325 done 2326 IFS="$save_ifs" 2327 else 2328 # Just create a symlink. 2329 $show $rm $libobj 2330 $run $rm $libobj 2331 xdir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'` 2332 if test "X$xdir" = "X$libobj"; then 2333 xdir="." 2334 else 2335 xdir="$xdir" 2336 fi 2337 baseobj=`$echo "X$libobj" | $Xsed -e 's%^.*/%%'` 2338 oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"` 2339 $show "(cd $xdir && $LN_S $oldobj $baseobj)" 2340 $run eval '(cd $xdir && $LN_S $oldobj $baseobj)' || exit $? 2341 fi 2342 2343 if test -n "$gentop"; then 2344 $show "${rm}r $gentop" 2345 $run ${rm}r $gentop 2346 fi 2347 2348 exit 0 2349 ;; 2350 2351 # Anything else should be a program. 2352 *) 2353 if test -n "$vinfo"; then 2354 $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2 2355 fi 2356 2357 if test -n "$release"; then 2358 $echo "$modename: warning: \`-release' is ignored for programs" 1>&2 2359 fi 2360 2361 if test "$preload" = yes; then 2362 if test "$dlopen" = unknown && test "$dlopen_self" = unknown && 2363 test "$dlopen_self_static" = unknown; then 2364 $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support." 2365 fi 2366 fi 2367 2368 if test -n "$rpath$xrpath"; then 2369 # If the user specified any rpath flags, then add them. 2370 for libdir in $rpath $xrpath; do 2371 # This is the magic to use -rpath. 2372 case "$compile_rpath " in 2373 *" $libdir "*) ;; 2374 *) compile_rpath="$compile_rpath $libdir" ;; 2375 esac 2376 case "$finalize_rpath " in 2377 *" $libdir "*) ;; 2378 *) finalize_rpath="$finalize_rpath $libdir" ;; 2379 esac 2380 done 2381 fi 2382 2383 # Now hardcode the library paths 2384 rpath= 2385 hardcode_libdirs= 2386 for libdir in $compile_rpath $finalize_rpath; do 2387 if test -n "$hardcode_libdir_flag_spec"; then 2388 if test -n "$hardcode_libdir_separator"; then 2389 if test -z "$hardcode_libdirs"; then 2390 hardcode_libdirs="$libdir" 2391 else 2392 # Just accumulate the unique libdirs. 2393 case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in 2394 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 2395 ;; 2396 *) 2397 hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 2398 ;; 2399 esac 2400 fi 2401 else 2402 eval flag=\"$hardcode_libdir_flag_spec\" 2403 rpath="$rpath $flag" 2404 fi 2405 elif test -n "$runpath_var"; then 2406 case "$perm_rpath " in 2407 *" $libdir "*) ;; 2408 *) perm_rpath="$perm_rpath $libdir" ;; 2409 esac 2410 fi 2411 done 2412 # Substitute the hardcoded libdirs into the rpath. 2413 if test -n "$hardcode_libdir_separator" && 2414 test -n "$hardcode_libdirs"; then 2415 libdir="$hardcode_libdirs" 2416 eval rpath=\" $hardcode_libdir_flag_spec\" 2417 fi 2418 compile_rpath="$rpath" 2419 2420 rpath= 2421 hardcode_libdirs= 2422 for libdir in $finalize_rpath; do 2423 if test -n "$hardcode_libdir_flag_spec"; then 2424 if test -n "$hardcode_libdir_separator"; then 2425 if test -z "$hardcode_libdirs"; then 2426 hardcode_libdirs="$libdir" 2427 else 2428 # Just accumulate the unique libdirs. 2429 case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in 2430 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 2431 ;; 2432 *) 2433 hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 2434 ;; 2435 esac 2436 fi 2437 else 2438 eval flag=\"$hardcode_libdir_flag_spec\" 2439 rpath="$rpath $flag" 2440 fi 2441 elif test -n "$runpath_var"; then 2442 case "$finalize_perm_rpath " in 2443 *" $libdir "*) ;; 2444 *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; 2445 esac 2446 fi 2447 done 2448 # Substitute the hardcoded libdirs into the rpath. 2449 if test -n "$hardcode_libdir_separator" && 2450 test -n "$hardcode_libdirs"; then 2451 libdir="$hardcode_libdirs" 2452 eval rpath=\" $hardcode_libdir_flag_spec\" 2453 fi 2454 finalize_rpath="$rpath" 2455 2456 output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` 2457 if test "X$output_objdir" = "X$output"; then 2458 output_objdir="$objdir" 2459 else 2460 output_objdir="$output_objdir/$objdir" 2461 fi 2462 2463 # Create the binary in the object directory, then wrap it. 2464 if test ! -d $output_objdir; then 2465 $show "$mkdir $output_objdir" 2466 $run $mkdir $output_objdir 2467 status=$? 2468 if test $status -ne 0 && test ! -d $output_objdir; then 2469 exit $status 2470 fi 2471 fi 2472 2473 if test -n "$libobjs" && test "$build_old_libs" = yes; then 2474 # Transform all the library objects into standard objects. 2475 compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 2476 finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 2477 fi 2478 2479 dlsyms= 2480 if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 2481 if test -n "$NM" && test -n "$global_symbol_pipe"; then 2482 dlsyms="${outputname}S.c" 2483 else 2484 $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2 2485 fi 2486 fi 2487 2488 if test -n "$dlsyms"; then 2489 case "$dlsyms" in 2490 "") ;; 2491 *.c) 2492 # Discover the nlist of each of the dlfiles. 2493 nlist="$output_objdir/${outputname}.nm" 2494 2495 $show "$rm $nlist ${nlist}S ${nlist}T" 2496 $run $rm "$nlist" "${nlist}S" "${nlist}T" 2497 2498 # Parse the name list into a source file. 2499 $show "creating $output_objdir/$dlsyms" 2500 2501 test -z "$run" && $echo > "$output_objdir/$dlsyms" "\ 2502/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */ 2503/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */ 2504 2505#ifdef __cplusplus 2506extern \"C\" { 2507#endif 2508 2509/* Prevent the only kind of declaration conflicts we can make. */ 2510#define lt_preloaded_symbols some_other_symbol 2511 2512/* External symbol declarations for the compiler. */\ 2513" 2514 2515 if test "$dlself" = yes; then 2516 $show "generating symbol list for \`$output'" 2517 2518 test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist" 2519 2520 # Add our own program objects to the symbol list. 2521 progfiles=`$echo "X$objs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 2522 for arg in $progfiles; do 2523 $show "extracting global C symbols from \`$arg'" 2524 $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" 2525 done 2526 2527 if test -n "$exclude_expsyms"; then 2528 $run eval 'egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' 2529 $run eval '$mv "$nlist"T "$nlist"' 2530 fi 2531 2532 if test -n "$export_symbols_regex"; then 2533 $run eval 'egrep -e "$export_symbols_regex" "$nlist" > "$nlist"T' 2534 $run eval '$mv "$nlist"T "$nlist"' 2535 fi 2536 2537 # Prepare the list of exported symbols 2538 if test -z "$export_symbols"; then 2539 export_symbols="$output_objdir/$output.exp" 2540 $run $rm $export_symbols 2541 $run eval "sed -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' 2542 else 2543 $run eval "sed -e 's/\([][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$output.exp"' 2544 $run eval 'grep -f "$output_objdir/$output.exp" < "$nlist" > "$nlist"T' 2545 $run eval 'mv "$nlist"T "$nlist"' 2546 fi 2547 fi 2548 2549 for arg in $dlprefiles; do 2550 $show "extracting global C symbols from \`$arg'" 2551 name=`echo "$arg" | sed -e 's%^.*/%%'` 2552 $run eval 'echo ": $name " >> "$nlist"' 2553 $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" 2554 done 2555 2556 if test -z "$run"; then 2557 # Make sure we have at least an empty file. 2558 test -f "$nlist" || : > "$nlist" 2559 2560 if test -n "$exclude_expsyms"; then 2561 egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T 2562 $mv "$nlist"T "$nlist" 2563 fi 2564 2565 # Try sorting and uniquifying the output. 2566 if grep -v "^: " < "$nlist" | sort +2 | uniq > "$nlist"S; then 2567 : 2568 else 2569 grep -v "^: " < "$nlist" > "$nlist"S 2570 fi 2571 2572 if test -f "$nlist"S; then 2573 eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"' 2574 else 2575 echo '/* NONE */' >> "$output_objdir/$dlsyms" 2576 fi 2577 2578 $echo >> "$output_objdir/$dlsyms" "\ 2579 2580#undef lt_preloaded_symbols 2581 2582#if defined (__STDC__) && __STDC__ 2583# define lt_ptr_t void * 2584#else 2585# define lt_ptr_t char * 2586# define const 2587#endif 2588 2589/* The mapping between symbol names and symbols. */ 2590const struct { 2591 const char *name; 2592 lt_ptr_t address; 2593} 2594lt_preloaded_symbols[] = 2595{\ 2596" 2597 2598 sed -n -e 's/^: \([^ ]*\) $/ {\"\1\", (lt_ptr_t) 0},/p' \ 2599 -e 's/^. \([^ ]*\) \([^ ]*\)$/ {"\2", (lt_ptr_t) \&\2},/p' \ 2600 < "$nlist" >> "$output_objdir/$dlsyms" 2601 2602 $echo >> "$output_objdir/$dlsyms" "\ 2603 {0, (lt_ptr_t) 0} 2604}; 2605 2606/* This works around a problem in FreeBSD linker */ 2607#ifdef FREEBSD_WORKAROUND 2608static const void *lt_preloaded_setup() { 2609 return lt_preloaded_symbols; 2610} 2611#endif 2612 2613#ifdef __cplusplus 2614} 2615#endif\ 2616" 2617 fi 2618 2619 pic_flag_for_symtable= 2620 case "$host" in 2621 # compiling the symbol table file with pic_flag works around 2622 # a FreeBSD bug that causes programs to crash when -lm is 2623 # linked before any other PIC object. But we must not use 2624 # pic_flag when linking with -static. The problem exists in 2625 # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. 2626 *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) 2627 case "$compile_command " in 2628 *" -static "*) ;; 2629 *) pic_flag_for_symtable=" $pic_flag -DPIC -DFREEBSD_WORKAROUND";; 2630 esac;; 2631 *-*-hpux*) 2632 case "$compile_command " in 2633 *" -static "*) ;; 2634 *) pic_flag_for_symtable=" $pic_flag -DPIC";; 2635 esac 2636 esac 2637 2638 # Now compile the dynamic symbol file. 2639 $show "(cd $output_objdir && $CC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" 2640 $run eval '(cd $output_objdir && $CC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? 2641 2642 # Clean up the generated files. 2643 $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T" 2644 $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T" 2645 2646 # Transform the symbol file into the correct name. 2647 compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` 2648 finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` 2649 ;; 2650 *) 2651 $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 2652 exit 1 2653 ;; 2654 esac 2655 else 2656 # We keep going just in case the user didn't refer to 2657 # lt_preloaded_symbols. The linker will fail if global_symbol_pipe 2658 # really was required. 2659 2660 # Nullify the symbol file. 2661 compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` 2662 finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` 2663 fi 2664 2665 if test -z "$link_against_libtool_libs" || test "$build_libtool_libs" != yes; then 2666 # Replace the output file specification. 2667 compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` 2668 link_command="$compile_command$compile_rpath" 2669 2670 # We have no uninstalled library dependencies, so finalize right now. 2671 $show "$link_command" 2672 $run eval "$link_command" 2673 status=$? 2674 2675 # Delete the generated files. 2676 if test -n "$dlsyms"; then 2677 $show "$rm $output_objdir/${outputname}S.${objext}" 2678 $run $rm "$output_objdir/${outputname}S.${objext}" 2679 fi 2680 2681 exit $status 2682 fi 2683 2684 if test -n "$shlibpath_var"; then 2685 # We should set the shlibpath_var 2686 rpath= 2687 for dir in $temp_rpath; do 2688 case "$dir" in 2689 [\\/]* | [A-Za-z]:[\\/]*) 2690 # Absolute path. 2691 rpath="$rpath$dir:" 2692 ;; 2693 *) 2694 # Relative path: add a thisdir entry. 2695 rpath="$rpath\$thisdir/$dir:" 2696 ;; 2697 esac 2698 done 2699 temp_rpath="$rpath" 2700 fi 2701 2702 if test -n "$compile_shlibpath$finalize_shlibpath"; then 2703 compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" 2704 fi 2705 if test -n "$finalize_shlibpath"; then 2706 finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" 2707 fi 2708 2709 compile_var= 2710 finalize_var= 2711 if test -n "$runpath_var"; then 2712 if test -n "$perm_rpath"; then 2713 # We should set the runpath_var. 2714 rpath= 2715 for dir in $perm_rpath; do 2716 rpath="$rpath$dir:" 2717 done 2718 compile_var="$runpath_var=\"$rpath\$$runpath_var\" " 2719 fi 2720 if test -n "$finalize_perm_rpath"; then 2721 # We should set the runpath_var. 2722 rpath= 2723 for dir in $finalize_perm_rpath; do 2724 rpath="$rpath$dir:" 2725 done 2726 finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " 2727 fi 2728 fi 2729 2730 if test "$hardcode_action" = relink; then 2731 # Fast installation is not supported 2732 link_command="$compile_var$compile_command$compile_rpath" 2733 relink_command="$finalize_var$finalize_command$finalize_rpath" 2734 2735 $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2 2736 $echo "$modename: \`$output' will be relinked during installation" 1>&2 2737 else 2738 if test "$fast_install" != no; then 2739 link_command="$finalize_var$compile_command$finalize_rpath" 2740 if test "$fast_install" = yes; then 2741 relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` 2742 else 2743 # fast_install is set to needless 2744 relink_command= 2745 fi 2746 else 2747 link_command="$compile_var$compile_command$compile_rpath" 2748 relink_command="$finalize_var$finalize_command$finalize_rpath" 2749 fi 2750 fi 2751 2752 # Replace the output file specification. 2753 link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` 2754 2755 # Delete the old output files. 2756 $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname 2757 2758 $show "$link_command" 2759 $run eval "$link_command" || exit $? 2760 2761 # Now create the wrapper script. 2762 $show "creating $output" 2763 2764 # Quote the relink command for shipping. 2765 if test -n "$relink_command"; then 2766 relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` 2767 fi 2768 2769 # Quote $echo for shipping. 2770 if test "X$echo" = "X$SHELL $0 --fallback-echo"; then 2771 case "$0" in 2772 [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $0 --fallback-echo";; 2773 *) qecho="$SHELL `pwd`/$0 --fallback-echo";; 2774 esac 2775 qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"` 2776 else 2777 qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"` 2778 fi 2779 2780 # Only actually do things if our run command is non-null. 2781 if test -z "$run"; then 2782 # win32 will think the script is a binary if it has 2783 # a .exe suffix, so we strip it off here. 2784 case $output in 2785 *.exe) output=`echo $output|sed 's,.exe$,,'` ;; 2786 esac 2787 $rm $output 2788 trap "$rm $output; exit 1" 1 2 15 2789 2790 $echo > $output "\ 2791#! $SHELL 2792 2793# $output - temporary wrapper script for $objdir/$outputname 2794# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP 2795# 2796# The $output program cannot be directly executed until all the libtool 2797# libraries that it depends on are installed. 2798# 2799# This wrapper script should never be moved out of the build directory. 2800# If it is, it will not operate correctly. 2801 2802# Sed substitution that helps us do robust quoting. It backslashifies 2803# metacharacters that are still active within double-quoted strings. 2804Xsed='sed -e 1s/^X//' 2805sed_quote_subst='$sed_quote_subst' 2806 2807# The HP-UX ksh and POSIX shell print the target directory to stdout 2808# if CDPATH is set. 2809if test \"\${CDPATH+set}\" = set; then CDPATH=:; export CDPATH; fi 2810 2811relink_command=\"$relink_command\" 2812 2813# This environment variable determines our operation mode. 2814if test \"\$libtool_install_magic\" = \"$magic\"; then 2815 # install mode needs the following variable: 2816 link_against_libtool_libs='$link_against_libtool_libs' 2817else 2818 # When we are sourced in execute mode, \$file and \$echo are already set. 2819 if test \"\$libtool_execute_magic\" != \"$magic\"; then 2820 echo=\"$qecho\" 2821 file=\"\$0\" 2822 # Make sure echo works. 2823 if test \"X\$1\" = X--no-reexec; then 2824 # Discard the --no-reexec flag, and continue. 2825 shift 2826 elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then 2827 # Yippee, \$echo works! 2828 : 2829 else 2830 # Restart under the correct shell, and then maybe \$echo will work. 2831 exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} 2832 fi 2833 fi\ 2834" 2835 $echo >> $output "\ 2836 2837 # Find the directory that this script lives in. 2838 thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` 2839 test \"x\$thisdir\" = \"x\$file\" && thisdir=. 2840 2841 # Follow symbolic links until we get to the real thisdir. 2842 file=\`ls -ld \"\$file\" | sed -n 's/.*-> //p'\` 2843 while test -n \"\$file\"; do 2844 destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` 2845 2846 # If there was a directory component, then change thisdir. 2847 if test \"x\$destdir\" != \"x\$file\"; then 2848 case \"\$destdir\" in 2849 [\\/]* | [A-Za-z]:[\\/]*) thisdir=\"\$destdir\" ;; 2850 *) thisdir=\"\$thisdir/\$destdir\" ;; 2851 esac 2852 fi 2853 2854 file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` 2855 file=\`ls -ld \"\$thisdir/\$file\" | sed -n 's/.*-> //p'\` 2856 done 2857 2858 # Try to get the absolute directory name. 2859 absdir=\`cd \"\$thisdir\" && pwd\` 2860 test -n \"\$absdir\" && thisdir=\"\$absdir\" 2861" 2862 2863 if test "$fast_install" = yes; then 2864 echo >> $output "\ 2865 program=lt-'$outputname' 2866 progdir=\"\$thisdir/$objdir\" 2867 2868 if test ! -f \"\$progdir/\$program\" || \\ 2869 { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | sed 1q\`; \\ 2870 test \"X\$file\" != \"X\$progdir/\$program\"; }; then 2871 2872 file=\"\$\$-\$program\" 2873 2874 if test ! -d \"\$progdir\"; then 2875 $mkdir \"\$progdir\" 2876 else 2877 $rm \"\$progdir/\$file\" 2878 fi" 2879 2880 echo >> $output "\ 2881 2882 # relink executable if necessary 2883 if test -n \"\$relink_command\"; then 2884 if (cd \"\$thisdir\" && eval \$relink_command); then : 2885 else 2886 $rm \"\$progdir/\$file\" 2887 exit 1 2888 fi 2889 fi 2890 2891 $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || 2892 { $rm \"\$progdir/\$program\"; 2893 $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; } 2894 $rm \"\$progdir/\$file\" 2895 fi" 2896 else 2897 echo >> $output "\ 2898 program='$outputname' 2899 progdir=\"\$thisdir/$objdir\" 2900" 2901 fi 2902 2903 echo >> $output "\ 2904 2905 if test -f \"\$progdir/\$program\"; then" 2906 2907 # Export our shlibpath_var if we have one. 2908 if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 2909 $echo >> $output "\ 2910 # Add our own library path to $shlibpath_var 2911 $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" 2912 2913 # Some systems cannot cope with colon-terminated $shlibpath_var 2914 # The second colon is a workaround for a bug in BeOS R4 sed 2915 $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` 2916 2917 export $shlibpath_var 2918" 2919 fi 2920 2921 # fixup the dll searchpath if we need to. 2922 if test -n "$dllsearchpath"; then 2923 $echo >> $output "\ 2924 # Add the dll search path components to the executable PATH 2925 PATH=$dllsearchpath:\$PATH 2926" 2927 fi 2928 2929 $echo >> $output "\ 2930 if test \"\$libtool_execute_magic\" != \"$magic\"; then 2931 # Run the actual program with our arguments. 2932" 2933 case $host in 2934 # win32 systems need to use the prog path for dll 2935 # lookup to work 2936 *-*-cygwin*) 2937 $echo >> $output "\ 2938 exec \$progdir/\$program \${1+\"\$@\"} 2939" 2940 ;; 2941 2942 # Backslashes separate directories on plain windows 2943 *-*-mingw | *-*-os2*) 2944 $echo >> $output "\ 2945 exec \$progdir\\\\\$program \${1+\"\$@\"} 2946" 2947 ;; 2948 2949 *) 2950 $echo >> $output "\ 2951 # Export the path to the program. 2952 PATH=\"\$progdir:\$PATH\" 2953 export PATH 2954 2955 exec \$program \${1+\"\$@\"} 2956" 2957 ;; 2958 esac 2959 $echo >> $output "\ 2960 \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\" 2961 exit 1 2962 fi 2963 else 2964 # The program doesn't exist. 2965 \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2 2966 \$echo \"This script is just a wrapper for \$program.\" 1>&2 2967 echo \"See the $PACKAGE documentation for more information.\" 1>&2 2968 exit 1 2969 fi 2970fi\ 2971" 2972 chmod +x $output 2973 fi 2974 exit 0 2975 ;; 2976 esac 2977 2978 # See if we need to build an old-fashioned archive. 2979 for oldlib in $oldlibs; do 2980 2981 if test "$build_libtool_libs" = convenience; then 2982 oldobjs="$libobjs_save" 2983 addlibs="$convenience" 2984 build_libtool_libs=no 2985 else 2986 if test "$build_libtool_libs" = module; then 2987 oldobjs="$libobjs_save" 2988 build_libtool_libs=no 2989 else 2990 oldobjs="$objs "`$echo "X$libobjs_save" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP` 2991 fi 2992 addlibs="$old_convenience" 2993 fi 2994 2995 if test -n "$addlibs"; then 2996 gentop="$output_objdir/${outputname}x" 2997 $show "${rm}r $gentop" 2998 $run ${rm}r "$gentop" 2999 $show "mkdir $gentop" 3000 $run mkdir "$gentop" 3001 status=$? 3002 if test $status -ne 0 && test ! -d "$gentop"; then 3003 exit $status 3004 fi 3005 generated="$generated $gentop" 3006 3007 # Add in members from convenience archives. 3008 for xlib in $addlibs; do 3009 # Extract the objects. 3010 case "$xlib" in 3011 [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; 3012 *) xabs=`pwd`"/$xlib" ;; 3013 esac 3014 xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` 3015 xdir="$gentop/$xlib" 3016 3017 $show "${rm}r $xdir" 3018 $run ${rm}r "$xdir" 3019 $show "mkdir $xdir" 3020 $run mkdir "$xdir" 3021 status=$? 3022 if test $status -ne 0 && test ! -d "$xdir"; then 3023 exit $status 3024 fi 3025 $show "(cd $xdir && $AR x $xabs)" 3026 $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? 3027 3028 oldobjs="$oldobjs "`find $xdir -name \*.${objext} -print -o -name \*.lo -print | $NL2SP` 3029 done 3030 fi 3031 3032 # Do each command in the archive commands. 3033 if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then 3034 eval cmds=\"$old_archive_from_new_cmds\" 3035 else 3036 # Ensure that we have .o objects in place in case we decided 3037 # not to build a shared library, and have fallen back to building 3038 # static libs even though --disable-static was passed! 3039 for oldobj in $oldobjs; do 3040 if test ! -f $oldobj; then 3041 xdir=`$echo "X$oldobj" | $Xsed -e 's%/[^/]*$%%'` 3042 if test "X$xdir" = "X$oldobj"; then 3043 xdir="." 3044 else 3045 xdir="$xdir" 3046 fi 3047 baseobj=`$echo "X$oldobj" | $Xsed -e 's%^.*/%%'` 3048 obj=`$echo "X$baseobj" | $Xsed -e "$o2lo"` 3049 $show "(cd $xdir && ${LN_S} $obj $baseobj)" 3050 $run eval '(cd $xdir && ${LN_S} $obj $baseobj)' || exit $? 3051 fi 3052 done 3053 3054 eval cmds=\"$old_archive_cmds\" 3055 fi 3056 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' 3057 for cmd in $cmds; do 3058 IFS="$save_ifs" 3059 $show "$cmd" 3060 $run eval "$cmd" || exit $? 3061 done 3062 IFS="$save_ifs" 3063 done 3064 3065 if test -n "$generated"; then 3066 $show "${rm}r$generated" 3067 $run ${rm}r$generated 3068 fi 3069 3070 # Now create the libtool archive. 3071 case "$output" in 3072 *.la) 3073 old_library= 3074 test "$build_old_libs" = yes && old_library="$libname.$libext" 3075 $show "creating $output" 3076 3077 if test -n "$xrpath"; then 3078 temp_xrpath= 3079 for libdir in $xrpath; do 3080 temp_xrpath="$temp_xrpath -R$libdir" 3081 done 3082 dependency_libs="$temp_xrpath $dependency_libs" 3083 fi 3084 3085 # Only create the output if not a dry run. 3086 if test -z "$run"; then 3087 for installed in no yes; do 3088 if test "$installed" = yes; then 3089 if test -z "$install_libdir"; then 3090 break 3091 fi 3092 output="$output_objdir/$outputname"i 3093 fi 3094 $rm $output 3095 $echo > $output "\ 3096# $outputname - a libtool library file 3097# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP 3098# 3099# Please DO NOT delete this file! 3100# It is necessary for linking the library. 3101 3102# The name that we can dlopen(3). 3103dlname='$dlname' 3104 3105# Names of this library. 3106library_names='$library_names' 3107 3108# The name of the static archive. 3109old_library='$old_library' 3110 3111# Libraries that this one depends upon. 3112dependency_libs='$dependency_libs' 3113 3114# Version information for $libname. 3115current=$current 3116age=$age 3117revision=$revision 3118 3119# Is this an already installed library? 3120installed=$installed 3121 3122# Directory that this library needs to be installed in: 3123libdir='$install_libdir'\ 3124" 3125 done 3126 fi 3127 3128 # Do a symbolic link so that the libtool archive can be found in 3129 # LD_LIBRARY_PATH before the program is installed. 3130 $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" 3131 $run eval "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" || exit $? 3132 ;; 3133 esac 3134 exit 0 3135 ;; 3136 3137 # libtool install mode 3138 install) 3139 modename="$modename: install" 3140 3141 # There may be an optional sh(1) argument at the beginning of 3142 # install_prog (especially on Windows NT). 3143 if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh; then 3144 # Aesthetically quote it. 3145 arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` 3146 case "$arg" in 3147 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) 3148 arg="\"$arg\"" 3149 ;; 3150 esac 3151 install_prog="$arg " 3152 arg="$1" 3153 shift 3154 else 3155 install_prog= 3156 arg="$nonopt" 3157 fi 3158 3159 # The real first argument should be the name of the installation program. 3160 # Aesthetically quote it. 3161 arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 3162 case "$arg" in 3163 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) 3164 arg="\"$arg\"" 3165 ;; 3166 esac 3167 install_prog="$install_prog$arg" 3168 3169 # We need to accept at least all the BSD install flags. 3170 dest= 3171 files= 3172 opts= 3173 prev= 3174 install_type= 3175 isdir=no 3176 stripme= 3177 for arg 3178 do 3179 if test -n "$dest"; then 3180 files="$files $dest" 3181 dest="$arg" 3182 continue 3183 fi 3184 3185 case "$arg" in 3186 -d) isdir=yes ;; 3187 -f) prev="-f" ;; 3188 -g) prev="-g" ;; 3189 -m) prev="-m" ;; 3190 -o) prev="-o" ;; 3191 -s) 3192 stripme=" -s" 3193 continue 3194 ;; 3195 -*) ;; 3196 3197 *) 3198 # If the previous option needed an argument, then skip it. 3199 if test -n "$prev"; then 3200 prev= 3201 else 3202 dest="$arg" 3203 continue 3204 fi 3205 ;; 3206 esac 3207 3208 # Aesthetically quote the argument. 3209 arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 3210 case "$arg" in 3211 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) 3212 arg="\"$arg\"" 3213 ;; 3214 esac 3215 install_prog="$install_prog $arg" 3216 done 3217 3218 if test -z "$install_prog"; then 3219 $echo "$modename: you must specify an install program" 1>&2 3220 $echo "$help" 1>&2 3221 exit 1 3222 fi 3223 3224 if test -n "$prev"; then 3225 $echo "$modename: the \`$prev' option requires an argument" 1>&2 3226 $echo "$help" 1>&2 3227 exit 1 3228 fi 3229 3230 if test -z "$files"; then 3231 if test -z "$dest"; then 3232 $echo "$modename: no file or destination specified" 1>&2 3233 else 3234 $echo "$modename: you must specify a destination" 1>&2 3235 fi 3236 $echo "$help" 1>&2 3237 exit 1 3238 fi 3239 3240 # Strip any trailing slash from the destination. 3241 dest=`$echo "X$dest" | $Xsed -e 's%/$%%'` 3242 3243 # Check to see that the destination is a directory. 3244 test -d "$dest" && isdir=yes 3245 if test "$isdir" = yes; then 3246 destdir="$dest" 3247 destname= 3248 else 3249 destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'` 3250 test "X$destdir" = "X$dest" && destdir=. 3251 destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'` 3252 3253 # Not a directory, so check to see that there is only one file specified. 3254 set dummy $files 3255 if test $# -gt 2; then 3256 $echo "$modename: \`$dest' is not a directory" 1>&2 3257 $echo "$help" 1>&2 3258 exit 1 3259 fi 3260 fi 3261 case "$destdir" in 3262 [\\/]* | [A-Za-z]:[\\/]*) ;; 3263 *) 3264 for file in $files; do 3265 case "$file" in 3266 *.lo) ;; 3267 *) 3268 $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 3269 $echo "$help" 1>&2 3270 exit 1 3271 ;; 3272 esac 3273 done 3274 ;; 3275 esac 3276 3277 # This variable tells wrapper scripts just to set variables rather 3278 # than running their programs. 3279 libtool_install_magic="$magic" 3280 3281 staticlibs= 3282 future_libdirs= 3283 current_libdirs= 3284 for file in $files; do 3285 3286 # Do each installation. 3287 case "$file" in 3288 *.a | *.lib) 3289 # Do the static libraries later. 3290 staticlibs="$staticlibs $file" 3291 ;; 3292 3293 *.la) 3294 # Check to see that this really is a libtool archive. 3295 if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : 3296 else 3297 $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 3298 $echo "$help" 1>&2 3299 exit 1 3300 fi 3301 3302 library_names= 3303 old_library= 3304 # If there is no directory component, then add one. 3305 case "$file" in 3306 */* | *\\*) . $file ;; 3307 *) . ./$file ;; 3308 esac 3309 3310 # Add the libdir to current_libdirs if it is the destination. 3311 if test "X$destdir" = "X$libdir"; then 3312 case "$current_libdirs " in 3313 *" $libdir "*) ;; 3314 *) current_libdirs="$current_libdirs $libdir" ;; 3315 esac 3316 else 3317 # Note the libdir as a future libdir. 3318 case "$future_libdirs " in 3319 *" $libdir "*) ;; 3320 *) future_libdirs="$future_libdirs $libdir" ;; 3321 esac 3322 fi 3323 3324 dir="`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/" 3325 test "X$dir" = "X$file/" && dir= 3326 dir="$dir$objdir" 3327 3328 # See the names of the shared library. 3329 set dummy $library_names 3330 if test -n "$2"; then 3331 realname="$2" 3332 shift 3333 shift 3334 3335 # Install the shared library and build the symlinks. 3336 $show "$install_prog $dir/$realname $destdir/$realname" 3337 $run eval "$install_prog $dir/$realname $destdir/$realname" || exit $? 3338 3339 if test $# -gt 0; then 3340 # Delete the old symlinks, and create new ones. 3341 for linkname 3342 do 3343 if test "$linkname" != "$realname"; then 3344 $show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" 3345 $run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" 3346 fi 3347 done 3348 fi 3349 3350 # Do each command in the postinstall commands. 3351 lib="$destdir/$realname" 3352 eval cmds=\"$postinstall_cmds\" 3353 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' 3354 for cmd in $cmds; do 3355 IFS="$save_ifs" 3356 $show "$cmd" 3357 $run eval "$cmd" || exit $? 3358 done 3359 IFS="$save_ifs" 3360 fi 3361 3362 # Install the pseudo-library for information purposes. 3363 name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 3364 instname="$dir/$name"i 3365 $show "$install_prog $instname $destdir/$name" 3366 $run eval "$install_prog $instname $destdir/$name" || exit $? 3367 3368 # Maybe install the static library, too. 3369 test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" 3370 ;; 3371 3372 *.lo) 3373 # Install (i.e. copy) a libtool object. 3374 3375 # Figure out destination file name, if it wasn't already specified. 3376 if test -n "$destname"; then 3377 destfile="$destdir/$destname" 3378 else 3379 destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 3380 destfile="$destdir/$destfile" 3381 fi 3382 3383 # Deduce the name of the destination old-style object file. 3384 case "$destfile" in 3385 *.lo) 3386 staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"` 3387 ;; 3388 *.o | *.obj) 3389 staticdest="$destfile" 3390 destfile= 3391 ;; 3392 *) 3393 $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 3394 $echo "$help" 1>&2 3395 exit 1 3396 ;; 3397 esac 3398 3399 # Install the libtool object if requested. 3400 if test -n "$destfile"; then 3401 $show "$install_prog $file $destfile" 3402 $run eval "$install_prog $file $destfile" || exit $? 3403 fi 3404 3405 # Install the old object if enabled. 3406 if test "$build_old_libs" = yes; then 3407 # Deduce the name of the old-style object file. 3408 staticobj=`$echo "X$file" | $Xsed -e "$lo2o"` 3409 3410 $show "$install_prog $staticobj $staticdest" 3411 $run eval "$install_prog \$staticobj \$staticdest" || exit $? 3412 fi 3413 exit 0 3414 ;; 3415 3416 *) 3417 # Figure out destination file name, if it wasn't already specified. 3418 if test -n "$destname"; then 3419 destfile="$destdir/$destname" 3420 else 3421 destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 3422 destfile="$destdir/$destfile" 3423 fi 3424 3425 # Do a test to see if this is really a libtool program. 3426 if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 3427 link_against_libtool_libs= 3428 relink_command= 3429 3430 # If there is no directory component, then add one. 3431 case "$file" in 3432 */* | *\\*) . $file ;; 3433 *) . ./$file ;; 3434 esac 3435 3436 # Check the variables that should have been set. 3437 if test -z "$link_against_libtool_libs"; then 3438 $echo "$modename: invalid libtool wrapper script \`$file'" 1>&2 3439 exit 1 3440 fi 3441 3442 finalize=yes 3443 for lib in $link_against_libtool_libs; do 3444 # Check to see that each library is installed. 3445 libdir= 3446 if test -f "$lib"; then 3447 # If there is no directory component, then add one. 3448 case "$lib" in 3449 */* | *\\*) . $lib ;; 3450 *) . ./$lib ;; 3451 esac 3452 fi 3453 libfile="$libdir/`$echo "X$lib" | $Xsed -e 's%^.*/%%g'`" 3454 if test -n "$libdir" && test ! -f "$libfile"; then 3455 $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 3456 finalize=no 3457 fi 3458 done 3459 3460 outputname= 3461 if test "$fast_install" = no && test -n "$relink_command"; then 3462 if test "$finalize" = yes && test -z "$run"; then 3463 tmpdir="/tmp" 3464 test -n "$TMPDIR" && tmpdir="$TMPDIR" 3465 tmpdir="$tmpdir/libtool-$$" 3466 if $mkdir -p "$tmpdir" && chmod 700 "$tmpdir"; then : 3467 else 3468 $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2 3469 continue 3470 fi 3471 outputname="$tmpdir/$file" 3472 # Replace the output file specification. 3473 relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` 3474 3475 $show "$relink_command" 3476 if $run eval "$relink_command"; then : 3477 else 3478 $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 3479 ${rm}r "$tmpdir" 3480 continue 3481 fi 3482 file="$outputname" 3483 else 3484 $echo "$modename: warning: cannot relink \`$file'" 1>&2 3485 fi 3486 else 3487 # Install the binary that we compiled earlier. 3488 file=`$echo "X$file" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` 3489 fi 3490 fi 3491 3492 $show "$install_prog$stripme $file $destfile" 3493 $run eval "$install_prog\$stripme \$file \$destfile" || exit $? 3494 test -n "$outputname" && ${rm}r "$tmpdir" 3495 ;; 3496 esac 3497 done 3498 3499 for file in $staticlibs; do 3500 name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 3501 3502 # Set up the ranlib parameters. 3503 oldlib="$destdir/$name" 3504 3505 $show "$install_prog $file $oldlib" 3506 $run eval "$install_prog \$file \$oldlib" || exit $? 3507 3508 # Do each command in the postinstall commands. 3509 eval cmds=\"$old_postinstall_cmds\" 3510 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' 3511 for cmd in $cmds; do 3512 IFS="$save_ifs" 3513 $show "$cmd" 3514 $run eval "$cmd" || exit $? 3515 done 3516 IFS="$save_ifs" 3517 done 3518 3519 if test -n "$future_libdirs"; then 3520 $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2 3521 fi 3522 3523 if test -n "$current_libdirs"; then 3524 # Maybe just do a dry run. 3525 test -n "$run" && current_libdirs=" -n$current_libdirs" 3526 exec $SHELL $0 --finish$current_libdirs 3527 exit 1 3528 fi 3529 3530 exit 0 3531 ;; 3532 3533 # libtool finish mode 3534 finish) 3535 modename="$modename: finish" 3536 libdirs="$nonopt" 3537 admincmds= 3538 3539 if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then 3540 for dir 3541 do 3542 libdirs="$libdirs $dir" 3543 done 3544 3545 for libdir in $libdirs; do 3546 if test -n "$finish_cmds"; then 3547 # Do each command in the finish commands. 3548 eval cmds=\"$finish_cmds\" 3549 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' 3550 for cmd in $cmds; do 3551 IFS="$save_ifs" 3552 $show "$cmd" 3553 $run eval "$cmd" || admincmds="$admincmds 3554 $cmd" 3555 done 3556 IFS="$save_ifs" 3557 fi 3558 if test -n "$finish_eval"; then 3559 # Do the single finish_eval. 3560 eval cmds=\"$finish_eval\" 3561 $run eval "$cmds" || admincmds="$admincmds 3562 $cmds" 3563 fi 3564 done 3565 fi 3566 3567 # Exit here if they wanted silent mode. 3568 test "$show" = : && exit 0 3569 3570 echo "----------------------------------------------------------------------" 3571 echo "Libraries have been installed in:" 3572 for libdir in $libdirs; do 3573 echo " $libdir" 3574 done 3575 echo 3576 echo "If you ever happen to want to link against installed libraries" 3577 echo "in a given directory, LIBDIR, you must either use libtool, and" 3578 echo "specify the full pathname of the library, or use \`-LLIBDIR'" 3579 echo "flag during linking and do at least one of the following:" 3580 if test -n "$shlibpath_var"; then 3581 echo " - add LIBDIR to the \`$shlibpath_var' environment variable" 3582 echo " during execution" 3583 fi 3584 if test -n "$runpath_var"; then 3585 echo " - add LIBDIR to the \`$runpath_var' environment variable" 3586 echo " during linking" 3587 fi 3588 if test -n "$hardcode_libdir_flag_spec"; then 3589 libdir=LIBDIR 3590 eval flag=\"$hardcode_libdir_flag_spec\" 3591 3592 echo " - use the \`$flag' linker flag" 3593 fi 3594 if test -n "$admincmds"; then 3595 echo " - have your system administrator run these commands:$admincmds" 3596 fi 3597 if test -f /etc/ld.so.conf; then 3598 echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" 3599 fi 3600 echo 3601 echo "See any operating system documentation about shared libraries for" 3602 echo "more information, such as the ld(1) and ld.so(8) manual pages." 3603 echo "----------------------------------------------------------------------" 3604 exit 0 3605 ;; 3606 3607 # libtool execute mode 3608 execute) 3609 modename="$modename: execute" 3610 3611 # The first argument is the command name. 3612 cmd="$nonopt" 3613 if test -z "$cmd"; then 3614 $echo "$modename: you must specify a COMMAND" 1>&2 3615 $echo "$help" 3616 exit 1 3617 fi 3618 3619 # Handle -dlopen flags immediately. 3620 for file in $execute_dlfiles; do 3621 if test ! -f "$file"; then 3622 $echo "$modename: \`$file' is not a file" 1>&2 3623 $echo "$help" 1>&2 3624 exit 1 3625 fi 3626 3627 dir= 3628 case "$file" in 3629 *.la) 3630 # Check to see that this really is a libtool archive. 3631 if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : 3632 else 3633 $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 3634 $echo "$help" 1>&2 3635 exit 1 3636 fi 3637 3638 # Read the libtool library. 3639 dlname= 3640 library_names= 3641 3642 # If there is no directory component, then add one. 3643 case "$file" in 3644 */* | *\\*) . $file ;; 3645 *) . ./$file ;; 3646 esac 3647 3648 # Skip this library if it cannot be dlopened. 3649 if test -z "$dlname"; then 3650 # Warn if it was a shared library. 3651 test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'" 3652 continue 3653 fi 3654 3655 dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` 3656 test "X$dir" = "X$file" && dir=. 3657 3658 if test -f "$dir/$objdir/$dlname"; then 3659 dir="$dir/$objdir" 3660 else 3661 $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 3662 exit 1 3663 fi 3664 ;; 3665 3666 *.lo) 3667 # Just add the directory containing the .lo file. 3668 dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` 3669 test "X$dir" = "X$file" && dir=. 3670 ;; 3671 3672 *) 3673 $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2 3674 continue 3675 ;; 3676 esac 3677 3678 # Get the absolute pathname. 3679 absdir=`cd "$dir" && pwd` 3680 test -n "$absdir" && dir="$absdir" 3681 3682 # Now add the directory to shlibpath_var. 3683 if eval "test -z \"\$$shlibpath_var\""; then 3684 eval "$shlibpath_var=\"\$dir\"" 3685 else 3686 eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" 3687 fi 3688 done 3689 3690 # This variable tells wrapper scripts just to set shlibpath_var 3691 # rather than running their programs. 3692 libtool_execute_magic="$magic" 3693 3694 # Check if any of the arguments is a wrapper script. 3695 args= 3696 for file 3697 do 3698 case "$file" in 3699 -*) ;; 3700 *) 3701 # Do a test to see if this is really a libtool program. 3702 if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 3703 # If there is no directory component, then add one. 3704 case "$file" in 3705 */* | *\\*) . $file ;; 3706 *) . ./$file ;; 3707 esac 3708 3709 # Transform arg to wrapped name. 3710 file="$progdir/$program" 3711 fi 3712 ;; 3713 esac 3714 # Quote arguments (to preserve shell metacharacters). 3715 file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"` 3716 args="$args \"$file\"" 3717 done 3718 3719 if test -z "$run"; then 3720 if test -n "$shlibpath_var"; then 3721 # Export the shlibpath_var. 3722 eval "export $shlibpath_var" 3723 fi 3724 3725 # Restore saved enviroment variables 3726 if test "${save_LC_ALL+set}" = set; then 3727 LC_ALL="$save_LC_ALL"; export LC_ALL 3728 fi 3729 if test "${save_LANG+set}" = set; then 3730 LANG="$save_LANG"; export LANG 3731 fi 3732 3733 # Now actually exec the command. 3734 eval "exec \$cmd$args" 3735 3736 $echo "$modename: cannot exec \$cmd$args" 3737 exit 1 3738 else 3739 # Display what would be done. 3740 if test -n "$shlibpath_var"; then 3741 eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\"" 3742 $echo "export $shlibpath_var" 3743 fi 3744 $echo "$cmd$args" 3745 exit 0 3746 fi 3747 ;; 3748 3749 # libtool uninstall mode 3750 uninstall) 3751 modename="$modename: uninstall" 3752 rm="$nonopt" 3753 files= 3754 3755 for arg 3756 do 3757 case "$arg" in 3758 -*) rm="$rm $arg" ;; 3759 *) files="$files $arg" ;; 3760 esac 3761 done 3762 3763 if test -z "$rm"; then 3764 $echo "$modename: you must specify an RM program" 1>&2 3765 $echo "$help" 1>&2 3766 exit 1 3767 fi 3768 3769 for file in $files; do 3770 dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` 3771 test "X$dir" = "X$file" && dir=. 3772 name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 3773 3774 rmfiles="$file" 3775 3776 case "$name" in 3777 *.la) 3778 # Possibly a libtool archive, so verify it. 3779 if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 3780 . $dir/$name 3781 3782 # Delete the libtool libraries and symlinks. 3783 for n in $library_names; do 3784 rmfiles="$rmfiles $dir/$n" 3785 done 3786 test -n "$old_library" && rmfiles="$rmfiles $dir/$old_library" 3787 3788 $show "$rm $rmfiles" 3789 $run $rm $rmfiles 3790 3791 if test -n "$library_names"; then 3792 # Do each command in the postuninstall commands. 3793 eval cmds=\"$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 if test -n "$old_library"; then 3804 # Do each command in the old_postuninstall commands. 3805 eval cmds=\"$old_postuninstall_cmds\" 3806 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' 3807 for cmd in $cmds; do 3808 IFS="$save_ifs" 3809 $show "$cmd" 3810 $run eval "$cmd" 3811 done 3812 IFS="$save_ifs" 3813 fi 3814 3815 # FIXME: should reinstall the best remaining shared library. 3816 fi 3817 ;; 3818 3819 *.lo) 3820 if test "$build_old_libs" = yes; then 3821 oldobj=`$echo "X$name" | $Xsed -e "$lo2o"` 3822 rmfiles="$rmfiles $dir/$oldobj" 3823 fi 3824 $show "$rm $rmfiles" 3825 $run $rm $rmfiles 3826 ;; 3827 3828 *) 3829 $show "$rm $rmfiles" 3830 $run $rm $rmfiles 3831 ;; 3832 esac 3833 done 3834 exit 0 3835 ;; 3836 3837 "") 3838 $echo "$modename: you must specify a MODE" 1>&2 3839 $echo "$generic_help" 1>&2 3840 exit 1 3841 ;; 3842 esac 3843 3844 $echo "$modename: invalid operation mode \`$mode'" 1>&2 3845 $echo "$generic_help" 1>&2 3846 exit 1 3847fi # test -z "$show_help" 3848 3849# We need to display help for each of the modes. 3850case "$mode" in 3851"") $echo \ 3852"Usage: $modename [OPTION]... [MODE-ARG]... 3853 3854Provide generalized library-building support services. 3855 3856 --config show all configuration variables 3857 --debug enable verbose shell tracing 3858-n, --dry-run display commands without modifying any files 3859 --features display basic configuration information and exit 3860 --finish same as \`--mode=finish' 3861 --help display this help message and exit 3862 --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] 3863 --quiet same as \`--silent' 3864 --silent don't print informational messages 3865 --version print version information 3866 3867MODE must be one of the following: 3868 3869 compile compile a source file into a libtool object 3870 execute automatically set library path, then run a program 3871 finish complete the installation of libtool libraries 3872 install install libraries or executables 3873 link create a library or an executable 3874 uninstall remove libraries from an installed directory 3875 3876MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for 3877a more detailed description of MODE." 3878 exit 0 3879 ;; 3880 3881compile) 3882 $echo \ 3883"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE 3884 3885Compile a source file into a libtool library object. 3886 3887This mode accepts the following additional options: 3888 3889 -o OUTPUT-FILE set the output file name to OUTPUT-FILE 3890 -static always build a \`.o' file suitable for static linking 3891 3892COMPILE-COMMAND is a command to be used in creating a \`standard' object file 3893from the given SOURCEFILE. 3894 3895The output file name is determined by removing the directory component from 3896SOURCEFILE, then substituting the C source code suffix \`.c' with the 3897library object suffix, \`.lo'." 3898 ;; 3899 3900execute) 3901 $echo \ 3902"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]... 3903 3904Automatically set library path, then run a program. 3905 3906This mode accepts the following additional options: 3907 3908 -dlopen FILE add the directory containing FILE to the library path 3909 3910This mode sets the library path environment variable according to \`-dlopen' 3911flags. 3912 3913If any of the ARGS are libtool executable wrappers, then they are translated 3914into their corresponding uninstalled binary, and any of their required library 3915directories are added to the library path. 3916 3917Then, COMMAND is executed, with ARGS as arguments." 3918 ;; 3919 3920finish) 3921 $echo \ 3922"Usage: $modename [OPTION]... --mode=finish [LIBDIR]... 3923 3924Complete the installation of libtool libraries. 3925 3926Each LIBDIR is a directory that contains libtool libraries. 3927 3928The commands that this mode executes may require superuser privileges. Use 3929the \`--dry-run' option if you just want to see what would be executed." 3930 ;; 3931 3932install) 3933 $echo \ 3934"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND... 3935 3936Install executables or libraries. 3937 3938INSTALL-COMMAND is the installation command. The first component should be 3939either the \`install' or \`cp' program. 3940 3941The rest of the components are interpreted as arguments to that command (only 3942BSD-compatible install options are recognized)." 3943 ;; 3944 3945link) 3946 $echo \ 3947"Usage: $modename [OPTION]... --mode=link LINK-COMMAND... 3948 3949Link object files or libraries together to form another library, or to 3950create an executable program. 3951 3952LINK-COMMAND is a command using the C compiler that you would use to create 3953a program from several object files. 3954 3955The following components of LINK-COMMAND are treated specially: 3956 3957 -all-static do not do any dynamic linking at all 3958 -avoid-version do not add a version suffix if possible 3959 -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime 3960 -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols 3961 -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) 3962 -export-symbols SYMFILE 3963 try to export only the symbols listed in SYMFILE 3964 -export-symbols-regex REGEX 3965 try to export only the symbols matching REGEX 3966 -LLIBDIR search LIBDIR for required installed libraries 3967 -lNAME OUTPUT-FILE requires the installed library libNAME 3968 -module build a library that can dlopened 3969 -no-undefined declare that a library does not refer to external symbols 3970 -o OUTPUT-FILE create OUTPUT-FILE from the specified objects 3971 -release RELEASE specify package release information 3972 -rpath LIBDIR the created library will eventually be installed in LIBDIR 3973 -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries 3974 -static do not do any dynamic linking of libtool libraries 3975 -version-info CURRENT[:REVISION[:AGE]] 3976 specify library version info [each variable defaults to 0] 3977 3978All other options (arguments beginning with \`-') are ignored. 3979 3980Every other argument is treated as a filename. Files ending in \`.la' are 3981treated as uninstalled libtool libraries, other files are standard or library 3982object files. 3983 3984If the OUTPUT-FILE ends in \`.la', then a libtool library is created, 3985only library objects (\`.lo' files) may be specified, and \`-rpath' is 3986required, except when creating a convenience library. 3987 3988If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created 3989using \`ar' and \`ranlib', or on Windows using \`lib'. 3990 3991If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file 3992is created, otherwise an executable program is created." 3993 ;; 3994 3995uninstall) 3996 $echo \ 3997"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... 3998 3999Remove libraries from an installation directory. 4000 4001RM is the name of the program to use to delete files associated with each FILE 4002(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 4003to RM. 4004 4005If FILE is a libtool library, all the files associated with it are deleted. 4006Otherwise, only FILE itself is deleted using RM." 4007 ;; 4008 4009*) 4010 $echo "$modename: invalid operation mode \`$mode'" 1>&2 4011 $echo "$help" 1>&2 4012 exit 1 4013 ;; 4014esac 4015 4016echo 4017$echo "Try \`$modename --help' for more information about other modes." 4018 4019exit 0 4020 4021# Local Variables: 4022# mode:shell-script 4023# sh-indentation:2 4024# End: 4025