1 | # hints/irix_6.sh
|
---|
2 | #
|
---|
3 | # original from Krishna Sethuraman, krishna@sgi.com
|
---|
4 | #
|
---|
5 | # Modified Mon Jul 22 14:52:25 EDT 1996
|
---|
6 | # Andy Dougherty <doughera@lafayette.edu>
|
---|
7 | # with help from Dean Roehrich <roehrich@cray.com>.
|
---|
8 | # cc -n32 update info from Krishna Sethuraman, krishna@sgi.com.
|
---|
9 | # additional update from Scott Henry, scotth@sgi.com
|
---|
10 |
|
---|
11 | # Futzed with by John Stoffel <jfs@fluent.com> on 4/24/1997
|
---|
12 | # - assumes 'cc -n32' by default
|
---|
13 | # - tries to check for various compiler versions and do the right
|
---|
14 | # thing when it can
|
---|
15 | # - warnings turned off (-n32 messages):
|
---|
16 | # 1184 - "=" is used where where "==" may have been intended
|
---|
17 | # 1552 - variable "foo" set but never used
|
---|
18 |
|
---|
19 | # Tweaked by Chip Salzenberg <chip@perl.com> on 5/13/97
|
---|
20 | # - don't assume 'cc -n32' if the n32 libm.so is missing
|
---|
21 |
|
---|
22 | # Threaded by Jarkko Hietaniemi <jhi@iki.fi> on 11/18/97
|
---|
23 | # - POSIX threads knowledge by IRIX version
|
---|
24 |
|
---|
25 | # gcc-enabled by Kurt Starsinic <kstar@isinet.com> on 3/24/1998
|
---|
26 |
|
---|
27 | # 64-bitty by Jarkko Hietaniemi on 9/1998
|
---|
28 |
|
---|
29 | # Martin Pool added -shared for gcc on 2004-01-27
|
---|
30 |
|
---|
31 | # Use sh Configure -Dcc='cc -n32' to try compiling with -n32.
|
---|
32 | # or -Dcc='cc -n32 -mips3' (or -mips4) to force (non)portability
|
---|
33 | # Don't bother with -n32 unless you have the 7.1 or later compilers.
|
---|
34 | # But there's no quick and light-weight way to check in 6.2.
|
---|
35 |
|
---|
36 | # NOTE: some IRIX cc versions, e.g. 7.3.1.1m (try cc -version) have
|
---|
37 | # been known to have issues (coredumps) when compiling perl.c.
|
---|
38 | # If you've used -OPT:fast_io=ON and this happens, try removing it.
|
---|
39 | # If that fails, or you didn't use that, then try adjusting other
|
---|
40 | # optimization options (-LNO, -INLINE, -O3 to -O2, etcetera).
|
---|
41 | # The compiler bug has been reported to SGI.
|
---|
42 | # -- Allen Smith <allens@cpan.org>
|
---|
43 |
|
---|
44 | # Modified (10/30/04) to turn off usemallocwrap (PERL_MALLOC_WRAP) in -n32
|
---|
45 | # mode - Allen.
|
---|
46 |
|
---|
47 | case "$use64bitall" in
|
---|
48 | $define|true|[yY]*)
|
---|
49 | case "`uname -s`" in
|
---|
50 | IRIX)
|
---|
51 | cat <<END >&2
|
---|
52 | You have asked for use64bitall but you aren't running on 64-bit IRIX.
|
---|
53 | I'll try changing it to use64bitint.
|
---|
54 | END
|
---|
55 | use64bitall="$undef"
|
---|
56 |
|
---|
57 | case "`uname -r`" in
|
---|
58 | [1-5]*|6.[01])
|
---|
59 | cat <<END >&2
|
---|
60 | Sorry, can't do use64bitint either. Try upgrading to IRIX 6.2 or later.
|
---|
61 | END
|
---|
62 | use64bitint="$undef"
|
---|
63 | ;;
|
---|
64 | *) use64bitint="$define"
|
---|
65 | ;;
|
---|
66 | esac
|
---|
67 | ;;
|
---|
68 | esac
|
---|
69 | ;;
|
---|
70 | esac
|
---|
71 |
|
---|
72 | # Until we figure out what to be probed for in Configure (ditto for hpux.sh)
|
---|
73 | case "$usemorebits" in # Need to expand this now, then.
|
---|
74 | $define|true|[yY]*)
|
---|
75 | case "`uname -r`" in
|
---|
76 | [1-5]*|6.[01])
|
---|
77 | uselongdouble="$define"
|
---|
78 | ;;
|
---|
79 | *) use64bitint="$define" uselongdouble="$define" ;;
|
---|
80 | esac
|
---|
81 | esac
|
---|
82 |
|
---|
83 | # Let's assume we want to use 'cc -n32' by default, unless the
|
---|
84 | # necessary libm is missing (which has happened at least twice)
|
---|
85 | case "$cc" in
|
---|
86 | '') case "$use64bitall" in
|
---|
87 | "$define"|true|[yY]*) test -f /usr/lib64/libm.so && cc='cc -64' ;;
|
---|
88 | *) test -f /usr/lib32/libm.so && cc='cc -n32' ;;
|
---|
89 | esac
|
---|
90 | esac
|
---|
91 |
|
---|
92 | case "$use64bitint" in
|
---|
93 | "$define"|true|[yY]*) ;;
|
---|
94 | *) d_casti32="$undef" ;;
|
---|
95 | esac
|
---|
96 |
|
---|
97 | cc=${cc:-cc}
|
---|
98 | cat=${cat:-cat}
|
---|
99 |
|
---|
100 | $cat > UU/cc.cbu <<'EOCCBU'
|
---|
101 | # This script UU/cc.cbu will get 'called-back' by Configure after it
|
---|
102 | # has prompted the user for the C compiler to use.
|
---|
103 |
|
---|
104 | case "$cc" in
|
---|
105 | *gcc*) ;;
|
---|
106 | *) ccversion=`cc -version 2>&1` ;;
|
---|
107 | esac
|
---|
108 |
|
---|
109 | # Check for which compiler we're using
|
---|
110 |
|
---|
111 | case "$cc" in
|
---|
112 | *"cc -n32"*)
|
---|
113 | test -z "$ldlibpthname" && ldlibpthname='LD_LIBRARYN32_PATH'
|
---|
114 |
|
---|
115 | # If a library is requested to link against, make sure the
|
---|
116 | # objects in the library are of the same ABI we are compiling
|
---|
117 | # against. Albert Chin-A-Young <china@thewrittenword.com>
|
---|
118 |
|
---|
119 | # In other words, you no longer have to worry regarding having old
|
---|
120 | # library paths (/usr/lib) in the searchpath for -n32 or -64; thank
|
---|
121 | # you very much, Albert! Now if we could just get more module authors
|
---|
122 | # to use something like this... - Allen
|
---|
123 |
|
---|
124 | libscheck='case "$xxx" in
|
---|
125 | *.a) /bin/ar p $xxx `/bin/ar t $xxx | sed q` >$$.o;
|
---|
126 | case "`/usr/bin/file $$.o`" in
|
---|
127 | *N32*) rm -f $$.o ;;
|
---|
128 | *) rm -f $$.o; xxx=/no/n32$xxx ;;
|
---|
129 | esac ;;
|
---|
130 | *) case "`/usr/bin/file $xxx`" in
|
---|
131 | *N32*) ;;
|
---|
132 | *) xxx=/no/n32$xxx ;;
|
---|
133 | esac ;;
|
---|
134 | esac'
|
---|
135 |
|
---|
136 | # NOTE: -L/usr/lib32 -L/lib32 are automatically selected by the linker
|
---|
137 | test -z "$ldflags" && ldflags=' -L/usr/local/lib32 -L/usr/local/lib'
|
---|
138 | cccdlflags=' '
|
---|
139 | # From: David Billinghurst <David.Billinghurst@riotinto.com.au>
|
---|
140 | # If you get complaints about so_locations then change the following
|
---|
141 | # line to something like:
|
---|
142 | # lddlflags="-n32 -shared -check_registry /usr/lib32/so_locations"
|
---|
143 | test -z "$lddlflags" && lddlflags="-n32 -shared"
|
---|
144 | test -z "$libc" && libc='/usr/lib32/libc.so'
|
---|
145 | test -z "$plibpth" && plibpth='/usr/lib32 /lib32 /usr/ccs/lib'
|
---|
146 |
|
---|
147 | # PERL_MALLOC_WRAP gives false alarms ("panic: memory wrap") in IRIX
|
---|
148 | # -n32 mode, resulting in perl compiles never getting further than
|
---|
149 | # miniperl. I am not sure whether it actually does any good in -32 or
|
---|
150 | # -64 mode, especially the latter, but it does not give false
|
---|
151 | # alarms (in testing). -Allen
|
---|
152 |
|
---|
153 | usemallocwrap=${usemallocwrap:-false}
|
---|
154 | ;;
|
---|
155 | *"cc -64"*)
|
---|
156 | case "`uname -s`" in
|
---|
157 | IRIX)
|
---|
158 | $cat >&4 <<EOM
|
---|
159 | You cannot use cc -64 or -Duse64bitall in 32-bit IRIX, sorry.
|
---|
160 | Cannot continue, aborting.
|
---|
161 | EOM
|
---|
162 | exit 1
|
---|
163 | ;;
|
---|
164 | esac
|
---|
165 | test -z "$ldlibpthname" && ldlibpthname='LD_LIBRARY64_PATH'
|
---|
166 | test -z "$use64bitall" && use64bitall="$define"
|
---|
167 | test -z "$use64bitint" && use64bitint="$define"
|
---|
168 | loclibpth="$loclibpth /usr/lib64"
|
---|
169 | libscheck='case "`/usr/bin/file $xxx`" in
|
---|
170 | *64-bit*) ;;
|
---|
171 | *) xxx=/no/64-bit$xxx ;;
|
---|
172 | esac'
|
---|
173 | # NOTE: -L/usr/lib64 -L/lib64 are automatically selected by the linker
|
---|
174 | test -z "$ldflags" && ldflags=' -L/usr/local/lib64 -L/usr/local/lib'
|
---|
175 | cccdlflags=' '
|
---|
176 | test -z "$archname64" && archname64='64all'
|
---|
177 | # From: David Billinghurst <David.Billinghurst@riotinto.com.au>
|
---|
178 | # If you get complaints about so_locations then change the following
|
---|
179 | # line to something like:
|
---|
180 | # lddlflags="-64 -shared -check_registry /usr/lib64/so_locations"
|
---|
181 | test -z lddlflags="-64 -shared"
|
---|
182 | test -z "$libc" && libc='/usr/lib64/libc.so'
|
---|
183 | test -z "$plibpth" && plibpth='/usr/lib64 /lib64 /usr/ccs/lib'
|
---|
184 | ;;
|
---|
185 | *gcc*)
|
---|
186 | ccflags="$ccflags -D_BSD_TYPES -D_BSD_TIME"
|
---|
187 | test -z "$optimize" && optimize="-O3"
|
---|
188 | usenm='undef'
|
---|
189 | # It seems gcc can build Irix shlibs, but of course it needs
|
---|
190 | # -shared. Otherwise you get link errors looking for main().
|
---|
191 | lddlflags="$lddlflags -shared"
|
---|
192 | case "`uname -s`" in
|
---|
193 | # Without the -mabi=64 gcc in 64-bit IRIX has problems passing
|
---|
194 | # and returning small structures. This affects inet_*() and semctl().
|
---|
195 | # See http://reality.sgi.com/ariel/freeware/gcc-2.8.1-notes.html
|
---|
196 | # for more information. Reported by Lionel Cons <lionel.cons@cern.ch>.
|
---|
197 | IRIX64) ccflags="$ccflags -mabi=64"
|
---|
198 | ldflags="$ldflags -mabi=64 -L/usr/lib64"
|
---|
199 | lddlflags="$lddlflags -mabi=64"
|
---|
200 | ;;
|
---|
201 | *) ccflags="$ccflags -DIRIX32_SEMUN_BROKEN_BY_GCC"
|
---|
202 | # XXX Note: It is possible that turning off usemallocwrap is
|
---|
203 | # needed here; insufficient data! - Allen
|
---|
204 | ;;
|
---|
205 | esac
|
---|
206 | ;;
|
---|
207 | *)
|
---|
208 | # this is needed to force the old-32 paths
|
---|
209 | # since the system default can be changed.
|
---|
210 | ccflags="$ccflags -32 -D_BSD_TYPES -D_BSD_TIME -Olimit 3100"
|
---|
211 | optimize='-O'
|
---|
212 | ;;
|
---|
213 | esac
|
---|
214 |
|
---|
215 | # Settings common to both native compiler modes.
|
---|
216 | case "$cc" in
|
---|
217 | *"cc -n32"*|*"cc -64"*)
|
---|
218 | test -z "$ld" && ld=$cc
|
---|
219 |
|
---|
220 | # perl's malloc can return improperly aligned buffer
|
---|
221 | # which (under 5.6.0RC1) leads into really bizarre bus errors
|
---|
222 | # and freak test failures (lib/safe1 #18, for example),
|
---|
223 | # even more so with -Duse64bitall: for example lib/io_linenumtb.
|
---|
224 | # fails under the harness but succeeds when run separately,
|
---|
225 | # under make test pragma/warnings #98 fails, and lib/io_dir
|
---|
226 | # apparently coredumps (the last two don't happen under
|
---|
227 | # the harness. Helmut Jarausch is seeing bus errors from
|
---|
228 | # miniperl, as was Scott Henry with snapshots from just before
|
---|
229 | # the RC1. --jhi
|
---|
230 | usemymalloc='undef'
|
---|
231 |
|
---|
232 | # Was at the first of the line - Allen
|
---|
233 | #malloc_cflags='ccflags="-DSTRICT_ALIGNMENT $ccflags"'
|
---|
234 |
|
---|
235 | nm_opt="$nm_opt -p"
|
---|
236 | nm_so_opt="$nm_so_opt -p"
|
---|
237 |
|
---|
238 | # Warnings to turn off because the source code hasn't
|
---|
239 | # been cleaned up enough yet to satisfy the IRIX cc.
|
---|
240 | # 1184: "=" is used where where "==" may have been intended.
|
---|
241 | # 1552: The variable "foobar" is set but never used.
|
---|
242 | woff=1184,1552
|
---|
243 |
|
---|
244 | # Perl 5.004_57 introduced new qsort code into pp_ctl.c that
|
---|
245 | # makes IRIX cc prior to 7.2.1 to emit bad code.
|
---|
246 | # so some serious hackery follows to set pp_ctl flags correctly.
|
---|
247 |
|
---|
248 | # Check for which version of the compiler we're running
|
---|
249 | case "`$cc -version 2>&1`" in
|
---|
250 | *7.0*) # Mongoose 7.0
|
---|
251 | ccflags="$ccflags -D_BSD_TYPES -D_BSD_TIME -woff $woff -OPT:Olimit=0"
|
---|
252 | optimize='none'
|
---|
253 | ;;
|
---|
254 | *7.1*|*7.2|*7.20) # Mongoose 7.1+
|
---|
255 | ccflags="$ccflags -D_BSD_TYPES -D_BSD_TIME -woff $woff"
|
---|
256 | case "$optimize" in
|
---|
257 | '') optimize='-O3 -OPT:Olimit=0' ;;
|
---|
258 | '-O') optimize='-O3 -OPT:Olimit=0' ;;
|
---|
259 | *) ;;
|
---|
260 | esac
|
---|
261 |
|
---|
262 | # This is a temporary fix for 5.005+.
|
---|
263 | # See hints/README.hints, especially the section
|
---|
264 | # =head2 Propagating variables to config.sh
|
---|
265 |
|
---|
266 | # Note the part about case statements not working without
|
---|
267 | # weirdness like the below echo statement... and, since
|
---|
268 | # we're in a callback unit, it's to config.sh, not UU/config.sh
|
---|
269 | # - Allen
|
---|
270 |
|
---|
271 |
|
---|
272 | pp_ctl_cflags="$pp_ctl_flags optimize=\"$optimize -O1\""
|
---|
273 | echo "pp_ctl_cflags=\"$pp_ctl_flags optimize=\\\"\$optimize -O1\\\"\"" >> config.sh
|
---|
274 | ;;
|
---|
275 |
|
---|
276 |
|
---|
277 |
|
---|
278 | # XXX What is space=ON doing in here? Could someone ask Scott Henry? - Allen
|
---|
279 |
|
---|
280 | *7.*) # Mongoose 7.2.1+
|
---|
281 | ccflags="$ccflags -D_BSD_TYPES -D_BSD_TIME -woff $woff"
|
---|
282 | case "$optimize" in
|
---|
283 | '') optimize='-O3 -OPT:Olimit=0:space=ON' ;;
|
---|
284 | '-O') optimize='-O3 -OPT:Olimit=0:space=ON' ;;
|
---|
285 | *) ;;
|
---|
286 | esac
|
---|
287 | ;;
|
---|
288 | *6.2*) # Ragnarok 6.2
|
---|
289 | ccflags="$ccflags -D_BSD_TYPES -D_BSD_TIME -woff $woff"
|
---|
290 | optimize='none'
|
---|
291 | ;;
|
---|
292 | *) # Be safe and not optimize
|
---|
293 | ccflags="$ccflags -D_BSD_TYPES -D_BSD_TIME -woff $woff"
|
---|
294 | optimize='none'
|
---|
295 | ;;
|
---|
296 | esac
|
---|
297 |
|
---|
298 | # this is to accommodate the 'modules' capability of the
|
---|
299 | # 7.2 MIPSPro compilers, which allows for the compilers to be installed
|
---|
300 | # in a nondefault location. Almost everything works as expected, but
|
---|
301 | # /usr/include isn't caught properly. Hence see the /usr/include/pthread.h
|
---|
302 | # change below to include TOOLROOT (a modules environment variable),
|
---|
303 | # and the following code. Additional
|
---|
304 | # code to accommodate the 'modules' environment should probably be added
|
---|
305 | # here if possible, or be inserted as a ${TOOLROOT} reference before
|
---|
306 | # absolute paths (again, see the pthread.h change below).
|
---|
307 | # -- krishna@sgi.com, 8/23/98
|
---|
308 |
|
---|
309 | if [ "X${TOOLROOT}" != "X" ]; then
|
---|
310 | # we cant set cppflags because it gets overwritten
|
---|
311 | # we dont actually need $TOOLROOT/usr/include on the cc line cuz the
|
---|
312 | # modules functionality already includes it but
|
---|
313 | # XXX - how do I change cppflags in the hints file?
|
---|
314 | ccflags="$ccflags -I${TOOLROOT}/usr/include"
|
---|
315 | usrinc="${TOOLROOT}/usr/include"
|
---|
316 | fi
|
---|
317 |
|
---|
318 | ;;
|
---|
319 | esac
|
---|
320 |
|
---|
321 | # workaround for an optimizer bug
|
---|
322 | # Made to work via UU/config.sh thing (or, rather, config.sh, since we're in
|
---|
323 | # a callback) from README.hints, plus further stuff; doesn't handle -g still,
|
---|
324 | # unfortunately - Allen
|
---|
325 | case "`$cc -version 2>&1`" in
|
---|
326 | *7.2.*)
|
---|
327 | test -z "$op_cflags" && echo "op_cflags=\"optimize=\\\"\$optimize -O1\\\"\"" >> config.sh
|
---|
328 | test -z "$op_cflags" && op_cflags="optimize=\"\$optimize -O1\""
|
---|
329 | test -z "$opmini_cflags" && echo "opmini_cflags=\"optimize=\\\"\$optimize -O1\\\"\"" >> config.sh
|
---|
330 | test -z "$opmini_cflags" && opmini_cflags="optimize=\"\$optimize -O1\""
|
---|
331 | ;;
|
---|
332 | *7.3.1.*)
|
---|
333 | test -z "$op_cflags" && echo "op_cflags=\"optimize=\\\"\$optimize -O2\\\"\"" >> config.sh
|
---|
334 | test -z "$op_cflags" && op_cflags="$op_cflags optimize=\"\$optimize -O2\""
|
---|
335 | test -z "$opmini_cflags" && echo "opmini_cflags=\"optimize=\\\"\$optimize -O2\\\"\"" >> config.sh
|
---|
336 | test -z "$opmini_cflags" && opmini_cflags="optimize=\"\$optimize -O2\""
|
---|
337 | ;;
|
---|
338 | esac
|
---|
339 |
|
---|
340 | EOCCBU
|
---|
341 |
|
---|
342 | # End of cc.cbu callback unit. - Allen
|
---|
343 |
|
---|
344 | # We don't want these libraries.
|
---|
345 | # Socket networking is in libc, these are not installed by default,
|
---|
346 | # and just slow perl down. (scotth@sgi.com)
|
---|
347 | # librt contains nothing we need (some places need it for Time::HiRes) --jhi
|
---|
348 | set `echo X "$libswanted "|sed -e 's/ socket / /' -e 's/ nsl / /' -e 's/ dl / /' -e 's/ rt / /'`
|
---|
349 | shift
|
---|
350 | libswanted="$*"
|
---|
351 |
|
---|
352 | # I have conflicting reports about the sun, crypt, bsd, and PW
|
---|
353 | # libraries on Irix 6.2.
|
---|
354 | #
|
---|
355 | # One user reports:
|
---|
356 | # Don't need sun crypt bsd PW under 6.2. You *may* need to link
|
---|
357 | # with these if you want to run perl built under 6.2 on a 5.3 machine
|
---|
358 | # (I haven't checked)
|
---|
359 | #
|
---|
360 | # Another user reported that if he included those libraries, a large number
|
---|
361 | # of the tests failed (approx. 20-25) and he would get a core dump. To
|
---|
362 | # make things worse, test results were inconsistent, i.e., some of the
|
---|
363 | # tests would pass some times and fail at other times.
|
---|
364 | # The safest thing to do seems to be to eliminate them.
|
---|
365 | #
|
---|
366 | # Actually, the only libs that you want are '-lm'. Everything else
|
---|
367 | # you need is in libc. You do also need '-lbsd' if you choose not
|
---|
368 | # to use the -D_BSD_* defines. Note that as of 6.2 the only
|
---|
369 | # difference between '-lmalloc' and '-lc' malloc is the debugging
|
---|
370 | # and control calls, which aren't used by perl. -- scotth@sgi.com
|
---|
371 |
|
---|
372 | set `echo X "$libswanted "|sed -e 's/ sun / /' -e 's/ crypt / /' -e 's/ bsd / /' -e 's/ PW / /' -e 's/ malloc / /'`
|
---|
373 | shift
|
---|
374 | libswanted="$*"
|
---|
375 |
|
---|
376 | # libbind.{so|a} would be from a BIND/named installation - IRIX 6.5.* has
|
---|
377 | # pretty much everything that would be useful in libbind in libc, including
|
---|
378 | # accessing a local caching server (nsd) that will also look in /etc/hosts,
|
---|
379 | # NIS (yuck!), etcetera. libbind also doesn't have the _r (thread-safe
|
---|
380 | # reentrant) functions.
|
---|
381 | # - Allen <easmith@beatrice.rutgers.edu>
|
---|
382 |
|
---|
383 | case "`uname -r`" in
|
---|
384 | 6.5)
|
---|
385 | set `echo X "$libswanted "|sed -e 's/ bind / /'`
|
---|
386 | shift
|
---|
387 | libswanted="$*"
|
---|
388 | ;;
|
---|
389 | esac
|
---|
390 |
|
---|
391 | # Don't groan about unused libraries.
|
---|
392 | case "$ldflags" in
|
---|
393 | *-Wl,-woff,84*) ;;
|
---|
394 | *) ldflags="$ldflags -Wl,-woff,84" ;;
|
---|
395 | esac
|
---|
396 |
|
---|
397 | # Irix 6.5.6 seems to have a broken header <sys/mode.h>
|
---|
398 | # don't include that (it doesn't contain S_IFMT, S_IFREG, et al)
|
---|
399 |
|
---|
400 | i_sysmode="$undef"
|
---|
401 |
|
---|
402 | $cat > UU/usethreads.cbu <<'EOCBU'
|
---|
403 | # This script UU/usethreads.cbu will get 'called-back' by Configure
|
---|
404 | # after it has prompted the user for whether to use threads.
|
---|
405 | case "$usethreads" in
|
---|
406 | $define|true|[yY]*)
|
---|
407 | if test ! -f ${TOOLROOT}/usr/include/pthread.h -o ! -f /usr/lib/libpthread.so; then
|
---|
408 | case "`uname -r`" in
|
---|
409 | [1-5].*|6.[01])
|
---|
410 | cat >&4 <<EOM
|
---|
411 | IRIX `uname -r` does not support POSIX threads.
|
---|
412 | You should upgrade to at least IRIX 6.2 with pthread patches.
|
---|
413 | EOM
|
---|
414 | ;;
|
---|
415 | 6.2)
|
---|
416 | cat >&4 <<EOM
|
---|
417 | IRIX 6.2 can have the POSIX threads.
|
---|
418 | However, the following IRIX patches (or their replacements) MUST be installed:
|
---|
419 | 1404 Irix 6.2 Posix 1003.1b man pages
|
---|
420 | 1645 IRIX 6.2 & 6.3 POSIX header file updates
|
---|
421 | 2000 Irix 6.2 Posix 1003.1b support modules
|
---|
422 | 2254 Pthread library fixes
|
---|
423 | 2401 6.2 all platform kernel rollup
|
---|
424 | IMPORTANT:
|
---|
425 | Without patch 2401, a kernel bug in IRIX 6.2 will
|
---|
426 | cause your machine to panic and crash when running
|
---|
427 | threaded perl. IRIX 6.3 and up should be OK.
|
---|
428 | EOM
|
---|
429 | ;;
|
---|
430 | [67].*)
|
---|
431 | cat >&4 <<EOM
|
---|
432 | IRIX `uname -r` should have the POSIX threads.
|
---|
433 | But, somehow, you do not seem to have them installed.
|
---|
434 | EOM
|
---|
435 | ;;
|
---|
436 | esac
|
---|
437 | cat >&4 <<EOM
|
---|
438 | Cannot continue, aborting.
|
---|
439 | EOM
|
---|
440 | exit 1
|
---|
441 | fi
|
---|
442 | set `echo X "$libswanted "| sed -e 's/ c / pthread /'`
|
---|
443 | shift
|
---|
444 | libswanted="$*"
|
---|
445 |
|
---|
446 | usemymalloc='n'
|
---|
447 |
|
---|
448 | # These are hidden behind a _POSIX1C ifdef that would
|
---|
449 | # require including <pthread.h> for the Configure hasproto
|
---|
450 | # to see these.
|
---|
451 |
|
---|
452 | # d_asctime_r_proto="$define"
|
---|
453 | # d_ctime_r_proto="$define"
|
---|
454 | # d_gmtime_r_proto="$define"
|
---|
455 | # d_localtime_r_proto="$define"
|
---|
456 |
|
---|
457 | # Safer just to go ahead and include it, for other ifdefs like them
|
---|
458 | # (there are a lot, such as in netdb.h). - Allen
|
---|
459 | ccflags="$ccflags -DPTHREAD_H_FIRST"
|
---|
460 |
|
---|
461 | pthread_h_first="$define"
|
---|
462 | echo "pthread_h_first='define'" >> config.sh
|
---|
463 |
|
---|
464 | ;;
|
---|
465 |
|
---|
466 | esac
|
---|
467 | EOCBU
|
---|
468 |
|
---|
469 | # The -n32 makes off_t to be 8 bytes, so we should have largefileness.
|
---|
470 |
|
---|
471 | $cat > UU/use64bitint.cbu <<'EOCBU'
|
---|
472 | # This script UU/use64bitint.cbu will get 'called-back' by Configure
|
---|
473 | # after it has prompted the user for whether to use 64 bit integers.
|
---|
474 |
|
---|
475 | case "$use64bitint" in
|
---|
476 | $define|true|[yY]*)
|
---|
477 | case "`uname -r`" in
|
---|
478 | [1-5]*|6.[01])
|
---|
479 | cat >&4 <<EOM
|
---|
480 | IRIX `uname -r` does not support 64-bit types.
|
---|
481 | You should upgrade to at least IRIX 6.2.
|
---|
482 | Cannot continue, aborting.
|
---|
483 | EOM
|
---|
484 | exit 1
|
---|
485 | ;;
|
---|
486 | esac
|
---|
487 | usemymalloc="$undef"
|
---|
488 | ;;
|
---|
489 | *) d_casti32="$undef" ;;
|
---|
490 | esac
|
---|
491 |
|
---|
492 | EOCBU
|
---|
493 |
|
---|
494 | $cat > UU/use64bitall.cbu <<'EOCBU'
|
---|
495 | # This script UU/use64bitall.cbu will get 'called-back' by Configure
|
---|
496 | # after it has prompted the user for whether to be maximally 64 bitty.
|
---|
497 |
|
---|
498 | case "$use64bitall" in
|
---|
499 | $define|true|[yY]*)
|
---|
500 | case "$cc" in
|
---|
501 | *-n32*|*-32*)
|
---|
502 | cat >&4 <<EOM
|
---|
503 | You cannot use a non-64 bit cc for -Duse64bitall, sorry.
|
---|
504 | Cannot continue, aborting.
|
---|
505 | EOM
|
---|
506 | exit 1
|
---|
507 | ;;
|
---|
508 | esac
|
---|
509 | ;;
|
---|
510 | esac
|
---|
511 |
|
---|
512 | EOCBU
|
---|
513 |
|
---|
514 | $cat > UU/uselongdouble.cbu <<'EOCBU'
|
---|
515 | # This script UU/uselongdouble.cbu will get 'called-back' by Configure
|
---|
516 | # after it has prompted the user for whether to use long doubles.
|
---|
517 |
|
---|
518 | # This script is designed to test IRIX (and other machines, once it's put into
|
---|
519 | # Configure) for a bug in which they fail to round correctly when using
|
---|
520 | # sprintf/printf/etcetera on a long double with precision specified (%.0Lf or
|
---|
521 | # whatever). Sometimes, this only happens when the number in question is
|
---|
522 | # between 1 and -1, weirdly enough. - Allen
|
---|
523 |
|
---|
524 | case "$uselongdouble" in
|
---|
525 | $define|true|[yY]*)
|
---|
526 |
|
---|
527 | case "$d_PRIfldbl" in
|
---|
528 | $define|true|[yY]*)
|
---|
529 |
|
---|
530 | echo " " >try.c
|
---|
531 | $cat >>try.c <<EOP
|
---|
532 | #include <stdio.h>
|
---|
533 |
|
---|
534 | #define sPRIfldbl $sPRIfldbl
|
---|
535 |
|
---|
536 | #define I_STDLIB $i_stdlib
|
---|
537 | #ifdef I_STDLIB
|
---|
538 | #include <stdlib.h>
|
---|
539 | #endif
|
---|
540 |
|
---|
541 | int main()
|
---|
542 | {
|
---|
543 | char buf1[64];
|
---|
544 | char buf2[64];
|
---|
545 | buf1[63] = '\0';
|
---|
546 | buf2[63] = '\0';
|
---|
547 |
|
---|
548 | (void)sprintf(buf1,"%.0"sPRIfldbl,(long double)0.6L);
|
---|
549 | (void)sprintf(buf2,"%.0f",(double)0.6);
|
---|
550 | if (strcmp(buf1,buf2)) {
|
---|
551 | exit(1);
|
---|
552 | }
|
---|
553 | (void)sprintf(buf1,"%.0"sPRIfldbl,(long double)-0.6L);
|
---|
554 | (void)sprintf(buf2,"%.0f",(double)-0.6);
|
---|
555 | if (strcmp(buf1,buf2)) {
|
---|
556 | exit(1);
|
---|
557 | } else {
|
---|
558 | exit(0);
|
---|
559 | }
|
---|
560 | }
|
---|
561 |
|
---|
562 | EOP
|
---|
563 |
|
---|
564 | set try
|
---|
565 | if eval $compile && $run ./try; then
|
---|
566 | rm -f try try.* >/dev/null
|
---|
567 | else
|
---|
568 | rm -f try try.* core a.out >/dev/null
|
---|
569 | ccflags="$ccflags -DHAS_LDBL_SPRINTF_BUG"
|
---|
570 | cppflags="$cppflags -DHAS_LDBL_SPRINTF_BUG"
|
---|
571 |
|
---|
572 | echo " " >try.c
|
---|
573 | $cat >>try.c <<EOP
|
---|
574 | #include <stdio.h>
|
---|
575 |
|
---|
576 | #define sPRIfldbl $sPRIfldbl
|
---|
577 |
|
---|
578 | #define I_STDLIB $i_stdlib
|
---|
579 | #ifdef I_STDLIB
|
---|
580 | #include <stdlib.h>
|
---|
581 | #endif
|
---|
582 |
|
---|
583 | int main()
|
---|
584 | {
|
---|
585 | char buf1[64];
|
---|
586 | char buf2[64];
|
---|
587 | buf1[63] = '\0';
|
---|
588 | buf2[63] = '\0';
|
---|
589 |
|
---|
590 | (void)sprintf(buf1,"%.0"sPRIfldbl,(long double)1.6L);
|
---|
591 | (void)sprintf(buf2,"%.0f",(double)1.6);
|
---|
592 | if (strcmp(buf1,buf2)) {
|
---|
593 | exit(1);
|
---|
594 | }
|
---|
595 | (void)sprintf(buf1,"%.0"sPRIfldbl,(long double)-1.6L);
|
---|
596 | (void)sprintf(buf2,"%.0f",(double)-1.6);
|
---|
597 | if (strcmp(buf1,buf2)) {
|
---|
598 | exit(1);
|
---|
599 | } else {
|
---|
600 | exit(0);
|
---|
601 | }
|
---|
602 | }
|
---|
603 |
|
---|
604 | EOP
|
---|
605 |
|
---|
606 | set try
|
---|
607 | if eval $compile && $run ./try; then
|
---|
608 | rm -f try try.c >/dev/null
|
---|
609 | ccflags="$ccflags -DHAS_LDBL_SPRINTF_BUG_LESS1"
|
---|
610 | cppflags="$cppflags -DHAS_LDBL_SPRINTF_BUG_LESS1"
|
---|
611 | else
|
---|
612 | rm -f try try.c core try.o a.out >/dev/null
|
---|
613 | fi
|
---|
614 | fi
|
---|
615 | ;;
|
---|
616 | *) # Can't tell!
|
---|
617 | ccflags="$ccflags -DHAS_LDBL_SPRINTF_BUG"
|
---|
618 | cppflags="$cppflags -DHAS_LDBL_SPRINTF_BUG"
|
---|
619 | ;;
|
---|
620 | esac
|
---|
621 |
|
---|
622 | # end of case statement for how to print ldbl with 'f'
|
---|
623 | ;;
|
---|
624 | *) ;;
|
---|
625 | esac
|
---|
626 |
|
---|
627 | # end of case statement for whether to do long doubles
|
---|
628 |
|
---|
629 | EOCBU
|
---|
630 |
|
---|
631 | # Helmut Jarausch reports that Perl's malloc is rather unusable
|
---|
632 | # with IRIX, and SGI confirms the problem.
|
---|
633 | usemymalloc=${usemymalloc:-false}
|
---|