develooper Front page | perl.perl5.porters | Postings from January 2001

[PATCH: perl@8342] updates to OS/390 hints file

From:
Peter Prymmer
Date:
January 8, 2001 18:03
Subject:
[PATCH: perl@8342] updates to OS/390 hints file
Message ID:
Pine.OSF.4.10.10101081805530.239173-100000@aspara.forte.com



Enclosed please find a patch to the 8342 kit's os390 hints file
that was intended to allow for easier experimentation with dynamic
loading mostly by changing lines like:

 var='val'

to the overridable:

 case "$var" in
 '') var='val' ;;
 esac

form.  This patch also adds some crucial compiler switches to the cppstdin
script that is used by Configure as well as by perl's -P switch.
A view of the surprisingly dramatic difference that change to cppstdin
makes can be seen by taking a look at the abbreviated diff between a 
config.sh done with an unpatched 8342 kit (-) and one done with the patch (+):

-d_drand48proto='undef'
+d_drand48proto='define'
-d_gethostprotos='undef'
+d_gethostprotos='define'
-d_getnetprotos='undef'
+d_getnetprotos='define'
-d_getprotoprotos='undef'
+d_getprotoprotos='define'
-d_getservprotos='undef'
+d_getservprotos='define'
-d_sbrkproto='undef'
+d_sbrkproto='define'
-d_telldirproto='undef'
+d_telldirproto='define'

And to make matters even better the kit's make test result fails
one fewer tests as a result of this patch (fail 15 of 17737 on my
setup):  
Failed 15 test scripts out of 263, 94.30% okay.
u=11.97  s=3.99  cu=370.97  cs=123.65  scripts=263  tests=17737

Please note that this does not implement dynamic loading but 
only strives to make it easier to experiment with.  Further
patching of os390.sh should be expected in the future when the
requisite .xs file gets written and folks decide that usedl='y'
ought to be the default.

Files affected:   hints/os390.sh
                  README.os390

diff -ru perl_8342_orig/hints/os390.sh perl_8342/hints/os390.sh
--- perl_8342_orig/hints/os390.sh	Mon Dec 11 19:30:26 2000
+++ perl_8342/hints/os390.sh	Mon Jan  8 16:54:03 2001
@@ -15,53 +15,125 @@
 #
 
 # To get ANSI C, we need to use c89, and ld doesn't exist
-cc='c89'
-ld='c89'
-# To link via definition side decks we need the dll option
-cccdlflags='-W 0,dll,"langlvl(extended)"'
-# c89 hides most of the useful header stuff, _ALL_SOURCE turns it on again,
+# 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.
-ccflags='-DMAXSIG=38 -DOEMVS -D_OE_SOCKETS -D_XOPEN_SOURCE_EXTENDED -D_ALL_SOURCE -DYYDYNAMIC'
-# Turning on optimization breaks perl
-optimize='none'
+# -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
 
-alignbytes=8
+# Turning on optimization breaks perl.
+# You can override this with Configure -Doptimize='-O' or somesuch.
+case "$optimize" in
+'') optimize='none' ;;
+esac
 
-usemymalloc='n'
+# ccdlflags have yet to be determined.
+#case "$ccdlflags" in
+#'') ccdlflags='-c' ;;
+#esac
 
-so='a'
+# 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,"langlvl(extended)"' ;;
+esac
+
+# ldflags have yet to be determined.
+#case "$ldflags" in
+#'') ldflags='' ;;
+#esac
+
+# lddlflags have yet to be determined.
+#case "$lddlflags" in
+#'') lddlflags='' ;;
+#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.
-usenm='n'
+# You can override this with Configure -Dusenm.
+case "$usenm" in
+'') usenm='false' ;;
+esac
+
+# Dynamic loading doesn't work on OS/390 quite yet.
+# You can override this with 
+#  Configure -Dusedl -Ddlext=.so -Ddlsrc=dl_dllload.xs.
+case "$usedl" in
+'') usedl='n' ;;
+esac
+case "$dlext" in
+'') dlext='none' ;;
+esac
+#case "$dlsrc" in
+#'') dlsrc='none' ;;
+#esac
+case "$ldlibpthname" in
+'') ldlibpthname=LIBPATH ;;
+esac
 
-# Dynamic loading doesn't work on OS/390 quite yet
-usedl='n'
-dlext='none'
-
-# Configure can't figure this out for some reason
-d_shmatprototype='define'
-
-usenm='false'
-i_time='define'
-i_systime='define'
+# Header files to include.
+# You can override these with Configure -Ui_time -Ui_systime.
+case "$i_time" in
+'') i_time='define' ;;
+esac
+case "$i_systime" in
+'') i_systime='define' ;;
+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
 
-archobjs=ebcdic.o
+# 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.
-echo 'cat >.$$.c; '"$cc"' -E -Wc,NOLOC ${1+"$@"} .$$.c; rm .$$.c' > cppstdin
+# 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 <sys/shm.h> 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.
+echo 'cat >.$$.c; '"$cc"' -D_OE_SOCKETS -D_XOPEN_SOURCE_EXTENDED -D_ALL_SOURCE -E -Wc,NOLOC ${1+"$@"} .$$.c; rm .$$.c' > cppstdin
 
 #
-# Note that Makefile.SH employs a bare yacc to generate 
+# Note that Makefile.SH employs a bare yacc command to generate 
 # perly.[hc] and a2p.[hc], hence you may wish to:
 #
 #    alias yacc='myyacc'
diff -ru perl_8342_orig/README.os390 perl_8342/README.os390
--- perl_8342_orig/README.os390	Mon Dec 11 19:29:42 2000
+++ perl_8342/README.os390	Mon Jan  8 16:49:23 2001
@@ -150,18 +150,6 @@
 
 =item *
 
-A message of the form:
-
- shmat() found.
- and it returns (void *).
- *** WHOA THERE!!! ***
-     The recommended value for $d_shmatprototype on this machine was "define"!
-     Keep the recommended value? [y]
-
-is nothing to worry about at all.
-
-=item *
-
 Do not turn on the compiler optimization flag "-O".  There is
 a bug in either the optimizer or perl that causes perl to
 not work correctly when the optimizer is on.
End of Patch.

Peter Prymmer







nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About