X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=hints%2Fos390.sh;h=0873dfc83d8c2edaf519e6a8d010bb277dbe7703;hb=8d4e7e3907672fbc74df892b580e2e92408bf462;hp=e69de29bb2d1d6434b8b29ae775ad8c2e48c5391;hpb=cfb55b37fb4b34b9bef44809cb383c4450d1d628;p=p5sagit%2Fp5-mst-13.2.git diff --git a/hints/os390.sh b/hints/os390.sh index e69de29..0873dfc 100644 --- a/hints/os390.sh +++ b/hints/os390.sh @@ -0,0 +1,227 @@ +# hints/os390.sh +# +# OS/390 hints by David J. Fiander +# +# OS/390 OpenEdition Release 3 Mon Sep 22 1997 thanks to: +# +# John Goodyear +# John Pfuntner +# Len Johnson +# Bud Huff +# Peter Prymmer +# Andy Dougherty +# Tim Bunce +# +# as well as the authors of the aix.sh file +# + +# To get ANSI C, we need to use c89, and ld doesn't exist +# You can override this with Configure -Dcc=gcc -Dld=ld. +case "$cc" in +'') cc='c89' ;; +esac +case "$ld" in +'') ld='c89' ;; +esac + +# -DMAXSIG=38 maximum signal number +# -DOEMVS is used in place of #ifdef __MVS__ in certain places. +# -D_OE_SOCKETS alters system headers. +# -D_XOPEN_SOURCE_EXTENDEDA alters system headers. +# c89 hides most of the useful header stuff, _ALL_SOURCE turns it on again. +# YYDYNAMIC ensures that the OS/390 yacc generated parser is reentrant. +# -DEBCDIC should come from Configure and need not be mentioned here. +# Prepend your favorites with Configure -Dccflags=your_favorites +case "$ccflags" in +'') ccflags='-DMAXSIG=38 -DOEMVS -D_OE_SOCKETS -D_XOPEN_SOURCE_EXTENDED -D_ALL_SOURCE -DYYDYNAMIC' ;; +*) ccflags="$ccflags -DMAXSIG=38 -DOEMVS -D_OE_SOCKETS -D_XOPEN_SOURCE_EXTENDED -D_ALL_SOURCE -DYYDYNAMIC" ;; +esac + +# Turning on optimization breaks perl. +# You can override this with Configure -Doptimize='-O' or somesuch. +case "$optimize" in +'') optimize='none' ;; +esac + +# To link via definition side decks we need the dll option +# You can override this with Configure -Ucccdlflags or somesuch. +case "$cccdlflags" in +'') cccdlflags='-W 0,dll' ;; +esac + +case "$so" in +'') so='a' ;; +esac + +case "$alignbytes" in +'') alignbytes=8 ;; +esac + +case "$usemymalloc" in +'') usemymalloc='n' ;; +esac + +# On OS/390, libc.a doesn't really hold anything at all, +# so running nm on it is pretty useless. +# You can override this with Configure -Dusenm. +case "$usenm" in +'') usenm='false' ;; +esac + +# 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 +'') + usedl='n' + case "$dlext" in + '') dlext='none' ;; + esac + ;; +define) + case "$useshrplib" in + '') useshrplib='true' ;; + esac + case "$dlsrc" in + '') dlsrc='dl_dllload.xs' ;; + esac + # 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' + # 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" + lddlflags="-W l,dll `pwd`/libperl.x" + ;; +esac +# even on static builds using LIBPATH should be OK. +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 -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 +# osname should come from Configure +# You can override this with Configure -Darchname='s390' but please don't. +case "$archname" in +'') archname="$osname" ;; +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 +# can find the shmat() prototype in and various +# 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 +# perly.[hc] and a2p.[hc], hence you may wish to: +# +# alias yacc='myyacc' +# +# Then if you would like to use myyacc and skip past the +# following warnings try invoking Configure like so: +# +# sh Configure -Dbyacc=yacc +# +# This trick ought to work even if your yacc is byacc. +# +if test "X$byacc" = "Xbyacc" ; then + if test -e /etc/yyparse.c ; then + : we should be OK - perhaps do a test -r? + else + cat <&4 + +Warning. You do not have a copy of yyparse.c, the default +yacc parser template file, in place in /etc. +EOWARN + if test -e /samples/yyparse.c ; then + cat <&4 + +There does appear to be a template file in /samples though. +Please run: + + cp /samples/yyparse.c /etc + +before attempting to Configure the build of $package. + +EOWARN + else + cat <&4 + +There does not appear to be one in /samples either. +If you feel you can make use of an alternate yacc-like +parser generator then please read the comments in the +hints/os390.sh file carefully. + +EOWARN + fi + exit 1 + 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__