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