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