# Len Johnson <lenjay@ibm.net>
# Bud Huff <BAHUFF@us.oracle.com>
# Peter Prymmer <pvhp@forte.com>
-# Andy Dougherty <doughera@lafcol.lafayette.edu>
+# Andy Dougherty <doughera@lafayette.edu>
# Tim Bunce <Tim.Bunce@ig.co.uk>
#
# 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' ;;
+'') cc='c99' ;;
esac
case "$ld" in
-'') ld='c89' ;;
+'') ld='c99' ;;
esac
-# -DMAXSIG=38 maximum signal number
+# -DMAXSIG=39 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.
# -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" ;;
+'') ccflags='-qlanglvl=extended:extc89:extc99 -qlongname -qxplink -qdll -qfloat=ieee -qhaltonmsg=3296:4108 -DMAXSIG=39 -DOEMVS -D_OE_SOCKETS -D_XOPEN_SOURCE_EXTENDED -D_ALL_SOURCE -DYYDYNAMIC -D_POSIX_SOURCE=1' ;;
+*) ccflags='$ccflags -qlanglvl=extended:extc89:extc99 -qlongname -qxplink -qdll -qfloat=ieee -qhaltonmsg=3296:4108 -DMAXSIG=39 -DOEMVS -D_OE_SOCKETS -D_XOPEN_SOURCE_EXTENDED -D_ALL_SOURCE -DYYDYNAMIC -D_POSIX_SOURCE=1' ;;
esac
# Turning on optimization breaks perl.
# 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' ;;
+'') cccdlflags='-qxplink -qdll' ;;
esac
case "$so" 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='-qxplink -qdll' ;;
+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
'')
;;
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 (=> smaller binaries).
- # Do so with -Dldflags='-Wl,EDIT=NO'.
- case "$ldflags" in
- '') ldflags='' ;;
- esac
+ ccflags="$ccflags -D_SHR_ENVIRON -DPERL_EXTERNAL_GLOB -qexportall -qdll -qxplink"
+ cccdlflags='-c -qexportall -qxplink -qdll'
# 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"
+ ccdlflags="-qxplink -qdll `pwd`/libperl.x"
+ lddlflags="-qxplink -qdll `pwd`/libperl.x"
;;
esac
# even on static builds using LIBPATH should be OK.
'') ldlibpthname=LIBPATH ;;
esac
+# The following 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
'') 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
# 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 -D_SHR_ENVIRON -E -Wc,"LANGLVL(DOLLARINNAMES)",NOLOC ${1+"$@"} .$$.c | fgrep -v "??="; 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
+echo 'cat >.$$.c; '"$cc"' -D_OE_SOCKETS -D_XOPEN_SOURCE_EXTENDED -D_ALL_SOURCE -E -Wc,"LANGLVL(DOLLARINNAMES)",NOLOC ${1+"$@"} .$$.c | fgrep -v "??="; 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:
+# perly.[hc], hence you may wish to:
#
# alias yacc='myyacc'
#
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
+
+# Configure gets these wrong for some reason.
+d_gethostbyaddr_r='undef'
+d_gethostbyname_r='undef'
+d_gethostent_r='undef'
+
+# The z/OS C compiler compiler supports the attribute keyword, but in a
+# limited manner.
+#
+# Ideally, Configure's tests should test the attributes as they are expected
+# to be used in perl, and, ideally, those tests would fail on z/OS.
+# Until then, just tell Configure to ignore the attributes. Currently,
+# Configure thinks attributes are supported because it does not recognize
+# warning messages like this:
+#
+# INFORMATIONAL CCN4108 ./proto.h:4534 The use of keyword '__attribute__' is non-portable.
+
+d_attribute_deprecated='undef'
+d_attribute_format='undef'
+d_attribute_malloc='undef'
+d_attribute_nonnull='undef'
+d_attribute_noreturn='undef'
+d_attribute_pure='undef'
+d_attribute_unused='undef'
+d_attribute_warn_unused_result='undef'
+
+# nan() is in libm but doesn't work as expected: nan("") or nan("0")
+# returns zero, not a nan:
+# http://www-01.ibm.com/support/knowledgecenter/SSLTBW_1.12.0/com.ibm.zos.r12.bpxbd00/nan.htm%23nan?lang=en
+# contrast with e.g.
+# http://www.cplusplus.com/reference/cmath/nan-function/
+# (C++ but C99 math agrees)
+# XXX: Configure scan for proper behavior
+d_nan='undef'
+
+# Configures says this exists, but it doesn't work properly. See
+# <54DCE073.4010100@khwilliamson.com>
+d_dir_dd_fd='undef'