applied patch, with tweak suggested by Michael Parker
[p5sagit/p5-mst-13.2.git] / hints / irix_6.sh
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@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
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 #       1116 - non-void function should return a value
17 #       1048 - cast between pointer-to-object and pointer-to-function
18 #       1042 - operand types are incompatible
19
20 # Tweaked by Chip Salzenberg <chip@perl.com> on 5/13/97
21 #    - don't assume 'cc -n32' if the n32 libm.so is missing
22
23 # Threaded by Jarkko Hietaniemi <jhi@iki.fi> on 11/18/97
24 #    - POSIX threads knowledge by IRIX version
25
26 # gcc-enabled by Kurt Starsinic <kstar@isinet.com> on 3/24/1998
27
28 # Use   sh Configure -Dcc='cc -n32' to try compiling with -n32.
29 #     or -Dcc='cc -n32 -mips3' (or -mips4) to force (non)portability
30 # Don't bother with -n32 unless you have the 7.1 or later compilers.
31 #     But there's no quick and light-weight way to check in 6.2.
32
33 # Let's assume we want to use 'cc -n32' by default, unless the
34 # necessary libm is missing (which has happened at least twice)
35 case "$cc" in
36 '')
37     if test -f /usr/lib32/libm.so
38     then
39         cc='cc -n32'
40     fi ;;
41 esac
42
43 # Check for which compiler we're using
44
45 case "$cc" in
46 *"cc -n32"*)
47
48         # Perl 5.004_57 introduced new qsort code into pp_ctl.c that
49         # makes IRIX  cc prior to 7.2.1 to emit bad code.
50         # so some serious hackery follows to set pp_ctl flags correctly.
51
52         # Check for which version of the compiler we're running
53         case "`$cc -version 2>&1`" in
54         *7.0*)                        # Mongoose 7.0
55              ccflags="$ccflags -D_BSD_TYPES -D_BSD_TIME -woff 1009,1042,1048,1110,1116,1184 -OPT:Olimit=0"
56              optimize='none'      
57              ;;
58         *7.1*|*7.2|*7.20)             # Mongoose 7.1+
59              ccflags="$ccflags -D_BSD_TYPES -D_BSD_TIME -woff 1009,1110,1184 -OPT:Olimit=0"
60              optimize='-O3'       
61 # This is a temporary fix for 5.005.
62 # Leave pp_ctl_cflags  line at left margin for Configure.  See 
63 # hints/README.hints, especially the section 
64 # =head2 Propagating variables to config.sh
65 pp_ctl_cflags='optimize=-O'
66              ;;
67         *7.*)                         # Mongoose 7.2.1+
68              ccflags="$ccflags -D_BSD_TYPES -D_BSD_TIME -woff 1009,1110,1184 -OPT:Olimit=0:space=on"
69              optimize='-O3'       
70              ;;
71         *6.2*)                        # Ragnarok 6.2
72              ccflags="$ccflags -D_BSD_TYPES -D_BSD_TIME -woff 1009,1110,1184"
73              optimize='none'      
74              ;;
75         *)                            # Be safe and not optimize
76              ccflags="$ccflags -D_BSD_TYPES -D_BSD_TIME -woff 1009,1110,1184 -OPT:Olimit=0"
77              optimize='none'
78              ;;
79         esac
80
81         ld=ld
82         # NOTE: -L/usr/lib32 -L/lib32 are automatically selected by the linker
83         ldflags=' -L/usr/local/lib32 -L/usr/local/lib'
84         cccdlflags=' '
85     # From: David Billinghurst <David.Billinghurst@riotinto.com.au>
86     # If you get complaints about so_locations then change the following
87     # line to something like:
88     #   lddlflags="-n32 -shared -check_registry /usr/lib32/so_locations"
89         lddlflags="-n32 -shared"
90         libc='/usr/lib32/libc.so'
91         plibpth='/usr/lib32 /lib32 /usr/ccs/lib'
92         nm_opt='-p'
93         nm_so_opt='-p'
94         ;;
95 *gcc*)
96         ccflags="$ccflags -D_BSD_TYPES -D_BSD_TIME -D_POSIX_C_SOURCE"
97         optimize="-O3"
98         usenm='undef'
99         ;;
100 *)
101         # this is needed to force the old-32 paths
102         #  since the system default can be changed.
103         ccflags="$ccflags -32 -D_BSD_TYPES -D_BSD_TIME -Olimit 3100"
104         optimize='-O'     
105         ;;
106 esac
107
108 # We don't want these libraries.  Anyone know why?
109 set `echo X "$libswanted "|sed -e 's/ socket / /' -e 's/ nsl / /' -e 's/ dl / /'`
110 shift
111 libswanted="$*"
112
113 # I have conflicting reports about the sun, crypt, bsd, and PW
114 # libraries on Irix 6.2.
115 #
116 # One user rerports:
117 # Don't need sun crypt bsd PW under 6.2.  You *may* need to link
118 # with these if you want to run perl built under 6.2 on a 5.3 machine
119 # (I haven't checked)
120 #
121 # Another user reported that if he included those libraries, a large number
122 # of the tests failed (approx. 20-25) and he would get a core dump. To
123 # make things worse, test results were inconsistent, i.e., some of the
124 # tests would pass some times and fail at other times.
125 # The safest thing to do seems to be to eliminate them.
126 #
127 #  Actually, the only libs that you want are '-lm'.  Everything else
128 # you need is in libc.  You do also need '-lbsd' if you choose not
129 # to use the -D_BSD_* defines.  Note that as of 6.2 the only
130 # difference between '-lmalloc' and '-lc' malloc is the debugging
131 # and control calls. -- scotth@sgi.com
132
133 set `echo X "$libswanted "|sed -e 's/ sun / /' -e 's/ crypt / /' -e 's/ bsd / /' -e 's/ PW / /'`
134 shift
135 libswanted="$*"
136
137 if [ "X$usethreads" = "X$define" -o "X$usethreads" = "Xy" ]; then
138     if test ! -f /usr/include/pthread.h -o ! -f /usr/lib/libpthread.so; then
139         uname_r=`uname -r`
140         case "`uname -r`" in
141         5*|6.0|6.1)
142             echo >&4 "IRIX $uname_r does not have the POSIX threads."
143             echo >&4 "You should upgrade to at least IRIX 6.2 with pthread patches."
144             echo >&4 "Cannot continue, aborting."
145             exit 1
146             ;;
147         6.2)
148             echo >&4 ""
149 cat >&4 <<EOF
150 IRIX 6.2 $uname_r can have the POSIX threads.
151 The following IRIX patches (or their replacements) must, however, be installed:
152
153         1404 Irix 6.2 Posix 1003.1b man pages
154         1645 IRIX 6.2 & 6.3 POSIX header file updates
155         2000 Irix 6.2 Posix 1003.1b support modules
156         2254 Pthread library fixes
157         2401 6.2 all platform kernel rollup
158 IMPORTANT:
159         Without patch 2401, a kernel bug in IRIX 6.2 will
160         cause your machine to panic and crash when running
161         threaded perl. IRIX 6.3 and up should be OK.
162
163
164 Cannot continue, aborting.
165 EOF
166             exit 1
167             ;;
168         6.*|7.*)
169             echo >&4 "IRIX $uname_r should have the POSIX threads."
170             echo >&4 "But somehow you do not seem to have them installed."
171             echo >&4 "Cannot continue, aborting."
172             exit 1
173             ;;
174         esac
175         unset uname_r
176     fi
177     # -lpthread needs to come before -lc but after other libraries such
178     # as -lgdbm and such like. We assume here that -lc is present in
179     # libswanted. If that fails to be true in future, then this can be
180     # changed to add pthread to the very end of libswanted.
181     set `echo X "$libswanted "| sed -e 's/ c / pthread /'`
182     ld="${cc:-cc}"
183     shift
184     libswanted="$*"
185     usemymalloc='n'
186 fi