xref: /openbsd/gnu/usr.bin/perl/hints/os390.sh (revision 5af055cd)
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