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