This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
applied new parts of suggested patch
[perl5.git] / hints / sco.sh
CommitLineData
fc1e34ef 1# sco.sh
7a6396bb 2# Courtesy of Joel Rosi-Schwartz <j.schwartz@agonet.it>
e8523c57 3###############################################################
a5f75d66
AD
4# Additional SCO version info from
5# Peter Wolfe <wolfe@teloseng.com>
7a6396bb 6# Fri Jul 19 14:54:25 EDT 1996
fc1e34ef
AD
7# and again Tue Sep 29 16:37:25 EDT 1998
8# by Andy Dougherty <doughera@lafayette.edu>
e8523c57
F
9# Mostly rewritten on
10# Tue Jan 19 23:00:00 CET 1999
11# by Francois Desarmenien <desar@club-internet.fr>
12###############################################################
13#
14# To use cc, use sh Configure
fc1e34ef 15# To use gcc, use sh Configure -Dcc=gcc
e8523c57
F
16#
17# Default on 3.2v4 is to use static link (dynamic loading unsupported).
18# Default on 3.2v5 is to use dynamic loading.
19# To use static linkink instead, use to sh Configure -Dusedl=n
20#
21# Warning: - to use dynamic loading with gcc, you need gcc 2.8.0 or later
22# ******** - to compile with older releases of gcc, use Configure -Dusedl=n
23# or it wont compile properly
24#
25###############################################################
26# NOTES:
27# -----
28#
29# I Have removed inclusion of ODBM_File for OSR5
30# because it core dumps and make tests fails.
31#
32# Support for icc compiler has been removed, because it 'breaks'
33# a lot of code :-(
34#
35# It's *always* a good idea to first make a static link to be sure to
36# have all symbols resolved with the current choice of libraries, since
37# with dynamic linking, unresolved symbols are allowed an will be detected
38# only at runtime (when you try to load the module or worse, when you call
39# the symbol)
40#
41# The best choice of compiler on OSR 5 (3.2v5.*) seems to be gcc >= 2.8.0:
42# -You cannot optimize with genuine sco cc (miniperl core dumps),
43# so Perl is faster if compiled with gcc.
44# -Even optimized for speed, gcc generated code is smaller (!!!)
45# -gcc is free
46# -I use ld to link which is distributed with the core OS distribution, so you
47# don't need to buy the developement kit, just find someone kind enough to
48# give you a binary release of gcc.
49#
50#
a5f75d66 51
e8523c57 52###############################################################
7a6396bb 53# figure out what SCO version we are. The output of uname -X is
54# something like:
55# System = SCO_SV
56# Node = xxxxx
57# Release = 3.2v5.0.0
58# KernelID = 95/08/08
e8523c57 59# Machine = Pentium
7a6396bb 60# BusType = ISA
61# Serial = xxxxx
62# Users = 5-user
63# OEM# = 0
64# Origin# = 1
e8523c57 65# NumCPU = 1
fc1e34ef
AD
66
67# Use /bin/uname (because GNU uname may be first in $PATH and
7a6396bb 68# it does not support -X) to figure out what SCO version we are:
e8523c57
F
69# Matching '^Release' is broken by locale setting:
70# matching '3.2v' should be enough -- FD
71case `/bin/uname -X | egrep '3\.2v'` in
72*3.2v4.*) scorls=3 ;; # OSR 3
73*3.2v5.*) scorls=5 ;; # OSR 5
74*)
75 # Future of SCO OSR is SCO UnixWare: there should not be new OSR releases
76 echo "************************************************************" >&4
77 echo "\a" >&4
78 echo " sco.sh hints file only supports:" >&4
79 echo "\a" >&4
80 echo " - SCO Unix 3.2v4.x (OSR 3)" >&4
81 echo " - SCO Unix 3.2v5.x (OSR 5)" >&4
82 echo "\a" >&4
83 echo "\a" >&4
84 echo " For UnixWare, use svr4.sh hints instead" >&4
85 echo "\a" >&4
86 echo "***********************************************************" >&4
87 exit
88;;
a5f75d66
AD
89esac
90
e8523c57
F
91###############################################################
92# Common fixes for all compilers an releases:
93
94###############################################################
95# What is true for SCO5 is true for SCO3 too today, so let's have a single
96# symbol for both
97ccflags="-U M_XENIX -D PERL_SCO"
98
99###############################################################
100# Compilers options section:
101if test "$scorls" = "3"
102then
103 dlext=''
104 case "$cc" in
105 gcc) optimize='-O2' ;;
106 *) ccflags="$ccflags -W0 -quiet"
107 optimize='-O' ;;
108 esac
109else
110 ###############################################################
111 # Need this in release 5 because of changed fpu exeption rules
112 ccflags="$ccflags -D PERL_SCO5"
113
114 ###############################################################
115 # In Release 5, always compile ELF objects
116 case "$cc" in
117 gcc)
118 ccflags="$ccflags -melf"
119 optimize='-O2'
120 ;;
121 *)
122 ccflags="$ccflags -w0 -belf"
123 optimize='-O0'
124 ;;
125 esac
126 ###############################################################
127 # Dynamic loading section:
128 #
129 # We use ld to build shared libraries as it is always available
130 # and seems to work better than GNU's one on SCO
131 #
132 # ccdlflags : must tell the linker to export all global symbols
133 # cccdlflags: must tell the compiler to generate relocatable code
134 # lddlflags : must tell the linker to output a shared library
135 #
136 # /usr/local/lib is added for convenience, since 'foreign' libraries
137 # are usually put there in sco
138 #
139 if test "$usedl" != "n"; then
140 ld='ld'
141 case "$cc" in
142 gcc)
143 ccdlflags='-Xlinker -Bexport -L/usr/local/lib'
144 cccdlflags='-fpic'
145 lddlflags='-G -L/usr/local/lib'
146 ;;
147 *)
148 ccdlflags='-Bexport -L/usr/local/lib'
149 cccdlflags='-Kpic'
150 lddlflags='-G -L/usr/local/lib'
151 ;;
152 esac
153
154 ###############################################################
155 # Use dynamic loading
156 usedl='define'
157 dlext='so'
158 dlsrc='dl_dlopen.xs'
159
160 ###############################################################
161 # Force to define those symbols, as they are #defines and not
162 # catched by Configure, and they are useful
163 d_dlopen='define'
164 d_dlerror='define'
165 fi
166fi
167
168
169###############################################################
170# Various hints, common to all releases, to have it work better:
171
172###############################################################
173# We need to remove libdl, as libdl.so exists, but ld complains
174# it can't find libdl.a ! Bug or feature ? :-)
175libswanted=`echo " $libswanted " | sed -e 's/ dl / /'`
176set X $libswanted
177shift
178libswanted="$*"
179
180###############################################################
a0d0e21e
LW
181# Try to use libintl.a since it has strcoll and strxfrm
182libswanted="intl $libswanted"
e8523c57
F
183
184###############################################################
a0d0e21e 185# Try to use libdbm.nfs.a since it has dbmclose.
a0d0e21e
LW
186if test -f /usr/lib/libdbm.nfs.a ; then
187 libswanted=`echo "dbm.nfs $libswanted " | sed -e 's/ dbm / /'`
fc1e34ef
AD
188 set X $libswanted
189 shift
190 libswanted="$*"
a0d0e21e 191fi
a5f75d66 192
e8523c57
F
193###############################################################
194# We disable ODBM_File if OSR5 because it's mostly broken
195# but keep it for ODT3 as it seems to work.
196if test "$scorls" = "5"; then
197 i_dbm='undef'
198fi
199
200###############################################################
a0d0e21e
LW
201# We don't want Xenix cross-development libraries
202glibpth=`echo $glibpth | sed -e 's! /usr/lib/386 ! !' -e 's! /lib/386 ! !'`
203xlibpth=''
a5f75d66 204
e8523c57 205###############################################################
5d94fbed
AD
206# I have received one report that nm extraction doesn't work if you're
207# using the scocc compiler. This system had the following 'myconfig'
208# uname='xxx xxx 3.2 2 i386 '
209# cc='scocc', optimize='-O'
fc1e34ef
AD
210# You can override this with Configure -Dusenm.
211case "$usenm" in
212'') usenm='false' ;;
213esac
5d94fbed 214
e8523c57 215###############################################################
5d94fbed
AD
216# If you want to use nm, you'll probably have to use nm -p. The
217# following does that for you:
a0d0e21e 218nm_opt='-p'
c2960299 219
e8523c57 220###############################################################
c2960299
AD
221# I have received one report that you can't include utime.h in
222# pp_sys.c. Uncomment the following line if that happens to you:
223# i_utime=undef
cdc1f821 224
e8523c57 225###############################################################
8e63d77b 226# Perl 5.003_05 and later try to include both <time.h> and <sys/select.h>
227# in pp_sys.c, but that fails due to a redefinition of struct timeval.
228# This will generate a WHOA THERE. Accept the default.
229i_sysselct=$undef
e8523c57
F
230
231
232###############################################################
233#END of hint file