X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=hints%2Ffreebsd.sh;h=7d543be0457901781cdde1b115fa02154a0c8496;hb=4e73d6a402bc493d66d19c409c41e1e271c6450b;hp=28e22ac62c3cee2d73114aff2e026a7f9929effe;hpb=46c2c6f31cce4e252716017f4e0350b100a578a4;p=p5sagit%2Fp5-mst-13.2.git diff --git a/hints/freebsd.sh b/hints/freebsd.sh index 28e22ac..7d543be 100644 --- a/hints/freebsd.sh +++ b/hints/freebsd.sh @@ -116,17 +116,17 @@ case "$osvers" in *) 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 [ x$objformat = xaout ]; then 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' + else + libpth="/usr/lib /usr/local/lib" + glibpth="/usr/lib /usr/local/lib" + ldflags="-Wl,-E " + lddlflags="-shared " fi cccdlflags='-DPIC -fPIC' ;; @@ -211,7 +211,7 @@ EOM exit 1 ;; - *) + [3-5].*) if [ ! -r "$lc_r" ]; then cat <&4 POSIX threads should be supported by FreeBSD $osvers -- @@ -222,19 +222,20 @@ Consider using the latest STABLE release. EOM exit 1 fi - case "$osvers" in # 500016 is the first osreldate in which one could # just link against libc_r without disposing of libc # at the same time. 500016 ... up to whatever it was # on the 31st of August 2003 can still be used with -pthread, # but it is not necessary. - 5.*) if [ `/sbin/sysctl -n kern.osreldate` -lt 500016 ]; then - ldflags="-pthread $ldflags" - fi - ;; - *) ldflags="-pthread $ldflags" - ;; - esac + + # Anton Berezin says that post 500something we're wrong to be + # to be using -lc_r, and should just be using -pthread on the + # linker line. + # So presumably really we should be checking that $osver is 5.*) + # and that `/sbin/sysctl -n kern.osreldate` -ge 500016 + # or -lt 500something and only in that range not doing this: + ldflags="-pthread $ldflags" + # Both in 4.x and 5.x gethostbyaddr_r exists but # it is "Temporary function, not threadsafe"... # Presumably earlier it didn't even exist. @@ -242,11 +243,29 @@ EOM d_gethostbyaddr_r_proto="0" ;; + *) + # 7.x doesn't install libc_r by default, and Configure + # would fail in the code following + # + # gethostbyaddr_r() appears to have been implemented in 6.x+ + ldflags="-pthread $ldflags" + ;; + esac - set `echo X "$libswanted "| sed -e 's/ c / c_r /'` - shift - libswanted="$*" + case "$osvers" in + [1-4]*) + set `echo X "$libswanted "| sed -e 's/ c / c_r /'` + shift + libswanted="$*" + ;; + *) + set `echo X "$libswanted "| sed -e 's/ c //'` + shift + libswanted="$*" + ;; + esac + # 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 @@ -269,3 +288,16 @@ EOM esac EOCBU +# malloc wrap works +case "$usemallocwrap" in +'') usemallocwrap='define' ;; +esac + +# XXX Under FreeBSD 6.0 (and probably most other similar versions) +# Perl_die(NULL) generates a warning: +# pp_sys.c:491: warning: null format string +# Configure supposedely tests for this, but apparently the test doesn't +# work. Volunteers with FreeBSD are needed to improving the Configure test. +# Meanwhile, the following workaround should be safe on all versions +# of FreeBSD. +d_printf_format_null='undef'