Enable ASLR feature
[platform/upstream/cryptsetup.git] / config.rpath
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-2013 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 _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