3 # Please check with packages@netbsd.org before making modifications
8 archname=`uname -m`-${osname}
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
24 # NetBSD 1.3 and 1.3.1 on pmax shipped an `old' ld.so,
25 # which will not work.
33 if test -f /usr/libexec/ld.elf_so; then
37 cccdlflags="-DPIC -fPIC $cccdlflags"
38 lddlflags="-shared $lddlflags"
39 cat >UU/cc.cbu <<'EOCBU'
40 # gcc 4.6 doesn't support --whole-archive, but it's required for the
41 # system gcc to build correctly, so check for it
42 echo 'int f(void) { return 0; }' >try.c
43 if ${cc:-cc} $cccdlflags -c try.c -otry.o 2>&1 &&
44 ${cc:-cc} --whole-archive $lddlflags try.o -otry.so 2>&1 ; then
45 lddlflags="--whole-archive $lddlflags"
47 rm try.c try.o try.so 2>/dev/null
49 rpathflag="-Wl,-rpath,"
53 # Include the whole libgcc.a into the perl executable
54 # so that certain symbols needed by loadable modules
55 # built as C++ objects (__eh_alloc, __pure_virtual,
56 # etc.) will always be defined.
58 ccdlflags="-Wl,-whole-archive -lgcc \
59 -Wl,-no-whole-archive -Wl,-E $ccdlflags"
62 ccdlflags="-Wl,-E $ccdlflags"
65 elif test -f /usr/libexec/ld.so; then
69 cccdlflags="-DPIC -fPIC $cccdlflags"
70 lddlflags="-Bshareable $lddlflags"
79 # netbsd had these but they don't really work as advertised, in the
80 # versions listed below. if they are defined, then there isn't a
81 # way to make perl call setuid() or setgid(). if they aren't, then
82 # ($<, $>) = ($u, $u); will work (same for $(/$)). this is because
83 # you can not change the real userid of a process under 4.4BSD.
84 # netbsd fixed this in 1.3.2.
86 0.9*|1.[012]*|1.3|1.3.1)
95 d_getprotoent_r="$undef"
96 d_getprotobyname_r="$undef"
97 d_getprotobynumber_r="$undef"
98 d_setprotoent_r="$undef"
99 d_endprotoent_r="$undef"
100 d_getservent_r="$undef"
101 d_getservbyname_r="$undef"
102 d_getservbyport_r="$undef"
103 d_setservent_r="$undef"
104 d_endservent_r="$undef"
105 d_gethostbyname_r="$undef"
106 d_gethostbyaddr2_r="$undef"
107 d_gethostbyaddr_r="$undef"
108 d_sethostent_r="$undef"
109 d_gethostent_r="$undef"
110 d_endhostent_r="$undef"
111 d_getprotoent_r_proto="0"
112 d_getprotobyname_r_proto="0"
113 d_getprotobynumber_r_proto="0"
114 d_setprotoent_r_proto="0"
115 d_endprotoent_r_proto="0"
116 d_getservent_r_proto="0"
117 d_getservbyname_r_proto="0"
118 d_getservbyport_r_proto="0"
119 d_setservent_r_proto="0"
120 d_endservent_r_proto="0"
121 d_gethostbyname_r_proto="0"
122 d_gethostbyaddr2_r_proto="0"
123 d_gethostbyaddr_r_proto="0"
124 d_sethostent_r_proto="0"
125 d_endhostent_r_proto="0"
126 d_gethostent_r_proto="0"
130 # These are obsolete in any netbsd.
134 # there's no problem with vfork.
137 # This is there but in machine/ieeefp_h.
140 # This script UU/usethreads.cbu will get 'called-back' by Configure
141 # after it has prompted the user for whether to use threads.
142 cat > UU/usethreads.cbu <<'EOCBU'
143 case "$usethreads" in
146 for xxx in pthread; do
147 for yyy in $loclibpth $plibpth $glibpth dummy; do
149 if test -f "$zzz"; then
154 if test -f "$zzz"; then
158 zzz=`ls $yyy/lib$xxx.so.* 2>/dev/null`
159 if test "X$zzz" != X; then
164 if test "X$lpthread" != X; then
168 if test "X$lpthread" != X; then
170 libswanted="$libswanted $lpthread"
171 # There is no libc_r as of NetBSD 1.5.2, so no c -> c_r.
172 # This will be revisited when NetBSD gains a native pthreads
175 echo "$0: No POSIX threads library (-lpthread) found. " \
176 "You may want to install GNU pth. Aborting." >&4
181 # several reentrant functions are embedded in libc, but haven't
182 # been added to the header files yet. Let's hold off on using
183 # them until they are a valid part of the API
186 d_getprotobyname_r=$undef
187 d_getprotobynumber_r=$undef
188 d_getprotoent_r=$undef
189 d_getservbyname_r=$undef
190 d_getservbyport_r=$undef
191 d_getservent_r=$undef
192 d_setprotoent_r=$undef
193 d_setservent_r=$undef
194 d_endprotoent_r=$undef
195 d_endservent_r=$undef ;;
202 # Set sensible defaults for NetBSD: look for local software in
203 # /usr/pkg (NetBSD Packages Collection) and in /usr/local.
205 loclibpth="/usr/pkg/lib /usr/local/lib"
206 locincpth="/usr/pkg/include /usr/local/include"
213 for yyy in $loclibpth; do
214 ldflags="$ldflags $rpathflag$yyy"
221 echo 'int main() {}' > try.c
222 gcc=`${cc:-cc} -v -c try.c 2>&1|grep 'gcc version egcs-2'`
224 '' | "gcc version egcs-2.95."[3-9]*) ;; # 2.95.3 or better okay
227 *** Your gcc ($gcc) is known to be
228 *** too buggy on netbsd/alpha to compile Perl with optimization.
229 *** It is suggested you install the lang/gcc package which should
230 *** have at least gcc 2.95.3 which should work okay: use for example
231 *** Configure -Dcc=/usr/pkg/gcc-2.95.3/bin/cc. You could also
232 *** Configure -Doptimize=-O0 to compile Perl without any optimization
233 *** but that is not recommended.
243 # NetBSD/sparc 1.5.3/1.6.1 dumps core in the semid_ds test of Configure.
245 sparc) d_semctl_semid_ds=undef ;;
249 case "$usemallocwrap" in
250 '') usemallocwrap='define' ;;
253 # don't use perl malloc by default
254 case "$usemymalloc" in
258 # NetBSD 6 defines the *at() functions in libc, but either doesn't
259 # implement them, or implements them only for AT_FDCWD
269 cat >UU/uselongdouble.cbu <<'EOCBU'
270 # This script UU/uselongdouble.cbu will get 'called-back' by Configure
271 # after it has prompted the user for whether to use long doubles.
273 # See https://github.com/Perl/perl5/issues/17853 and https://github.com/Perl/perl5/issues/17854
274 case "$uselongdouble" in
282 int main(int argc, char **argv) {
283 double e1 = exp(1.0);
284 /* as of NetBSD 9.0 expl() just calls exp(),
285 Fail here if they're equal. */
286 return expl(x) == (long double)e1;
289 if $cc -o try $ccflags $ldflags try.c -lm && $run ./try; then
290 echo "NetBSD seem to have fixed expl (and hopefully more)" >&4
294 Warning! NetBSD's long double support is limited enough that it will cause
295 test failures, and possibly build failures, and this doesn't appear to have
296 been fixed in the release you're running.