1 #! /bin/sh 2 # Output a system dependent set of variables, describing how to set the 3 # run time search path of shared libraries in an executable. 4 # 5 # Copyright 1996-2012 Free Software Foundation, Inc. 6 # Taken from GNU libtool, 2001 7 # Originally by Gordon Matzigkeit <gord (at] gnu.ai.mit.edu>, 1996 8 # 9 # This file is free software; the Free Software Foundation gives 10 # unlimited permission to copy and/or distribute it, with or without 11 # modifications, as long as this notice is preserved. 12 # 13 # The first argument passed to this file is the canonical host specification, 14 # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM 15 # or 16 # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM 17 # The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld 18 # should be set by the caller. 19 # 20 # The set of defined variables is at the end of this script. 21 22 # Known limitations: 23 # - On IRIX 6.5 with CC="cc", the run time search patch must not be longer 24 # than 256 bytes, otherwise the compiler driver will dump core. The only 25 # known workaround is to choose shorter directory names for the build 26 # directory and/or the installation directory. 27 28 # All known linkers require a '.a' archive for static linking (except MSVC, 29 # which needs '.lib'). 30 libext=a 31 shrext=.so 32 33 host="$1" 34 host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` 35 host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` 36 host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` 37 38 # Code taken from libtool.m4's _LT_CC_BASENAME. 39 40 for cc_temp in $CC""; do 41 case $cc_temp in 42 compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; 43 distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; 44 \-*) ;; 45 *) break;; 46 esac 47 done 48 cc_basename=`echo "$cc_temp" | sed -e 's%^.*/%%'` 49 50 # Code taken from libtool.m4's _LT_COMPILER_PIC. 51 52 wl= 53 if test "$GCC" = yes; then 54 wl='-Wl,' 55 else 56 case "$host_os" in 57 aix*) 58 wl='-Wl,' 59 ;; 60 mingw* | cygwin* | pw32* | os2* | cegcc*) 61 ;; 62 hpux9* | hpux10* | hpux11*) 63 wl='-Wl,' 64 ;; 65 irix5* | irix6* | nonstopux*) 66 wl='-Wl,' 67 ;; 68 linux* | k*bsd*-gnu | kopensolaris*-gnu) 69 case $cc_basename in 70 ecc*) 71 wl='-Wl,' 72 ;; 73 icc* | ifort*) 74 wl='-Wl,' 75 ;; 76 lf95*) 77 wl='-Wl,' 78 ;; 79 nagfor*) 80 wl='-Wl,-Wl,,' 81 ;; 82 pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) 83 wl='-Wl,' 84 ;; 85 ccc*) 86 wl='-Wl,' 87 ;; 88 xl* | bgxl* | bgf* | mpixl*) 89 wl='-Wl,' 90 ;; 91 como) 92 wl='-lopt=' 93 ;; 94 *) 95 case `$CC -V 2>&1 | sed 5q` in 96 *Sun\ F* | *Sun*Fortran*) 97 wl= 98 ;; 99 *Sun\ C*) 100 wl='-Wl,' 101 ;; 102 esac 103 ;; 104 esac 105 ;; 106 newsos6) 107 ;; 108 *nto* | *qnx*) 109 ;; 110 osf3* | osf4* | osf5*) 111 wl='-Wl,' 112 ;; 113 rdos*) 114 ;; 115 solaris*) 116 case $cc_basename in 117 f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) 118 wl='-Qoption ld ' 119 ;; 120 *) 121 wl='-Wl,' 122 ;; 123 esac 124 ;; 125 sunos4*) 126 wl='-Qoption ld ' 127 ;; 128 sysv4 | sysv4.2uw2* | sysv4.3*) 129 wl='-Wl,' 130 ;; 131 sysv4*MP*) 132 ;; 133 sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) 134 wl='-Wl,' 135 ;; 136 unicos*) 137 wl='-Wl,' 138 ;; 139 uts4*) 140 ;; 141 esac 142 fi 143 144 # Code taken from libtool.m4's _LT_LINKER_SHLIBS. 145 146 hardcode_libdir_flag_spec= 147 hardcode_libdir_separator= 148 hardcode_direct=no 149 hardcode_minus_L=no 150 151 case "$host_os" in 152 cygwin* | mingw* | pw32* | cegcc*) 153 # FIXME: the MSVC++ port hasn't been tested in a loooong time 154 # When not using gcc, we currently assume that we are using 155 # Microsoft Visual C++. 156 if test "$GCC" != yes; then 157 with_gnu_ld=no 158 fi 159 ;; 160 interix*) 161 # we just hope/assume this is gcc and not c89 (= MSVC++) 162 with_gnu_ld=yes 163 ;; 164 openbsd*) 165 with_gnu_ld=no 166 ;; 167 esac 168 169 ld_shlibs=yes 170 if test "$with_gnu_ld" = yes; then 171 # Set some defaults for GNU ld with shared library support. These 172 # are reset later if shared libraries are not supported. Putting them 173 # here allows them to be overridden if necessary. 174 # Unlike libtool, we use -rpath here, not --rpath, since the documented 175 # option of GNU ld is called -rpath, not --rpath. 176 hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' 177 case "$host_os" in 178 aix[3-9]*) 179 # On AIX/PPC, the GNU linker is very broken 180 if test "$host_cpu" != ia64; then 181 ld_shlibs=no 182 fi 183 ;; 184 amigaos*) 185 case "$host_cpu" in 186 powerpc) 187 ;; 188 m68k) 189 hardcode_libdir_flag_spec='-L$libdir' 190 hardcode_minus_L=yes 191 ;; 192 esac 193 ;; 194 beos*) 195 if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then 196 : 197 else 198 ld_shlibs=no 199 fi 200 ;; 201 cygwin* | mingw* | pw32* | cegcc*) 202 # hardcode_libdir_flag_spec is actually meaningless, as there is 203 # no search path for DLLs. 204 hardcode_libdir_flag_spec='-L$libdir' 205 if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then 206 : 207 else 208 ld_shlibs=no 209 fi 210 ;; 211 haiku*) 212 ;; 213 interix[3-9]*) 214 hardcode_direct=no 215 hardcode_libdir_flag_spec='${wl}-rpath,$libdir' 216 ;; 217 gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) 218 if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then 219 : 220 else 221 ld_shlibs=no 222 fi 223 ;; 224 netbsd*) 225 ;; 226 solaris*) 227 if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then 228 ld_shlibs=no 229 elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then 230 : 231 else 232 ld_shlibs=no 233 fi 234 ;; 235 sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) 236 case `$LD -v 2>&1` in 237 *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) 238 ld_shlibs=no 239 ;; 240 *) 241 if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then 242 hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' 243 else 244 ld_shlibs=no 245 fi 246 ;; 247 esac 248 ;; 249 sunos4*) 250 hardcode_direct=yes 251 ;; 252 *) 253 if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then 254 : 255 else 256 ld_shlibs=no 257 fi 258 ;; 259 esac 260 if test "$ld_shlibs" = no; then 261 hardcode_libdir_flag_spec= 262 fi 263 else 264 case "$host_os" in 265 aix3*) 266 # Note: this linker hardcodes the directories in LIBPATH if there 267 # are no directories specified by -L. 268 hardcode_minus_L=yes 269 if test "$GCC" = yes; then 270 # Neither direct hardcoding nor static linking is supported with a 271 # broken collect2. 272 hardcode_direct=unsupported 273 fi 274 ;; 275 aix[4-9]*) 276 if test "$host_cpu" = ia64; then 277 # On IA64, the linker does run time linking by default, so we don't 278 # have to do anything special. 279 aix_use_runtimelinking=no 280 else 281 aix_use_runtimelinking=no 282 # Test if we are trying to use run time linking or normal 283 # AIX style linking. If -brtl is somewhere in LDFLAGS, we 284 # need to do runtime linking. 285 case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) 286 for ld_flag in $LDFLAGS; do 287 if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then 288 aix_use_runtimelinking=yes 289 break 290 fi 291 done 292 ;; 293 esac 294 fi 295 hardcode_direct=yes 296 hardcode_libdir_separator=':' 297 if test "$GCC" = yes; then 298 case $host_os in aix4.[012]|aix4.[012].*) 299 collect2name=`${CC} -print-prog-name=collect2` 300 if test -f "$collect2name" && \ 301 strings "$collect2name" | grep resolve_lib_name >/dev/null 302 then 303 # We have reworked collect2 304 : 305 else 306 # We have old collect2 307 hardcode_direct=unsupported 308 hardcode_minus_L=yes 309 hardcode_libdir_flag_spec='-L$libdir' 310 hardcode_libdir_separator= 311 fi 312 ;; 313 esac 314 fi 315 # Begin _LT_AC_SYS_LIBPATH_AIX. 316 echo 'int main () { return 0; }' > conftest.c 317 ${CC} ${LDFLAGS} conftest.c -o conftest 318 aix_libpath=`dump -H conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } 319 }'` 320 if test -z "$aix_libpath"; then 321 aix_libpath=`dump -HX64 conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } 322 }'` 323 fi 324 if test -z "$aix_libpath"; then 325 aix_libpath="/usr/lib:/lib" 326 fi 327 rm -f conftest.c conftest 328 # End _LT_AC_SYS_LIBPATH_AIX. 329 if test "$aix_use_runtimelinking" = yes; then 330 hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" 331 else 332 if test "$host_cpu" = ia64; then 333 hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' 334 else 335 hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" 336 fi 337 fi 338 ;; 339 amigaos*) 340 case "$host_cpu" in 341 powerpc) 342 ;; 343 m68k) 344 hardcode_libdir_flag_spec='-L$libdir' 345 hardcode_minus_L=yes 346 ;; 347 esac 348 ;; 349 bsdi[45]*) 350 ;; 351 cygwin* | mingw* | pw32* | cegcc*) 352 # When not using gcc, we currently assume that we are using 353 # Microsoft Visual C++. 354 # hardcode_libdir_flag_spec is actually meaningless, as there is 355 # no search path for DLLs. 356 hardcode_libdir_flag_spec=' ' 357 libext=lib 358 ;; 359 darwin* | rhapsody*) 360 hardcode_direct=no 361 if { case $cc_basename in ifort*) true;; *) test "$GCC" = yes;; esac; }; then 362 : 363 else 364 ld_shlibs=no 365 fi 366 ;; 367 dgux*) 368 hardcode_libdir_flag_spec='-L$libdir' 369 ;; 370 freebsd2.2*) 371 hardcode_libdir_flag_spec='-R$libdir' 372 hardcode_direct=yes 373 ;; 374 freebsd2*) 375 hardcode_direct=yes 376 hardcode_minus_L=yes 377 ;; 378 freebsd* | dragonfly*) 379 hardcode_libdir_flag_spec='-R$libdir' 380 hardcode_direct=yes 381 ;; 382 hpux9*) 383 hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' 384 hardcode_libdir_separator=: 385 hardcode_direct=yes 386 # hardcode_minus_L: Not really in the search PATH, 387 # but as the default location of the library. 388 hardcode_minus_L=yes 389 ;; 390 hpux10*) 391 if test "$with_gnu_ld" = no; then 392 hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' 393 hardcode_libdir_separator=: 394 hardcode_direct=yes 395 # hardcode_minus_L: Not really in the search PATH, 396 # but as the default location of the library. 397 hardcode_minus_L=yes 398 fi 399 ;; 400 hpux11*) 401 if test "$with_gnu_ld" = no; then 402 hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' 403 hardcode_libdir_separator=: 404 case $host_cpu in 405 hppa*64*|ia64*) 406 hardcode_direct=no 407 ;; 408 *) 409 hardcode_direct=yes 410 # hardcode_minus_L: Not really in the search PATH, 411 # but as the default location of the library. 412 hardcode_minus_L=yes 413 ;; 414 esac 415 fi 416 ;; 417 irix5* | irix6* | nonstopux*) 418 hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' 419 hardcode_libdir_separator=: 420 ;; 421 netbsd*) 422 hardcode_libdir_flag_spec='-R$libdir' 423 hardcode_direct=yes 424 ;; 425 newsos6) 426 hardcode_direct=yes 427 hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' 428 hardcode_libdir_separator=: 429 ;; 430 *nto* | *qnx*) 431 ;; 432 openbsd*) 433 if test -f /usr/libexec/ld.so; then 434 hardcode_direct=yes 435 if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then 436 hardcode_libdir_flag_spec='${wl}-rpath,$libdir' 437 else 438 case "$host_os" in 439 openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) 440 hardcode_libdir_flag_spec='-R$libdir' 441 ;; 442 *) 443 hardcode_libdir_flag_spec='${wl}-rpath,$libdir' 444 ;; 445 esac 446 fi 447 else 448 ld_shlibs=no 449 fi 450 ;; 451 os2*) 452 hardcode_libdir_flag_spec='-L$libdir' 453 hardcode_minus_L=yes 454 ;; 455 osf3*) 456 hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' 457 hardcode_libdir_separator=: 458 ;; 459 osf4* | osf5*) 460 if test "$GCC" = yes; then 461 hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' 462 else 463 # Both cc and cxx compiler support -rpath directly 464 hardcode_libdir_flag_spec='-rpath $libdir' 465 fi 466 hardcode_libdir_separator=: 467 ;; 468 solaris*) 469 hardcode_libdir_flag_spec='-R$libdir' 470 ;; 471 sunos4*) 472 hardcode_libdir_flag_spec='-L$libdir' 473 hardcode_direct=yes 474 hardcode_minus_L=yes 475 ;; 476 sysv4) 477 case $host_vendor in 478 sni) 479 hardcode_direct=yes # is this really true??? 480 ;; 481 siemens) 482 hardcode_direct=no 483 ;; 484 motorola) 485 hardcode_direct=no #Motorola manual says yes, but my tests say they lie 486 ;; 487 esac 488 ;; 489 sysv4.3*) 490 ;; 491 sysv4*MP*) 492 if test -d /usr/nec; then 493 ld_shlibs=yes 494 fi 495 ;; 496 sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) 497 ;; 498 sysv5* | sco3.2v5* | sco5v6*) 499 hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' 500 hardcode_libdir_separator=':' 501 ;; 502 uts4*) 503 hardcode_libdir_flag_spec='-L$libdir' 504 ;; 505 *) 506 ld_shlibs=no 507 ;; 508 esac 509 fi 510 511 # Check dynamic linker characteristics 512 # Code taken from libtool.m4's _LT_SYS_DYNAMIC_LINKER. 513 # Unlike libtool.m4, here we don't care about _all_ names of the library, but 514 # only about the one the linker finds when passed -lNAME. This is the last 515 # element of library_names_spec in libtool.m4, or possibly two of them if the 516 # linker has special search rules. 517 library_names_spec= # the last element of library_names_spec in libtool.m4 518 libname_spec='lib$name' 519 case "$host_os" in 520 aix3*) 521 library_names_spec='$libname.a' 522 ;; 523 aix[4-9]*) 524 library_names_spec='$libname$shrext' 525 ;; 526 amigaos*) 527 case "$host_cpu" in 528 powerpc*) 529 library_names_spec='$libname$shrext' ;; 530 m68k) 531 library_names_spec='$libname.a' ;; 532 esac 533 ;; 534 beos*) 535 library_names_spec='$libname$shrext' 536 ;; 537 bsdi[45]*) 538 library_names_spec='$libname$shrext' 539 ;; 540 cygwin* | mingw* | pw32* | cegcc*) 541 shrext=.dll 542 library_names_spec='$libname.dll.a $libname.lib' 543 ;; 544 darwin* | rhapsody*) 545 shrext=.dylib 546 library_names_spec='$libname$shrext' 547 ;; 548 dgux*) 549 library_names_spec='$libname$shrext' 550 ;; 551 freebsd* | dragonfly*) 552 case "$host_os" in 553 freebsd[123]*) 554 library_names_spec='$libname$shrext$versuffix' ;; 555 *) 556 library_names_spec='$libname$shrext' ;; 557 esac 558 ;; 559 gnu*) 560 library_names_spec='$libname$shrext' 561 ;; 562 haiku*) 563 library_names_spec='$libname$shrext' 564 ;; 565 hpux9* | hpux10* | hpux11*) 566 case $host_cpu in 567 ia64*) 568 shrext=.so 569 ;; 570 hppa*64*) 571 shrext=.sl 572 ;; 573 *) 574 shrext=.sl 575 ;; 576 esac 577 library_names_spec='$libname$shrext' 578 ;; 579 interix[3-9]*) 580 library_names_spec='$libname$shrext' 581 ;; 582 irix5* | irix6* | nonstopux*) 583 library_names_spec='$libname$shrext' 584 case "$host_os" in 585 irix5* | nonstopux*) 586 libsuff= shlibsuff= 587 ;; 588 *) 589 case $LD in 590 *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= ;; 591 *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 ;; 592 *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 ;; 593 *) libsuff= shlibsuff= ;; 594 esac 595 ;; 596 esac 597 ;; 598 linux*oldld* | linux*aout* | linux*coff*) 599 ;; 600 linux* | k*bsd*-gnu | kopensolaris*-gnu) 601 library_names_spec='$libname$shrext' 602 ;; 603 knetbsd*-gnu) 604 library_names_spec='$libname$shrext' 605 ;; 606 netbsd*) 607 library_names_spec='$libname$shrext' 608 ;; 609 newsos6) 610 library_names_spec='$libname$shrext' 611 ;; 612 *nto* | *qnx*) 613 library_names_spec='$libname$shrext' 614 ;; 615 openbsd*) 616 library_names_spec='$libname$shrext$versuffix' 617 ;; 618 os2*) 619 libname_spec='$name' 620 shrext=.dll 621 library_names_spec='$libname.a' 622 ;; 623 osf3* | osf4* | osf5*) 624 library_names_spec='$libname$shrext' 625 ;; 626 rdos*) 627 ;; 628 solaris*) 629 library_names_spec='$libname$shrext' 630 ;; 631 sunos4*) 632 library_names_spec='$libname$shrext$versuffix' 633 ;; 634 sysv4 | sysv4.3*) 635 library_names_spec='$libname$shrext' 636 ;; 637 sysv4*MP*) 638 library_names_spec='$libname$shrext' 639 ;; 640 sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) 641 library_names_spec='$libname$shrext' 642 ;; 643 tpf*) 644 library_names_spec='$libname$shrext' 645 ;; 646 uts4*) 647 library_names_spec='$libname$shrext' 648 ;; 649 esac 650 651 sed_quote_subst='s/\(["`$\\]\)/\\\1/g' 652 escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"` 653 shlibext=`echo "$shrext" | sed -e 's,^\.,,'` 654 escaped_libname_spec=`echo "X$libname_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` 655 escaped_library_names_spec=`echo "X$library_names_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` 656 escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` 657 658 LC_ALL=C sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <<EOF 659 660 # How to pass a linker flag through the compiler. 661 wl="$escaped_wl" 662 663 # Static library suffix (normally "a"). 664 libext="$libext" 665 666 # Shared library suffix (normally "so"). 667 shlibext="$shlibext" 668 669 # Format of library name prefix. 670 libname_spec="$escaped_libname_spec" 671 672 # Library names that the linker finds when passed -lNAME. 673 library_names_spec="$escaped_library_names_spec" 674 675 # Flag to hardcode \$libdir into a binary during linking. 676 # This must work even if \$libdir does not exist. 677 hardcode_libdir_flag_spec="$escaped_hardcode_libdir_flag_spec" 678 679 # Whether we need a single -rpath flag with a separated argument. 680 hardcode_libdir_separator="$hardcode_libdir_separator" 681 682 # Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the 683 # resulting binary. 684 hardcode_direct="$hardcode_direct" 685 686 # Set to yes if using the -LDIR flag during linking hardcodes DIR into the 687 # resulting binary. 688 hardcode_minus_L="$hardcode_minus_L" 689 690 EOF 691