123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366 |
- #!/bin/sh
- TARGETLIB='ZLIB'
- STATBNDDIR='ZLIB_A'
- DYNBNDDIR='ZLIB'
- SRVPGM="ZLIB"
- IFSDIR='/zlib'
- TGTCCSID='500'
- DEBUG='*NONE'
- OPTIMIZE='40'
- OUTPUT='*NONE'
- TGTRLS='V6R1M0'
- export TARGETLIB STATBNDDIR DYNBNDDIR SRVPGM IFSDIR
- export TGTCCSID DEBUG OPTIMIZE OUTPUT TGTRLS
- LIBIFSNAME="/QSYS.LIB/${TARGETLIB}.LIB"
- action_needed()
- {
- [ ! -e "${1}" ] && return 0
- [ "${2}" ] || return 1
- [ "${1}" -ot "${2}" ] && return 0
- return 1
- }
- 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
- }
- db2_name()
- {
- basename "${1}" |
- tr 'a-z-' 'A-Z_' |
- sed -e 's/\..*//' \
- -e 's/^\(.\).*\(.........\)$/\1\2/'
- }
- copy_hfile()
- {
- sed -e '1i\
- #pragma enum(int)\
- ' "${@}" -e '$a\
- #pragma enum(pop)\
- '
- }
- SCRIPTDIR=`dirname "${0}"`
- case "${SCRIPTDIR}" in
- /*) ;;
- *) SCRIPTDIR="`pwd`/${SCRIPTDIR}"
- esac
- while true
- do case "${SCRIPTDIR}" in
- */.) SCRIPTDIR="${SCRIPTDIR%/.}";;
- *) break;;
- esac
- done
- TOPDIR=`dirname "${SCRIPTDIR}"`
- export SCRIPTDIR TOPDIR
- cd "${TOPDIR}"
- VERSION=`sed -e '/^<package /!d' \
- -e 's/^.* version="\([0-9.]*\)".*$/\1/' -e 'q' \
- < treebuild.xml`
- export VERSION
- if action_needed "${LIBIFSNAME}"
- then CMD="CRTLIB LIB(${TARGETLIB}) TEXT('ZLIB: Data compression API')"
- system "${CMD}"
- fi
- if action_needed "${LIBIFSNAME}/DOCS.FILE"
- then CMD="CRTSRCPF FILE(${TARGETLIB}/DOCS) RCDLEN(112)"
- CMD="${CMD} CCSID(${TGTCCSID}) TEXT('Documentation texts')"
- system "${CMD}"
- fi
- 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
- 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
- if action_needed "${IFSDIR}/include"
- then mkdir -p "${IFSDIR}/include"
- fi
- for HFILE in "${TOPDIR}/"*.h
- do DEST="${SRCPF}/`db2_name \"${HFILE}\"`.MBR"
- if action_needed "${DEST}" "${HFILE}"
- then copy_hfile < "${HFILE}" > tmphdrfile
-
- CMD="CPY OBJ('`pwd`/tmphdrfile') TOOBJ('${DEST}')"
- CMD="${CMD} TOCCSID(${TGTCCSID}) DTAFMT(*TEXT) REPLACE(*YES)"
- system "${CMD}"
-
- rm -f tmphdrfile
- fi
- IFSFILE="${IFSDIR}/include/`basename \"${HFILE}\"`"
- if action_needed "${IFSFILE}" "${DEST}"
- then rm -f "${IFSFILE}"
- ln -s "${DEST}" "${IFSFILE}"
- fi
- done
- 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}"
-
- fi
- IFSFILE="${IFSDIR}/include/`basename \"${HFILE}\"`"
- if action_needed "${IFSFILE}" "${DEST}"
- then rm -f "${IFSFILE}"
- ln -s "${DEST}" "${IFSFILE}"
- fi
- 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=
- MODULES=
- CSOURCES=`sed -e '/<source name="/!d' \
- -e 's/.* name="\([^"]*\)".*/\1/' < treebuild.xml`
- for SRC in ${CSOURCES}
- do MODULE=`db2_name "${SRC}"`
- make_module "${MODULE}" "${SRC}"
- done
- 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
- 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}"
-
- LINK=YES
- fi
- 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
-
- 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 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
|