This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Fix pod/perlmodlib.PL (it wasn't generating a complete list
[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,"
40 #
41 # Include the whole libgcc.a into the perl executable so
42 # that certain symbols needed by loadable modules built as
43 # C++ objects (__eh_alloc, __pure_virtual, etc.) will always
44 # be defined.
45 #
900cf02d 46 # XXX This should be obsoleted by gcc-3.0.
068ac78d 47 #
900cf02d 48 ccdlflags="-Wl,-whole-archive -lgcc -Wl,-no-whole-archive \
30afd0dc 49 -Wl,-E $ccdlflags"
6195bde2 50 elif test -f /usr/libexec/ld.so; then
068ac78d 51 # a.out
c9ef717e
MG
52 d_dlopen=$define
53 d_dlerror=$define
c9ef717e 54 cccdlflags="-DPIC -fPIC $cccdlflags"
9f060c84 55 lddlflags="-Bshareable $lddlflags"
068ac78d 56 rpathflag="-R"
099685bc
JH
57 else
58 d_dlopen=$undef
068ac78d 59 rpathflag=
099685bc 60 fi
491527d0
GS
61 ;;
62esac
c9ef717e
MG
63
64# netbsd had these but they don't really work as advertised, in the
65# versions listed below. if they are defined, then there isn't a
66# way to make perl call setuid() or setgid(). if they aren't, then
67# ($<, $>) = ($u, $u); will work (same for $(/$)). this is because
68# you can not change the real userid of a process under 4.4BSD.
099685bc 69# netbsd fixed this in 1.3.2.
229e211d 70case "$osvers" in
099685bc 710.9*|1.[012]*|1.3|1.3.1)
4633a7c4
LW
72 d_setregid="$undef"
73 d_setreuid="$undef"
a0d0e21e
LW
74 ;;
75esac
c4f23d77 76
434e0566
JH
77# These are obsolete in any netbsd.
78d_setrgid="$undef"
79d_setruid="$undef"
80
099685bc 81# there's no problem with vfork.
900cf02d
JH
82usevfork=true
83
9a368ae6
JH
84# This is there but in machine/ieeefp_h.
85ieeefp_h="define"
86
7b938c21
JH
87# This script UU/usethreads.cbu will get 'called-back' by Configure
88# after it has prompted the user for whether to use threads.
89cat > UU/usethreads.cbu <<'EOCBU'
90case "$usethreads" in
91$define|true|[yY]*)
6195bde2 92 lpthread=
068ac78d
JH
93 for xxx in pthread; do
94 for yyy in $loclibpth $plibpth $glibpth dummy; do
95 zzz=$yyy/lib$xxx.a
96 if test -f "$zzz"; then
97 lpthread=$xxx
6195bde2
JH
98 break;
99 fi
068ac78d
JH
100 zzz=$yyy/lib$xxx.so
101 if test -f "$zzz"; then
102 lpthread=$xxx
6195bde2
JH
103 break;
104 fi
068ac78d
JH
105 zzz=`ls $yyy/lib$xxx.so.* 2>/dev/null`
106 if test "X$zzz" != X; then
107 lpthread=$xxx
6195bde2
JH
108 break;
109 fi
110 done
111 if test "X$lpthread" != X; then
112 break;
113 fi
114 done
115 if test "X$lpthread" != X; then
116 # Add -lpthread.
117 libswanted="$libswanted $lpthread"
118 # There is no libc_r as of NetBSD 1.5.2, so no c -> c_r.
119 # This will be revisited when NetBSD gains a native pthreads
120 # implementation.
7b938c21 121 else
6195bde2
JH
122 echo "$0: No POSIX threads library (-lpthread) found. " \
123 "You may want to install GNU pth. Aborting." >&4
124 exit 1
125 fi
6195bde2 126 unset lpthread
7b938c21
JH
127 ;;
128esac
0b196741 129EOCBU
7b938c21 130
068ac78d
JH
131# Set sensible defaults for NetBSD: look for local software in
132# /usr/pkg (NetBSD Packages Collection) and in /usr/local.
133#
134loclibpth="/usr/pkg/lib /usr/local/lib"
135locincpth="/usr/pkg/include /usr/local/include"
136case "$rpathflag" in
137'')
138 ldflags=
139 ;;
140*)
141 ldflags=
142 for yyy in $loclibpth; do
143 ldflags="$ldflags $rpathflag$yyy"
144 done
145 ;;
146esac