X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=hints%2Ffreebsd.sh;h=937df2a85a0069f28ee33b7cf8da4c5ba038209d;hb=3332bd48887b0ba301a11465bf667141ae01ada3;hp=2609261fa6366871e2089aedcb88aae590e87651;hpb=71a1865dbc4c60df7c452ff98cec5b10306d3ff5;p=p5sagit%2Fp5-mst-13.2.git diff --git a/hints/freebsd.sh b/hints/freebsd.sh index 2609261..937df2a 100644 --- a/hints/freebsd.sh +++ b/hints/freebsd.sh @@ -20,7 +20,7 @@ # # Modified to ensure we replace -lc with -lc_r, and # to put in place-holders for various specific hints. -# Andy Dougherty +# Andy Dougherty # Date: Tue Mar 10 16:07:00 EST 1998 # # Support for FreeBSD/ELF @@ -67,7 +67,10 @@ case "$osvers" in # 2.0.5*|2.0-built*|2.1*) usevfork='true' - usemymalloc='n' + case "$usemymalloc" in + "") usemymalloc='n' + ;; + esac d_setregid='define' d_setreuid='define' d_setegid='undef' @@ -79,17 +82,21 @@ case "$osvers" in # don't use -lmalloc (maybe there's an old one from 1.1.5.1 floating around) 2.2*) usevfork='true' - usemymalloc='n' + case "$usemymalloc" in + "") usemymalloc='n' + ;; + esac libswanted=`echo $libswanted | sed 's/ malloc / /'` d_setregid='define' d_setreuid='define' d_setegid='undef' d_seteuid='undef' ;; -# -# Guesses at what will be needed after 2.2 *) usevfork='true' - usemymalloc='n' + case "$usemymalloc" in + "") usemymalloc='n' + ;; + esac libswanted=`echo $libswanted | sed 's/ malloc / /'` ;; esac @@ -99,7 +106,11 @@ esac case "$osvers" in 0.*|1.0*) ;; -3.*|4.0*) +1*|2*) cccdlflags='-DPIC -fpic' + lddlflags="-Bshareable $lddlflags" + ;; + +*) objformat=`/usr/bin/objformat` if [ x$objformat = xelf ]; then libpth="/usr/lib /usr/local/lib" @@ -108,24 +119,24 @@ case "$osvers" in lddlflags="-shared " else if [ -e /usr/lib/aout ]; then - libpth="/usr/lib/aout /usr/local/lib /usr/lib" - glibpth="/usr/lib/aout /usr/local/lib /usr/lib" - fi - lddlflags='-Bshareable' + libpth="/usr/lib/aout /usr/local/lib /usr/lib" + glibpth="/usr/lib/aout /usr/local/lib /usr/lib" + fi + lddlflags='-Bshareable' fi cccdlflags='-DPIC -fpic' ;; - -*) cccdlflags='-DPIC -fpic' - lddlflags="-Bshareable $lddlflags" - ;; esac case "$osvers" in -4.0*) - if /usr/bin/file /usr/lib/libc.so.3 | /usr/bin/grep -vq "not stripped" ; then +0*|1*|2*|3*) ;; + +*) + ccflags="${ccflags} -DHAS_FPSETMASK -DHAS_FLOATINGPOINT_H" + if /usr/bin/file -L /usr/lib/libc.so | /usr/bin/grep -vq "not stripped" ; then usenm=false fi + ;; esac cat <<'EOM' >&4 @@ -171,27 +182,23 @@ esac cat > UU/usethreads.cbu <<'EOCBU' case "$usethreads" in $define|true|[yY]*) - lc_r=`/sbin/ldconfig -r|grep ':-lc_r'|awk '{print $NF}'|tail -1` + lc_r=`/sbin/ldconfig -r|grep ':-lc_r'|awk '{print $NF}'|sed -n '$p'` case "$osvers" in - 2.2.8*|3.*|4.*) - if [ ! -r "$lc_r" ]; then - cat <&4 -POSIX threads should be supported by FreeBSD $osvers -- -but your system is missing the shared libc_r. -(/sbin/ldconfig -r doesn't find any). + 0*|1*|2.0*|2.1*) cat <&4 +I did not know that FreeBSD $osvers supports POSIX threads. -Consider using the latest STABLE release. +Feel free to tell perlbug@perl.org otherwise. EOM - exit 1 - fi - ldflags="-pthread $ldflags" + exit 1 ;; - 2.2*) + + 2.2.[0-7]*) cat <&4 POSIX threads are not supported well by FreeBSD $osvers. Please consider upgrading to at least FreeBSD 2.2.8, -or preferably to 3.something. +or preferably to the most recent -RELEASE or -STABLE +version (see http://www.freebsd.org/releases/). (While 2.2.7 does have pthreads, it has some problems with the combination of threads and pipes and therefore @@ -199,13 +206,29 @@ or preferably to 3.something. EOM exit 1 ;; - *) cat <&4 -I did not know that FreeBSD $osvers supports POSIX threads. -Feel free to tell perlbug@perl.com otherwise. + *) + if [ ! -r "$lc_r" ]; then + cat <&4 +POSIX threads should be supported by FreeBSD $osvers -- +but your system is missing the shared libc_r. +(/sbin/ldconfig -r doesn't find any). + +Consider using the latest STABLE release. EOM - exit 1 + exit 1 + fi + ldflags="-pthread $ldflags" + case "$osvers" in + 4.*|5.0-release*) + # 4.x and 5.0-release have gethostbyaddr_r but it is + # "Temporary function, not threadsafe"... + d_gethostbyaddr_r="undef" + d_gethostbyaddr_r_proto="0" + ;; + esac ;; + esac set `echo X "$libswanted "| sed -e 's/ c / c_r /'` @@ -224,5 +247,11 @@ EOM esac unset lc_r + + # Even with the malloc mutexes the Perl malloc does not + # seem to be threadsafe in FreeBSD? + usemymalloc=n + esac EOCBU +