1# hints/os390.sh 2# 3# OS/390 hints by David J. Fiander <davidf@mks.com> 4# 5# OS/390 OpenEdition Release 3 Mon Sep 22 1997 thanks to: 6# 7# John Goodyear <johngood@us.ibm.com> 8# John Pfuntner <pfuntner@vnet.ibm.com> 9# Len Johnson <lenjay@ibm.net> 10# Bud Huff <BAHUFF@us.oracle.com> 11# Peter Prymmer <pvhp@forte.com> 12# Andy Dougherty <doughera@lafayette.edu> 13# Tim Bunce <Tim.Bunce@ig.co.uk> 14# 15# as well as the authors of the aix.sh file 16# 17 18# To get ANSI C, we need to use c89, and ld doesn't exist 19# You can override this with Configure -Dcc=gcc -Dld=ld. 20case "$cc" in 21'') cc='c89' ;; 22esac 23case "$ld" in 24'') ld='c89' ;; 25esac 26 27# -DMAXSIG=39 maximum signal number 28# -DOEMVS is used in place of #ifdef __MVS__ in certain places. 29# -D_OE_SOCKETS alters system headers. 30# -D_XOPEN_SOURCE_EXTENDEDA alters system headers. 31# c89 hides most of the useful header stuff, _ALL_SOURCE turns it on again. 32# YYDYNAMIC ensures that the OS/390 yacc generated parser is reentrant. 33# -DEBCDIC should come from Configure and need not be mentioned here. 34# Prepend your favorites with Configure -Dccflags=your_favorites 35case "$ccflags" in 36'') ccflags='-2 -Wc,XPLINK -DMAXSIG=39 -DOEMVS -D_OE_SOCKETS -D_XOPEN_SOURCE_EXTENDED -D_ALL_SOURCE -DYYDYNAMIC' ;; 37*) ccflags="$ccflags -2 -Wc,XPLINK -DMAXSIG=39 -DOEMVS -D_OE_SOCKETS -D_XOPEN_SOURCE_EXTENDED -D_ALL_SOURCE -DYYDYNAMIC" ;; 38esac 39 40# Turning on optimization breaks perl. 41# You can override this with Configure -Doptimize='-O' or somesuch. 42case "$optimize" in 43'') optimize='none' ;; 44esac 45 46# To link via definition side decks we need the dll option 47# You can override this with Configure -Ucccdlflags or somesuch. 48case "$cccdlflags" in 49'') cccdlflags='-W 0,dll' ;; 50esac 51 52case "$so" in 53'') so='a' ;; 54esac 55 56case "$alignbytes" in 57'') alignbytes=8 ;; 58esac 59 60case "$usemymalloc" in 61'') usemymalloc='n' ;; 62esac 63 64# On OS/390, libc.a doesn't really hold anything at all, 65# so running nm on it is pretty useless. 66# You can override this with Configure -Dusenm. 67case "$usenm" in 68'') usenm='false' ;; 69esac 70 71# Setting ldflags='-Wl,EDIT=NO' will get rid of the symbol 72# information at the end of the executable (=> smaller binaries). 73# Override this option with -Dldflags='whatever else you wanted'. 74case "$ldflags" in 75'') ldflags='-Wl,EDIT=NO -Wl,XPLINK,dll' ;; 76esac 77 78# In order to build with dynamic be sure to specify: 79# Configure -Dusedl 80# Do not forget to add $archlibexp/CORE to your LIBPATH. 81# You might want to override some of this with things like: 82# Configure -Dusedl -Ddlext=so -Ddlsrc=dl_dllload.xs. 83case "$usedl" in 84'') 85 usedl='n' 86 case "$dlext" in 87 '') dlext='none' ;; 88 esac 89 ;; 90define) 91 case "$useshrplib" in 92 '') useshrplib='true' ;; 93 esac 94 case "$dlsrc" in 95 '') dlsrc='dl_dllload.xs' ;; 96 esac 97 # For performance use 'so' at or beyond v2.8, 'dll' for 2.7 and prior versions 98 case "`uname -v`x`uname -r`" in 99 02x0[89].*|02x1[0-9].*|[0-9][3-9]x*) 100 so='so' 101 case "$dlext" in 102 '') dlext='so' ;; 103 esac 104 ;; 105 *) 106 so='dll' 107 case "$dlext" in 108 '') dlext='dll' ;; 109 esac 110 ;; 111 esac 112 libperl="libperl.$so" 113 ccflags="$ccflags -D_SHR_ENVIRON -DPERL_EXTERNAL_GLOB -Wc,dll" 114 cccdlflags='-c -Wc,XPLINK,dll,EXPORTALL' 115 # The following will need to be modified for the installed libperl.x. 116 # The modification to Config.pm is done by the installperl script after the build and test. 117 ccdlflags="-W l,XPLINK,dll `pwd`/libperl.x" 118 lddlflags="-W l,XPLINK,dll `pwd`/libperl.x" 119 ;; 120esac 121# even on static builds using LIBPATH should be OK. 122case "$ldlibpthname" in 123'') ldlibpthname=LIBPATH ;; 124esac 125 126# The following should always be used 127d_oldpthreads='define' 128 129# Header files to include. 130# You can override these with Configure -Ui_time -Ui_systime -Dd_pthread_atfork. 131case "$i_time" in 132'') i_time='define' ;; 133esac 134case "$i_systime" in 135'') i_systime='define' ;; 136esac 137case "$d_pthread_atfork" in 138'') d_pthread_atfork='undef' ;; 139esac 140case "$d_pthread_atfork" in 141'') d_pthread_atfork='undef' ;; 142esac 143 144# (from aix.sh) 145# uname -m output is too specific and not appropriate here 146# osname should come from Configure 147# You can override this with Configure -Darchname='s390' but please don't. 148case "$archname" in 149'') archname="$osname" ;; 150esac 151 152# We have our own cppstdin script. This is not a variable since 153# Configure sees the presence of the script file. 154# We put system header -D definitions in so that Configure 155# can find the shmat() prototype in <sys/shm.h> and various 156# other things. Unfortunately, cppflags occurs too late to be of 157# value external to the script. This may need to be revisited 158# under a compiler other than c89. 159case "$usedl" in 160define) 161echo 'cat >.$$.c; '"$cc"' -D_OE_SOCKETS -D_XOPEN_SOURCE_EXTENDED -D_ALL_SOURCE -D_SHR_ENVIRON -E -Wc,"LANGLVL(DOLLARINNAMES)",NOLOC ${1+"$@"} .$$.c | grep -v "??="; rm .$$.c' > cppstdin 162 ;; 163*) 164echo 'cat >.$$.c; '"$cc"' -D_OE_SOCKETS -D_XOPEN_SOURCE_EXTENDED -D_ALL_SOURCE -E -Wc,"LANGLVL(DOLLARINNAMES)",NOLOC ${1+"$@"} .$$.c | grep -v "??="; rm .$$.c' > cppstdin 165 ;; 166esac 167 168# 169# Note that Makefile.SH employs a bare yacc command to generate 170# perly.[hc] and a2p.[hc], hence you may wish to: 171# 172# alias yacc='myyacc' 173# 174# Then if you would like to use myyacc and skip past the 175# following warnings try invoking Configure like so: 176# 177# sh Configure -Dbyacc=yacc 178# 179# This trick ought to work even if your yacc is byacc. 180# 181if test "X$byacc" = "Xbyacc" ; then 182 if test -e /etc/yyparse.c ; then 183 : we should be OK - perhaps do a test -r? 184 else 185 cat <<EOWARN >&4 186 187Warning. You do not have a copy of yyparse.c, the default 188yacc parser template file, in place in /etc. 189EOWARN 190 if test -e /samples/yyparse.c ; then 191 cat <<EOWARN >&4 192 193There does appear to be a template file in /samples though. 194Please run: 195 196 cp /samples/yyparse.c /etc 197 198before attempting to Configure the build of $package. 199 200EOWARN 201 else 202 cat <<EOWARN >&4 203 204There does not appear to be one in /samples either. 205If you feel you can make use of an alternate yacc-like 206parser generator then please read the comments in the 207hints/os390.sh file carefully. 208 209EOWARN 210 fi 211 exit 1 212 fi 213fi 214 215# Most of the time gcvt() seems to work fine but 216# sometimes values like 0.1, 0.2, come out as "10", "20", 217# a trivial Perl demonstration snippet is 'print 0.1'. 218# The -W 0,float(ieee) seems to be the switch breaking gcvt(). 219# sprintf() seems to get things right(er). 220gconvert_preference=sprintf 221 222cat >config.arch<<'__CONFIG_ARCH__' 223# The '-W 0,float(ieee)' cannot be used during Configure as ldflags. 224 225ccflags="$ccflags -W 0,float(ieee)" 226 227__CONFIG_ARCH__ 228 229# Configure gets these wrong for some reason. 230d_gethostbyaddr_r='undef' 231d_gethostbyname_r='undef' 232d_gethostent_r='undef' 233 234