X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=hints%2Fsco.sh;h=18ccc5e6fb54c536b9962164198293599d9b97e7;hb=4e73d6a402bc493d66d19c409c41e1e271c6450b;hp=cef1c0c9423085afe4feaf48a1d48a3858b0626a;hpb=dc53cb16caf275be0324ed5c064205ac962ecbf3;p=p5sagit%2Fp5-mst-13.2.git diff --git a/hints/sco.sh b/hints/sco.sh index cef1c0c..18ccc5e 100644 --- a/hints/sco.sh +++ b/hints/sco.sh @@ -1,140 +1,251 @@ -# sco.sh +# sco.sh # Courtesy of Joel Rosi-Schwartz - +############################################################### # Additional SCO version info from # Peter Wolfe -# Last revised # Fri Jul 19 14:54:25 EDT 1996 -# by Andy Dougherty - -# To use gcc, use sh Configure -Dcc=gcc -# But gcc will *not* do dynamic laoding on 3.2.5, -# for that use sh Configure -Dcc=icc -# See below for more details. +# and again Tue Sep 29 16:37:25 EDT 1998 +# by Andy Dougherty +# Mostly rewritten on +# Tue Jan 19 23:00:00 CET 1999 +# by Francois Desarmenien +# Modified by Boyd Gerber +# Tue Sep 21 1999 +############################################################### +# +# To use cc, use sh Configure +# To use gcc, use sh Configure -Dcc=gcc +# +# Default on 3.2v4 is to use static link (dynamic loading unsupported). +# Default on 3.2v5 is to use dynamic loading. +# To use static linkink instead, use to sh Configure -Dusedl=n +# +# Warning: - to use dynamic loading with gcc, you need gcc 2.8.0 or later +# ******** - to compile with older releases of gcc, use Configure -Dusedl=n +# or it wont compile properly +# +############################################################### +# NOTES: +# ----- +# +# I Have removed inclusion of ODBM_File for OSR5 +# because it core dumps and make tests fails. +# +# Support for icc compiler has been removed, because it 'breaks' +# a lot of code :-( +# +# It's *always* a good idea to first make a static link to be sure to +# have all symbols resolved with the current choice of libraries, since +# with dynamic linking, unresolved symbols are allowed an will be detected +# only at runtime (when you try to load the module or worse, when you call +# the symbol) +# +# The best choice of compiler on OSR 5 (3.2v5.*) seems to be gcc >= 2.8.0: +# -You cannot optimize with genuine sco cc (miniperl core dumps), +# so Perl is faster if compiled with gcc. +# -Even optimized for speed, gcc generated code is smaller (!!!) +# -gcc is free +# -I use ld to link which is distributed with the core OS distribution, so you +# don't need to buy the developement kit, just find someone kind enough to +# give you a binary release of gcc. +# +# +############################################################### # figure out what SCO version we are. The output of uname -X is # something like: # System = SCO_SV # Node = xxxxx # Release = 3.2v5.0.0 # KernelID = 95/08/08 -# Machine = Pentium +# Machine = Pentium # BusType = ISA # Serial = xxxxx # Users = 5-user # OEM# = 0 # Origin# = 1 -# NumCPU = 1 - -# Use /bin/uname (because Gnu may be first on the path and +# NumCPU = 1 + +# Use /bin/uname (because GNU uname may be first in $PATH and # it does not support -X) to figure out what SCO version we are: -case `/bin/uname -X | egrep '^Release'` in -*3.2v4.*) scorls=3 ;; # I don't know why this is 3 instead of 4 :-) -*3.2v5.*) scorls=5 ;; -*) scorls=3 ;; # this probabaly shouldn't happen +# Matching '^Release' is broken by locale setting: +# matching '3.2v' should be enough -- FD +case `/bin/uname -X | egrep '3\.2v'` in +*3.2v4.*) scorls=3 ;; # OSR 3 +*3.2v5.*) scorls=5 ;; # OSR 5 +*) + # Future of SCO OSR is SCO UnixWare: there should not be new OSR releases + echo "************************************************************" >&4 + echo "" >&4 + echo " sco.sh hints file only supports:" >&4 + echo "" >&4 + echo " - SCO Unix 3.2v4.x (OSR 3)" >&4 + echo " - SCO Unix 3.2v5.x (OSR 5)" >&4 + echo "" >&4 + echo "" >&4 + echo " For UnixWare, use svr4.sh hints instead" >&4 + echo " For UnixWare 7.*, use svr5.sh hints instead" >&4 + echo "" >&4 + echo "***********************************************************" >&4 + exit +;; esac +############################################################### +# Common fixes for all compilers an releases: + +############################################################### +# What is true for SCO5 is true for SCO3 too today, so let's have a single +# symbol for both +ccflags="-U M_XENIX -D PERL_SCO" + +############################################################### +# Compilers options section: +if test "$scorls" = "3" +then + dlext='' + case "$cc" in + *gcc*) optimize='-O2' ;; + *) ccflags="$ccflags -W0 -quiet" + optimize='-O' ;; + esac +else + ############################################################### + # Need this in release 5 because of changed fpu exeption rules + ccflags="$ccflags -D HAS_FPSETMASK" + + ############################################################### + # In Release 5, always compile ELF objects + case "$cc" in + *gcc*) + ccflags="$ccflags -melf" + optimize='-O2' + ;; + *) + ccflags="$ccflags -w0 -belf" + optimize='-O0' + ;; + esac + ############################################################### + # Dynamic loading section: + # + # We use ld to build shared libraries as it is always available + # and seems to work better than GNU's one on SCO + # + # ccdlflags : must tell the linker to export all global symbols + # cccdlflags: must tell the compiler to generate relocatable code + # lddlflags : must tell the linker to output a shared library + # + # /usr/local/lib is added for convenience, since 'foreign' libraries + # are usually put there in sco + # + if test "$usedl" != "n"; then + ld='ld' + case "$cc" in + *gcc*) + ccdlflags='-Xlinker -Bexport -L/usr/local/lib' + cccdlflags='-fpic' + lddlflags='-G -L/usr/local/lib' + ;; + *) + ccdlflags='-Wl,-Bexport -L/usr/local/lib' + cccdlflags='-Kpic' + lddlflags='-G -L/usr/local/lib' + ;; + esac + + ############################################################### + # Use dynamic loading + usedl='define' + dlext='so' + dlsrc='dl_dlopen.xs' + + ############################################################### + # Force to define those symbols, as they are #defines and not + # catched by Configure, and they are useful + d_dlopen='define' + d_dlerror='define' + fi +fi + + +############################################################### +# Various hints, common to all releases, to have it work better: + +############################################################### +# We need to remove libdl, as libdl.so exists, but ld complains +# it can't find libdl.a ! Bug or feature ? :-) +libswanted=`echo " $libswanted " | sed -e 's/ dl / /'` +set X $libswanted +shift +libswanted="$*" + +############################################################### +# Remove libbind because it conflicts with libsocket. +libswanted=`echo " $libswanted " | sed -e 's/ bind / /'` +set X $libswanted +shift +libswanted="$*" + +############################################################### # Try to use libintl.a since it has strcoll and strxfrm libswanted="intl $libswanted" + +############################################################### # Try to use libdbm.nfs.a since it has dbmclose. -# if test -f /usr/lib/libdbm.nfs.a ; then libswanted=`echo "dbm.nfs $libswanted " | sed -e 's/ dbm / /'` + set X $libswanted + shift + libswanted="$*" +fi + +############################################################### +# At least for ORS5.0.2, prefer sprintf() over gcvt(), since gcvt() +# used to cause a SIGFPE and a core dump when passed a NaN. +# This may not be an issue in perl-5.8.x and later since we +# try to trap SIGFPE. However, preferring sprintf() should be +# safe anyway, so let's go ahead and set it. See the bugs database +# item [perl #3100]. --A.D. 12/2004. + gconvert_preference='sprintf' + +############################################################### +# We disable ODBM_File if OSR5 because it's mostly broken +# but keep it for ODT3 as it seems to work. +if test "$scorls" = "5"; then + i_dbm='undef' fi -set X $libswanted -shift -libswanted="$*" +############################################################### # We don't want Xenix cross-development libraries glibpth=`echo $glibpth | sed -e 's! /usr/lib/386 ! !' -e 's! /lib/386 ! !'` xlibpth='' -case "$cc" in -*gcc*) ccflags="$ccflags -U M_XENIX" - optimize="$optimize -O2" - ;; -scocc) ;; - -# On SCO 3.2v5 both cc and icc can build dynamic load, but cc core -# dumps if optimised, so I am only setting this up for icc. -# It is possible that some 3.2v4.2 system have icc, I seem to -# recall it was available as a seperate product but I have no -# knowledge if it can do dynamic loading and if so how. -# Joel Rosi-Schwartz -icc)# Apparently, SCO's cc gives rather verbose warnings - # Set -w0 to turn them off. - case $scorls in - 3) ccflags="$ccflags -W0 -quiet -U M_XENIX" ;; - 5) ccflags="$ccflags -belf -w0 -U M_XENIX" - optimize="-O1" # -g -O1 will not work - # optimize="-O0" may be needed for pack test to pass. - lddlflags='-G -L/usr/local/lib' - ldflags=' -W l,-Bexport -L/usr/local/lib' - dlext='so' - dlsrc='dl_dlopen.xs' - usedl='define' - ;; - esac - ;; - -*) # Apparently, miniperl core dumps if -O is used. - case "$optimize" in - '') optimize=none ;; - esac - # Apparently, SCO's cc gives rather verbose warnings - # Set -w0 to turn them off. - case $scorls in - 3) ccflags="$ccflags -W0 -quiet -U M_XENIX" ;; - 5) ccflags="$ccflags -w0 -U M_XENIX -DPERL_SCO5" ;; - esac - ;; -esac -i_varargs=undef - +############################################################### # I have received one report that nm extraction doesn't work if you're # using the scocc compiler. This system had the following 'myconfig' # uname='xxx xxx 3.2 2 i386 ' # cc='scocc', optimize='-O' -usenm='false' +# You can override this with Configure -Dusenm. +case "$usenm" in +'') usenm='false' ;; +esac +############################################################### # If you want to use nm, you'll probably have to use nm -p. The # following does that for you: nm_opt='-p' +############################################################### # I have received one report that you can't include utime.h in # pp_sys.c. Uncomment the following line if that happens to you: # i_utime=undef -# Apparently, some versions of SCO include both .so and .a libraries, -# but they don't mix as they do on other ELF systems. The upshot is -# that Configure finds -ldl (libdl.so) but 'ld' complains it can't -# find libdl.a. -# I don't know which systems have this feature, so I'll just remove -# -dl from libswanted for all SCO systems until someone can figure -# out how to get dynamic loading working on SCO. -# -# The output of uname -X on one such system was -# System = SCO_SV -# Node = xxxxx -# Release = 3.2v5.0.0 -# KernelID = 95/08/08 -# Machine = Pentium -# BusType = ISA -# Serial = xxxxx -# Users = 5-user -# OEM# = 0 -# Origin# = 1 -# NumCPU = 1 -# -# The 5.0.0 on the Release= line is probably the thing to watch. -# Andy Dougherty -# Thu Feb 1 15:06:56 EST 1996 -libswanted=`echo " $libswanted " | sed -e 's/ dl / /'` -set X $libswanted -shift -libswanted="$*" - +############################################################### # Perl 5.003_05 and later try to include both and # in pp_sys.c, but that fails due to a redefinition of struct timeval. -# This will generate a WHOA THERE. Accept the default. i_sysselct=$undef + + +############################################################### +#END of hint file