blob: c492a93b663132214cb5c26bfab04f111a9ff2bf
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@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@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 |