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