# sco.sh # Courtesy of Joel Rosi-Schwartz ############################################################### # Additional SCO version info from # Peter Wolfe # Fri Jul 19 14:54:25 EDT 1996 # 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 development 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 # BusType = ISA # Serial = xxxxx # Users = 5-user # OEM# = 0 # Origin# = 1 # 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: # 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 exception 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 # caught 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 ############################################################### # We don't want Xenix cross-development libraries glibpth=`echo $glibpth | sed -e 's! /usr/lib/386 ! !' -e 's! /lib/386 ! !'` xlibpth='' ############################################################### # 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' # 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 ############################################################### # 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. i_sysselct=$undef ############################################################### #END of hint file