X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=hints%2Fopenbsd.sh;h=25781577ff26277ac2951a91c371fe75173bd01e;hb=ccf874816b57b9b91848a81cf43371bf7b3f17c8;hp=e9d8ea483d569a5d36152301ec6b3a8c214651f3;hpb=619ffc2be66f166b301c5b0d14a8bbba728675bc;p=p5sagit%2Fp5-mst-13.2.git diff --git a/hints/openbsd.sh b/hints/openbsd.sh index e9d8ea4..2578157 100644 --- a/hints/openbsd.sh +++ b/hints/openbsd.sh @@ -4,36 +4,59 @@ # Edited to allow Configure command-line overrides by # Andy Dougherty # +# To build with distribution paths, use: +# ./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. +# change starting with OpenBSD 2.7. usevfork='true' # 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' +d_setregid=$undef +d_setreuid=$undef +d_setrgid=$undef +d_setruid=$undef # -# Not all platforms support shared libs... +# Not all platforms support dynamic loading... # -case `uname -m` in -alpha|mips|powerpc|vax) - d_dlopen=$undef +ARCH=`arch|sed 's/^OpenBSD.//'` +case "${ARCH}-${osvers}" in +alpha-*|mips-*|vax-*|powerpc-2.[0-7]|m88k-*) + usedl=$undef ;; *) + usedl=$define d_dlopen=$define d_dlerror=$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" + ;; + *) # from 2.8 onwards + ld=${cc:-cc} + lddlflags="-shared -fPIC $lddlflags" + ;; + esac + ;; +esac + +# +# Tweaks for various versions of OpenBSD +# +case "$osvers" in +2.5) + # OpenBSD 2.5 has broken odbm support + i_dbm=$undef ;; esac @@ -42,11 +65,18 @@ esac libswanted=`echo $libswanted | sed 's/ crypt / /'` # Configure can't figure this out non-interactively -d_suidsafe='define' +d_suidsafe=$define # cc is gcc so we can do better than -O # Allow a command-line override, such as -Doptimize=-g -test "$optimize" || optimize='-O2' +case "$ARCH" in +m88k) + optimize='-O0' + ;; +*) + test "$optimize" || optimize='-O2' + ;; +esac # This script UU/usethreads.cbu will get 'called-back' by Configure # after it has prompted the user for whether to use threads. @@ -54,8 +84,37 @@ cat > UU/usethreads.cbu <<'EOCBU' case "$usethreads" in $define|true|[yY]*) # any openbsd version dependencies with pthreads? + ccflags="-pthread $ccflags" + ldflags="-pthread $ldflags" libswanted="$libswanted pthread" + # This is strange. + usevfork="$undef" 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) ;; +*) + # We put things in /usr, not /usr/local + prefix='/usr' + prefixexp='/usr' + sysman='/usr/share/man/man1' + libpth='/usr/lib' + 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 + # end