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 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 55 elif test -f /usr/libexec/ld.so; then 56 # a.out 57 d_dlopen=$define 58 d_dlerror=$define 59 cccdlflags="-DPIC -fPIC $cccdlflags" 60 lddlflags="-Bshareable $lddlflags" 61 rpathflag="-R" 62 else 63 d_dlopen=$undef 64 rpathflag= 65 fi 66 ;; 67esac 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. 74# netbsd fixed this in 1.3.2. 75case "$osvers" in 760.9*|1.[012]*|1.3|1.3.1) 77 d_setregid="$undef" 78 d_setreuid="$undef" 79 ;; 80esac 81case "$osvers" in 820.9*|1.*|2.*|3.*|4.*|5.*) 83 d_getprotoent_r="$undef" 84 d_getprotobyname_r="$undef" 85 d_getprotobynumber_r="$undef" 86 d_setprotoent_r="$undef" 87 d_endprotoent_r="$undef" 88 d_getservent_r="$undef" 89 d_getservbyname_r="$undef" 90 d_getservbyport_r="$undef" 91 d_setservent_r="$undef" 92 d_endservent_r="$undef" 93 d_getprotoent_r_proto="0" 94 d_getprotobyname_r_proto="0" 95 d_getprotobynumber_r_proto="0" 96 d_setprotoent_r_proto="0" 97 d_endprotoent_r_proto="0" 98 d_getservent_r_proto="0" 99 d_getservbyname_r_proto="0" 100 d_getservbyport_r_proto="0" 101 d_setservent_r_proto="0" 102 d_endservent_r_proto="0" 103 ;; 104esac 105 106# These are obsolete in any netbsd. 107d_setrgid="$undef" 108d_setruid="$undef" 109 110# there's no problem with vfork. 111usevfork=true 112 113# This is there but in machine/ieeefp_h. 114ieeefp_h="define" 115 116# This script UU/usethreads.cbu will get 'called-back' by Configure 117# after it has prompted the user for whether to use threads. 118cat > UU/usethreads.cbu <<'EOCBU' 119case "$usethreads" in 120$define|true|[yY]*) 121 lpthread= 122 for xxx in pthread; do 123 for yyy in $loclibpth $plibpth $glibpth dummy; do 124 zzz=$yyy/lib$xxx.a 125 if test -f "$zzz"; then 126 lpthread=$xxx 127 break; 128 fi 129 zzz=$yyy/lib$xxx.so 130 if test -f "$zzz"; then 131 lpthread=$xxx 132 break; 133 fi 134 zzz=`ls $yyy/lib$xxx.so.* 2>/dev/null` 135 if test "X$zzz" != X; then 136 lpthread=$xxx 137 break; 138 fi 139 done 140 if test "X$lpthread" != X; then 141 break; 142 fi 143 done 144 if test "X$lpthread" != X; then 145 # Add -lpthread. 146 libswanted="$libswanted $lpthread" 147 # There is no libc_r as of NetBSD 1.5.2, so no c -> c_r. 148 # This will be revisited when NetBSD gains a native pthreads 149 # implementation. 150 else 151 echo "$0: No POSIX threads library (-lpthread) found. " \ 152 "You may want to install GNU pth. Aborting." >&4 153 exit 1 154 fi 155 unset lpthread 156 157 # several reentrant functions are embeded in libc, but haven't 158 # been added to the header files yet. Let's hold off on using 159 # them until they are a valid part of the API 160 case "$osvers" in 161 [012].*|3.[0-1]) 162 d_getprotobyname_r=$undef 163 d_getprotobynumber_r=$undef 164 d_getprotoent_r=$undef 165 d_getservbyname_r=$undef 166 d_getservbyport_r=$undef 167 d_getservent_r=$undef 168 d_setprotoent_r=$undef 169 d_setservent_r=$undef 170 d_endprotoent_r=$undef 171 d_endservent_r=$undef ;; 172 esac 173 ;; 174 175esac 176EOCBU 177 178# Set sensible defaults for NetBSD: look for local software in 179# /usr/pkg (NetBSD Packages Collection) and in /usr/local. 180# 181loclibpth="/usr/pkg/lib /usr/local/lib" 182locincpth="/usr/pkg/include /usr/local/include" 183case "$rpathflag" in 184'') 185 ldflags= 186 ;; 187*) 188 ldflags= 189 for yyy in $loclibpth; do 190 ldflags="$ldflags $rpathflag$yyy" 191 done 192 ;; 193esac 194 195case `uname -m` in 196alpha) 197 echo 'int main() {}' > try.c 198 gcc=`${cc:-cc} -v -c try.c 2>&1|grep 'gcc version egcs-2'` 199 case "$gcc" in 200 '' | "gcc version egcs-2.95."[3-9]*) ;; # 2.95.3 or better okay 201 *) cat >&4 <<EOF 202*** 203*** Your gcc ($gcc) is known to be 204*** too buggy on netbsd/alpha to compile Perl with optimization. 205*** It is suggested you install the lang/gcc package which should 206*** have at least gcc 2.95.3 which should work okay: use for example 207*** Configure -Dcc=/usr/pkg/gcc-2.95.3/bin/cc. You could also 208*** Configure -Doptimize=-O0 to compile Perl without any optimization 209*** but that is not recommended. 210*** 211EOF 212 exit 1 213 ;; 214 esac 215 rm -f try.* 216 ;; 217esac 218 219# NetBSD/sparc 1.5.3/1.6.1 dumps core in the semid_ds test of Configure. 220case `uname -m` in 221sparc) d_semctl_semid_ds=undef ;; 222esac 223 224