| 1 |
root |
1.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. |
| 20 |
|
|
case "$cc" in |
| 21 |
|
|
'') cc='c89' ;; |
| 22 |
|
|
esac |
| 23 |
|
|
case "$ld" in |
| 24 |
|
|
'') ld='c89' ;; |
| 25 |
|
|
esac |
| 26 |
|
|
|
| 27 |
|
|
# -DMAXSIG=38 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 |
| 35 |
|
|
case "$ccflags" in |
| 36 |
|
|
'') ccflags='-DMAXSIG=38 -DOEMVS -D_OE_SOCKETS -D_XOPEN_SOURCE_EXTENDED -D_ALL_SOURCE -DYYDYNAMIC' ;; |
| 37 |
|
|
*) ccflags="$ccflags -DMAXSIG=38 -DOEMVS -D_OE_SOCKETS -D_XOPEN_SOURCE_EXTENDED -D_ALL_SOURCE -DYYDYNAMIC" ;; |
| 38 |
|
|
esac |
| 39 |
|
|
|
| 40 |
|
|
# Turning on optimization breaks perl. |
| 41 |
|
|
# You can override this with Configure -Doptimize='-O' or somesuch. |
| 42 |
|
|
case "$optimize" in |
| 43 |
|
|
'') optimize='none' ;; |
| 44 |
|
|
esac |
| 45 |
|
|
|
| 46 |
|
|
# To link via definition side decks we need the dll option |
| 47 |
|
|
# You can override this with Configure -Ucccdlflags or somesuch. |
| 48 |
|
|
case "$cccdlflags" in |
| 49 |
|
|
'') cccdlflags='-W 0,dll' ;; |
| 50 |
|
|
esac |
| 51 |
|
|
|
| 52 |
|
|
case "$so" in |
| 53 |
|
|
'') so='a' ;; |
| 54 |
|
|
esac |
| 55 |
|
|
|
| 56 |
|
|
case "$alignbytes" in |
| 57 |
|
|
'') alignbytes=8 ;; |
| 58 |
|
|
esac |
| 59 |
|
|
|
| 60 |
|
|
case "$usemymalloc" in |
| 61 |
|
|
'') usemymalloc='n' ;; |
| 62 |
|
|
esac |
| 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. |
| 67 |
|
|
case "$usenm" in |
| 68 |
|
|
'') usenm='false' ;; |
| 69 |
|
|
esac |
| 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'. |
| 74 |
|
|
case "$ldflags" in |
| 75 |
|
|
'') ldflags='-Wl,EDIT=NO' ;; |
| 76 |
|
|
esac |
| 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. |
| 83 |
|
|
case "$usedl" in |
| 84 |
|
|
'') |
| 85 |
|
|
usedl='n' |
| 86 |
|
|
case "$dlext" in |
| 87 |
|
|
'') dlext='none' ;; |
| 88 |
|
|
esac |
| 89 |
|
|
;; |
| 90 |
|
|
define) |
| 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,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,dll `pwd`/libperl.x" |
| 118 |
|
|
lddlflags="-W l,dll `pwd`/libperl.x" |
| 119 |
|
|
;; |
| 120 |
|
|
esac |
| 121 |
|
|
# even on static builds using LIBPATH should be OK. |
| 122 |
|
|
case "$ldlibpthname" in |
| 123 |
|
|
'') ldlibpthname=LIBPATH ;; |
| 124 |
|
|
esac |
| 125 |
|
|
|
| 126 |
|
|
# The folowing should always be used |
| 127 |
|
|
d_oldpthreads='define' |
| 128 |
|
|
|
| 129 |
|
|
# Header files to include. |
| 130 |
|
|
# You can override these with Configure -Ui_time -Ui_systime -Dd_pthread_atfork. |
| 131 |
|
|
case "$i_time" in |
| 132 |
|
|
'') i_time='define' ;; |
| 133 |
|
|
esac |
| 134 |
|
|
case "$i_systime" in |
| 135 |
|
|
'') i_systime='define' ;; |
| 136 |
|
|
esac |
| 137 |
|
|
case "$d_pthread_atfork" in |
| 138 |
|
|
'') d_pthread_atfork='undef' ;; |
| 139 |
|
|
esac |
| 140 |
|
|
case "$d_pthread_atfork" in |
| 141 |
|
|
'') d_pthread_atfork='undef' ;; |
| 142 |
|
|
esac |
| 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. |
| 148 |
|
|
case "$archname" in |
| 149 |
|
|
'') archname="$osname" ;; |
| 150 |
|
|
esac |
| 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. |
| 159 |
|
|
case "$usedl" in |
| 160 |
|
|
define) |
| 161 |
|
|
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 |
| 162 |
|
|
;; |
| 163 |
|
|
*) |
| 164 |
|
|
echo 'cat >.$$.c; '"$cc"' -D_OE_SOCKETS -D_XOPEN_SOURCE_EXTENDED -D_ALL_SOURCE -E -Wc,NOLOC ${1+"$@"} .$$.c; rm .$$.c' > cppstdin |
| 165 |
|
|
;; |
| 166 |
|
|
esac |
| 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 |
|
|
# |
| 181 |
|
|
if 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 |
|
|
|
| 187 |
|
|
Warning. You do not have a copy of yyparse.c, the default |
| 188 |
|
|
yacc parser template file, in place in /etc. |
| 189 |
|
|
EOWARN |
| 190 |
|
|
if test -e /samples/yyparse.c ; then |
| 191 |
|
|
cat <<EOWARN >&4 |
| 192 |
|
|
|
| 193 |
|
|
There does appear to be a template file in /samples though. |
| 194 |
|
|
Please run: |
| 195 |
|
|
|
| 196 |
|
|
cp /samples/yyparse.c /etc |
| 197 |
|
|
|
| 198 |
|
|
before attempting to Configure the build of $package. |
| 199 |
|
|
|
| 200 |
|
|
EOWARN |
| 201 |
|
|
else |
| 202 |
|
|
cat <<EOWARN >&4 |
| 203 |
|
|
|
| 204 |
|
|
There does not appear to be one in /samples either. |
| 205 |
|
|
If you feel you can make use of an alternate yacc-like |
| 206 |
|
|
parser generator then please read the comments in the |
| 207 |
|
|
hints/os390.sh file carefully. |
| 208 |
|
|
|
| 209 |
|
|
EOWARN |
| 210 |
|
|
fi |
| 211 |
|
|
exit 1 |
| 212 |
|
|
fi |
| 213 |
|
|
fi |
| 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). |
| 220 |
|
|
gconvert_preference=sprintf |
| 221 |
|
|
|
| 222 |
|
|
cat >config.arch<<'__CONFIG_ARCH__' |
| 223 |
|
|
# The '-W 0,float(ieee)' cannot be used during Configure as ldflags. |
| 224 |
|
|
|
| 225 |
|
|
ccflags="$ccflags -W 0,float(ieee)" |
| 226 |
|
|
|
| 227 |
|
|
__CONFIG_ARCH__ |