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
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
|
# hints/irix_6.sh
#
# original from Krishna Sethuraman, krishna@sgi.com
#
# Modified Mon Jul 22 14:52:25 EDT 1996
# Andy Dougherty <doughera@lafayette.edu>
# with help from Dean Roehrich <roehrich@cray.com>.
# cc -n32 update info from Krishna Sethuraman, krishna@sgi.com.
# additional update from Scott Henry, scotth@sgi.com
# Futzed with by John Stoffel <jfs@fluent.com> on 4/24/1997
# - assumes 'cc -n32' by default
# - tries to check for various compiler versions and do the right
# thing when it can
# - warnings turned off (-n32 messages):
# 1184 - "=" is used where where "==" may have been intended
# 1552 - variable "foo" set but never used
# Tweaked by Chip Salzenberg <chip@perl.com> on 5/13/97
# - don't assume 'cc -n32' if the n32 libm.so is missing
# Threaded by Jarkko Hietaniemi <jhi@iki.fi> on 11/18/97
# - POSIX threads knowledge by IRIX version
# gcc-enabled by Kurt Starsinic <kstar@isinet.com> on 3/24/1998
# 64-bitty by Jarkko Hietaniemi on 9/1998
# Martin Pool added -shared for gcc on 2004-01-27
# Use sh Configure -Dcc='cc -n32' to try compiling with -n32.
# or -Dcc='cc -n32 -mips3' (or -mips4) to force (non)portability
# Don't bother with -n32 unless you have the 7.1 or later compilers.
# But there's no quick and light-weight way to check in 6.2.
# NOTE: some IRIX cc versions, e.g. 7.3.1.1m (try cc -version) have
# been known to have issues (coredumps) when compiling perl.c.
# If you've used -OPT:fast_io=ON and this happens, try removing it.
# If that fails, or you didn't use that, then try adjusting other
# optimization options (-LNO, -INLINE, -O3 to -O2, etcetera).
# The compiler bug has been reported to SGI.
# -- Allen Smith <allens@cpan.org>
# Modified (10/30/04) to turn off usemallocwrap (PERL_MALLOC_WRAP) in -n32
# mode - Allen.
case "$use64bitall" in
$define|true|[yY]*)
case "`uname -s`" in
IRIX)
cat <<END >&2
You have asked for use64bitall but you aren't running on 64-bit IRIX.
I'll try changing it to use64bitint.
END
use64bitall="$undef"
case "`uname -r`" in
[1-5]*|6.[01])
cat <<END >&2
Sorry, can't do use64bitint either. Try upgrading to IRIX 6.2 or later.
END
use64bitint="$undef"
;;
*) use64bitint="$define"
;;
esac
;;
esac
;;
esac
# Until we figure out what to be probed for in Configure (ditto for hpux.sh)
case "$usemorebits" in # Need to expand this now, then.
$define|true|[yY]*)
case "`uname -r`" in
[1-5]*|6.[01])
uselongdouble="$define"
;;
*) use64bitint="$define" uselongdouble="$define" ;;
esac
esac
# Let's assume we want to use 'cc -n32' by default, unless the
# necessary libm is missing (which has happened at least twice)
case "$cc" in
'') case "$use64bitall" in
"$define"|true|[yY]*) test -f /usr/lib64/libm.so && cc='cc -64' ;;
*) test -f /usr/lib32/libm.so && cc='cc -n32' ;;
esac
esac
case "$use64bitint" in
"$define"|true|[yY]*) ;;
*) d_casti32="$undef" ;;
esac
cc=${cc:-cc}
cat=${cat:-cat}
$cat > UU/cc.cbu <<'EOCCBU'
# This script UU/cc.cbu will get 'called-back' by Configure after it
# has prompted the user for the C compiler to use.
case "$cc" in
*gcc*)
# With cc we can use -c99, but with gcc we just can't use C99 headers.
# (There is a hidden define __c99 that cc uses, but trying to use that
# with gcc leads into magnificent explosions.)
i_stdint='undef'
;;
*) ccversion=`cc -version 2>&1` ;;
esac
# Check for which compiler we're using
case "$cc" in
*"cc -n32"*)
test -z "$ldlibpthname" && ldlibpthname='LD_LIBRARYN32_PATH'
# If a library is requested to link against, make sure the
# objects in the library are of the same ABI we are compiling
# against. Albert Chin-A-Young <china@thewrittenword.com>
# In other words, you no longer have to worry regarding having old
# library paths (/usr/lib) in the searchpath for -n32 or -64; thank
# you very much, Albert! Now if we could just get more module authors
# to use something like this... - Allen
libscheck='case "$xxx" in
*.a) /bin/ar p $xxx `/bin/ar t $xxx | sed q` >$$.o;
case "`/usr/bin/file $$.o`" in
*N32*) rm -f $$.o ;;
*) rm -f $$.o; xxx=/no/n32$xxx ;;
esac ;;
*) case "`/usr/bin/file $xxx`" in
*N32*) ;;
*) xxx=/no/n32$xxx ;;
esac ;;
esac'
# NOTE: -L/usr/lib32 -L/lib32 are automatically selected by the linker
test -z "$ldflags" && ldflags=' -L/usr/local/lib32 -L/usr/local/lib'
cccdlflags=' '
# From: David Billinghurst <David.Billinghurst@riotinto.com.au>
# If you get complaints about so_locations then change the following
# line to something like:
# lddlflags="-n32 -shared -check_registry /usr/lib32/so_locations"
test -z "$lddlflags" && lddlflags="-n32 -shared"
test -z "$libc" && libc='/usr/lib32/libc.so'
test -z "$plibpth" && plibpth='/usr/lib32 /lib32 /usr/ccs/lib'
# PERL_MALLOC_WRAP gives false alarms ("panic: memory wrap") in IRIX
# -n32 mode, resulting in perl compiles never getting further than
# miniperl. I am not sure whether it actually does any good in -32 or
# -64 mode, especially the latter, but it does not give false
# alarms (in testing). -Allen
usemallocwrap=${usemallocwrap:-false}
;;
*"cc -64"*)
case "`uname -s`" in
IRIX)
$cat >&4 <<EOM
You cannot use cc -64 or -Duse64bitall in 32-bit IRIX, sorry.
Cannot continue, aborting.
EOM
exit 1
;;
esac
test -z "$ldlibpthname" && ldlibpthname='LD_LIBRARY64_PATH'
test -z "$use64bitall" && use64bitall="$define"
test -z "$use64bitint" && use64bitint="$define"
loclibpth="$loclibpth /usr/lib64"
libscheck='case "`/usr/bin/file $xxx`" in
*64-bit*) ;;
*) xxx=/no/64-bit$xxx ;;
esac'
# NOTE: -L/usr/lib64 -L/lib64 are automatically selected by the linker
test -z "$ldflags" && ldflags=' -L/usr/local/lib64 -L/usr/local/lib'
cccdlflags=' '
test -z "$archname64" && archname64='64all'
# From: David Billinghurst <David.Billinghurst@riotinto.com.au>
# If you get complaints about so_locations then change the following
# line to something like:
# lddlflags="-64 -shared -check_registry /usr/lib64/so_locations"
test -z lddlflags="-64 -shared"
test -z "$libc" && libc='/usr/lib64/libc.so'
test -z "$plibpth" && plibpth='/usr/lib64 /lib64 /usr/ccs/lib'
;;
*gcc*)
ccflags="$ccflags -D_BSD_TYPES -D_BSD_TIME"
test -z "$optimize" && optimize="-O3"
usenm='undef'
# It seems gcc can build Irix shlibs, but of course it needs
# -shared. Otherwise you get link errors looking for main().
lddlflags="$lddlflags -shared"
case "`uname -s`" in
# Without the -mabi=64 gcc in 64-bit IRIX has problems passing
# and returning small structures. This affects inet_*() and semctl().
# See http://groups.google.com/group/comp.sys.sgi.admin/msg/3ad8353bc4ce3cb0
# for more information. Reported by Lionel Cons <lionel.cons@cern.ch>.
IRIX64) ccflags="$ccflags -mabi=64"
ldflags="$ldflags -mabi=64 -L/usr/lib64"
lddlflags="$lddlflags -mabi=64"
;;
*) ccflags="$ccflags -DIRIX32_SEMUN_BROKEN_BY_GCC"
# XXX Note: It is possible that turning off usemallocwrap is
# needed here; insufficient data! - Allen
;;
esac
;;
*)
# this is needed to force the old-32 paths
# since the system default can be changed.
ccflags="$ccflags -32 -D_BSD_TYPES -D_BSD_TIME -Olimit 3100"
optimize='-O'
;;
esac
# Settings common to both native compiler modes.
case "$cc" in
*"cc -n32"*|*"cc -64"*)
test -z "$ld" && ld=$cc
# perl's malloc can return improperly aligned buffer
# which (under 5.6.0RC1) leads into really bizarre bus errors
# and freak test failures (lib/safe1 #18, for example),
# even more so with -Duse64bitall: for example lib/io_linenumtb.
# fails under the harness but succeeds when run separately,
# under make test pragma/warnings #98 fails, and lib/io_dir
# apparently coredumps (the last two don't happen under
# the harness. Helmut Jarausch is seeing bus errors from
# miniperl, as was Scott Henry with snapshots from just before
# the RC1. --jhi
usemymalloc='undef'
# Was at the first of the line - Allen
#malloc_cflags='ccflags="-DSTRICT_ALIGNMENT $ccflags"'
nm_opt="$nm_opt -p"
nm_so_opt="$nm_so_opt -p"
# Warnings to turn off because the source code hasn't
# been cleaned up enough yet to satisfy the IRIX cc.
# 1047: macro redefinitions (in IRIX' own system headers!)
# 1184: "=" is used where where "==" may have been intended.
# 1552: The variable "foobar" is set but never used.
woff=1184,1552
# Perl 5.004_57 introduced new qsort code into pp_ctl.c that
# makes IRIX cc prior to 7.2.1 to emit bad code.
# so some serious hackery follows to set pp_ctl flags correctly.
# Check for which version of the compiler we're running
case "`$cc -version 2>&1`" in
*7.0*) # Mongoose 7.0
ccflags="$ccflags -D_BSD_TYPES -D_BSD_TIME -woff $woff -OPT:Olimit=0"
optimize='none'
;;
*7.1*|*7.2|*7.20) # Mongoose 7.1+
ccflags="$ccflags -D_BSD_TYPES -D_BSD_TIME -woff $woff"
case "$optimize" in
'') optimize='-O3 -OPT:Olimit=0' ;;
'-O') optimize='-O3 -OPT:Olimit=0' ;;
*) ;;
esac
# This is a temporary fix for 5.005+.
# See hints/README.hints, especially the section
# =head2 Propagating variables to config.sh
# Note the part about case statements not working without
# weirdness like the below echo statement... and, since
# we're in a callback unit, it's to config.sh, not UU/config.sh
# - Allen
pp_ctl_cflags="$pp_ctl_flags optimize=\"$optimize -O1\""
echo "pp_ctl_cflags=\"$pp_ctl_flags optimize=\\\"\$optimize -O1\\\"\"" >> config.sh
;;
# XXX What is space=ON doing in here? Could someone ask Scott Henry? - Allen
*7.*) # Mongoose 7.2.1+
ccflags="$ccflags -D_BSD_TYPES -D_BSD_TIME -woff $woff"
case "$optimize" in
'') optimize='-O3 -OPT:Olimit=0:space=ON' ;;
'-O') optimize='-O3 -OPT:Olimit=0:space=ON' ;;
*) ;;
esac
# Perl source has just grown too chummy with c99
# (headerwise, not code-wise: we use <stdint.h> and such)
ccflags="$ccflags -c99"
;;
*6.2*) # Ragnarok 6.2
ccflags="$ccflags -D_BSD_TYPES -D_BSD_TIME -woff $woff"
optimize='none'
;;
*) # Be safe and not optimize
ccflags="$ccflags -D_BSD_TYPES -D_BSD_TIME -woff $woff"
optimize='none'
;;
esac
# this is to accommodate the 'modules' capability of the
# 7.2 MIPSPro compilers, which allows for the compilers to be installed
# in a nondefault location. Almost everything works as expected, but
# /usr/include isn't caught properly. Hence see the /usr/include/pthread.h
# change below to include TOOLROOT (a modules environment variable),
# and the following code. Additional
# code to accommodate the 'modules' environment should probably be added
# here if possible, or be inserted as a ${TOOLROOT} reference before
# absolute paths (again, see the pthread.h change below).
# -- krishna@sgi.com, 8/23/98
if [ "X${TOOLROOT}" != "X" ]; then
# we cant set cppflags because it gets overwritten
# we dont actually need $TOOLROOT/usr/include on the cc line cuz the
# modules functionality already includes it but
# XXX - how do I change cppflags in the hints file?
ccflags="$ccflags -I${TOOLROOT}/usr/include"
usrinc="${TOOLROOT}/usr/include"
fi
;;
esac
# workaround for an optimizer bug
# Made to work via UU/config.sh thing (or, rather, config.sh, since we're in
# a callback) from README.hints, plus further stuff; doesn't handle -g still,
# unfortunately - Allen
case "`$cc -version 2>&1`" in
*7.2.*)
test -z "$op_cflags" && echo "op_cflags=\"optimize=\\\"\$optimize -O1\\\"\"" >> config.sh
test -z "$op_cflags" && op_cflags="optimize=\"\$optimize -O1\""
test -z "$opmini_cflags" && echo "opmini_cflags=\"optimize=\\\"\$optimize -O1\\\"\"" >> config.sh
test -z "$opmini_cflags" && opmini_cflags="optimize=\"\$optimize -O1\""
;;
*7.3.1.*)
test -z "$op_cflags" && echo "op_cflags=\"optimize=\\\"\$optimize -O2\\\"\"" >> config.sh
test -z "$op_cflags" && op_cflags="$op_cflags optimize=\"\$optimize -O2\""
test -z "$opmini_cflags" && echo "opmini_cflags=\"optimize=\\\"\$optimize -O2\\\"\"" >> config.sh
test -z "$opmini_cflags" && opmini_cflags="optimize=\"\$optimize -O2\""
;;
esac
# Workaround [perl #33849]: perl 5.8.6 fails to build on IRIX 6.5 due to
# bizarre preprocessor bug: cc -E - unfortunately goes into K&R mode, but
# cc -E file.c doesn't. Force a wrapper to always get the ANSI mode.
# (We only need to do this for cc, not for gcc. ccversion is computed above.)
case "$ccversion" in
'') ;; # gcc. Do nothing.
*) # Inside this call-back unit, we are down in the UU/ subdirectory,
# but Configure will look for cppstdin one level up.
cd ..; cppstdin=`pwd`/cppstdin; cd UU
cpprun="$cppstdin"
;;
esac
# There is a devious bug in the MIPSpro 7.4 compiler:
# memcmp() is an inlined intrinsic, and "sometimes" it gets compiled wrong.
#
# In Perl the most obvious hit is regcomp.c:S_regpposixcc(),
# causing bus errors when compiling the POSIX character classes like
# /[[:digit:]], which means that miniperl cannot build perl.
# (That is almost only the one victim: one single test in re/pat fails, also.)
#
# Therefore let's turn the inline intrinsics off and let the normal
# libc versions be used instead. This may cause a performance hit
# but a little slower is better than zero speed.
#
# MIPSpro C 7.4.1m is supposed to have fixed this bug.
#
case "$ccversion" in
"MIPSpro Compilers: Version 7.4")
ccflags="$ccflags -U__INLINE_INTRINSICS"
;;
esac
EOCCBU
# End of cc.cbu callback unit. - Allen
# We don't want these libraries.
# Socket networking is in libc, these are not installed by default,
# and just slow perl down. (scotth@sgi.com)
# librt contains nothing we need (some places need it for Time::HiRes) --jhi
set `echo X "$libswanted "|sed -e 's/ socket / /' -e 's/ nsl / /' -e 's/ dl / /' -e 's/ rt / /'`
shift
libswanted="$*"
# I have conflicting reports about the sun, crypt, bsd, and PW
# libraries on Irix 6.2.
#
# One user reports:
# Don't need sun crypt bsd PW under 6.2. You *may* need to link
# with these if you want to run perl built under 6.2 on a 5.3 machine
# (I haven't checked)
#
# Another user reported that if he included those libraries, a large number
# of the tests failed (approx. 20-25) and he would get a core dump. To
# make things worse, test results were inconsistent, i.e., some of the
# tests would pass some times and fail at other times.
# The safest thing to do seems to be to eliminate them.
#
# Actually, the only libs that you want are '-lm'. Everything else
# you need is in libc. You do also need '-lbsd' if you choose not
# to use the -D_BSD_* defines. Note that as of 6.2 the only
# difference between '-lmalloc' and '-lc' malloc is the debugging
# and control calls, which aren't used by perl. -- scotth@sgi.com
set `echo X "$libswanted "|sed -e 's/ sun / /' -e 's/ crypt / /' -e 's/ bsd / /' -e 's/ PW / /' -e 's/ malloc / /'`
shift
libswanted="$*"
# libbind.{so|a} would be from a BIND/named installation - IRIX 6.5.* has
# pretty much everything that would be useful in libbind in libc, including
# accessing a local caching server (nsd) that will also look in /etc/hosts,
# NIS (yuck!), etcetera. libbind also doesn't have the _r (thread-safe
# reentrant) functions.
# - Allen <easmith@beatrice.rutgers.edu>
case "`uname -r`" in
6.5)
set `echo X "$libswanted "|sed -e 's/ bind / /'`
shift
libswanted="$*"
;;
esac
# Don't groan about unused libraries.
case "$ldflags" in
*-Wl,-woff,84*) ;;
*) ldflags="$ldflags -Wl,-woff,84" ;;
esac
# IRIX freeware kits sometimes have only o32 libraries for gdbm.
# You can try Configure ... -Dlibswanted='m' -Dnoextensions='GDBM_File'
# since the libm seems to be pretty much the only really needed library.
# Irix 6.5.6 seems to have a broken header <sys/mode.h>
# don't include that (it doesn't contain S_IFMT, S_IFREG, et al)
i_sysmode="$undef"
$cat > UU/usethreads.cbu <<'EOCBU'
# This script UU/usethreads.cbu will get 'called-back' by Configure
# after it has prompted the user for whether to use threads.
case "$usethreads" in
$define|true|[yY]*)
if test ! -f ${TOOLROOT}/usr/include/pthread.h -o ! -f /usr/lib/libpthread.so; then
case "`uname -r`" in
[1-5].*|6.[01])
cat >&4 <<EOM
IRIX `uname -r` does not support POSIX threads.
You should upgrade to at least IRIX 6.2 with pthread patches.
EOM
;;
6.2)
cat >&4 <<EOM
IRIX 6.2 can have the POSIX threads.
However, the following IRIX patches (or their replacements) MUST be installed:
1404 Irix 6.2 Posix 1003.1b man pages
1645 IRIX 6.2 & 6.3 POSIX header file updates
2000 Irix 6.2 Posix 1003.1b support modules
2254 Pthread library fixes
2401 6.2 all platform kernel rollup
IMPORTANT:
Without patch 2401, a kernel bug in IRIX 6.2 will
cause your machine to panic and crash when running
threaded perl. IRIX 6.3 and up should be OK.
EOM
;;
[67].*)
cat >&4 <<EOM
IRIX `uname -r` should have the POSIX threads.
But, somehow, you do not seem to have them installed.
EOM
;;
esac
cat >&4 <<EOM
Cannot continue, aborting.
EOM
exit 1
fi
set `echo X "$libswanted "| sed -e 's/ c / pthread /'`
shift
libswanted="$*"
usemymalloc='n'
# These are hidden behind a _POSIX1C ifdef that would
# require including <pthread.h> for the Configure hasproto
# to see these.
# d_asctime_r_proto="$define"
# d_ctime_r_proto="$define"
# d_gmtime_r_proto="$define"
# d_localtime_r_proto="$define"
# Safer just to go ahead and include it, for other ifdefs like them
# (there are a lot, such as in netdb.h). - Allen
ccflags="$ccflags -DPTHREAD_H_FIRST"
pthread_h_first="$define"
echo "pthread_h_first='define'" >> config.sh
;;
esac
EOCBU
# The -n32 makes off_t to be 8 bytes, so we should have largefileness.
$cat > UU/use64bitint.cbu <<'EOCBU'
# This script UU/use64bitint.cbu will get 'called-back' by Configure
# after it has prompted the user for whether to use 64 bit integers.
case "$use64bitint" in
$define|true|[yY]*)
case "`uname -r`" in
[1-5]*|6.[01])
cat >&4 <<EOM
IRIX `uname -r` does not support 64-bit types.
You should upgrade to at least IRIX 6.2.
Cannot continue, aborting.
EOM
exit 1
;;
esac
usemymalloc="$undef"
;;
*) d_casti32="$undef" ;;
esac
EOCBU
$cat > UU/use64bitall.cbu <<'EOCBU'
# This script UU/use64bitall.cbu will get 'called-back' by Configure
# after it has prompted the user for whether to be maximally 64 bitty.
case "$use64bitall" in
$define|true|[yY]*)
case "$cc" in
*-n32*|*-32*)
cat >&4 <<EOM
You cannot use a non-64 bit cc for -Duse64bitall, sorry.
Cannot continue, aborting.
EOM
exit 1
;;
esac
;;
esac
EOCBU
$cat > UU/uselongdouble.cbu <<'EOCBU'
# This script UU/uselongdouble.cbu will get 'called-back' by Configure
# after it has prompted the user for whether to use long doubles.
# This script is designed to test IRIX (and other machines, once it's put into
# Configure) for a bug in which they fail to round correctly when using
# sprintf/printf/etcetera on a long double with precision specified (%.0Lf or
# whatever). Sometimes, this only happens when the number in question is
# between 1 and -1, weirdly enough. - Allen
case "$uselongdouble" in
$define|true|[yY]*)
case "$d_PRIfldbl" in
$define|true|[yY]*)
echo " " >try.c
$cat >>try.c <<EOP
#include <stdio.h>
#define sPRIfldbl $sPRIfldbl
#define I_STDLIB $i_stdlib
#ifdef I_STDLIB
#include <stdlib.h>
#endif
int main()
{
char buf1[64];
char buf2[64];
buf1[63] = '\0';
buf2[63] = '\0';
(void)sprintf(buf1,"%.0"sPRIfldbl,(long double)0.6L);
(void)sprintf(buf2,"%.0f",(double)0.6);
if (strcmp(buf1,buf2)) {
exit(1);
}
(void)sprintf(buf1,"%.0"sPRIfldbl,(long double)-0.6L);
(void)sprintf(buf2,"%.0f",(double)-0.6);
if (strcmp(buf1,buf2)) {
exit(1);
} else {
exit(0);
}
}
EOP
set try
if eval $compile && $run ./try; then
rm -f try try.* >/dev/null
else
rm -f try try.* core a.out >/dev/null
ccflags="$ccflags -DHAS_LDBL_SPRINTF_BUG"
cppflags="$cppflags -DHAS_LDBL_SPRINTF_BUG"
echo " " >try.c
$cat >>try.c <<EOP
#include <stdio.h>
#define sPRIfldbl $sPRIfldbl
#define I_STDLIB $i_stdlib
#ifdef I_STDLIB
#include <stdlib.h>
#endif
int main()
{
char buf1[64];
char buf2[64];
buf1[63] = '\0';
buf2[63] = '\0';
(void)sprintf(buf1,"%.0"sPRIfldbl,(long double)1.6L);
(void)sprintf(buf2,"%.0f",(double)1.6);
if (strcmp(buf1,buf2)) {
exit(1);
}
(void)sprintf(buf1,"%.0"sPRIfldbl,(long double)-1.6L);
(void)sprintf(buf2,"%.0f",(double)-1.6);
if (strcmp(buf1,buf2)) {
exit(1);
} else {
exit(0);
}
}
EOP
set try
if eval $compile && $run ./try; then
rm -f try try.c >/dev/null
ccflags="$ccflags -DHAS_LDBL_SPRINTF_BUG_LESS1"
cppflags="$cppflags -DHAS_LDBL_SPRINTF_BUG_LESS1"
else
rm -f try try.c core try.o a.out >/dev/null
fi
fi
;;
*) # Can't tell!
ccflags="$ccflags -DHAS_LDBL_SPRINTF_BUG"
cppflags="$cppflags -DHAS_LDBL_SPRINTF_BUG"
;;
esac
# end of case statement for how to print ldbl with 'f'
;;
*) ;;
esac
# end of case statement for whether to do long doubles
EOCBU
# Helmut Jarausch reports that Perl's malloc is rather unusable
# with IRIX, and SGI confirms the problem.
usemymalloc=${usemymalloc:-false}
# Configure finds <fcntl.h> but then thinks it can use <sys/file.h>
# instead; in IRIX this is not true because the prototype of fcntl()
# requires explicit include of <fcntl.h>
i_fcntl=define
|