X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=hints%2Ffreebsd.sh;h=fd60ba3cb919285314d8575bd1cc05bc407135a2;hb=191b6b89f5bfbc7ea8f7e69aeb52e156b35bec93;hp=1e92053cf545ff5d0900c178bef1f03bae363ee0;hpb=248d79cf19928be799805c620cac0ad2108c280c;p=p5sagit%2Fp5-mst-13.2.git diff --git a/hints/freebsd.sh b/hints/freebsd.sh index 1e92053..fd60ba3 100644 --- a/hints/freebsd.sh +++ b/hints/freebsd.sh @@ -14,6 +14,19 @@ # Ollivier Robert # Date: Fri, 12 May 1995 14:30:38 +0200 (MET DST) # +# Additional 2.2 defines from +# Mark Murray +# Date: Wed, 6 Nov 1996 09:44:58 +0200 (MET) +# +# Modified to ensure we replace -lc with -lc_r, and +# to put in place-holders for various specific hints. +# Andy Dougherty +# Date: Tue Mar 10 16:07:00 EST 1998 +# +# Support for FreeBSD/ELF +# Ollivier Robert +# Date: Wed Sep 2 16:22:12 CEST 1998 +# # The two flags "-fpic -DPIC" are used to indicate a # will-be-shared object. Configure will guess the -fpic, (and the # -DPIC is not used by perl proper) but the full define is included to @@ -43,16 +56,41 @@ case "$osvers" in d_setruid='undef' ;; # -# Trying to cover 2.0.5, 2.1-current and future 2.1 +# Trying to cover 2.0.5, 2.1-current and future 2.1/2.2 # It does not covert all 2.1-current versions as the output of uname # changed a few times. # +# Even though seteuid/setegid are available, they've been turned off +# because perl isn't coded with saved set[ug]id variables in mind. +# In addition, a small patch is requried to suidperl to avoid a security +# problem with FreeBSD. +# 2.0.5*|2.0-built*|2.1*) usevfork='true' + usemymalloc='n' + d_setregid='define' + d_setreuid='define' + d_setegid='undef' + d_seteuid='undef' + test -r ./broken-db.msg && . ./broken-db.msg ;; # -# Guesses at what will be needed after 2.1 +# 2.2 and above have phkmalloc(3). +# don't use -lmalloc (maybe there's an old one from 1.1.5.1 floating around) +2.2*) + usevfork='true' + usemymalloc='n' + 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' + libswanted=`echo $libswanted | sed 's/ malloc / /'` ;; esac @@ -60,16 +98,40 @@ esac # out here to avoid duplicating them everywhere. case "$osvers" in 0.*|1.0*) ;; -*) cccdlflags='-DPIC -fpic' + +1*|2*) cccdlflags='-DPIC -fpic' lddlflags="-Bshareable $lddlflags" ;; + +*) + objformat=`/usr/bin/objformat` + if [ x$objformat = xelf ]; then + libpth="/usr/lib /usr/local/lib" + glibpth="/usr/lib /usr/local/lib" + ldflags="-Wl,-E " + 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' + fi + cccdlflags='-DPIC -fpic' + ;; esac -# Avoid telldir prototype conflict in pp_sys.c (FreeBSD uses const DIR *) -# Configure should test for this. Volunteers? -pp_sys_cflags='ccflags="$ccflags -DHAS_TELLDIR_PROTOTYPE"' +case "$osvers" in +0*|1*|2*|3*) ;; + +*) + if /usr/bin/file -L /usr/lib/libc.so | /usr/bin/grep -vq "not stripped" ; then + usenm=false + fi + ;; +esac -cat <<'EOM' +cat <<'EOM' >&4 Some users have reported that Configure halts when testing for the O_NONBLOCK symbol with a syntax error. This is apparently a @@ -79,3 +141,94 @@ problem. Try EOM +# From: Anton Berezin +# To: perl5-porters@perl.org +# Subject: [PATCH 5.005_54] Configure - hints/freebsd.sh signal handler type +# Date: 30 Nov 1998 19:46:24 +0100 +# Message-ID: <864srhhvcv.fsf@lion.plab.ku.dk> + +signal_t='void' +d_voidsig='define' + +# set libperl.so.X.X for 2.2.X +case "$osvers" in +2.2*) + # unfortunately this code gets executed before + # the equivalent in the main Configure so we copy a little + # from Configure XXX Configure should be fixed. + if $test -r $src/patchlevel.h;then + patchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $src/patchlevel.h` + subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $src/patchlevel.h` + else + patchlevel=0 + subversion=0 + fi + libperl="libperl.so.$patchlevel.$subversion" + unset patchlevel + unset subversion + ;; +esac + +# This script UU/usethreads.cbu will get 'called-back' by Configure +# after it has prompted the user for whether to use threads. +cat > UU/usethreads.cbu <<'EOCBU' +case "$usethreads" in +$define|true|[yY]*) + lc_r=`/sbin/ldconfig -r|grep ':-lc_r'|awk '{print $NF}'|tail -1` + case "$osvers" in + 0*|1*|2.0*|2.1*) cat <&4 +I did not know that FreeBSD $osvers supports POSIX threads. + +Feel free to tell perlbug@perl.com otherwise. +EOM + exit 1 + ;; + + 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. + +(While 2.2.7 does have pthreads, it has some problems + with the combination of threads and pipes and therefore + many Perl tests will either hang or fail.) +EOM + exit 1 + ;; + + *) + 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 + fi + ldflags="-pthread $ldflags" + ;; + + esac + + set `echo X "$libswanted "| sed -e 's/ c / c_r /'` + shift + libswanted="$*" + # Configure will probably pick the wrong libc to use for nm scan. + # The safest quick-fix is just to not use nm at all... + usenm=false + + case "$osvers" in + 2.2.8*) + # ... but this does not apply for 2.2.8 - we know it's safe + libc="$lc_r" + usenm=true + ;; + esac + + unset lc_r +esac +EOCBU