xref: /openbsd-src/gnu/usr.bin/perl/hints/netbsd.sh (revision db3296cf5c1dd9058ceecc3a29fe4aaa0bd26000)
1# hints/netbsd.sh
2#
3# Please check with packages@netbsd.org before making modifications
4# to this file.
5
6case "$archname" in
7'')
8    archname=`uname -m`-${osname}
9    ;;
10esac
11
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#
17case "$osvers" in
180.9|0.8*)
19	usedl="$undef"
20	;;
21*)
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
33	if test -f /usr/libexec/ld.elf_so; then
34		# ELF
35		d_dlopen=$define
36		d_dlerror=$define
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		#
46		# XXX This should be obsoleted by gcc-3.0.
47		#
48		ccdlflags="-Wl,-whole-archive -lgcc -Wl,-no-whole-archive \
49			-Wl,-E $ccdlflags"
50	elif test -f /usr/libexec/ld.so; then
51		# a.out
52		d_dlopen=$define
53		d_dlerror=$define
54		cccdlflags="-DPIC -fPIC $cccdlflags"
55		lddlflags="-Bshareable $lddlflags"
56		rpathflag="-R"
57	else
58		d_dlopen=$undef
59		rpathflag=
60	fi
61	;;
62esac
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.
69# netbsd fixed this in 1.3.2.
70case "$osvers" in
710.9*|1.[012]*|1.3|1.3.1)
72	d_setregid="$undef"
73	d_setreuid="$undef"
74	;;
75esac
76
77# These are obsolete in any netbsd.
78d_setrgid="$undef"
79d_setruid="$undef"
80
81# there's no problem with vfork.
82usevfork=true
83
84# This is there but in machine/ieeefp_h.
85ieeefp_h="define"
86
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]*)
92	lpthread=
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
98				break;
99			fi
100			zzz=$yyy/lib$xxx.so
101			if test -f "$zzz"; then
102				lpthread=$xxx
103				break;
104			fi
105			zzz=`ls $yyy/lib$xxx.so.* 2>/dev/null`
106			if test "X$zzz" != X; then
107				lpthread=$xxx
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.
121        else
122		echo "$0: No POSIX threads library (-lpthread) found.  " \
123		     "You may want to install GNU pth.  Aborting." >&4
124		exit 1
125        fi
126	unset lpthread
127        ;;
128esac
129EOCBU
130
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
147