X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=hints%2Fnetbsd.sh;h=7bd0a25c1debc4c03b0e9f789aef6caac71f7052;hb=572149b7587624d5eb3b9ea2a06050a09056385f;hp=33a7bf1c007eea14e79790bc93cd32d3dd5f113e;hpb=232e078e289220085e912e3d740ae77767611478;p=p5sagit%2Fp5-mst-13.2.git diff --git a/hints/netbsd.sh b/hints/netbsd.sh index 33a7bf1..7bd0a25 100644 --- a/hints/netbsd.sh +++ b/hints/netbsd.sh @@ -1,17 +1,72 @@ # hints/netbsd.sh -# netbsd keeps dynamic loading dl*() functions in /lib/crt0.o, +# +# talk to packages@netbsd.org if you want to change this file. +# +# netbsd keeps dynamic loading dl*() functions in /usr/lib/crt0.o, # so Configure doesn't find them (unless you abandon the nm scan). +# this should be *just* 0.9 below as netbsd 0.9a was the first to +# introduce shared libraries. + +case "$archname" in +'') + archname=`uname -m`-${osname} + ;; +esac + case "$osvers" in -0.9*|0.8*) +0.9|0.8*) usedl="$undef" ;; -*) d_dlopen=$define - d_dlerror=$define - cccdlflags="-DPIC -fpic $cccdlflags" - lddlflags="-Bforcearchive -Bshareable $lddlflags" +*) + if [ -f /usr/libexec/ld.elf_so ]; then + d_dlopen=$define + d_dlerror=$define + ccdlflags="-Wl,-E -Wl,-R${PREFIX}/lib $ccdlflags" + cccdlflags="-DPIC -fPIC $cccdlflags" + lddlflags="--whole-archive -shared $lddlflags" + elif [ "`uname -m`" = "pmax" ]; then +# NetBSD 1.3 and 1.3.1 on pmax shipped an `old' ld.so, which will not work. + d_dlopen=$undef + elif [ -f /usr/libexec/ld.so ]; then + d_dlopen=$define + d_dlerror=$define + ccdlflags="-Wl,-R${PREFIX}/lib $ccdlflags" +# we use -fPIC here because -fpic is *NOT* enough for some of the +# extensions like Tk on some netbsd platforms (the sparc is one) + cccdlflags="-DPIC -fPIC $cccdlflags" + lddlflags="-Bshareable $lddlflags" + else + d_dlopen=$undef + fi ;; esac -# Avoid telldir prototype conflict in pp_sys.c (NetBSD uses const DIR *) -# Configure should test for this. Volunteers? -pp_sys_cflags='ccflags="$ccflags -DHAS_TELLDIR_PROTOTYPE"' +# netbsd had these but they don't really work as advertised, in the +# versions listed below. if they are defined, then there isn't a +# way to make perl call setuid() or setgid(). if they aren't, then +# ($<, $>) = ($u, $u); will work (same for $(/$)). this is because +# you can not change the real userid of a process under 4.4BSD. +# netbsd fixed this in 1.3.2. +case "$osvers" in +0.9*|1.[012]*|1.3|1.3.1) + d_setregid="$undef" + d_setreuid="$undef" + ;; +esac + +# These are obsolete in any netbsd. +d_setrgid="$undef" +d_setruid="$undef" + +# there's no problem with vfork. +case "$usevfork" in +'') usevfork=true ;; +esac + +# Pre-empt the /usr/bin/perl question of installperl. +installusrbinperl='n' + +# Recognize the NetBSD packages collection. +# GDBM might be here. +test -d /usr/pkg/lib && loclibpth="$loclibpth /usr/pkg/lib" +test -d /usr/pkg/include && locincpth="$locincpth /usr/pkg/include"