mirror of
https://github.com/VCMP-SqMod/SqMod.git
synced 2025-06-28 13:07:12 +02:00
bin
cmake
hello
module
Base
Core
Entity
Library
Misc
Vendor
AES256
B64
Hash
MDBC
cmake
examples
include
libmariadb
mariadb_config
plugins
win
win-iconv
zlib
amiga
contrib
doc
examples
msdos
nintendods
old
os400
README400
bndsrc
make.sh
zlib.inc
qnx
test
watcom
win32
CMakeLists.txt
ChangeLog
FAQ
INDEX
Makefile
Makefile.in
README
adler32.c
compress.c
configure
crc32.c
crc32.h
deflate.c
deflate.h
gzclose.c
gzguts.h
gzlib.c
gzread.c
gzwrite.c
infback.c
inffast.c
inffast.h
inffixed.h
inflate.c
inflate.h
inftrees.c
inftrees.h
make_vms.com
treebuild.xml
trees.c
trees.h
uncompr.c
zconf.h.cmakein
zconf.h.in
zconf.h.included
zlib.3
zlib.3.pdf
zlib.h
zlib.map
zlib.pc.cmakein
zlib.pc.in
zlib2ansi
zutil.c
zutil.h
CMakeLists.txt
COPYING.LIB
README
MaxmindDB
PUGIXML
SQLite
SimpleIni
SimpleSocket
TinyDir
Whirlpool
CMakeLists.txt
CMakeLists.txt
Core.cpp
Core.hpp
Logger.cpp
Logger.hpp
Main.cpp
Register.cpp
SqBase.hpp
sdk
sqrat
squirrel
vcmp
.gitignore
CMakeLists.txt
LICENSE
README.md
367 lines
10 KiB
Bash
367 lines
10 KiB
Bash
#!/bin/sh
|
|
#
|
|
# ZLIB compilation script for the OS/400.
|
|
#
|
|
#
|
|
# This is a shell script since make is not a standard component of OS/400.
|
|
|
|
|
|
################################################################################
|
|
#
|
|
# Tunable configuration parameters.
|
|
#
|
|
################################################################################
|
|
|
|
TARGETLIB='ZLIB' # Target OS/400 program library
|
|
STATBNDDIR='ZLIB_A' # Static binding directory.
|
|
DYNBNDDIR='ZLIB' # Dynamic binding directory.
|
|
SRVPGM="ZLIB" # Service program.
|
|
IFSDIR='/zlib' # IFS support base directory.
|
|
TGTCCSID='500' # Target CCSID of objects
|
|
DEBUG='*NONE' # Debug level
|
|
OPTIMIZE='40' # Optimisation level
|
|
OUTPUT='*NONE' # Compilation output option.
|
|
TGTRLS='V6R1M0' # Target OS release
|
|
|
|
export TARGETLIB STATBNDDIR DYNBNDDIR SRVPGM IFSDIR
|
|
export TGTCCSID DEBUG OPTIMIZE OUTPUT TGTRLS
|
|
|
|
|
|
################################################################################
|
|
#
|
|
# OS/400 specific definitions.
|
|
#
|
|
################################################################################
|
|
|
|
LIBIFSNAME="/QSYS.LIB/${TARGETLIB}.LIB"
|
|
|
|
|
|
################################################################################
|
|
#
|
|
# Procedures.
|
|
#
|
|
################################################################################
|
|
|
|
# action_needed dest [src]
|
|
#
|
|
# dest is an object to build
|
|
# if specified, src is an object on which dest depends.
|
|
#
|
|
# exit 0 (succeeds) if some action has to be taken, else 1.
|
|
|
|
action_needed()
|
|
|
|
{
|
|
[ ! -e "${1}" ] && return 0
|
|
[ "${2}" ] || return 1
|
|
[ "${1}" -ot "${2}" ] && return 0
|
|
return 1
|
|
}
|
|
|
|
|
|
# make_module module_name source_name [additional_definitions]
|
|
#
|
|
# Compile source name into module if needed.
|
|
# As side effect, append the module name to variable MODULES.
|
|
# Set LINK to "YES" if the module has been compiled.
|
|
|
|
make_module()
|
|
|
|
{
|
|
MODULES="${MODULES} ${1}"
|
|
MODIFSNAME="${LIBIFSNAME}/${1}.MODULE"
|
|
CSRC="`basename \"${2}\"`"
|
|
|
|
if action_needed "${MODIFSNAME}" "${2}"
|
|
then :
|
|
elif [ ! "`sed -e \"/<source name=\\\"${CSRC}\\\">/,/<\\\\/source>/!d\" \
|
|
-e '/<depend /!d' \
|
|
-e 's/.* name=\"\\([^\"]*\\)\".*/\\1/' < \"${TOPDIR}/treebuild.xml\" |
|
|
while read HDR
|
|
do if action_needed \"${MODIFSNAME}\" \"${IFSDIR}/include/${HDR}\"
|
|
then echo recompile
|
|
break
|
|
fi
|
|
done`" ]
|
|
then return 0
|
|
fi
|
|
|
|
CMD="CRTCMOD MODULE(${TARGETLIB}/${1}) SRCSTMF('${2}')"
|
|
CMD="${CMD} SYSIFCOPT(*IFS64IO) OPTION(*INCDIRFIRST)"
|
|
CMD="${CMD} LOCALETYPE(*LOCALE) FLAG(10)"
|
|
CMD="${CMD} INCDIR('${IFSDIR}/include' ${INCLUDES})"
|
|
CMD="${CMD} TGTCCSID(${TGTCCSID}) TGTRLS(${TGTRLS})"
|
|
CMD="${CMD} OUTPUT(${OUTPUT})"
|
|
CMD="${CMD} OPTIMIZE(${OPTIMIZE})"
|
|
CMD="${CMD} DBGVIEW(${DEBUG})"
|
|
system "${CMD}"
|
|
LINK=YES
|
|
}
|
|
|
|
|
|
# Determine DB2 object name from IFS name.
|
|
|
|
db2_name()
|
|
|
|
{
|
|
basename "${1}" |
|
|
tr 'a-z-' 'A-Z_' |
|
|
sed -e 's/\..*//' \
|
|
-e 's/^\(.\).*\(.........\)$/\1\2/'
|
|
}
|
|
|
|
|
|
# Force enumeration types to be the same size as integers.
|
|
|
|
copy_hfile()
|
|
|
|
{
|
|
sed -e '1i\
|
|
#pragma enum(int)\
|
|
' "${@}" -e '$a\
|
|
#pragma enum(pop)\
|
|
'
|
|
}
|
|
|
|
|
|
################################################################################
|
|
#
|
|
# Script initialization.
|
|
#
|
|
################################################################################
|
|
|
|
SCRIPTDIR=`dirname "${0}"`
|
|
|
|
case "${SCRIPTDIR}" in
|
|
/*) ;;
|
|
*) SCRIPTDIR="`pwd`/${SCRIPTDIR}"
|
|
esac
|
|
|
|
while true
|
|
do case "${SCRIPTDIR}" in
|
|
*/.) SCRIPTDIR="${SCRIPTDIR%/.}";;
|
|
*) break;;
|
|
esac
|
|
done
|
|
|
|
# The script directory is supposed to be in ${TOPDIR}/os400.
|
|
|
|
TOPDIR=`dirname "${SCRIPTDIR}"`
|
|
export SCRIPTDIR TOPDIR
|
|
cd "${TOPDIR}"
|
|
|
|
|
|
# Extract the version from the master compilation XML file.
|
|
|
|
VERSION=`sed -e '/^<package /!d' \
|
|
-e 's/^.* version="\([0-9.]*\)".*$/\1/' -e 'q' \
|
|
< treebuild.xml`
|
|
export VERSION
|
|
|
|
################################################################################
|
|
|
|
|
|
# Create the OS/400 library if it does not exist.
|
|
|
|
if action_needed "${LIBIFSNAME}"
|
|
then CMD="CRTLIB LIB(${TARGETLIB}) TEXT('ZLIB: Data compression API')"
|
|
system "${CMD}"
|
|
fi
|
|
|
|
|
|
# Create the DOCS source file if it does not exist.
|
|
|
|
if action_needed "${LIBIFSNAME}/DOCS.FILE"
|
|
then CMD="CRTSRCPF FILE(${TARGETLIB}/DOCS) RCDLEN(112)"
|
|
CMD="${CMD} CCSID(${TGTCCSID}) TEXT('Documentation texts')"
|
|
system "${CMD}"
|
|
fi
|
|
|
|
# Copy some documentation files if needed.
|
|
|
|
for TEXT in "${TOPDIR}/ChangeLog" "${TOPDIR}/FAQ" \
|
|
"${TOPDIR}/README" "${SCRIPTDIR}/README400"
|
|
do MEMBER="${LIBIFSNAME}/DOCS.FILE/`db2_name \"${TEXT}\"`.MBR"
|
|
|
|
if action_needed "${MEMBER}" "${TEXT}"
|
|
then CMD="CPY OBJ('${TEXT}') TOOBJ('${MEMBER}') TOCCSID(${TGTCCSID})"
|
|
CMD="${CMD} DTAFMT(*TEXT) REPLACE(*YES)"
|
|
system "${CMD}"
|
|
fi
|
|
done
|
|
|
|
|
|
# Create the OS/400 source program file for the C header files.
|
|
|
|
SRCPF="${LIBIFSNAME}/H.FILE"
|
|
|
|
if action_needed "${SRCPF}"
|
|
then CMD="CRTSRCPF FILE(${TARGETLIB}/H) RCDLEN(112)"
|
|
CMD="${CMD} CCSID(${TGTCCSID}) TEXT('ZLIB: C/C++ header files')"
|
|
system "${CMD}"
|
|
fi
|
|
|
|
|
|
# Create the IFS directory for the C header files.
|
|
|
|
if action_needed "${IFSDIR}/include"
|
|
then mkdir -p "${IFSDIR}/include"
|
|
fi
|
|
|
|
# Copy the header files to DB2 library. Link from IFS include directory.
|
|
|
|
for HFILE in "${TOPDIR}/"*.h
|
|
do DEST="${SRCPF}/`db2_name \"${HFILE}\"`.MBR"
|
|
|
|
if action_needed "${DEST}" "${HFILE}"
|
|
then copy_hfile < "${HFILE}" > tmphdrfile
|
|
|
|
# Need to translate to target CCSID.
|
|
|
|
CMD="CPY OBJ('`pwd`/tmphdrfile') TOOBJ('${DEST}')"
|
|
CMD="${CMD} TOCCSID(${TGTCCSID}) DTAFMT(*TEXT) REPLACE(*YES)"
|
|
system "${CMD}"
|
|
# touch -r "${HFILE}" "${DEST}"
|
|
rm -f tmphdrfile
|
|
fi
|
|
|
|
IFSFILE="${IFSDIR}/include/`basename \"${HFILE}\"`"
|
|
|
|
if action_needed "${IFSFILE}" "${DEST}"
|
|
then rm -f "${IFSFILE}"
|
|
ln -s "${DEST}" "${IFSFILE}"
|
|
fi
|
|
done
|
|
|
|
|
|
# Install the ILE/RPG header file.
|
|
|
|
|
|
HFILE="${SCRIPTDIR}/zlib.inc"
|
|
DEST="${SRCPF}/ZLIB.INC.MBR"
|
|
|
|
if action_needed "${DEST}" "${HFILE}"
|
|
then CMD="CPY OBJ('${HFILE}') TOOBJ('${DEST}')"
|
|
CMD="${CMD} TOCCSID(${TGTCCSID}) DTAFMT(*TEXT) REPLACE(*YES)"
|
|
system "${CMD}"
|
|
# touch -r "${HFILE}" "${DEST}"
|
|
fi
|
|
|
|
IFSFILE="${IFSDIR}/include/`basename \"${HFILE}\"`"
|
|
|
|
if action_needed "${IFSFILE}" "${DEST}"
|
|
then rm -f "${IFSFILE}"
|
|
ln -s "${DEST}" "${IFSFILE}"
|
|
fi
|
|
|
|
|
|
# Create and compile the identification source file.
|
|
|
|
echo '#pragma comment(user, "ZLIB version '"${VERSION}"'")' > os400.c
|
|
echo '#pragma comment(user, __DATE__)' >> os400.c
|
|
echo '#pragma comment(user, __TIME__)' >> os400.c
|
|
echo '#pragma comment(copyright, "Copyright (C) 1995-2017 Jean-Loup Gailly, Mark Adler. OS/400 version by P. Monnerat.")' >> os400.c
|
|
make_module OS400 os400.c
|
|
LINK= # No need to rebuild service program yet.
|
|
MODULES=
|
|
|
|
|
|
# Get source list.
|
|
|
|
CSOURCES=`sed -e '/<source name="/!d' \
|
|
-e 's/.* name="\([^"]*\)".*/\1/' < treebuild.xml`
|
|
|
|
# Compile the sources into modules.
|
|
|
|
for SRC in ${CSOURCES}
|
|
do MODULE=`db2_name "${SRC}"`
|
|
make_module "${MODULE}" "${SRC}"
|
|
done
|
|
|
|
|
|
# If needed, (re)create the static binding directory.
|
|
|
|
if action_needed "${LIBIFSNAME}/${STATBNDDIR}.BNDDIR"
|
|
then LINK=YES
|
|
fi
|
|
|
|
if [ "${LINK}" ]
|
|
then rm -rf "${LIBIFSNAME}/${STATBNDDIR}.BNDDIR"
|
|
CMD="CRTBNDDIR BNDDIR(${TARGETLIB}/${STATBNDDIR})"
|
|
CMD="${CMD} TEXT('ZLIB static binding directory')"
|
|
system "${CMD}"
|
|
|
|
for MODULE in ${MODULES}
|
|
do CMD="ADDBNDDIRE BNDDIR(${TARGETLIB}/${STATBNDDIR})"
|
|
CMD="${CMD} OBJ((${TARGETLIB}/${MODULE} *MODULE))"
|
|
system "${CMD}"
|
|
done
|
|
fi
|
|
|
|
|
|
# The exportation file for service program creation must be in a DB2
|
|
# source file, so make sure it exists.
|
|
|
|
if action_needed "${LIBIFSNAME}/TOOLS.FILE"
|
|
then CMD="CRTSRCPF FILE(${TARGETLIB}/TOOLS) RCDLEN(112)"
|
|
CMD="${CMD} CCSID(${TGTCCSID}) TEXT('ZLIB: build tools')"
|
|
system "${CMD}"
|
|
fi
|
|
|
|
|
|
DEST="${LIBIFSNAME}/TOOLS.FILE/BNDSRC.MBR"
|
|
|
|
if action_needed "${SCRIPTDIR}/bndsrc" "${DEST}"
|
|
then CMD="CPY OBJ('${SCRIPTDIR}/bndsrc') TOOBJ('${DEST}')"
|
|
CMD="${CMD} TOCCSID(${TGTCCSID}) DTAFMT(*TEXT) REPLACE(*YES)"
|
|
system "${CMD}"
|
|
# touch -r "${SCRIPTDIR}/bndsrc" "${DEST}"
|
|
LINK=YES
|
|
fi
|
|
|
|
|
|
# Build the service program if needed.
|
|
|
|
if action_needed "${LIBIFSNAME}/${SRVPGM}.SRVPGM"
|
|
then LINK=YES
|
|
fi
|
|
|
|
if [ "${LINK}" ]
|
|
then CMD="CRTSRVPGM SRVPGM(${TARGETLIB}/${SRVPGM})"
|
|
CMD="${CMD} SRCFILE(${TARGETLIB}/TOOLS) SRCMBR(BNDSRC)"
|
|
CMD="${CMD} MODULE(${TARGETLIB}/OS400)"
|
|
CMD="${CMD} BNDDIR(${TARGETLIB}/${STATBNDDIR})"
|
|
CMD="${CMD} TEXT('ZLIB ${VERSION} dynamic library')"
|
|
CMD="${CMD} TGTRLS(${TGTRLS})"
|
|
system "${CMD}"
|
|
LINK=YES
|
|
|
|
# Duplicate the service program for a versioned backup.
|
|
|
|
BACKUP=`echo "${SRVPGM}${VERSION}" |
|
|
sed -e 's/.*\(..........\)$/\1/' -e 's/\./_/g'`
|
|
BACKUP="`db2_name \"${BACKUP}\"`"
|
|
BKUPIFSNAME="${LIBIFSNAME}/${BACKUP}.SRVPGM"
|
|
rm -f "${BKUPIFSNAME}"
|
|
CMD="CRTDUPOBJ OBJ(${SRVPGM}) FROMLIB(${TARGETLIB})"
|
|
CMD="${CMD} OBJTYPE(*SRVPGM) NEWOBJ(${BACKUP})"
|
|
system "${CMD}"
|
|
fi
|
|
|
|
|
|
# If needed, (re)create the dynamic binding directory.
|
|
|
|
if action_needed "${LIBIFSNAME}/${DYNBNDDIR}.BNDDIR"
|
|
then LINK=YES
|
|
fi
|
|
|
|
if [ "${LINK}" ]
|
|
then rm -rf "${LIBIFSNAME}/${DYNBNDDIR}.BNDDIR"
|
|
CMD="CRTBNDDIR BNDDIR(${TARGETLIB}/${DYNBNDDIR})"
|
|
CMD="${CMD} TEXT('ZLIB dynamic binding directory')"
|
|
system "${CMD}"
|
|
CMD="ADDBNDDIRE BNDDIR(${TARGETLIB}/${DYNBNDDIR})"
|
|
CMD="${CMD} OBJ((*LIBL/${SRVPGM} *SRVPGM))"
|
|
system "${CMD}"
|
|
fi
|