PerlIO_read() can return negative.
[p5sagit/p5-mst-13.2.git] / hints / freebsd.sh
CommitLineData
5d94fbed 1# Original based on info from
a0d0e21e 2# Carl M. Fongheiser <cmf@ins.infonet.net>
3# Date: Thu, 28 Jul 1994 19:17:05 -0500 (CDT)
4#
5# Additional 1.1.5 defines from
6# Ollivier Robert <Ollivier.Robert@keltia.frmug.fr.net>
7# Date: Wed, 28 Sep 1994 00:37:46 +0100 (MET)
8#
5d94fbed 9# Additional 2.* defines from
10# Ollivier Robert <Ollivier.Robert@keltia.frmug.fr.net>
11# Date: Sat, 8 Apr 1995 20:53:41 +0200 (MET DST)
12#
16d20bd9 13# Additional 2.0.5 and 2.1 defined from
14# Ollivier Robert <Ollivier.Robert@keltia.frmug.fr.net>
15# Date: Fri, 12 May 1995 14:30:38 +0200 (MET DST)
16#
55497cff 17# Additional 2.2 defines from
18# Mark Murray <mark@grondar.za>
19# Date: Wed, 6 Nov 1996 09:44:58 +0200 (MET)
e5c9fcd0 20#
21# Modified to ensure we replace -lc with -lc_r, and
22# to put in place-holders for various specific hints.
1973dd96 23# Andy Dougherty <doughera@lafayette.edu>
e5c9fcd0 24# Date: Tue Mar 10 16:07:00 EST 1998
25#
5ff3f7a4 26# Support for FreeBSD/ELF
27# Ollivier Robert <roberto@keltia.freenix.fr>
28# Date: Wed Sep 2 16:22:12 CEST 1998
29#
5d94fbed 30# The two flags "-fpic -DPIC" are used to indicate a
31# will-be-shared object. Configure will guess the -fpic, (and the
32# -DPIC is not used by perl proper) but the full define is included to
33# be consistent with the FreeBSD general shared libs building process.
34#
16d20bd9 35# setreuid and friends are inherently broken in all versions of FreeBSD
36# before 2.1-current (before approx date 4/15/95). It is fixed in 2.0.5
37# and what-will-be-2.1
5d94fbed 38#
39
a0d0e21e 40case "$osvers" in
410.*|1.0*)
42 usedl="$undef"
43 ;;
e50aee73 441.1*)
a0d0e21e 45 malloctype='void *'
46 groupstype='int'
47 d_setregid='undef'
48 d_setreuid='undef'
49 d_setrgid='undef'
50 d_setruid='undef'
5d94fbed 51 ;;
e50aee73 522.0-release*)
5d94fbed 53 d_setregid='undef'
54 d_setreuid='undef'
55 d_setrgid='undef'
56 d_setruid='undef'
a0d0e21e 57 ;;
16d20bd9 58#
55497cff 59# Trying to cover 2.0.5, 2.1-current and future 2.1/2.2
16d20bd9 60# It does not covert all 2.1-current versions as the output of uname
61# changed a few times.
62#
55497cff 63# Even though seteuid/setegid are available, they've been turned off
64# because perl isn't coded with saved set[ug]id variables in mind.
65# In addition, a small patch is requried to suidperl to avoid a security
66# problem with FreeBSD.
67#
e50aee73 682.0.5*|2.0-built*|2.1*)
69 usevfork='true'
76969289 70 case "$usemymalloc" in
71 "") usemymalloc='n'
72 ;;
73 esac
55497cff 74 d_setregid='define'
75 d_setreuid='define'
76 d_setegid='undef'
77 d_seteuid='undef'
28757baa 78 test -r ./broken-db.msg && . ./broken-db.msg
55497cff 79 ;;
80#
81# 2.2 and above have phkmalloc(3).
1fd066cb 82# don't use -lmalloc (maybe there's an old one from 1.1.5.1 floating around)
55497cff 832.2*)
84 usevfork='true'
76969289 85 case "$usemymalloc" in
86 "") usemymalloc='n'
87 ;;
88 esac
1fd066cb 89 libswanted=`echo $libswanted | sed 's/ malloc / /'`
55497cff 90 d_setregid='define'
91 d_setreuid='define'
92 d_setegid='undef'
93 d_seteuid='undef'
e50aee73 94 ;;
c23d2014 954.*) # In FreeBSD 4 and 5 the system malloc is performance-wise
96 # VERY bad for Perl-- we are talking of differences of not
97 # one, but TWO magnitudes.
7ca4b19a 98 case "$usemymalloc" in
99 "") usemymalloc='y'
100 ;;
101 esac
c23d2014 102 ;;
7ca4b19a 1035.*) case "$usemymalloc" in
104 "") usemymalloc='y'
105 ;;
106 esac
c23d2014 107 ;;
e50aee73 108*) usevfork='true'
76969289 109 case "$usemymalloc" in
c23d2014 110 "") usemymalloc='y'
111 ;;
76969289 112 esac
1fd066cb 113 libswanted=`echo $libswanted | sed 's/ malloc / /'`
e50aee73 114 ;;
115esac
116
117# Dynamic Loading flags have not changed much, so they are separated
118# out here to avoid duplicating them everywhere.
119case "$osvers" in
1200.*|1.0*) ;;
9424984c 121
8c99d73e 1221*|2*) cccdlflags='-DPIC -fpic'
123 lddlflags="-Bshareable $lddlflags"
124 ;;
125
126*)
a10dc3f4 127 objformat=`/usr/bin/objformat`
5ff3f7a4 128 if [ x$objformat = xelf ]; then
129 libpth="/usr/lib /usr/local/lib"
130 glibpth="/usr/lib /usr/local/lib"
131 ldflags="-Wl,-E "
132 lddlflags="-shared "
133 else
134 if [ -e /usr/lib/aout ]; then
8c99d73e 135 libpth="/usr/lib/aout /usr/local/lib /usr/lib"
136 glibpth="/usr/lib/aout /usr/local/lib /usr/lib"
137 fi
138 lddlflags='-Bshareable'
9424984c 139 fi
140 cccdlflags='-DPIC -fpic'
9424984c 141 ;;
a0d0e21e 142esac
e50aee73 143
71a1865d 144case "$osvers" in
8c99d73e 1450*|1*|2*|3*) ;;
146
147*)
c77b533b 148 ccflags="${ccflags} -DHAS_FPSETMASK -DHAS_FLOATINGPOINT_H"
8c99d73e 149 if /usr/bin/file -L /usr/lib/libc.so | /usr/bin/grep -vq "not stripped" ; then
71a1865d 150 usenm=false
151 fi
8c99d73e 152 ;;
71a1865d 153esac
154
68dc0745 155cat <<'EOM' >&4
4633a7c4 156
157Some users have reported that Configure halts when testing for
158the O_NONBLOCK symbol with a syntax error. This is apparently a
159sh error. Rerunning Configure with ksh apparently fixes the
160problem. Try
161 ksh Configure [your options]
162
163EOM
164
08d3cfaf 165# From: Anton Berezin <tobez@plab.ku.dk>
166# To: perl5-porters@perl.org
167# Subject: [PATCH 5.005_54] Configure - hints/freebsd.sh signal handler type
168# Date: 30 Nov 1998 19:46:24 +0100
169# Message-ID: <864srhhvcv.fsf@lion.plab.ku.dk>
170
171signal_t='void'
172d_voidsig='define'
173
73d40b3e 174# set libperl.so.X.X for 2.2.X
175case "$osvers" in
1762.2*)
177 # unfortunately this code gets executed before
178 # the equivalent in the main Configure so we copy a little
179 # from Configure XXX Configure should be fixed.
180 if $test -r $src/patchlevel.h;then
cceca5ed 181 patchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $src/patchlevel.h`
182 subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $src/patchlevel.h`
73d40b3e 183 else
184 patchlevel=0
185 subversion=0
186 fi
187 libperl="libperl.so.$patchlevel.$subversion"
188 unset patchlevel
189 unset subversion
190 ;;
191esac
192
104d25b7 193# This script UU/usethreads.cbu will get 'called-back' by Configure
194# after it has prompted the user for whether to use threads.
195cat > UU/usethreads.cbu <<'EOCBU'
196case "$usethreads" in
197$define|true|[yY]*)
eade9b71 198 lc_r=`/sbin/ldconfig -r|grep ':-lc_r'|awk '{print $NF}'|sed -n '$p'`
104d25b7 199 case "$osvers" in
8c99d73e 200 0*|1*|2.0*|2.1*) cat <<EOM >&4
201I did not know that FreeBSD $osvers supports POSIX threads.
73d40b3e 202
7f2de2d2 203Feel free to tell perlbug@perl.org otherwise.
73d40b3e 204EOM
8c99d73e 205 exit 1
73d40b3e 206 ;;
8c99d73e 207
208 2.2.[0-7]*)
73d40b3e 209 cat <<EOM >&4
210POSIX threads are not supported well by FreeBSD $osvers.
211
212Please consider upgrading to at least FreeBSD 2.2.8,
8aeacb11 213or preferably to the most recent -RELEASE or -STABLE
214version (see http://www.freebsd.org/releases/).
73d40b3e 215
216(While 2.2.7 does have pthreads, it has some problems
217 with the combination of threads and pipes and therefore
218 many Perl tests will either hang or fail.)
104d25b7 219EOM
73d40b3e 220 exit 1
221 ;;
104d25b7 222
8c99d73e 223 *)
224 if [ ! -r "$lc_r" ]; then
225 cat <<EOM >&4
226POSIX threads should be supported by FreeBSD $osvers --
227but your system is missing the shared libc_r.
228(/sbin/ldconfig -r doesn't find any).
229
230Consider using the latest STABLE release.
104d25b7 231EOM
8c99d73e 232 exit 1
233 fi
234 ldflags="-pthread $ldflags"
624b29b4 235 case "$osvers" in
f412e1d6 236 4.*|5.0-release*)
237 # 4.x and 5.0-release have gethostbyaddr_r but it is
624b29b4 238 # "Temporary function, not threadsafe"...
239 d_gethostbyaddr_r="undef"
f412e1d6 240 d_gethostbyaddr_r_proto="0"
624b29b4 241 ;;
242 esac
73d40b3e 243 ;;
8c99d73e 244
73d40b3e 245 esac
246
247 set `echo X "$libswanted "| sed -e 's/ c / c_r /'`
248 shift
249 libswanted="$*"
250 # Configure will probably pick the wrong libc to use for nm scan.
251 # The safest quick-fix is just to not use nm at all...
252 usenm=false
253
254 case "$osvers" in
255 2.2.8*)
256 # ... but this does not apply for 2.2.8 - we know it's safe
257 libc="$lc_r"
258 usenm=true
259 ;;
104d25b7 260 esac
73d40b3e 261
262 unset lc_r
d7eee707 263
264 # Even with the malloc mutexes the Perl malloc does not
265 # seem to be threadsafe in FreeBSD?
c23d2014 266 usemymalloc=y
d7eee707 267
104d25b7 268esac
269EOCBU
5628bcce 270