Closed MikeFultonDev closed 2 years ago
c99 -c -qlanglvl=extc1x -qxplink -qexportall -qhaltonmsg=3296:4108 -qsuppress=CCN3159 -qfloat=ieee -DMAXSIG=39 -DOEMVS -DYYDYNAMIC
-DNO_LOCALE_MESSAGES -D_OPEN_THREADS=3 -D_UNIX03_SOURCE=1 -DNSIG=39 -D_AE_BIMODAL=1 -D_XOPEN_SOURCE_EXTENDED -D_ALL_SOURCE -D_ENHAN
CED_ASCII_EXT=0xFFFFFFFF -D_OPEN_SYS_FILE_EXT=1 -D_OPEN_SYS_SOCK_IPV6 -D_XOPEN_SOURCE=600 -D_XOPEN_SOURCE_EXTENDED -D_SHR_ENVIRON
-DVERSION=\"1.52\" -DXS_VERSION=\"1.52\" -c -qxplink -qexportall "-I../.." -DLIBC="" DynaLoader.c
rm -rf ../../DynaLoader.o
cp DynaLoader.o ../../DynaLoader.o
rm -f libperl.so
c99 -o libperl.so -Wl,XPLINK,dll op.o perl.o universal.o gv.o toke.o perly.o pad.o regcomp.o dump.o util.o mg.o reentr.o mro_core.o keywords.o builtin.o hv.o av.o run.o pp_hot.o sv.o pp.o scope.o pp_ctl.o pp_sys.o doop.o doio.o regexec.o utf8.o taint.o deb.o globals.o perlio.o numeric.o mathoms.o locale.o pp_pack.o pp_sort.o caretx.o dquote.o time64.o DynaLoader.o -lm -lc
env LD_RUN_PATH=/usr/local/perl/blead.31.dynamic.ascii/lib/5.35.7/os390/CORE c99 -o perl -qxplink -L/usr/local/lib /app/temp/perlport/blead.31.dynamic.ascii/perl5/libperl.x perlmain.o libperl.x cat ext.libs
-lm -lc
IEW2689W 4C40 DEFINITION SIDE FILE IS NOT DEFINED.
FSUM3065 The LINKEDIT step ended with return code 4.
/bin/env LIBPATH=/app/temp/perlport/blead.31.dynamic.ascii/perl5:/app/temp/perlport/blead.31.dynamic.ascii/perl5:/lib:/usr/lib ./min
iperl -Ilib mkppport
running "/app/temp/perlport/blead.31.dynamic.ascii/perl5/miniperl" -I../../lib PPPort_pm.PL
For 31-bit, this bind creates the libperl.x file:
c99 -o libperl.so -Wl,XPLINK,dll op.o perl.o universal.o gv.o toke.o perly.o pad.o regcomp.o dump.o util.o mg.o reentr.o mro_core.o keywords.o builtin.o hv.o av.o run.o pp_hot.o sv.o pp.o scope.o pp_ctl.o pp_sys.o doop.o doio.o regexec.o utf8.o taint.o deb.o globals.o perlio.o numeric.o mathoms.o locale.o pp_pack.o pp_sort.o caretx.o dquote.o time64.o DynaLoader.o -lm -lc
In 64-bit, this bind is specifying the libperl.x and so complains (it isn't created yet). Also, the 'dll' option needs to be passed to the link step:
c99 -o libperl.so -qlanglvl=extc1x -Wc,lp64 -Wl,dll,lp64 -qexportall -L/usr/local/lib op.o perl.o universal.o gv.o toke.o perly.o pad.o regcomp.o dump.o util.o mg.o reentr.o mro_core.o keywords.o builtin.o hv.o av.o run.o pp_hot.o sv.o pp.o scope.o pp_ctl.o pp_sys.o doop.o doio.o regexec.o utf8.o taint.o deb.o globals.o perlio.o numeric.o mathoms.o locale.o pp_pack.o pp_sort.o caretx.o dquote.o time64.o DynaLoader.o -lm -lc
Confirming that this is not related to ASCII/EBCDIC. I get the same failure with 64-bit dynamic EBCDIC:
c99 -o libperl.so -qlanglvl=extc1x -Wc,lp64 -Wl,lp64 -qexportall -L/usr/local/lib /app/temp/perlport/blead.64.dynamic.ebcdic/perl5/l ibperl.x op.o perl.o universal.o gv.o toke.o perly.o pad.o regcomp.o dump.o util.o mg.o reentr.o mro_core.o keywords.o builtin.o hv.o av.o run.o pp_hot.o sv.o pp.o scope.o pp_ctl.o pp_sys.o doop.o doio.o regexec.o utf8.o taint.o deb.o globals.o perlio.o numeric.o mathoms.o locale.o pp_pack.o pp_sort.o caretx.o dquote.o time64.o DynaLoader.o -lm -lc FSUM3228 c99: Input file /app/temp/perlport/blead.64.dynamic.ebcdic/perl5/libperl.x not found.
This is the 'original' code for usedl in hints/os390.sh
# 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"
# Allows char **environ to be accessed from a dynamically loaded
# module such as a DLL
ccflags="$ccflags -D_SHR_ENVIRON"
cccdlflags="-c $def_os390_cccdlflags"
lddlflags="$def_os390_cccdlflags"
# 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. These are written to a CBU so that the libperl.x file
# comes after all the dash-options in the flags. Configure takes the
# lddlflags we give it and looks for paths to libraries to append -L options
# to lddlflags. But this causes the file libperl.x to appear in the final
# command line after the -L options. And z/OS doesn't like filenames after
# options. This CBU defers the adding of libperl.x until after any munging
# that Configure does.
cat >config.arch <<' EOCBU'
case "ccdlflags" in
'') ccdlflags="`pwd`/libperl.x" ;;
*) ccdlflags="$ccdlflags `pwd`/libperl.x" ;;
esac
lddlflags="$lddlflags `pwd`/libperl.x"
EOCBU
;;
esac
Also, the cflags always pass in -Wl,dll regardless of build option:
os390_Wl="-Wl"
...
# Without this, you get "IEW2689W 4C40 DEFINITION SIDE FILE IS NOT DEFINED."
os390_Wl="$os390_Wl,DLL"
...
# Combinte the -W flags with the rest
def_os390_cflags="$def_os390_cflags $os390_Wc";
def_os390_cflags="$def_os390_cflags $os390_Wl";
c99 -o perl -Wl,lp64 -L/usr/local/lib perlmain.o libperl.a lib/auto/B/B.a lib/auto/Compress/Raw/Bzip2/Bzip2.a lib/auto/Compress/R
aw/Zlib/Zlib.a lib/auto/Cwd/Cwd.a lib/auto/Data/Dumper/Dumper.a lib/auto/Devel/PPPort/PPPort.a lib/auto/Devel/Peek/Peek.a lib/auto/D
igest/MD5/MD5.a lib/auto/Digest/SHA/SHA.a lib/auto/Encode/Encode.a lib/auto/Fcntl/Fcntl.a lib/auto/File/DosGlob/DosGlob.a lib/auto/F
ile/Glob/Glob.a lib/auto/Filter/Util/Call/Call.a lib/auto/Hash/Util/Util.a lib/auto/Hash/Util/FieldHash/FieldHash.a lib/auto/I18N/La
nginfo/Langinfo.a lib/auto/IO/IO.a lib/auto/IPC/SysV/SysV.a lib/auto/List/Util/Util.a lib/auto/MIME/Base64/Base64.a lib/auto/Math/Bi
gInt/FastCalc/FastCalc.a lib/auto/NDBM_File/NDBM_File.a lib/auto/Opcode/Opcode.a lib/auto/POSIX/POSIX.a lib/auto/PerlIO/encoding/enc
oding.a lib/auto/PerlIO/mmap/mmap.a lib/auto/PerlIO/scalar/scalar.a lib/auto/PerlIO/via/via.a lib/auto/SDBM_File/SDBM_File.a lib/aut
o/Socket/Socket.a lib/auto/Storable/Storable.a lib/auto/Sys/Hostname/Hostname.a lib/auto/Sys/Syslog/Syslog.a lib/auto/Time/HiRes/HiR
es.a lib/auto/Time/Piece/Piece.a lib/auto/Unicode/Collate/Collate.a lib/auto/Unicode/Normalize/Normalize.a lib/auto/attributes/attri
butes.a lib/auto/mro/mro.a lib/auto/re/re.a lib/auto/threads/threads.a lib/auto/threads/shared/shared.a lib/auto/Encode/Byte/Byte.a
lib/auto/Encode/CN/CN.a lib/auto/Encode/EBCDIC/EBCDIC.a lib/auto/Encode/JP/JP.a lib/auto/Encode/KR/KR.a lib/auto/Encode/Symbol/Symbo
l.a lib/auto/Encode/TW/TW.a lib/auto/Encode/Unicode/Unicode.a `cat ext.libs` -lm -lc
IEW2689W 4C40 DEFINITION SIDE FILE IS NOT DEFINED.
FSUM3065 The LINKEDIT step ended with return code 4.
Build works fine for 64-bit ascii static
fixed after I passed in the right option
/tmp/make.blead.64.dynamic.ascii.out
c99 -c -qlanglvl=extc1x -Wc,lp64 -qexportall -qhaltonmsg=3296:4108 -qsuppress=CCN3159 -qfloat=ieee -DMAXSIG=39 -DOEMVS -DYYDYNAMIC -DNO_LOCALE_MESSAGES -D_OPEN_THREADS=3 -D_UNIX03_SOURCE=1 -DNSIG=39 -D_AE_BIMODAL=1 -D_XOPEN_SOURCE_EXTENDED -D_ALL_SOURCE -D_ENHAN CED_ASCII_EXT=0xFFFFFFFF -D_OPEN_SYS_FILE_EXT=1 -D_OPEN_SYS_SOCK_IPV6 -D_XOPEN_SOURCE=600 -D_XOPEN_SOURCE_EXTENDED -D_SHR_ENVIRON -DVERSION=\"1.52\" -DXS_VERSION=\"1.52\" -c -qlanglvl=extc1x -Wc,lp64 -Wl,lp64 -qexportall "-I../.." -DLIBC="" DynaLoader.c rm -rf ../../DynaLoader.o cp DynaLoader.o ../../DynaLoader.o rm -f libperl.so
c99 -o libperl.so -qlanglvl=extc1x -Wc,lp64 -Wl,lp64 -qexportall -L/usr/local/lib /app/temp/perlport/blead.64.dynamic.ascii/perl5/libperl.x op.o perl.o universal.o gv.o toke.o perly.o pad.o regcomp.o dump.o util.o mg.o reentr.o mro_core.o keywords.o builtin.o hv.o av.o run.o pp_hot.o sv.o pp.o scope.o pp_ctl.o pp_sys.o doop.o doio.o regexec.o utf8.o taint.o deb.o globals.o perlio.o numeric.o mathoms.o locale.o pp_pack.o pp_sort.o caretx.o dquote.o time64.o DynaLoader.o -lm -lc
FSUM3228 c99: Input file /app/temp/perlport/blead.64.dynamic.ascii/perl5/libperl.x not found. makefile:345: recipe for target 'libperl.so' failed