X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=hints%2Fopenbsd.sh;h=5d47e0af14dfa6037fd6fb01d8a84047b7f3c158;hb=6bdd71ef1830fa9fb85306405e4da0222df1321d;hp=4ae2611b07a9974184c2afba7504e869235673b8;hpb=c347f2776c91e4d555d0016f00573135979547eb;p=p5sagit%2Fp5-mst-13.2.git diff --git a/hints/openbsd.sh b/hints/openbsd.sh index 4ae2611..5d47e0a 100644 --- a/hints/openbsd.sh +++ b/hints/openbsd.sh @@ -2,41 +2,66 @@ # # hints file for OpenBSD; Todd Miller # Edited to allow Configure command-line overrides by -# Andy Dougherty +# Andy Dougherty # # To build with distribution paths, use: -# ./Configure -des -Dopenbsd_distribution +# ./Configure -des -Dopenbsd_distribution=defined # # OpenBSD has a better malloc than perl... test "$usemymalloc" || usemymalloc='n' -# Currently, vfork(2) is not a real win over fork(2) but this will -# change in a future release. -usevfork='true' +# Currently, vfork(2) is not a real win over fork(2). +usevfork="$undef" -# setre?[ug]id() have been replaced by the _POSIX_SAVED_IDS versions -# in 4.4BSD. Configure will find these but they are just emulated -# and do not have the same semantics as in 4.3BSD. -d_setregid=$undef -d_setreuid=$undef -d_setrgid=$undef -d_setruid=$undef +# In OpenBSD < 3.3, the setre?[ug]id() are emulated using the +# _POSIX_SAVED_IDS functionality which does not have the same +# semantics as 4.3BSD. Starting with OpenBSD 3.3, the original +# semantics have been restored. +case "$osvers" in +[0-2].*|3.[0-2]) + d_setregid=$undef + d_setreuid=$undef + d_setrgid=$undef + d_setruid=$undef +esac # -# Not all platforms support shared libs... +# Not all platforms support dynamic loading... +# For the case of "$openbsd_distribution", the hints file +# needs to know whether we are using dynamic loading so that +# it can set the libperl name appropriately. +# Allow command line overrides. # -case `uname -m` in -alpha|mips|powerpc|vax) - d_dlopen=$undef +ARCH=`arch | sed 's/^OpenBSD.//'` +case "${ARCH}-${osvers}" in +alpha-2.[0-8]|mips-2.[0-8]|powerpc-2.[0-7]|m88k-*|hppa-*|vax-*) + test -z "$usedl" && usedl=$undef ;; *) - d_dlopen=$define - d_dlerror=$define - # we use -fPIC here because -fpic is *NOT* enough for some of the + test -z "$usedl" && usedl=$define + # We use -fPIC here because -fpic is *NOT* enough for some of the # extensions like Tk on some OpenBSD platforms (ie: sparc) cccdlflags="-DPIC -fPIC $cccdlflags" - lddlflags="-Bforcearchive -Bshareable $lddlflags" + case "$osvers" in + [01].*|2.[0-7]|2.[0-7].*) + lddlflags="-Bshareable $lddlflags" + ;; + 2.[8-9]|3.0) + ld=${cc:-cc} + lddlflags="-shared -fPIC $lddlflags" + ;; + *) # from 3.1 onwards + ld=${cc:-cc} + lddlflags="-shared -fPIC $lddlflags" + libswanted=`echo $libswanted | sed 's/ dl / /'` + ;; + esac + + # We need to force ld to export symbols on ELF platforms. + # Without this, dlopen() is crippled. + ELF=`${cc:-cc} -dM -E - UU/usethreads.cbu <<'EOCBU' case "$usethreads" in $define|true|[yY]*) # any openbsd version dependencies with pthreads? - libswanted="$libswanted pthread" + ccflags="-pthread $ccflags" + ldflags="-pthread $ldflags" + case "$osvers" in + [0-2].*|3.[0-2]) + # Change from -lc to -lc_r + set `echo "X $libswanted " | sed 's/ c / c_r /'` + shift + libswanted="$*" + ;; + esac + case "$osvers" in + [012].*|3.[0-3]) + # Broken at least up to OpenBSD 3.2, we'll see about 3.3. + d_getservbyname_r=$undef ;; + esac esac EOCBU # When building in the OpenBSD tree we use different paths # This is only part of the story, the rest comes from config.over case "$openbsd_distribution" in -''|$undef|false|[nN]*) ;; +''|$undef|false) ;; *) # We put things in /usr, not /usr/local prefix='/usr' prefixexp='/usr' sysman='/usr/share/man/man1' - # Never look for things in /usr/local - glibpth='/usr/lib' libpth='/usr/lib' - locincpth='' - loclibpth='' + glibpth='/usr/lib' + # Local things, however, do go in /usr/local + siteprefix='/usr/local' + siteprefixexp='/usr/local' + # Ports installs non-std libs in /usr/local/lib so look there too + locincpth='/usr/local/include' + loclibpth='/usr/local/lib' + # Link perl with shared libperl + if [ "$usedl" = "$define" -a -r shlib_version ]; then + useshrplib=true + libperl=`. ./shlib_version; echo libperl.so.${major}.${minor}` + fi ;; esac