This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Integrate:
[perl5.git] / hints / freebsd.sh
1 # Original based on info from
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 #
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 #
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 #
17 # Additional 2.2 defines from
18 # Mark Murray <mark@grondar.za>
19 # Date: Wed, 6 Nov 1996 09:44:58 +0200 (MET)
20 #
21 # Modified to ensure we replace -lc with -lc_r, and
22 # to put in place-holders for various specific hints.
23 # Andy Dougherty <doughera@lafayette.edu>
24 # Date: Tue Mar 10 16:07:00 EST 1998
25 #
26 # Support for FreeBSD/ELF
27 # Ollivier Robert <roberto@keltia.freenix.fr>
28 # Date: Wed Sep  2 16:22:12 CEST 1998
29 #
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 #
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
38 #
39
40 case "$osvers" in
41 0.*|1.0*)
42         usedl="$undef"
43         ;;
44 1.1*)
45         malloctype='void *'
46         groupstype='int'
47         d_setregid='undef'
48         d_setreuid='undef'
49         d_setrgid='undef'
50         d_setruid='undef'
51         ;;
52 2.0-release*)
53         d_setregid='undef'
54         d_setreuid='undef'
55         d_setrgid='undef'
56         d_setruid='undef'
57         ;;
58 #
59 # Trying to cover 2.0.5, 2.1-current and future 2.1/2.2
60 # It does not covert all 2.1-current versions as the output of uname
61 # changed a few times.
62 #
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 #
68 2.0.5*|2.0-built*|2.1*)
69         usevfork='true'
70         case "$usemymalloc" in
71             "") usemymalloc='n'
72                 ;;
73         esac
74         d_setregid='define'
75         d_setreuid='define'
76         d_setegid='undef'
77         d_seteuid='undef'
78         test -r ./broken-db.msg && . ./broken-db.msg
79         ;;
80 #
81 # 2.2 and above have phkmalloc(3).
82 # don't use -lmalloc (maybe there's an old one from 1.1.5.1 floating around)
83 2.2*)
84         usevfork='true'
85         case "$usemymalloc" in
86             "") usemymalloc='n'
87                 ;;
88         esac
89         libswanted=`echo $libswanted | sed 's/ malloc / /'`
90         d_setregid='define'
91         d_setreuid='define'
92         d_setegid='undef'
93         d_seteuid='undef'
94         ;;
95 4.*)    # 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.
98         usemymalloc=y
99         ;;
100 5.*)    usemymalloc=y
101         ;;
102 *)      usevfork='true'
103         case "$usemymalloc" in
104         "") usemymalloc='y'
105             ;;
106         esac
107         libswanted=`echo $libswanted | sed 's/ malloc / /'`
108         ;;
109 esac
110
111 # Dynamic Loading flags have not changed much, so they are separated
112 # out here to avoid duplicating them everywhere.
113 case "$osvers" in
114 0.*|1.0*) ;;
115
116 1*|2*)  cccdlflags='-DPIC -fpic'
117         lddlflags="-Bshareable $lddlflags"
118         ;;
119
120 *)
121         objformat=`/usr/bin/objformat`
122         if [ x$objformat = xelf ]; then
123             libpth="/usr/lib /usr/local/lib"
124             glibpth="/usr/lib /usr/local/lib"
125             ldflags="-Wl,-E "
126             lddlflags="-shared "
127         else
128             if [ -e /usr/lib/aout ]; then
129                 libpth="/usr/lib/aout /usr/local/lib /usr/lib"
130                 glibpth="/usr/lib/aout /usr/local/lib /usr/lib"
131             fi
132             lddlflags='-Bshareable'
133         fi
134         cccdlflags='-DPIC -fpic'
135         ;;
136 esac
137
138 case "$osvers" in
139 0*|1*|2*|3*) ;;
140
141 *)
142         ccflags="${ccflags} -DHAS_FPSETMASK -DHAS_FLOATINGPOINT_H"
143         if /usr/bin/file -L /usr/lib/libc.so | /usr/bin/grep -vq "not stripped" ; then
144             usenm=false
145         fi
146         ;;
147 esac
148
149 cat <<'EOM' >&4
150
151 Some users have reported that Configure halts when testing for
152 the O_NONBLOCK symbol with a syntax error.  This is apparently a
153 sh error.  Rerunning Configure with ksh apparently fixes the
154 problem.  Try
155         ksh Configure [your options]
156
157 EOM
158
159 # From: Anton Berezin <tobez@plab.ku.dk>
160 # To: perl5-porters@perl.org
161 # Subject: [PATCH 5.005_54] Configure - hints/freebsd.sh signal handler type
162 # Date: 30 Nov 1998 19:46:24 +0100
163 # Message-ID: <864srhhvcv.fsf@lion.plab.ku.dk>
164
165 signal_t='void'
166 d_voidsig='define'
167
168 # set libperl.so.X.X for 2.2.X
169 case "$osvers" in
170 2.2*)
171     # unfortunately this code gets executed before
172     # the equivalent in the main Configure so we copy a little
173     # from Configure XXX Configure should be fixed.
174     if $test -r $src/patchlevel.h;then
175        patchlevel=`awk '/define[        ]+PERL_VERSION/ {print $3}' $src/patchlevel.h`
176        subversion=`awk '/define[        ]+PERL_SUBVERSION/ {print $3}' $src/patchlevel.h`
177     else
178        patchlevel=0
179        subversion=0
180     fi
181     libperl="libperl.so.$patchlevel.$subversion"
182     unset patchlevel
183     unset subversion
184     ;;
185 esac
186
187 # This script UU/usethreads.cbu will get 'called-back' by Configure 
188 # after it has prompted the user for whether to use threads.
189 cat > UU/usethreads.cbu <<'EOCBU'
190 case "$usethreads" in
191 $define|true|[yY]*)
192         lc_r=`/sbin/ldconfig -r|grep ':-lc_r'|awk '{print $NF}'|sed -n '$p'`
193         case "$osvers" in  
194         0*|1*|2.0*|2.1*)   cat <<EOM >&4
195 I did not know that FreeBSD $osvers supports POSIX threads.
196
197 Feel free to tell perlbug@perl.org otherwise.
198 EOM
199               exit 1
200               ;;
201
202         2.2.[0-7]*)
203               cat <<EOM >&4
204 POSIX threads are not supported well by FreeBSD $osvers.
205
206 Please consider upgrading to at least FreeBSD 2.2.8,
207 or preferably to the most recent -RELEASE or -STABLE
208 version (see http://www.freebsd.org/releases/).
209
210 (While 2.2.7 does have pthreads, it has some problems
211  with the combination of threads and pipes and therefore
212  many Perl tests will either hang or fail.)
213 EOM
214               exit 1
215               ;;
216
217         *)
218               if [ ! -r "$lc_r" ]; then
219               cat <<EOM >&4
220 POSIX threads should be supported by FreeBSD $osvers --
221 but your system is missing the shared libc_r.
222 (/sbin/ldconfig -r doesn't find any).
223
224 Consider using the latest STABLE release.
225 EOM
226                  exit 1
227               fi
228               ldflags="-pthread $ldflags"
229               case "$osvers" in
230               4.*|5.0-release*) 
231                         # 4.x and 5.0-release have gethostbyaddr_r but it is
232                         # "Temporary function, not threadsafe"...
233                         d_gethostbyaddr_r="undef"
234                         d_gethostbyaddr_r_proto="0"
235                         ;;
236               esac
237               ;;
238
239         esac
240
241         set `echo X "$libswanted "| sed -e 's/ c / c_r /'`
242         shift
243         libswanted="$*"
244         # Configure will probably pick the wrong libc to use for nm scan.
245         # The safest quick-fix is just to not use nm at all...
246         usenm=false
247
248         case "$osvers" in
249         2.2.8*)
250             # ... but this does not apply for 2.2.8 - we know it's safe
251             libc="$lc_r"
252             usenm=true
253            ;;
254         esac
255
256         unset lc_r
257
258         # Even with the malloc mutexes the Perl malloc does not
259         # seem to be threadsafe in FreeBSD?
260         usemymalloc=y
261
262 esac
263 EOCBU
264