1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381
|
# Original based on info from
# Carl M. Fongheiser <cmf@ins.infonet.net>
# Date: Thu, 28 Jul 1994 19:17:05 -0500 (CDT)
#
# Additional 1.1.5 defines from
# Ollivier Robert <Ollivier.Robert@keltia.frmug.fr.net>
# Date: Wed, 28 Sep 1994 00:37:46 +0100 (MET)
#
# Additional 2.* defines from
# Ollivier Robert <Ollivier.Robert@keltia.frmug.fr.net>
# Date: Sat, 8 Apr 1995 20:53:41 +0200 (MET DST)
#
# Additional 2.0.5 and 2.1 defined from
# Ollivier Robert <Ollivier.Robert@keltia.frmug.fr.net>
# Date: Fri, 12 May 1995 14:30:38 +0200 (MET DST)
#
# Additional 2.2 defines from
# Mark Murray <mark@grondar.za>
# 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 <doughera@lafayette.edu>
# Date: Tue Mar 10 16:07:00 EST 1998
#
# Support for FreeBSD/ELF
# Ollivier Robert <roberto@keltia.freenix.fr>
# 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
# be consistent with the FreeBSD general shared libs building process.
#
# setreuid and friends are inherently broken in all versions of FreeBSD
# before 2.1-current (before approx date 4/15/95). It is fixed in 2.0.5
# and what-will-be-2.1
#
case "$osvers" in
0.*|1.0*)
usedl="$undef"
;;
1.1*)
malloctype='void *'
groupstype='int'
d_setregid='undef'
d_setreuid='undef'
d_setrgid='undef'
d_setruid='undef'
;;
2.0-release*)
d_setregid='undef'
d_setreuid='undef'
d_setrgid='undef'
d_setruid='undef'
;;
#
# 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 required to suidperl to avoid a security
# problem with FreeBSD.
#
2.0.5*|2.0-built*|2.1*)
usevfork='true'
case "$usemymalloc" in
"") usemymalloc='n'
;;
esac
d_setregid='define'
d_setreuid='define'
d_setegid='undef'
d_seteuid='undef'
test -r ./broken-db.msg && . ./broken-db.msg
;;
#
# 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'
case "$usemymalloc" in
"") usemymalloc='n'
;;
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='define'
d_seteuid='define'
# d_dosuid='define' # Obsolete.
;;
*) usevfork='true'
case "$usemymalloc" in
"") usemymalloc='n'
;;
esac
libswanted=`echo $libswanted | sed 's/ malloc / /'`
;;
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'
lddlflags="-Bshareable $lddlflags"
;;
3*|4*|5*|6*)
objformat=`/usr/bin/objformat`
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'
;;
*)
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.*) ;;
*)
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
Some users have reported that Configure halts when testing for
the O_NONBLOCK symbol with a syntax error. This is apparently a
sh error. Rerunning Configure with ksh apparently fixes the
problem. Try
ksh Configure [your options]
EOM
# From: Anton Berezin <tobez@plab.ku.dk>
# 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}'|sed -n '$p'`
case "$osvers" in
0.*|1.*|2.0*|2.1*) cat <<EOM >&4
I did not know that FreeBSD $osvers supports POSIX threads.
Feel free to report that at https://github.com/Perl/perl5/issues otherwise.
EOM
exit 1
;;
2.2.[0-7]*)
cat <<EOM >&4
POSIX threads are not supported well by FreeBSD $osvers.
Please consider upgrading to at least FreeBSD 2.2.8,
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
many Perl tests will either hang or fail.)
EOM
exit 1
;;
[3-5].*)
if [ ! -r "$lc_r" ]; then
cat <<EOM >&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
# 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"
;;
esac
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
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
# Even with the malloc mutexes the Perl malloc does not
# seem to be threadsafe in FreeBSD?
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 ] # But other bugs remain; see below
then
d_uselocale='undef'
fi
# See https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=265950
# localeconv() is supposed to be thread-safe when used with this, so when
# freebsd fixes this, may want to find a way to tell that to the code in
# locale.c that assumes that function isn't thread-safe.
ccflags="${ccflags} -DNO_POSIX_2008_LOCALE"
# https://github.com/Perl/perl5/issues/15984
# 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
# don't modify a supplied -Darchname
case "$archname" in
'')
cat > UU/archname.cbu <<'EOCBU'
unamem=`uname -m`
case "$archname" in
"$unamem"-*)
arch=`uname -p`
archname=`echo "$archname" | sed -e "s/^$unamem-/$arch-/"`
;;
esac
EOCBU
;;
esac
# This function on this box has weird behavior. See
# https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=255646
# This has allegedly been fixed, but we can't be sure because of
# https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=265950
#d_querylocale='undef'
|