#
# 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
+# In addition, a small patch is required to suidperl to avoid a security
# problem with FreeBSD.
#
2.0.5*|2.0-built*|2.1*)
;;
esac
libswanted=`echo $libswanted | sed 's/ malloc / /'`
+ libswanted=`echo $libswanted | sed 's/ bind / /'`
+ # iconv gone in Perl 5.8.1, but if someone compiles 5.8.0 or earlier.
+ libswanted=`echo $libswanted | sed 's/ iconv / /'`
d_setregid='define'
d_setreuid='define'
- d_setegid='undef'
- d_seteuid='undef'
+ d_setegid='define'
+ d_seteuid='define'
+ # d_dosuid='define' # Obsolete.
;;
*) usevfork='true'
case "$usemymalloc" in
;;
esac
+case "$osvers" in
+10.*)
+ # dtrace on 10.x needs libelf symbols, but we don't know if the
+ # user is going to request usedtrace and there's no .cbu for usedtrace
+ libswanted="$libswanted elf"
+ ;;
+esac
+
# Dynamic Loading flags have not changed much, so they are separated
# out here to avoid duplicating them everywhere.
case "$osvers" in
0.*|1.0*) ;;
-1*|2*) cccdlflags='-DPIC -fpic'
+1.*|2.*)
+ cccdlflags='-DPIC -fpic'
lddlflags="-Bshareable $lddlflags"
;;
-*)
+3*|4*|5*|6*)
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'
+ cccdlflags='-DPIC -fPIC'
;;
+*)
+ libpth="/usr/lib /usr/local/lib"
+ glibpth="/usr/lib /usr/local/lib"
+ ldflags="-Wl,-E "
+ lddlflags="-shared "
+ cccdlflags='-DPIC -fPIC'
+ ;;
esac
case "$osvers" in
-0*|1*|2*|3*) ;;
+0.*|1.*|2.*|3.*) ;;
*)
ccflags="${ccflags} -DHAS_FPSETMASK -DHAS_FLOATINGPOINT_H"
$define|true|[yY]*)
lc_r=`/sbin/ldconfig -r|grep ':-lc_r'|awk '{print $NF}'|sed -n '$p'`
case "$osvers" in
- 0*|1*|2.0*|2.1*) cat <<EOM >&4
+ 0.*|1.*|2.0*|2.1*) cat <<EOM >&4
I did not know that FreeBSD $osvers supports POSIX threads.
Feel free to tell perlbug@perl.org otherwise.
exit 1
;;
- *)
+ [3-5].*)
if [ ! -r "$lc_r" ]; then
cat <<EOM >&4
POSIX threads should be supported by FreeBSD $osvers --
EOM
exit 1
fi
+ # 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.
+
+ # 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.
+ d_gethostbyaddr_r="undef"
+ 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"
- 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 /'`
- 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
# Even with the malloc mutexes the Perl malloc does not
# seem to be threadsafe in FreeBSD?
- usemymalloc=n
-
+ case "$usemymalloc" in
+ '') usemymalloc=n ;;
+ esac
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 supposedly 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'
+
+# See [perl #128867]
+# Interpreting: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=211743#c10
+# khw workaround no longer needed in the following FREEBSD_KERNEL_VERSIONs
+#1200004 and up
+#1100502 >= version < 1200000
+#1003507 >= version < 1100000
+# Experiments have shown that this doesn't fully work. The first kernel we know it works is 1200056
+
+FREEBSD_KERNEL_VERSION=`uname -U`
+#if [ $FREEBSD_KERNEL_VERSION -lt 1003507 ] || \
+# [ $FREEBSD_KERNEL_VERSION -ge 1100000 ] && [ $FREEBSD_KERNEL_VERSION -lt 1100502 ] || \
+# [ $FREEBSD_KERNEL_VERSION -ge 1200000 ] && [ $FREEBSD_KERNEL_VERSION -lt 1200004 ]
+if [ $FREEBSD_KERNEL_VERSION -lt 1200056 ]
+then
+ d_uselocale='undef'
+fi
+
+# https://rt.perl.org/Ticket/Display.html?id=131337
+# Reported in 11.0-CURRENT with g++-4.8.5:
+# If using g++, the Configure scan for dlopen() fails.
+# Easier for now to just to forcibly set it.
+case "$cc" in
+*g++*)
+ d_dlopen='define'
+ ;;
+esac
+
+case `uname -p` in
+arm|mips)
+ ;;
+*)
+ test "$optimize" || optimize='-O2'
+ ;;
+esac