1# Original based on info from 2# Carl M. Fongheiser <cmf@ins.infonet.net> 3# Date: Thu, 28 Jul 1994 19:17:05 -0500 (CDT) 4# 5# Additional 1.1.5 defines from 6# Ollivier Robert <Ollivier.Robert@keltia.frmug.fr.net> 7# Date: Wed, 28 Sep 1994 00:37:46 +0100 (MET) 8# 9# Additional 2.* defines from 10# Ollivier Robert <Ollivier.Robert@keltia.frmug.fr.net> 11# Date: Sat, 8 Apr 1995 20:53:41 +0200 (MET DST) 12# 13# Additional 2.0.5 and 2.1 defined from 14# Ollivier Robert <Ollivier.Robert@keltia.frmug.fr.net> 15# Date: Fri, 12 May 1995 14:30:38 +0200 (MET DST) 16# 17# Additional 2.2 defines from 18# Mark Murray <mark@grondar.za> 19# Date: Wed, 6 Nov 1996 09:44:58 +0200 (MET) 20# 21# Modified to ensure we replace -lc with -lc_r, and 22# to put in place-holders for various specific hints. 23# Andy Dougherty <doughera@lafayette.edu> 24# Date: Tue Mar 10 16:07:00 EST 1998 25# 26# Support for FreeBSD/ELF 27# Ollivier Robert <roberto@keltia.freenix.fr> 28# Date: Wed Sep 2 16:22:12 CEST 1998 29# 30# The two flags "-fpic -DPIC" are used to indicate a 31# will-be-shared object. Configure will guess the -fpic, (and the 32# -DPIC is not used by perl proper) but the full define is included to 33# be consistent with the FreeBSD general shared libs building process. 34# 35# setreuid and friends are inherently broken in all versions of FreeBSD 36# before 2.1-current (before approx date 4/15/95). It is fixed in 2.0.5 37# and what-will-be-2.1 38# 39 40case "$osvers" in 410.*|1.0*) 42 usedl="$undef" 43 ;; 441.1*) 45 malloctype='void *' 46 groupstype='int' 47 d_setregid='undef' 48 d_setreuid='undef' 49 d_setrgid='undef' 50 d_setruid='undef' 51 ;; 522.0-release*) 53 d_setregid='undef' 54 d_setreuid='undef' 55 d_setrgid='undef' 56 d_setruid='undef' 57 ;; 58# 59# Trying to cover 2.0.5, 2.1-current and future 2.1/2.2 60# It does not covert all 2.1-current versions as the output of uname 61# changed a few times. 62# 63# Even though seteuid/setegid are available, they've been turned off 64# because perl isn't coded with saved set[ug]id variables in mind. 65# In addition, a small patch is required to suidperl to avoid a security 66# problem with FreeBSD. 67# 682.0.5*|2.0-built*|2.1*) 69 usevfork='true' 70 case "$usemymalloc" in 71 "") usemymalloc='n' 72 ;; 73 esac 74 d_setregid='define' 75 d_setreuid='define' 76 d_setegid='undef' 77 d_seteuid='undef' 78 test -r ./broken-db.msg && . ./broken-db.msg 79 ;; 80# 81# 2.2 and above have phkmalloc(3). 82# don't use -lmalloc (maybe there's an old one from 1.1.5.1 floating around) 832.2*) 84 usevfork='true' 85 case "$usemymalloc" in 86 "") usemymalloc='n' 87 ;; 88 esac 89 libswanted=`echo $libswanted | sed 's/ malloc / /'` 90 libswanted=`echo $libswanted | sed 's/ bind / /'` 91 # iconv gone in Perl 5.8.1, but if someone compiles 5.8.0 or earlier. 92 libswanted=`echo $libswanted | sed 's/ iconv / /'` 93 d_setregid='define' 94 d_setreuid='define' 95 d_setegid='define' 96 d_seteuid='define' 97 # d_dosuid='define' # Obsolete. 98 ;; 99*) usevfork='true' 100 case "$usemymalloc" in 101 "") usemymalloc='n' 102 ;; 103 esac 104 libswanted=`echo $libswanted | sed 's/ malloc / /'` 105 ;; 106esac 107 108case "$osvers" in 10910.*) 110 # dtrace on 10.x needs libelf symbols, but we don't know if the 111 # user is going to request usedtrace and there's no .cbu for usedtrace 112 libswanted="$libswanted elf" 113 ;; 114esac 115 116# Dynamic Loading flags have not changed much, so they are separated 117# out here to avoid duplicating them everywhere. 118case "$osvers" in 1190.*|1.0*) ;; 120 1211.*|2.*) 122 cccdlflags='-DPIC -fpic' 123 lddlflags="-Bshareable $lddlflags" 124 ;; 125 1263*|4*|5*|6*) 127 objformat=`/usr/bin/objformat` 128 if [ x$objformat = xaout ]; then 129 if [ -e /usr/lib/aout ]; then 130 libpth="/usr/lib/aout /usr/local/lib /usr/lib" 131 glibpth="/usr/lib/aout /usr/local/lib /usr/lib" 132 fi 133 lddlflags='-Bshareable' 134 else 135 libpth="/usr/lib /usr/local/lib" 136 glibpth="/usr/lib /usr/local/lib" 137 ldflags="-Wl,-E " 138 lddlflags="-shared " 139 fi 140 cccdlflags='-DPIC -fPIC' 141 ;; 142*) 143 libpth="/usr/lib /usr/local/lib" 144 glibpth="/usr/lib /usr/local/lib" 145 ldflags="-Wl,-E " 146 lddlflags="-shared " 147 cccdlflags='-DPIC -fPIC' 148 ;; 149esac 150 151case "$osvers" in 1520.*|1.*|2.*|3.*) ;; 153 154*) 155 ccflags="${ccflags} -DHAS_FPSETMASK -DHAS_FLOATINGPOINT_H" 156 if /usr/bin/file -L /usr/lib/libc.so | /usr/bin/grep -vq "not stripped" ; then 157 usenm=false 158 fi 159 ;; 160esac 161 162cat <<'EOM' >&4 163 164Some users have reported that Configure halts when testing for 165the O_NONBLOCK symbol with a syntax error. This is apparently a 166sh error. Rerunning Configure with ksh apparently fixes the 167problem. Try 168 ksh Configure [your options] 169 170EOM 171 172# From: Anton Berezin <tobez@plab.ku.dk> 173# To: perl5-porters@perl.org 174# Subject: [PATCH 5.005_54] Configure - hints/freebsd.sh signal handler type 175# Date: 30 Nov 1998 19:46:24 +0100 176# Message-ID: <864srhhvcv.fsf@lion.plab.ku.dk> 177 178signal_t='void' 179d_voidsig='define' 180 181# set libperl.so.X.X for 2.2.X 182case "$osvers" in 1832.2*) 184 # unfortunately this code gets executed before 185 # the equivalent in the main Configure so we copy a little 186 # from Configure XXX Configure should be fixed. 187 if $test -r $src/patchlevel.h;then 188 patchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $src/patchlevel.h` 189 subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $src/patchlevel.h` 190 else 191 patchlevel=0 192 subversion=0 193 fi 194 libperl="libperl.so.$patchlevel.$subversion" 195 unset patchlevel 196 unset subversion 197 ;; 198esac 199 200# This script UU/usethreads.cbu will get 'called-back' by Configure 201# after it has prompted the user for whether to use threads. 202cat > UU/usethreads.cbu <<'EOCBU' 203case "$usethreads" in 204$define|true|[yY]*) 205 lc_r=`/sbin/ldconfig -r|grep ':-lc_r'|awk '{print $NF}'|sed -n '$p'` 206 case "$osvers" in 207 0.*|1.*|2.0*|2.1*) cat <<EOM >&4 208I did not know that FreeBSD $osvers supports POSIX threads. 209 210Feel free to report that at https://github.com/Perl/perl5/issues otherwise. 211EOM 212 exit 1 213 ;; 214 215 2.2.[0-7]*) 216 cat <<EOM >&4 217POSIX threads are not supported well by FreeBSD $osvers. 218 219Please consider upgrading to at least FreeBSD 2.2.8, 220or preferably to the most recent -RELEASE or -STABLE 221version (see http://www.freebsd.org/releases/). 222 223(While 2.2.7 does have pthreads, it has some problems 224 with the combination of threads and pipes and therefore 225 many Perl tests will either hang or fail.) 226EOM 227 exit 1 228 ;; 229 230 [3-5].*) 231 if [ ! -r "$lc_r" ]; then 232 cat <<EOM >&4 233POSIX threads should be supported by FreeBSD $osvers -- 234but your system is missing the shared libc_r. 235(/sbin/ldconfig -r doesn't find any). 236 237Consider using the latest STABLE release. 238EOM 239 exit 1 240 fi 241 # 500016 is the first osreldate in which one could 242 # just link against libc_r without disposing of libc 243 # at the same time. 500016 ... up to whatever it was 244 # on the 31st of August 2003 can still be used with -pthread, 245 # but it is not necessary. 246 247 # Anton Berezin says that post 500something we're wrong to be 248 # to be using -lc_r, and should just be using -pthread on the 249 # linker line. 250 # So presumably really we should be checking that $osver is 5.*) 251 # and that `/sbin/sysctl -n kern.osreldate` -ge 500016 252 # or -lt 500something and only in that range not doing this: 253 ldflags="-pthread $ldflags" 254 255 # Both in 4.x and 5.x gethostbyaddr_r exists but 256 # it is "Temporary function, not threadsafe"... 257 # Presumably earlier it didn't even exist. 258 d_gethostbyaddr_r="undef" 259 d_gethostbyaddr_r_proto="0" 260 ;; 261 262 *) 263 # 7.x doesn't install libc_r by default, and Configure 264 # would fail in the code following 265 # 266 # gethostbyaddr_r() appears to have been implemented in 6.x+ 267 ldflags="-pthread $ldflags" 268 ;; 269 270 esac 271 272 case "$osvers" in 273 [1-4]*) 274 set `echo X "$libswanted "| sed -e 's/ c / c_r /'` 275 shift 276 libswanted="$*" 277 ;; 278 *) 279 set `echo X "$libswanted "| sed -e 's/ c //'` 280 shift 281 libswanted="$*" 282 ;; 283 esac 284 285 # Configure will probably pick the wrong libc to use for nm scan. 286 # The safest quick-fix is just to not use nm at all... 287 usenm=false 288 289 case "$osvers" in 290 2.2.8*) 291 # ... but this does not apply for 2.2.8 - we know it's safe 292 libc="$lc_r" 293 usenm=true 294 ;; 295 esac 296 297 unset lc_r 298 299 # Even with the malloc mutexes the Perl malloc does not 300 # seem to be threadsafe in FreeBSD? 301 case "$usemymalloc" in 302 '') usemymalloc=n ;; 303 esac 304esac 305EOCBU 306 307# malloc wrap works 308case "$usemallocwrap" in 309'') usemallocwrap='define' ;; 310esac 311 312# XXX Under FreeBSD 6.0 (and probably most other similar versions) 313# Perl_die(NULL) generates a warning: 314# pp_sys.c:491: warning: null format string 315# Configure supposedly tests for this, but apparently the test doesn't 316# work. Volunteers with FreeBSD are needed to improving the Configure test. 317# Meanwhile, the following workaround should be safe on all versions 318# of FreeBSD. 319d_printf_format_null='undef' 320 321# See [perl #128867] 322# Interpreting: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=211743#c10 323# khw workaround no longer needed in the following FREEBSD_KERNEL_VERSIONs 324#1200004 and up 325#1100502 >= version < 1200000 326#1003507 >= version < 1100000 327# Experiments have shown that this doesn't fully work. The first kernel we know it works is 1200056 328 329FREEBSD_KERNEL_VERSION=`uname -U` 330#if [ $FREEBSD_KERNEL_VERSION -lt 1003507 ] || \ 331# [ $FREEBSD_KERNEL_VERSION -ge 1100000 ] && [ $FREEBSD_KERNEL_VERSION -lt 1100502 ] || \ 332# [ $FREEBSD_KERNEL_VERSION -ge 1200000 ] && [ $FREEBSD_KERNEL_VERSION -lt 1200004 ] 333if [ $FREEBSD_KERNEL_VERSION -lt 1200056 ] 334then 335 d_uselocale='undef' 336fi 337 338# https://github.com/Perl/perl5/issues/15984 339# Reported in 11.0-CURRENT with g++-4.8.5: 340# If using g++, the Configure scan for dlopen() fails. 341# Easier for now to just to forcibly set it. 342case "$cc" in 343*g++*) 344 d_dlopen='define' 345 ;; 346esac 347 348case `uname -p` in 349arm|mips) 350 ;; 351*) 352 test "$optimize" || optimize='-O2' 353 ;; 354esac 355 356# don't modify a supplied -Darchname 357case "$archname" in 358'') 359 cat > UU/archname.cbu <<'EOCBU' 360unamem=`uname -m` 361case "$archname" in 362"$unamem"-*) 363 arch=`uname -p` 364 archname=`echo "$archname" | sed -e "s/^$unamem-/$arch-/"` 365 ;; 366esac 367EOCBU 368 ;; 369esac 370 371# This function on this box has weird behavior. See 372# https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=255646 373d_querylocale='undef' 374 375# See https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=265950 376d_duplocale='undef' 377