1#!/bin/sh 2# 3# tests compilation script for the OS/400. 4# 5 6 7SCRIPTDIR=`dirname "${0}"` 8. "${SCRIPTDIR}/initscript.sh" 9cd "${TOPDIR}/tests" 10 11 12# tests directory not implemented yet. 13 14 15# Process the libtest subdirectory. 16 17cd libtest 18 19# Get definitions from the Makefile.inc file. 20# The `sed' statement works as follows: 21# _ Join \nl-separated lines. 22# _ Retain only lines that begins with "identifier =". 23# _ Turn these lines into shell variable assignments. 24 25top_srcdir="${TOPDIR}" 26export top_srcdir 27eval "`sed -e ': begin' \ 28 -e '/\\\\$/{' \ 29 -e 'N' \ 30 -e 's/\\\\\\n/ /' \ 31 -e 'b begin' \ 32 -e '}' \ 33 -e '/^[A-Za-z_][A-Za-z0-9_]*[ ]*[=]/b keep' \ 34 -e 'd' \ 35 -e ': keep' \ 36 -e 's/[ ]*=[ ]*/=/' \ 37 -e 's/=\\(.*[^ ]\\)[ ]*$/=\\"\\1\\"/' \ 38 -e 's/\\$(\\([^)]*\\))/${\\1}/g' \ 39 < Makefile.inc`" 40 41# Special case: redefine chkhostname compilation parameters. 42 43chkhostname_SOURCES=chkhostname.c 44chkhostname_LDADD=curl_gethostname.o 45 46# Compile all programs. 47# The list is found in variable "noinst_PROGRAMS" 48 49INCLUDES="'${TOPDIR}/tests/libtest' '${TOPDIR}/lib'" 50 51for PGM in ${noinst_PROGRAMS} 52do DB2PGM=`db2_name "${PGM}"` 53 PGMIFSNAME="${LIBIFSNAME}/${DB2PGM}.PGM" 54 55 # Extract preprocessor symbol definitions from compilation 56 # options for the program. 57 58 PGMCFLAGS="`eval echo \"\\${${PGM}_CFLAGS}\"`" 59 PGMDEFINES= 60 61 for FLAG in ${PGMCFLAGS} 62 do case "${FLAG}" in 63 -D?*) DEFINE="`echo \"${FLAG}\" | sed 's/^..//'`" 64 PGMDEFINES="${PGMDEFINES} '${DEFINE}'" 65 ;; 66 esac 67 done 68 69 # Compile all C sources for the program into modules. 70 71 PGMSOURCES="`eval echo \"\\${${PGM}_SOURCES}\"`" 72 LINK= 73 MODULES= 74 75 for SOURCE in ${PGMSOURCES} 76 do case "${SOURCE}" in 77 *.c) # Special processing for libxxx.c files: their 78 # module name is determined by the target 79 # PROGRAM name. 80 81 case "${SOURCE}" in 82 lib*.c) MODULE="${DB2PGM}" 83 ;; 84 *) MODULE=`db2_name "${SOURCE}"` 85 ;; 86 esac 87 88 make_module "${MODULE}" "${SOURCE}" "${PGMDEFINES}" 89 if action_needed "${PGMIFSNAME}" "${MODIFSNAME}" 90 then LINK=yes 91 fi 92 ;; 93 esac 94 done 95 96 # Link program if needed. 97 98 if [ "${LINK}" ] 99 then PGMLDADD="`eval echo \"\\${${PGM}_LDADD}\"`" 100 for LDARG in ${PGMLDADD} 101 do case "${LDARG}" in 102 -*) ;; # Ignore non-module. 103 *) MODULES="${MODULES} "`db2_name "${LDARG}"` 104 ;; 105 esac 106 done 107 MODULES="`echo \"${MODULES}\" | 108 sed \"s/[^ ][^ ]*/${TARGETLIB}\/&/g\"`" 109 CMD="CRTPGM PGM(${TARGETLIB}/${DB2PGM})" 110 CMD="${CMD} ENTMOD(QADRT/QADRTMAIN2)" 111 CMD="${CMD} MODULE(${MODULES})" 112 CMD="${CMD} BNDSRVPGM(${TARGETLIB}/${SRVPGM} QADRTTS)" 113 CMD="${CMD} TGTRLS(${TGTRLS})" 114 system "${CMD}" 115 fi 116done 117