This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Update libsearch paths for cygwin
[metaconfig.git] / U / modified / libs.U
1 ?RCS: $Id: libs.U,v 3.0.1.6 1997/02/28 16:09:11 ram Exp $
2 ?RCS:
3 ?RCS: Copyright (c) 1991-1993, Raphael Manfredi
4 ?RCS:
5 ?RCS: You may redistribute only under the terms of the Artistic License,
6 ?RCS: as specified in the README file that comes with the distribution.
7 ?RCS: You may reuse parts of this distribution only within the terms of
8 ?RCS: that same Artistic License; a copy of which may be found at the root
9 ?RCS: of the source tree for dist 3.0.
10 ?RCS:
11 ?RCS: $Log: libs.U,v $
12 ?RCS: Revision 3.0.1.6  1997/02/28  16:09:11  ram
13 ?RCS: patch61: replaced .a with $_a all over the place
14 ?RCS:
15 ?RCS: Revision 3.0.1.5  1995/07/25  14:12:05  ram
16 ?RCS: patch56: now knows about OS/2 platforms
17 ?RCS:
18 ?RCS: Revision 3.0.1.4  1994/10/29  16:24:22  ram
19 ?RCS: patch36: removed old broken thislib/thatlib processing (ADO)
20 ?RCS:
21 ?RCS: Revision 3.0.1.3  1994/06/20  07:05:44  ram
22 ?RCS: patch30: code cleanup with if/elif by ADO and RAM
23 ?RCS: patch30: undone patch23 for libswanted default setting
24 ?RCS:
25 ?RCS: Revision 3.0.1.2  1994/05/06  15:08:45  ram
26 ?RCS: patch23: now includes ordered default libswanted variable (ADO)
27 ?RCS: patch23: major cleanup for library lookups (ADO)
28 ?RCS:
29 ?RCS: Revision 3.0.1.1  1993/08/25  14:02:31  ram
30 ?RCS: patch6: added default for libs
31 ?RCS:
32 ?RCS: Revision 3.0  1993/08/18  12:09:03  ram
33 ?RCS: Baseline for dist 3.0 netwide release.
34 ?RCS:
35 ?MAKE:libs ignore_versioned_solibs libsfound libsfiles libsdirs libspath: \
36         test cat Myread Oldconfig Loc libpth package xlibpth so _a \
37         usesocks sed uselongdouble usequadmath
38 ?MAKE:  -pick add $@ %<
39 ?S:libs:
40 ?S:     This variable holds the additional libraries we want to use.
41 ?S:     It is up to the Makefile to deal with it.  The list can be empty.
42 ?S:.
43 ?S:libsfound:
44 ?S:     This variable holds the full pathnames of the libraries
45 ?S:     we found and accepted.
46 ?S:.
47 ?S:libsfiles:
48 ?S:     This variable holds the filenames aka basenames of the libraries
49 ?S:     we found and accepted.
50 ?S:.
51 ?S:libsdirs:
52 ?S:     This variable holds the directory names aka dirnames of the libraries
53 ?S:     we found and accepted, duplicates are removed.
54 ?S:.
55 ?S:libspath:
56 ?S:     This variable holds the directory names probed for libraries.
57 ?S:.
58 ?S:ignore_versioned_solibs:
59 ?S:     This variable should be non-empty if non-versioned shared
60 ?S:     libraries (libfoo.so.x.y) are to be ignored (because they
61 ?S:     cannot be linked against).
62 ?S:.
63 ?T:xxx yyy thislib thisdir libswanted libstyle
64 ?D:libs=''
65 ?X:
66 ?X: This order is chosen so that libraries  -lndir, -ldir, -lucb, -lbsd,
67 ?X: -lBSD, -lPW, and -lx only get used if there are unresolved
68 ?X: routines at link time.  Usually, these are backwards compatibility
69 ?X: libraries, and may not be as reliable as the standard c library.
70 ?X:
71 ?X: The -lsocket -linet -lnsl order has been reported to be necessary
72 ?X: for at least one SVR4 implementation.
73 ?X: -lc must proceed -lucb or -lbsd for most Solaris applications.
74 ?X: -lc_s proceeds -lc so we pick up the shared library version, if
75 ?X: it is available.
76 ?X:
77 ?X: The ordering of c, posix, and cposix is a guess and almost
78 ?X: certainly wrong on about half of all systems.
79 ?X:
80 ?X: Set proper libswanted in your private Myinit.U if needed.
81 ?X:
82 ?X:: default ordered library list
83 ?X:libswanted='net socket inet bind nsl nm sdbm gdbm ndbm dbm malloc dl'
84 ?X:libswanted="$libswanted dld sun m c_s c posix cposix ndir dir ucb"
85 ?X:libswanted="$libswanted bsd BSD PW x"
86 ?X:
87 ?INIT:: default library list
88 ?INIT:libswanted=''
89 ?INIT:: some systems want to use only the non-versioned libso:s
90 ?INIT:ignore_versioned_solibs=''
91 ?LINT:extern usecbacktrace
92 ?LINT:extern libscheck
93 ?LINT:extern p
94 ?LINT:use uselongdouble
95 : Looking for optional libraries
96 echo " "
97 echo "Checking for optional libraries..." >&4
98 case "$libs" in
99 ' '|'') dflt='';;
100 *) dflt="$libs";;
101 esac
102 case "$libswanted" in
103 '') libswanted='c_s';;
104 esac
105 ?X: libsocks has nasty naming scheme.
106 ?X: This does not work if somebody wants SOCKS 4.
107 case "$usesocks" in
108 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
109 esac
110 case "$usecbacktrace" in
111 "$define") libswanted="$libswanted bfd" ;;
112 esac
113 case "$usequadmath" in
114 "$define") libswanted="$libswanted quadmath" ;;
115 esac
116 libsfound=''
117 libsfiles=''
118 libsdirs=''
119 libspath=''
120 for thisdir in $libpth $xlibpth; do
121   test -d $thisdir && libspath="$libspath $thisdir"
122 done
123 for thislib in $libswanted; do
124         for thisdir in $libspath; do
125             xxx=''
126             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
127                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|sed -n '$p'`
128                 $test -f "$xxx" && eval $libscheck
129                 $test -f "$xxx" && libstyle=shared
130                 xxx=`ls $thisdir/lib$thislib.[0-9].$so 2>/dev/null|sed -n '$p'`
131                 $test -f "$xxx" && eval $libscheck
132                 $test -f "$xxx" && libstyle=shared
133             fi
134             if test ! -f "$xxx"; then
135                 xxx=$thisdir/lib$thislib.$so$_a
136                 $test -f "$xxx" && eval $libscheck
137                 $test -f "$xxx" && libstyle="import"
138             fi
139             if test ! -f "$xxx"; then
140                 xxx=$thisdir/$thislib.$so$_a
141                 $test -f "$xxx" && eval $libscheck
142                 $test -f "$xxx" && libstyle="import"
143             fi
144             if test ! -f "$xxx"; then
145                 xxx=$thisdir/lib$thislib.$so
146                 $test -f "$xxx" && eval $libscheck
147                 $test -f "$xxx" && libstyle=shared
148             fi
149             if test ! -f "$xxx"; then
150                 xxx=$thisdir/lib$thislib$_a
151                 $test -f "$xxx" && eval $libscheck
152                 $test -f "$xxx" && libstyle=static
153             fi
154             if test ! -f "$xxx"; then
155                 xxx=$thisdir/$thislib$_a
156                 $test -f "$xxx" && eval $libscheck
157                 $test -f "$xxx" && libstyle=static
158             fi
159             if test ! -f "$xxx"; then
160                 xxx=$thisdir/lib${thislib}_s$_a
161                 $test -f "$xxx" && eval $libscheck
162                 $test -f "$xxx" && libstyle=static
163                 $test -f "$xxx" && thislib=${thislib}_s
164             fi
165             if test ! -f "$xxx"; then
166                 xxx=$thisdir/Slib$thislib$_a
167                 $test -f "$xxx" && eval $libscheck
168                 $test -f "$xxx" && libstyle=static
169             fi
170             if $test -f "$xxx"; then
171                 case "$libstyle" in
172                 shared) echo "Found -l$thislib (shared)." ;;
173                 static) echo "Found -l$thislib." ;;
174                 *)      echo "Found -l$thislib ($libstyle)." ;;
175                 esac
176                 case " $dflt " in
177                 *"-l$thislib "*);;
178                 *) dflt="$dflt -l$thislib"
179                    libsfound="$libsfound $xxx"
180                    yyy=`basename $xxx`
181                    libsfiles="$libsfiles $yyy"
182                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
183                    case " $libsdirs " in
184                    *" $yyy "*) ;;
185                    *) libsdirs="$libsdirs $yyy" ;;
186                    esac
187                    ;;
188                 esac
189                 break
190             fi
191         done
192         if $test ! -f "$xxx"; then
193             echo "No -l$thislib."
194         fi
195 done
196 set X $dflt
197 shift
198 dflt="$*"
199 case "$libs" in
200 '') dflt="$dflt";;
201 *) dflt="$libs";;
202 esac
203 case "$dflt" in
204 ' '|'') dflt='none';;
205 esac
206
207 $cat <<EOM
208
209 In order to compile $package on your machine, a number of libraries
210 are usually needed.  Include any other special libraries here as well.
211 Say "none" for none.  The default list is almost always right.
212 EOM
213
214 echo " "
215 rp="What libraries to use?"
216 . ./myread
217 case "$ans" in
218 none) libs=' ';;
219 *) libs="$ans";;
220 esac
221