X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=hints%2Fos390.sh;h=0873dfc83d8c2edaf519e6a8d010bb277dbe7703;hb=20b634c2cddd73f32cb58e435a5061f5c6e53570;hp=ee751724469437e686b1f5425786ea3e0e76f457;hpb=ac9901e0f0bc12ad100c6e8b5f8bd40595e928ad;p=p5sagit%2Fp5-mst-13.2.git diff --git a/hints/os390.sh b/hints/os390.sh index ee75172..0873dfc 100644 --- a/hints/os390.sh +++ b/hints/os390.sh @@ -9,7 +9,7 @@ # Len Johnson # Bud Huff # Peter Prymmer -# Andy Dougherty +# Andy Dougherty # Tim Bunce # # as well as the authors of the aix.sh file @@ -68,10 +68,17 @@ case "$usenm" in '') usenm='false' ;; esac -# Dynamic loading doesn't work on OS/390 quite yet. -# However the easiest way to experiment with dynamic loading is with: -# Configure -Dusedl -# You can even override some of this with things like: +# Setting ldflags='-Wl,EDIT=NO' will get rid of the symbol +# information at the end of the executable (=> smaller binaries). +# Override this option with -Dldflags='whatever else you wanted'. +case "$ldflags" in +'') ldflags='-Wl,EDIT=NO' ;; +esac + +# In order to build with dynamic be sure to specify: +# Configure -Dusedl +# Do not forget to add $archlibexp/CORE to your LIBPATH. +# You might want to override some of this with things like: # Configure -Dusedl -Ddlext=so -Ddlsrc=dl_dllload.xs. case "$usedl" in '') @@ -84,23 +91,31 @@ define) case "$useshrplib" in '') useshrplib='true' ;; esac - case "$dlext" in - '') dlext='dll' ;; - esac case "$dlsrc" in '') dlsrc='dl_dllload.xs' ;; esac - so='dll' - libperl='libperl.dll' + # For performance use 'so' at or beyond v2.8, 'dll' for 2.7 and prior versions + case "`uname -v`x`uname -r`" in + 02x0[89].*|02x1[0-9].*|[0-9][3-9]x*) + so='so' + case "$dlext" in + '') dlext='so' ;; + esac + ;; + *) + so='dll' + case "$dlext" in + '') dlext='dll' ;; + esac + ;; + esac + libperl="libperl.$so" ccflags="$ccflags -D_SHR_ENVIRON -DPERL_EXTERNAL_GLOB -Wc,dll" cccdlflags='-c -Wc,dll,EXPORTALL' - # You might add '-Wl,EDIT=NO' to get rid of the symbol - # information at the end of the executable. - # - # The following will need to be modified for the installed libperl.x + # The following will need to be modified for the installed libperl.x. + # The modification to Config.pm is done by the installperl script after the build and test. ccdlflags="-W l,dll `pwd`/libperl.x" - ldflags='' - lddlflags='-W l,dll' + lddlflags="-W l,dll `pwd`/libperl.x" ;; esac # even on static builds using LIBPATH should be OK. @@ -108,14 +123,23 @@ case "$ldlibpthname" in '') ldlibpthname=LIBPATH ;; esac +# The folowing should always be used +d_oldpthreads='define' + # Header files to include. -# You can override these with Configure -Ui_time -Ui_systime. +# You can override these with Configure -Ui_time -Ui_systime -Dd_pthread_atfork. case "$i_time" in '') i_time='define' ;; esac case "$i_systime" in '') i_systime='define' ;; esac +case "$d_pthread_atfork" in +'') d_pthread_atfork='undef' ;; +esac +case "$d_pthread_atfork" in +'') d_pthread_atfork='undef' ;; +esac # (from aix.sh) # uname -m output is too specific and not appropriate here @@ -125,14 +149,6 @@ case "$archname" in '') archname="$osname" ;; esac -# Architecture related object files. -# ebcdic.c contains special \cX mapping code for EBCDIC char sets. -# Prepend your preference with Configure -Darchobs=your_preference.o. -case "$archname" in -'') archobjs="ebcdic.o" ;; -*) archobjs="$archobjs ebcdic.o" ;; -esac - # We have our own cppstdin script. This is not a variable since # Configure sees the presence of the script file. # We put system header -D definitions in so that Configure @@ -140,7 +156,14 @@ esac # other things. Unfortunately, cppflags occurs too late to be of # value external to the script. This may need to be revisited # under a compiler other than c89. +case "$usedl" in +define) +echo 'cat >.$$.c; '"$cc"' -D_OE_SOCKETS -D_XOPEN_SOURCE_EXTENDED -D_ALL_SOURCE -D_SHR_ENVIRON -E -Wc,NOLOC ${1+"$@"} .$$.c; rm .$$.c' > cppstdin + ;; +*) echo 'cat >.$$.c; '"$cc"' -D_OE_SOCKETS -D_XOPEN_SOURCE_EXTENDED -D_ALL_SOURCE -E -Wc,NOLOC ${1+"$@"} .$$.c; rm .$$.c' > cppstdin + ;; +esac # # Note that Makefile.SH employs a bare yacc command to generate @@ -189,3 +212,16 @@ EOWARN fi fi +# Most of the time gcvt() seems to work fine but +# sometimes values like 0.1, 0.2, come out as "10", "20", +# a trivial Perl demonstration snippet is 'print 0.1'. +# The -W 0,float(ieee) seems to be the switch breaking gcvt(). +# sprintf() seems to get things right(er). +gconvert_preference=sprintf + +cat >config.arch<<'__CONFIG_ARCH__' +# The '-W 0,float(ieee)' cannot be used during Configure as ldflags. + +ccflags="$ccflags -W 0,float(ieee)" + +__CONFIG_ARCH__