115 lines
4.0 KiB
Bash
115 lines
4.0 KiB
Bash
|
#!/bin/sh
|
||
|
#
|
||
|
# tests compilation script for the OS/400.
|
||
|
#
|
||
|
|
||
|
|
||
|
SCRIPTDIR=`dirname "${0}"`
|
||
|
. "${SCRIPTDIR}/initscript.sh"
|
||
|
cd "${TOPDIR}/tests"
|
||
|
|
||
|
|
||
|
# tests directory not implemented yet.
|
||
|
|
||
|
|
||
|
# Process the libtest subdirectory.
|
||
|
|
||
|
cd libtest
|
||
|
|
||
|
# Get definitions from the Makefile.inc file.
|
||
|
# The `sed' statement works as follows:
|
||
|
# _ Join \nl-separated lines.
|
||
|
# _ Retain only lines that begins with "identifier =".
|
||
|
# _ Turn these lines into shell variable assignments.
|
||
|
|
||
|
eval "`sed -e ': begin' \
|
||
|
-e '/\\\\$/{' \
|
||
|
-e 'N' \
|
||
|
-e 's/\\\\\\n/ /' \
|
||
|
-e 'b begin' \
|
||
|
-e '}' \
|
||
|
-e '/^[A-Za-z_][A-Za-z0-9_]*[[:space:]]*[=]/b keep' \
|
||
|
-e 'd' \
|
||
|
-e ': keep' \
|
||
|
-e 's/[[:space:]]*=[[:space:]]*/=/' \
|
||
|
-e 's/=\\(.*[^[:space:]]\\)[[:space:]]*$/=\\"\\1\\"/' \
|
||
|
-e 's/\\$(\\([^)]*\\))/${\\1}/g' \
|
||
|
< Makefile.inc`"
|
||
|
|
||
|
# Special case: redefine chkhostname compilation parameters.
|
||
|
|
||
|
chkhostname_SOURCES=chkhostname.c
|
||
|
chkhostname_LDADD=curl_gethostname.o
|
||
|
|
||
|
# Compile all programs.
|
||
|
# The list is found in variable "noinst_PROGRAMS"
|
||
|
|
||
|
INCLUDES="'${TOPDIR}/tests/libtest' '${TOPDIR}/lib'"
|
||
|
|
||
|
for PGM in ${noinst_PROGRAMS}
|
||
|
do DB2PGM=`db2_name "${PGM}"`
|
||
|
PGMIFSNAME="${LIBIFSNAME}/${DB2PGM}.PGM"
|
||
|
|
||
|
# Extract preprocessor symbol definitions from compilation
|
||
|
# options for the program.
|
||
|
|
||
|
PGMCFLAGS="`eval echo \"\\${${PGM}_CFLAGS}\"`"
|
||
|
PGMDEFINES=
|
||
|
|
||
|
for FLAG in ${PGMCFLAGS}
|
||
|
do case "${FLAG}" in
|
||
|
-D?*) DEFINE="`echo \"${FLAG}\" | sed 's/^..//'`"
|
||
|
PGMDEFINES="${PGMDEFINES} '${DEFINE}'"
|
||
|
;;
|
||
|
esac
|
||
|
done
|
||
|
|
||
|
# Compile all C sources for the program into modules.
|
||
|
|
||
|
PGMSOURCES="`eval echo \"\\${${PGM}_SOURCES}\"`"
|
||
|
LINK=
|
||
|
MODULES=
|
||
|
|
||
|
for SOURCE in ${PGMSOURCES}
|
||
|
do case "${SOURCE}" in
|
||
|
*.c) # Special processing for libxxx.c files: their
|
||
|
# module name is determined by the target
|
||
|
# PROGRAM name.
|
||
|
|
||
|
case "${SOURCE}" in
|
||
|
lib*.c) MODULE="${DB2PGM}"
|
||
|
;;
|
||
|
*) MODULE=`db2_name "${SOURCE}"`
|
||
|
;;
|
||
|
esac
|
||
|
|
||
|
make_module "${MODULE}" "${SOURCE}" "${PGMDEFINES}"
|
||
|
if action_needed "${PGMIFSNAME}" "${MODIFSNAME}"
|
||
|
then LINK=yes
|
||
|
fi
|
||
|
;;
|
||
|
esac
|
||
|
done
|
||
|
|
||
|
# Link program if needed.
|
||
|
|
||
|
if [ "${LINK}" ]
|
||
|
then PGMLDADD="`eval echo \"\\${${PGM}_LDADD}\"`"
|
||
|
for LDARG in ${PGMLDADD}
|
||
|
do case "${LDARG}" in
|
||
|
-*) ;; # Ignore non-module.
|
||
|
*) MODULES="${MODULES} "`db2_name "${LDARG}"`
|
||
|
;;
|
||
|
esac
|
||
|
done
|
||
|
MODULES="`echo \"${MODULES}\" |
|
||
|
sed \"s/[^ ][^ ]*/${TARGETLIB}\/&/g\"`"
|
||
|
CMD="CRTPGM PGM(${TARGETLIB}/${DB2PGM})"
|
||
|
CMD="${CMD} ENTMOD(QADRT/QADRTMAIN2)"
|
||
|
CMD="${CMD} MODULE(${MODULES})"
|
||
|
CMD="${CMD} BNDSRVPGM(${TARGETLIB}/${SRVPGM} QADRTTS)"
|
||
|
CMD="${CMD} TGTRLS(${TGTRLS})"
|
||
|
system "${CMD}"
|
||
|
fi
|
||
|
done
|