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