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