This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Document the d_socket override.
[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 # 64-bitty by Jarkko Hietaniemi on 9/1998
29
30 # Use   sh Configure -Dcc='cc -n32' to try compiling with -n32.
31 #     or -Dcc='cc -n32 -mips3' (or -mips4) to force (non)portability
32 # Don't bother with -n32 unless you have the 7.1 or later compilers.
33 #     But there's no quick and light-weight way to check in 6.2.
34
35 # Let's assume we want to use 'cc -n32' by default, unless the
36 # necessary libm is missing (which has happened at least twice)
37 case "$cc" in
38 '')
39     if test -f /usr/lib32/libm.so
40     then
41         cc='cc -n32'
42     fi ;;
43 esac
44
45 # Check for which compiler we're using
46
47 case "$cc" in
48 *"cc -n32"*)
49
50         # Perl 5.004_57 introduced new qsort code into pp_ctl.c that
51         # makes IRIX  cc prior to 7.2.1 to emit bad code.
52         # so some serious hackery follows to set pp_ctl flags correctly.
53
54         # Check for which version of the compiler we're running
55         case "`$cc -version 2>&1`" in
56         *7.0*)                        # Mongoose 7.0
57              ccflags="$ccflags -D_BSD_TYPES -D_BSD_TIME -woff 1009,1042,1048,1110,1116,1184 -OPT:Olimit=0"
58              optimize='none'
59              ;;
60         *7.1*|*7.2|*7.20)             # Mongoose 7.1+
61              ccflags="$ccflags -D_BSD_TYPES -D_BSD_TIME -woff 1009,1110,1184 -OPT:Olimit=0"
62              optimize='-O3'
63 # This is a temporary fix for 5.005.
64 # Leave pp_ctl_cflags  line at left margin for Configure.  See 
65 # hints/README.hints, especially the section 
66 # =head2 Propagating variables to config.sh
67 pp_ctl_cflags='optimize=-O'
68              ;;
69         *7.*)                         # Mongoose 7.2.1+
70              ccflags="$ccflags -D_BSD_TYPES -D_BSD_TIME -woff 1009,1110,1184 -OPT:Olimit=0:space=ON"
71              optimize='-O3'
72              ;;
73         *6.2*)                        # Ragnarok 6.2
74              ccflags="$ccflags -D_BSD_TYPES -D_BSD_TIME -woff 1009,1110,1184"
75              optimize='none'
76              ;;
77         *)                            # Be safe and not optimize
78              ccflags="$ccflags -D_BSD_TYPES -D_BSD_TIME -woff 1009,1110,1184 -OPT:Olimit=0"
79              optimize='none'
80              ;;
81         esac
82
83 # this is to accommodate the 'modules' capability of the 
84 # 7.2 MIPSPro compilers, which allows for the compilers to be installed
85 # in a nondefault location.  Almost everything works as expected, but
86 # /usr/include isn't caught properly.  Hence see the /usr/include/pthread.h
87 # change below to include TOOLROOT (a modules environment variable),
88 # and the following code.  Additional
89 # code to accommodate the 'modules' environment should probably be added
90 # here if possible, or be inserted as a ${TOOLROOT} reference before
91 # absolute paths (again, see the pthread.h change below). 
92 # -- krishna@sgi.com, 8/23/98
93
94 if [ "X${TOOLROOT}" != "X" ]; then
95 # we cant set cppflags because it gets overwritten
96 # we dont actually need $TOOLROOT/usr/include on the cc line cuz the 
97 # modules functionality already includes it but
98 # XXX - how do I change cppflags in the hints file?
99         ccflags="$ccflags -I${TOOLROOT}/usr/include"
100         usrinc="${TOOLROOT}/usr/include"
101 fi
102
103         ld=$cc
104         # perl's malloc can return improperly aligned buffer
105         # usemymalloc='undef'
106 malloc_cflags='ccflags="-DSTRICT_ALIGNMENT $ccflags"'
107         # NOTE: -L/usr/lib32 -L/lib32 are automatically selected by the linker
108         ldflags=' -L/usr/local/lib32 -L/usr/local/lib'
109         cccdlflags=' '
110     # From: David Billinghurst <David.Billinghurst@riotinto.com.au>
111     # If you get complaints about so_locations then change the following
112     # line to something like:
113     #   lddlflags="-n32 -shared -check_registry /usr/lib32/so_locations"
114         lddlflags="-n32 -shared"
115         libc='/usr/lib32/libc.so'
116         plibpth='/usr/lib32 /lib32 /usr/ccs/lib'
117         nm_opt='-p'
118         nm_so_opt='-p'
119         ;;
120 *gcc*)
121         ccflags="$ccflags -D_BSD_TYPES -D_BSD_TIME -D_POSIX_C_SOURCE"
122         optimize="-O3"
123         usenm='undef'
124         ;;
125 *)
126         # this is needed to force the old-32 paths
127         #  since the system default can be changed.
128         ccflags="$ccflags -32 -D_BSD_TYPES -D_BSD_TIME -Olimit 3100"
129         optimize='-O'     
130         ;;
131 esac
132
133 # We don't want these libraries.
134 # Socket networking is in libc, these are not installed by default,
135 # and just slow perl down. (scotth@sgi.com)
136 set `echo X "$libswanted "|sed -e 's/ socket / /' -e 's/ nsl / /' -e 's/ dl / /'`
137 shift
138 libswanted="$*"
139
140 # I have conflicting reports about the sun, crypt, bsd, and PW
141 # libraries on Irix 6.2.
142 #
143 # One user rerports:
144 # Don't need sun crypt bsd PW under 6.2.  You *may* need to link
145 # with these if you want to run perl built under 6.2 on a 5.3 machine
146 # (I haven't checked)
147 #
148 # Another user reported that if he included those libraries, a large number
149 # of the tests failed (approx. 20-25) and he would get a core dump. To
150 # make things worse, test results were inconsistent, i.e., some of the
151 # tests would pass some times and fail at other times.
152 # The safest thing to do seems to be to eliminate them.
153 #
154 #  Actually, the only libs that you want are '-lm'.  Everything else
155 # you need is in libc.  You do also need '-lbsd' if you choose not
156 # to use the -D_BSD_* defines.  Note that as of 6.2 the only
157 # difference between '-lmalloc' and '-lc' malloc is the debugging
158 # and control calls, which aren't used by perl. -- scotth@sgi.com
159
160 set `echo X "$libswanted "|sed -e 's/ sun / /' -e 's/ crypt / /' -e 's/ bsd / /' -e 's/ PW / /' -e 's/ malloc / /'`
161 shift
162 libswanted="$*"
163
164 if [ "X$usethreads" = "X$define" -o "X$usethreads" = "Xy" ]; then
165     if test ! -f ${TOOLROOT}/usr/include/pthread.h -o ! -f /usr/lib/libpthread.so; then
166         uname_r=`uname -r`
167         case "`uname -r`" in
168         5*|6.0|6.1)
169             echo >&4 "IRIX $uname_r does not have the POSIX threads."
170             echo >&4 "You should upgrade to at least IRIX 6.2 with pthread patches."
171             echo >&4 "Cannot continue, aborting."
172             exit 1
173             ;;
174         6.2)
175             echo >&4 ""
176 cat >&4 <<EOF
177 IRIX 6.2 $uname_r can have the POSIX threads.
178 The following IRIX patches (or their replacements) must, however, be installed:
179
180         1404 Irix 6.2 Posix 1003.1b man pages
181         1645 IRIX 6.2 & 6.3 POSIX header file updates
182         2000 Irix 6.2 Posix 1003.1b support modules
183         2254 Pthread library fixes
184         2401 6.2 all platform kernel rollup
185 IMPORTANT:
186         Without patch 2401, a kernel bug in IRIX 6.2 will
187         cause your machine to panic and crash when running
188         threaded perl. IRIX 6.3 and up should be OK.
189
190
191 Cannot continue, aborting.
192 EOF
193             exit 1
194             ;;
195         6.*|7.*)
196             echo >&4 "IRIX $uname_r should have the POSIX threads."
197             echo >&4 "But somehow you do not seem to have them installed."
198             echo >&4 "Cannot continue, aborting."
199             exit 1
200             ;;
201         esac
202         unset uname_r
203     fi
204     # -lpthread needs to come before -lc but after other libraries such
205     # as -lgdbm and such like. We assume here that -lc is present in
206     # libswanted. If that fails to be true in future, then this can be
207     # changed to add pthread to the very end of libswanted.
208     set `echo X "$libswanted "| sed -e 's/ c / pthread /'`
209     ld="${cc:-cc}"
210     shift
211     libswanted="$*"
212     usemymalloc='n'
213 fi
214
215 # 64-bitness.
216 # jhi@iki.fi, inspired by Scott Henry.
217
218 if [ "X$use64bits" = "X$define" ]; then
219     uname_r=`uname -r`
220     case "$uname_r" in
221     [1-5]*|6.[01])
222         echo >&4 "IRIX $uname_r does not support 64-bit types."
223         echo >&4 "You should upgrade to at least IRIX 6.2."
224         exit 1
225         ;;
226     esac
227     case "$ccflags" in
228     *-n32*)
229         ccflags="$ccflags -DUSE_LONG_LONG"
230         archname64="-n32"
231         d_open64="$undef"
232         # In -n32 mode (ILP32LL64) we use the standard open().
233         # In -64 we will use the open64().
234         cat << 'EOM' >&2
235
236 You will see a *** WHOA THERE!!! ***  message from Configure for
237 d_open64.  Keep the recommended value.  See hints/irix6.sh
238 for more information.
239
240 EOM
241         ;;
242     *-64*)
243         ;;
244     esac
245     ccflags="$ccflags -DUSE_64_BIT_FILES"
246 fi