Until otherwise proven.
[p5sagit/p5-mst-13.2.git] / hints / openbsd.sh
index a7d8bf2..4839d04 100644 (file)
@@ -25,19 +25,40 @@ d_setruid=$undef
 
 #
 # 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 `arch` in
-OpenBSD.alpha|OpenBSD.mips|OpenBSD.powerpc|OpenBSD.vax)
-       usedl=$undef
+ARCH=`arch | sed 's/^OpenBSD.//'`
+case "${ARCH}-${osvers}" in
+alpha-2.[0-8]|mips-2.[0-8]|powerpc-2.[0-7]|m88k-*|vax-*)
+       test -z "$usedl" && usedl=$undef
        ;;
 *)
-       usedl=$define
-       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="-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 - </dev/null | grep __ELF__`
+       test -n "$ELF" && ldflags="-Wl,-E $ldflags"
        ;;
 esac
 
@@ -60,7 +81,14 @@ 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.
@@ -70,7 +98,9 @@ $define|true|[yY]*)
        # any openbsd version dependencies with pthreads?
        ccflags="-pthread $ccflags"
        ldflags="-pthread $ldflags"
+       # Add -lpthread.  Also change from -lc to -lc_r
        libswanted="$libswanted pthread"
+       libswanted=`echo " $libswanted "| sed -e 's/ c / c_r /' -e 's/^ //' -e 's/ $//'`
        # This is strange.
        usevfork="$undef"
 esac
@@ -87,6 +117,9 @@ case "$openbsd_distribution" in
        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'