This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
If perl's minimal required version number is >= 5.6.0,
[perl5.git] / hints / netbsd.sh
CommitLineData
a0d0e21e 1# hints/netbsd.sh
4633a7c4 2#
068ac78d
JH
3# Please check with packages@netbsd.org before making modifications
4# to this file.
c9ef717e
MG
5
6case "$archname" in
7'')
8 archname=`uname -m`-${osname}
9 ;;
10esac
11
068ac78d
JH
12# NetBSD keeps dynamic loading dl*() functions in /usr/lib/crt0.o,
13# so Configure doesn't find them (unless you abandon the nm scan).
14# Also, NetBSD 0.9a was the first release to introduce shared
15# libraries.
16#
a0d0e21e 17case "$osvers" in
4633a7c4 180.9|0.8*)
a0d0e21e
LW
19 usedl="$undef"
20 ;;
c9ef717e 21*)
068ac78d
JH
22 case `uname -m` in
23 pmax)
24 # NetBSD 1.3 and 1.3.1 on pmax shipped an `old' ld.so,
25 # which will not work.
26 case "$osvers" in
27 1.3|1.3.1)
28 d_dlopen=$undef
29 ;;
30 esac
31 ;;
32 esac
6195bde2 33 if test -f /usr/libexec/ld.elf_so; then
068ac78d 34 # ELF
099685bc
JH
35 d_dlopen=$define
36 d_dlerror=$define
068ac78d
JH
37 cccdlflags="-DPIC -fPIC $cccdlflags"
38 lddlflags="--whole-archive -shared $lddlflags"
39 rpathflag="-Wl,-rpath,"
e36eebf2
JH
40 case "$osvers" in
41 1.[0-5]*)
42 #
43 # Include the whole libgcc.a into the perl executable
44 # so that certain symbols needed by loadable modules
45 # built as C++ objects (__eh_alloc, __pure_virtual,
46 # etc.) will always be defined.
47 #
48 ccdlflags="-Wl,-whole-archive -lgcc \
49 -Wl,-no-whole-archive -Wl,-E $ccdlflags"
50 ;;
51 *)
52 ccdlflags="-Wl,-E $ccdlflags"
53 ;;
54 esac
6195bde2 55 elif test -f /usr/libexec/ld.so; then
068ac78d 56 # a.out
c9ef717e
MG
57 d_dlopen=$define
58 d_dlerror=$define
c9ef717e 59 cccdlflags="-DPIC -fPIC $cccdlflags"
9f060c84 60 lddlflags="-Bshareable $lddlflags"
068ac78d 61 rpathflag="-R"
099685bc
JH
62 else
63 d_dlopen=$undef
068ac78d 64 rpathflag=
099685bc 65 fi
491527d0
GS
66 ;;
67esac
c9ef717e
MG
68
69# netbsd had these but they don't really work as advertised, in the
70# versions listed below. if they are defined, then there isn't a
71# way to make perl call setuid() or setgid(). if they aren't, then
72# ($<, $>) = ($u, $u); will work (same for $(/$)). this is because
73# you can not change the real userid of a process under 4.4BSD.
099685bc 74# netbsd fixed this in 1.3.2.
229e211d 75case "$osvers" in
099685bc 760.9*|1.[012]*|1.3|1.3.1)
4633a7c4
LW
77 d_setregid="$undef"
78 d_setreuid="$undef"
a0d0e21e
LW
79 ;;
80esac
c4f23d77 81
434e0566
JH
82# These are obsolete in any netbsd.
83d_setrgid="$undef"
84d_setruid="$undef"
85
099685bc 86# there's no problem with vfork.
900cf02d
JH
87usevfork=true
88
9a368ae6
JH
89# This is there but in machine/ieeefp_h.
90ieeefp_h="define"
91
7b938c21
JH
92# This script UU/usethreads.cbu will get 'called-back' by Configure
93# after it has prompted the user for whether to use threads.
94cat > UU/usethreads.cbu <<'EOCBU'
95case "$usethreads" in
96$define|true|[yY]*)
6195bde2 97 lpthread=
068ac78d
JH
98 for xxx in pthread; do
99 for yyy in $loclibpth $plibpth $glibpth dummy; do
100 zzz=$yyy/lib$xxx.a
101 if test -f "$zzz"; then
102 lpthread=$xxx
6195bde2
JH
103 break;
104 fi
068ac78d
JH
105 zzz=$yyy/lib$xxx.so
106 if test -f "$zzz"; then
107 lpthread=$xxx
6195bde2
JH
108 break;
109 fi
068ac78d
JH
110 zzz=`ls $yyy/lib$xxx.so.* 2>/dev/null`
111 if test "X$zzz" != X; then
112 lpthread=$xxx
6195bde2
JH
113 break;
114 fi
115 done
116 if test "X$lpthread" != X; then
117 break;
118 fi
119 done
120 if test "X$lpthread" != X; then
121 # Add -lpthread.
122 libswanted="$libswanted $lpthread"
123 # There is no libc_r as of NetBSD 1.5.2, so no c -> c_r.
124 # This will be revisited when NetBSD gains a native pthreads
125 # implementation.
7b938c21 126 else
6195bde2
JH
127 echo "$0: No POSIX threads library (-lpthread) found. " \
128 "You may want to install GNU pth. Aborting." >&4
129 exit 1
130 fi
6195bde2 131 unset lpthread
5d0b7876
SP
132
133 # several reentrant functions are embeded in libc, but haven't
134 # been added to the header files yet. Let's hold off on using
135 # them until they are a valid part of the API
136 case "$osvers" in
d99b3353 137 [012].*|3.[0-1])
5d0b7876
SP
138 d_getprotobyname_r=$undef
139 d_getprotobynumber_r=$undef
140 d_getprotoent_r=$undef
141 d_getservbyname_r=$undef
142 d_getservbyport_r=$undef
143 d_getservent_r=$undef
144 d_setprotoent_r=$undef
145 d_setservent_r=$undef
146 d_endprotoent_r=$undef
147 d_endservent_r=$undef ;;
148 esac
149 ;;
150
7b938c21 151esac
0b196741 152EOCBU
7b938c21 153
068ac78d
JH
154# Set sensible defaults for NetBSD: look for local software in
155# /usr/pkg (NetBSD Packages Collection) and in /usr/local.
156#
157loclibpth="/usr/pkg/lib /usr/local/lib"
158locincpth="/usr/pkg/include /usr/local/include"
159case "$rpathflag" in
160'')
161 ldflags=
162 ;;
163*)
164 ldflags=
165 for yyy in $loclibpth; do
166 ldflags="$ldflags $rpathflag$yyy"
167 done
168 ;;
169esac
f42e9f90
JH
170
171case `uname -m` in
172alpha)
173 echo 'int main() {}' > try.c
174 gcc=`${cc:-cc} -v -c try.c 2>&1|grep 'gcc version egcs-2'`
175 case "$gcc" in
176 '' | "gcc version egcs-2.95."[3-9]*) ;; # 2.95.3 or better okay
177 *) cat >&4 <<EOF
178***
179*** Your gcc ($gcc) is known to be
180*** too buggy on netbsd/alpha to compile Perl with optimization.
181*** It is suggested you install the lang/gcc package which should
182*** have at least gcc 2.95.3 which should work okay: use for example
183*** Configure -Dcc=/usr/pkg/gcc-2.95.3/bin/cc. You could also
184*** Configure -Doptimize=-O0 to compile Perl without any optimization
185*** but that is not recommended.
186***
187EOF
188 exit 1
189 ;;
190 esac
191 rm -f try.*
192 ;;
193esac
194
3332bd48
JH
195# NetBSD/sparc 1.5.3/1.6.1 dumps core in the semid_ds test of Configure.
196case `uname -m` in
197sparc) d_semctl_semid_ds=undef ;;
198esac
199