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