aboutsummaryrefslogtreecommitdiff
path: root/contrib/perl5/hints/os390.sh
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/perl5/hints/os390.sh')
-rw-r--r--contrib/perl5/hints/os390.sh152
1 files changed, 124 insertions, 28 deletions
diff --git a/contrib/perl5/hints/os390.sh b/contrib/perl5/hints/os390.sh
index d6f68212422a..4eff5a82174c 100644
--- a/contrib/perl5/hints/os390.sh
+++ b/contrib/perl5/hints/os390.sh
@@ -3,7 +3,8 @@
# OS/390 hints by David J. Fiander <davidf@mks.com>
#
# OS/390 OpenEdition Release 3 Mon Sep 22 1997 thanks to:
-#
+#
+# John Goodyear <johngood@us.ibm.com>
# John Pfuntner <pfuntner@vnet.ibm.com>
# Len Johnson <lenjay@ibm.net>
# Bud Huff <BAHUFF@us.oracle.com>
@@ -15,53 +16,148 @@
#
# 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
+
+# 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
-usemymalloc='n'
+case "$alignbytes" in
+'') alignbytes=8 ;;
+esac
-so='a'
+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
-usedl='n'
-dlext='none'
+# 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
-# Configure can't figure this out for some reason
-d_shmatprototype='define'
+# 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
-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
-
-# 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.
+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 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'