3 # original from Krishna Sethuraman, krishna@sgi.com
5 # Modified Mon Jul 22 14:52:25 EDT 1996
6 # Andy Dougherty <doughera@lafcol.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
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
15 # - warnings turned off (-n32 messages):
16 # 1184 - "=" is used where where "==" may have been intended
17 # 1552 - variable "foo" set but never used
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
22 # Threaded by Jarkko Hietaniemi <jhi@iki.fi> on 11/18/97
23 # - POSIX threads knowledge by IRIX version
25 # gcc-enabled by Kurt Starsinic <kstar@isinet.com> on 3/24/1998
27 # 64-bitty by Jarkko Hietaniemi on 9/1998
29 # Use sh Configure -Dcc='cc -n32' to try compiling with -n32.
30 # or -Dcc='cc -n32 -mips3' (or -mips4) to force (non)portability
31 # Don't bother with -n32 unless you have the 7.1 or later compilers.
32 # But there's no quick and light-weight way to check in 6.2.
34 # NOTE: some IRIX cc versions, e.g. 7.3.1.1m (try cc -version) have
35 # been known to have issues (coredumps) when compiling perl.c.
36 # If you've used -OPT:fast_io=ON and this happens, try removing it.
37 # If that fails, or you didn't use that, then try adjusting other
38 # optimization options (-LNO, -INLINE, -O3 to -O2, etcetera).
39 # The compiler bug has been reported to SGI.
40 # -- Allen Smith <easmith@beatrice.rutgers.edu>
42 # Let's assume we want to use 'cc -n32' by default, unless the
43 # necessary libm is missing (which has happened at least twice)
45 '') case "$use64bitall" in
46 "$define"|true|[yY]*) test -f /usr/lib64/libm.so && cc='cc -64' ;;
47 *) test -f /usr/lib32/libm.so && cc='cc -n32' ;;
55 *) ccversion=`cc -version 2>&1` ;;
58 case "$use64bitint" in
63 IRIX `uname -r` does not support 64-bit types.
64 You should upgrade to at least IRIX 6.2.
65 Cannot continue, aborting.
73 case "$use64bitall" in
78 You cannot use -Duse64bitall in 32-bit IRIX, sorry.
80 Cannot continue, aborting.
88 # Check for which compiler we're using
93 # If a library is requested to link against, make sure the
94 # objects in the library are of the same ABI we are compiling
95 # against. Albert Chin-A-Young <china@thewrittenword.com>
96 libscheck='case "$xxx" in
97 *.a) /bin/ar p $xxx `/bin/ar t $xxx | sed q` >$$.o;
98 case "`/usr/bin/file $$.o`" in
100 *) rm -f $$.o; xxx=/no/n32$xxx ;;
102 *) case "`/usr/bin/file $xxx`" in
104 *) xxx=/no/n32$xxx ;;
108 # NOTE: -L/usr/lib32 -L/lib32 are automatically selected by the linker
109 ldflags=' -L/usr/local/lib32 -L/usr/local/lib'
111 # From: David Billinghurst <David.Billinghurst@riotinto.com.au>
112 # If you get complaints about so_locations then change the following
113 # line to something like:
114 # lddlflags="-n32 -shared -check_registry /usr/lib32/so_locations"
115 lddlflags="-n32 -shared"
116 libc='/usr/lib32/libc.so'
117 plibpth='/usr/lib32 /lib32 /usr/ccs/lib'
121 loclibpth="$loclibpth /usr/lib64"
122 libscheck='case "`/usr/bin/file $xxx`" in
124 *) xxx=/no/64-bit$xxx ;;
126 # NOTE: -L/usr/lib64 -L/lib64 are automatically selected by the linker
127 ldflags=' -L/usr/local/lib64 -L/usr/local/lib'
129 # From: David Billinghurst <David.Billinghurst@riotinto.com.au>
130 # If you get complaints about so_locations then change the following
131 # line to something like:
132 # lddlflags="-64 -shared -check_registry /usr/lib64/so_locations"
133 lddlflags="-64 -shared"
134 libc='/usr/lib64/libc.so'
135 plibpth='/usr/lib64 /lib64 /usr/ccs/lib'
138 ccflags="$ccflags -D_BSD_TYPES -D_BSD_TIME -D_POSIX_C_SOURCE"
142 # Without the -mabi=64 gcc in 64-bit IRIX has problems passing
143 # and returning small structures. This affects inet_*() and semctl().
144 # See http://reality.sgi.com/ariel/freeware/gcc-2.8.1-notes.html
145 # for more information. Reported by Lionel Cons <lionel.cons@cern.ch>.
146 IRIX64) ccflags="$ccflags -mabi=64"
147 ldflags="$ldflags -mabi=64 -L/usr/lib64"
148 lddlflags="$lddlflags -mabi=64"
150 *) ccflags="$ccflags -DIRIX32_SEMUN_BROKEN_BY_GCC"
155 # this is needed to force the old-32 paths
156 # since the system default can be changed.
157 ccflags="$ccflags -32 -D_BSD_TYPES -D_BSD_TIME -Olimit 3100"
162 # Settings common to both native compiler modes.
164 *"cc -n32"*|*"cc -64"*)
167 # perl's malloc can return improperly aligned buffer
168 # which (under 5.6.0RC1) leads into really bizarre bus errors
169 # and freak test failures (lib/safe1 #18, for example),
170 # even more so with -Duse64bitall: for example lib/io_linenumtb.
171 # fails under the harness but succeeds when run separately,
172 # under make test pragma/warnings #98 fails, and lib/io_dir
173 # apparently coredumps (the last two don't happen under
174 # the harness. Helmut Jarausch is seeing bus errors from
175 # miniperl, as was Scott Henry with snapshots from just before
178 #malloc_cflags='ccflags="-DSTRICT_ALIGNMENT $ccflags"'
183 # Warnings to turn off because the source code hasn't
184 # been cleaned up enough yet to satisfy the IRIX cc.
185 # 1184: "=" is used where where "==" may have been intended.
186 # 1552: The variable "foobar" is set but never used.
189 # Perl 5.004_57 introduced new qsort code into pp_ctl.c that
190 # makes IRIX cc prior to 7.2.1 to emit bad code.
191 # so some serious hackery follows to set pp_ctl flags correctly.
193 # Check for which version of the compiler we're running
194 case "`$cc -version 2>&1`" in
195 *7.0*) # Mongoose 7.0
196 ccflags="$ccflags -D_BSD_TYPES -D_BSD_TIME -woff $woff -OPT:Olimit=0"
199 *7.1*|*7.2|*7.20) # Mongoose 7.1+
200 ccflags="$ccflags -D_BSD_TYPES -D_BSD_TIME -woff $woff -OPT:Olimit=0"
202 # This is a temporary fix for 5.005.
203 # Leave pp_ctl_cflags line at left margin for Configure. See
204 # hints/README.hints, especially the section
205 # =head2 Propagating variables to config.sh
206 pp_ctl_cflags='optimize=-O'
208 *7.*) # Mongoose 7.2.1+
209 ccflags="$ccflags -D_BSD_TYPES -D_BSD_TIME -woff $woff -OPT:Olimit=0:space=ON"
212 *6.2*) # Ragnarok 6.2
213 ccflags="$ccflags -D_BSD_TYPES -D_BSD_TIME -woff $woff"
216 *) # Be safe and not optimize
217 ccflags="$ccflags -D_BSD_TYPES -D_BSD_TIME -woff $woff -OPT:Olimit=0"
222 # this is to accommodate the 'modules' capability of the
223 # 7.2 MIPSPro compilers, which allows for the compilers to be installed
224 # in a nondefault location. Almost everything works as expected, but
225 # /usr/include isn't caught properly. Hence see the /usr/include/pthread.h
226 # change below to include TOOLROOT (a modules environment variable),
227 # and the following code. Additional
228 # code to accommodate the 'modules' environment should probably be added
229 # here if possible, or be inserted as a ${TOOLROOT} reference before
230 # absolute paths (again, see the pthread.h change below).
231 # -- krishna@sgi.com, 8/23/98
233 if [ "X${TOOLROOT}" != "X" ]; then
234 # we cant set cppflags because it gets overwritten
235 # we dont actually need $TOOLROOT/usr/include on the cc line cuz the
236 # modules functionality already includes it but
237 # XXX - how do I change cppflags in the hints file?
238 ccflags="$ccflags -I${TOOLROOT}/usr/include"
239 usrinc="${TOOLROOT}/usr/include"
245 # Don't groan about unused libraries.
246 ldflags="$ldflags -Wl,-woff,84"
248 # workaround for an optimizer bug
249 case "`$cc -version 2>&1`" in
250 *7.2.*) op_cflags='optimize=-O1'; opmini_cflags='optimize=-O1' ;;
251 *7.3.1.*) op_cflags='optimize=-O2'; opmini_cflags='optimize=-O2' ;;
254 # We don't want these libraries.
255 # Socket networking is in libc, these are not installed by default,
256 # and just slow perl down. (scotth@sgi.com)
257 set `echo X "$libswanted "|sed -e 's/ socket / /' -e 's/ nsl / /' -e 's/ dl / /'`
261 # Irix 6.5.6 seems to have a broken header <sys/mode.h>
262 # don't include that (it doesn't contain S_IFMT, S_IFREG, et al)
266 # I have conflicting reports about the sun, crypt, bsd, and PW
267 # libraries on Irix 6.2.
270 # Don't need sun crypt bsd PW under 6.2. You *may* need to link
271 # with these if you want to run perl built under 6.2 on a 5.3 machine
272 # (I haven't checked)
274 # Another user reported that if he included those libraries, a large number
275 # of the tests failed (approx. 20-25) and he would get a core dump. To
276 # make things worse, test results were inconsistent, i.e., some of the
277 # tests would pass some times and fail at other times.
278 # The safest thing to do seems to be to eliminate them.
280 # Actually, the only libs that you want are '-lm'. Everything else
281 # you need is in libc. You do also need '-lbsd' if you choose not
282 # to use the -D_BSD_* defines. Note that as of 6.2 the only
283 # difference between '-lmalloc' and '-lc' malloc is the debugging
284 # and control calls, which aren't used by perl. -- scotth@sgi.com
286 set `echo X "$libswanted "|sed -e 's/ sun / /' -e 's/ crypt / /' -e 's/ bsd / /' -e 's/ PW / /' -e 's/ malloc / /'`
290 cat > UU/usethreads.cbu <<'EOCBU'
291 # This script UU/usethreads.cbu will get 'called-back' by Configure
292 # after it has prompted the user for whether to use threads.
293 case "$usethreads" in
295 if test ! -f ${TOOLROOT}/usr/include/pthread.h -o ! -f /usr/lib/libpthread.so; then
299 IRIX `uname -r` does not support POSIX threads.
300 You should upgrade to at least IRIX 6.2 with pthread patches.
305 IRIX 6.2 can have the POSIX threads.
306 However, the following IRIX patches (or their replacements) MUST be installed:
307 1404 Irix 6.2 Posix 1003.1b man pages
308 1645 IRIX 6.2 & 6.3 POSIX header file updates
309 2000 Irix 6.2 Posix 1003.1b support modules
310 2254 Pthread library fixes
311 2401 6.2 all platform kernel rollup
313 Without patch 2401, a kernel bug in IRIX 6.2 will
314 cause your machine to panic and crash when running
315 threaded perl. IRIX 6.3 and up should be OK.
320 IRIX `uname -r` should have the POSIX threads.
321 But, somehow, you do not seem to have them installed.
326 Cannot continue, aborting.
330 set `echo X "$libswanted "| sed -e 's/ c / pthread /'`
337 # These are hidden behind a _POSIX1C ifdef that would
338 # require including <pthread.h> for the Configure hasproto
340 d_asctime_r_proto="$define"
341 d_ctime_r_proto="$define"
342 d_gmtime_r_proto="$define"
343 d_localtime_r_proto="$define"
348 # The -n32 makes off_t to be 8 bytes, so we should have largefileness.
350 # Until we figure out what to be probe for in Configure (ditto for hpux.sh)
351 case "$usemorebits" in # Need to expand this now, then.
352 $define|true|[yY]*) use64bitint="$define"; uselongdouble="$define" ;;
354 case "$use64bitint" in
355 $define|true|[yY]*) ;;
356 *) d_casti32='undef' ;;
359 # Helmut Jarausch reports that Perl's malloc is rather unusable
360 # with IRIX, and SGI confirms the problem.
361 usemymalloc=${usemymalloc:-false}