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