update hints/irix_6.sh
[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)                   # Mongoose 7.1+
59              ccflags="$ccflags -D_BSD_TYPES -D_BSD_TIME -woff 1009,1110,1184 -OPT:Olimit=0"
60              optimize='-O3'       
61              pp_ctl_cflags='optimize=-O'
62              ;;
63         *7.*)                         # Mongoose 7.2.1+
64              ccflags="$ccflags -D_BSD_TYPES -D_BSD_TIME -woff 1009,1110,1184 -OPT:Olimit=0:space=on"
65              optimize='-O3'       
66              ;;
67         *6.2*)                        # Ragnarok 6.2
68              ccflags="$ccflags -D_BSD_TYPES -D_BSD_TIME -woff 1009,1110,1184"
69              optimize='none'      
70              ;;
71         *)                            # Be safe and not optimize
72              ccflags="$ccflags -D_BSD_TYPES -D_BSD_TIME -woff 1009,1110,1184 -OPT:Olimit=0"
73              optimize='none'
74              ;;
75         esac
76
77         ld=ld
78         # NOTE: -L/usr/lib32 -L/lib32 are automatically selected by the linker
79         ldflags=' -L/usr/local/lib32 -L/usr/local/lib'
80         cccdlflags=' '
81     # From: David Billinghurst <David.Billinghurst@riotinto.com.au>
82     # If you get complaints about so_locations then change the following
83     # line to something like:
84     #   lddlflags="-n32 -shared -check_registry /usr/lib32/so_locations"
85         lddlflags="-n32 -shared"
86         libc='/usr/lib32/libc.so'
87         plibpth='/usr/lib32 /lib32 /usr/ccs/lib'
88         nm_opt='-p'
89         nm_so_opt='-p'
90         ;;
91 *gcc*)
92         ccflags="$ccflags -D_BSD_TYPES -D_BSD_TIME -D_POSIX_C_SOURCE"
93         optimize="-O3"
94         usenm='undef'
95         ;;
96 *)
97         # this is needed to force the old-32 paths
98         #  since the system default can be changed.
99         ccflags="$ccflags -32 -D_BSD_TYPES -D_BSD_TIME -Olimit 3100"
100         optimize='-O'     
101         ;;
102 esac
103
104 # We don't want these libraries.  Anyone know why?
105 set `echo X "$libswanted "|sed -e 's/ socket / /' -e 's/ nsl / /' -e 's/ dl / /'`
106 shift
107 libswanted="$*"
108
109 # I have conflicting reports about the sun, crypt, bsd, and PW
110 # libraries on Irix 6.2.
111 #
112 # One user rerports:
113 # Don't need sun crypt bsd PW under 6.2.  You *may* need to link
114 # with these if you want to run perl built under 6.2 on a 5.3 machine
115 # (I haven't checked)
116 #
117 # Another user reported that if he included those libraries, a large number
118 # of the tests failed (approx. 20-25) and he would get a core dump. To
119 # make things worse, test results were inconsistent, i.e., some of the
120 # tests would pass some times and fail at other times.
121 # The safest thing to do seems to be to eliminate them.
122 #
123 #  Actually, the only libs that you want are '-lm'.  Everything else
124 # you need is in libc.  You do also need '-lbsd' if you choose not
125 # to use the -D_BSD_* defines.  Note that as of 6.2 the only
126 # difference between '-lmalloc' and '-lc' malloc is the debugging
127 # and control calls. -- scotth@sgi.com
128
129 set `echo X "$libswanted "|sed -e 's/ sun / /' -e 's/ crypt / /' -e 's/ bsd / /' -e 's/ PW / /'`
130 shift
131 libswanted="$*"
132
133 if [ "X$usethreads" = "X$define" -o "X$usethreads" = "Xy" ]; then
134     if test ! -f /usr/include/pthread.h -o ! -f /usr/lib/libpthread.so; then
135         uname_r=`uname -r`
136         case "`uname -r`" in
137         5*|6.0|6.1)
138             echo >&4 "IRIX $uname_r does not have the POSIX threads."
139             echo >&4 "You should upgrade to at least IRIX 6.2 with pthread patches."
140             echo >&4 "Cannot continue, aborting."
141             exit 1
142             ;;
143         6.2)
144             echo >&4 ""
145 cat >&4 <<EOF
146 IRIX 6.2 $uname_r can have the POSIX threads.
147 The following IRIX patches (or their replacements) must, however, be installed:
148
149         1404 Irix 6.2 Posix 1003.1b man pages
150         1645 IRIX 6.2 & 6.3 POSIX header file updates
151         2000 Irix 6.2 Posix 1003.1b support modules
152         2254 Pthread library fixes
153         2401 6.2 all platform kernel rollup
154 IMPORTANT:
155         Without patch 2401, a kernel bug in IRIX 6.2 will
156         cause your machine to panic and crash when running
157         threaded perl. IRIX 6.3 and up should be OK.
158
159
160 Cannot continue, aborting.
161 EOF
162             exit 1
163             ;;
164         6.*|7.*)
165             echo >&4 "IRIX $uname_r should have the POSIX threads."
166             echo >&4 "But somehow you do not seem to have them installed."
167             echo >&4 "Cannot continue, aborting."
168             exit 1
169             ;;
170         esac
171         unset uname_r
172     fi
173     # -lpthread needs to come before -lc but after other libraries such
174     # as -lgdbm and such like. We assume here that -lc is present in
175     # libswanted. If that fails to be true in future, then this can be
176     # changed to add pthread to the very end of libswanted.
177     set `echo X "$libswanted "| sed -e 's/ c / pthread /'`
178     ld="${cc:-cc}"
179     shift
180     libswanted="$*"
181     usemymalloc='n'
182 fi