This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Document the d_socket override.
[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@lafcol.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         usemymalloc='n'
71         d_setregid='define'
72         d_setreuid='define'
73         d_setegid='undef'
74         d_seteuid='undef'
75         test -r ./broken-db.msg && . ./broken-db.msg
76         ;;
77 #
78 # 2.2 and above have phkmalloc(3).
79 # don't use -lmalloc (maybe there's an old one from 1.1.5.1 floating around)
80 2.2*)
81         usevfork='true'
82         usemymalloc='n'
83         libswanted=`echo $libswanted | sed 's/ malloc / /'`
84         d_setregid='define'
85         d_setreuid='define'
86         d_setegid='undef'
87         d_seteuid='undef'
88         ;;
89 #
90 # Guesses at what will be needed after 2.2
91 *)      usevfork='true'
92         usemymalloc='n'
93         libswanted=`echo $libswanted | sed 's/ malloc / /'`
94         ;;
95 esac
96
97 # Dynamic Loading flags have not changed much, so they are separated
98 # out here to avoid duplicating them everywhere.
99 case "$osvers" in
100 0.*|1.0*) ;;
101
102 3.0*)   objformat=`/usr/bin/objformat`
103         if [ x$objformat = xelf ]; then
104             libpth="/usr/lib /usr/local/lib"
105             glibpth="/usr/lib /usr/local/lib"
106             ldflags="-Wl,-E "
107             lddlflags="-shared "
108         else
109             if [ -e /usr/lib/aout ]; then
110                 libpth="/usr/lib/aout /usr/local/lib /usr/lib"
111                 glibpth="/usr/lib/aout /usr/local/lib /usr/lib"
112             fi
113             lddlflags='-Bshareable'
114         fi
115         cccdlflags='-DPIC -fpic'
116         ;;
117
118 *)      cccdlflags='-DPIC -fpic'
119         lddlflags="-Bshareable $lddlflags"
120         ;;
121 esac
122
123 cat <<'EOM' >&4
124
125 Some users have reported that Configure halts when testing for
126 the O_NONBLOCK symbol with a syntax error.  This is apparently a
127 sh error.  Rerunning Configure with ksh apparently fixes the
128 problem.  Try
129         ksh Configure [your options]
130
131 EOM
132
133 # XXX EXPERIMENTAL  A.D.  03/09/1998
134 # XXX This script UU/usethreads.cbu will get 'called-back' by Configure
135 # XXX after it has prompted the user for whether to use threads.
136 cat > UU/usethreads.cbu <<'EOSH'
137 case "$usethreads" in
138 $define)
139     case "$osvers" in  
140         3.0*) ldflags="-pthread $ldflags"
141               ;;
142         2.2*) if [ ! -r /usr/lib/libc_r ]; then
143                 cat <<'EOM' >&4
144 POSIX threads are not supported by default on FreeBSD $uname_r.  Follow the
145 instructions in 'man pthread' to build and install the needed libraries.
146 EOM
147                  exit 1
148               fi
149               set `echo X "$libswanted "| sed -e 's/ c / c_r /'`
150               shift
151               libswanted="$*"
152               # Configure will probably pick the wrong libc to use for nm
153               # scan.
154               # The safest quick-fix is just to not use nm at all.
155               usenm=false
156               ;;
157          *)   cat <<'EOM' >&4
158 It is not known if FreeBSD $uname_r supports POSIX threads or not.  Consider
159 upgrading to the latest STABLE release.
160 EOM
161               exit 1
162               ;;
163     esac
164     ;;
165 esac
166 EOSH
167 # XXX EXPERIMENTAL  --end of call-back