bump patchlevel to 52; other little tweaks for threads, win32 builds
[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 # this is to accommodate the 'modules' capability of the 
82 # 7.2 MIPSPro compilers, which allows for the compilers to be installed
83 # in a nondefault location.  Almost everything works as expected, but
84 # /usr/include isn't caught properly.  Hence see the /usr/include/pthread.h
85 # change below to include TOOLROOT (a modules environment variable),
86 # and the following code.  Additional
87 # code to accommodate the 'modules' environment should probably be added
88 # here if possible, or be inserted as a ${TOOLROOT} reference before
89 # absolute paths (again, see the pthread.h change below). 
90 # -- krishna@sgi.com, 8/23/98
91
92 if [ "X${TOOLROOT}" != "X" ]; then
93 # we cant set cppflags because it gets overwritten
94 # we dont actually need $TOOLROOT/usr/include on the cc line cuz the 
95 # modules functionality already includes it but
96 # XXX - how do I change cppflags in the hints file?
97         ccflags="$ccflags -I${TOOLROOT}/usr/include"
98         usrinc="${TOOLROOT}/usr/include"
99 fi
100
101         ld=$cc
102         # perl's malloc can return improperly aligned buffer
103         # usemymalloc='undef'
104 malloc_cflags='ccflags="-DSTRICT_ALIGNMENT $ccflags"'
105         # NOTE: -L/usr/lib32 -L/lib32 are automatically selected by the linker
106         ldflags=' -L/usr/local/lib32 -L/usr/local/lib'
107         cccdlflags=' '
108     # From: David Billinghurst <David.Billinghurst@riotinto.com.au>
109     # If you get complaints about so_locations then change the following
110     # line to something like:
111     #   lddlflags="-n32 -shared -check_registry /usr/lib32/so_locations"
112         lddlflags="-n32 -shared"
113         libc='/usr/lib32/libc.so'
114         plibpth='/usr/lib32 /lib32 /usr/ccs/lib'
115         nm_opt='-p'
116         nm_so_opt='-p'
117         ;;
118 *gcc*)
119         ccflags="$ccflags -D_BSD_TYPES -D_BSD_TIME -D_POSIX_C_SOURCE"
120         optimize="-O3"
121         usenm='undef'
122         ;;
123 *)
124         # this is needed to force the old-32 paths
125         #  since the system default can be changed.
126         ccflags="$ccflags -32 -D_BSD_TYPES -D_BSD_TIME -Olimit 3100"
127         optimize='-O'     
128         ;;
129 esac
130
131 # We don't want these libraries.
132 # Socket networking is in libc, these are not installed by default,
133 # and just slow perl down. (scotth@sgi.com)
134 set `echo X "$libswanted "|sed -e 's/ socket / /' -e 's/ nsl / /' -e 's/ dl / /'`
135 shift
136 libswanted="$*"
137
138 # I have conflicting reports about the sun, crypt, bsd, and PW
139 # libraries on Irix 6.2.
140 #
141 # One user rerports:
142 # Don't need sun crypt bsd PW under 6.2.  You *may* need to link
143 # with these if you want to run perl built under 6.2 on a 5.3 machine
144 # (I haven't checked)
145 #
146 # Another user reported that if he included those libraries, a large number
147 # of the tests failed (approx. 20-25) and he would get a core dump. To
148 # make things worse, test results were inconsistent, i.e., some of the
149 # tests would pass some times and fail at other times.
150 # The safest thing to do seems to be to eliminate them.
151 #
152 #  Actually, the only libs that you want are '-lm'.  Everything else
153 # you need is in libc.  You do also need '-lbsd' if you choose not
154 # to use the -D_BSD_* defines.  Note that as of 6.2 the only
155 # difference between '-lmalloc' and '-lc' malloc is the debugging
156 # and control calls, which aren't used by perl. -- scotth@sgi.com
157
158 set `echo X "$libswanted "|sed -e 's/ sun / /' -e 's/ crypt / /' -e 's/ bsd / /' -e 's/ PW / /' -e 's/ malloc / /'`
159 shift
160 libswanted="$*"
161
162 if [ "X$usethreads" = "X$define" -o "X$usethreads" = "Xy" ]; then
163     if test ! -f ${TOOLROOT}/usr/include/pthread.h -o ! -f /usr/lib/libpthread.so; then
164         uname_r=`uname -r`
165         case "`uname -r`" in
166         5*|6.0|6.1)
167             echo >&4 "IRIX $uname_r does not have the POSIX threads."
168             echo >&4 "You should upgrade to at least IRIX 6.2 with pthread patches."
169             echo >&4 "Cannot continue, aborting."
170             exit 1
171             ;;
172         6.2)
173             echo >&4 ""
174 cat >&4 <<EOF
175 IRIX 6.2 $uname_r can have the POSIX threads.
176 The following IRIX patches (or their replacements) must, however, be installed:
177
178         1404 Irix 6.2 Posix 1003.1b man pages
179         1645 IRIX 6.2 & 6.3 POSIX header file updates
180         2000 Irix 6.2 Posix 1003.1b support modules
181         2254 Pthread library fixes
182         2401 6.2 all platform kernel rollup
183 IMPORTANT:
184         Without patch 2401, a kernel bug in IRIX 6.2 will
185         cause your machine to panic and crash when running
186         threaded perl. IRIX 6.3 and up should be OK.
187
188
189 Cannot continue, aborting.
190 EOF
191             exit 1
192             ;;
193         6.*|7.*)
194             echo >&4 "IRIX $uname_r should have the POSIX threads."
195             echo >&4 "But somehow you do not seem to have them installed."
196             echo >&4 "Cannot continue, aborting."
197             exit 1
198             ;;
199         esac
200         unset uname_r
201     fi
202     # -lpthread needs to come before -lc but after other libraries such
203     # as -lgdbm and such like. We assume here that -lc is present in
204     # libswanted. If that fails to be true in future, then this can be
205     # changed to add pthread to the very end of libswanted.
206     set `echo X "$libswanted "| sed -e 's/ c / pthread /'`
207     ld="${cc:-cc}"
208     shift
209     libswanted="$*"
210     usemymalloc='n'
211 fi