| #!/bin/sh |
| #*************************************************************************** |
| # _ _ ____ _ |
| # Project ___| | | | _ \| | |
| # / __| | | | |_) | | |
| # | (__| |_| | _ <| |___ |
| # \___|\___/|_| \_\_____| |
| # |
| # Copyright (C) 1998 - 2020, Daniel Stenberg, <[email protected]>, et al. |
| # |
| # This software is licensed as described in the file COPYING, which |
| # you should have received as part of this distribution. The terms |
| # are also available at https://curl.se/docs/copyright.html. |
| # |
| # You may opt to use, copy, modify, merge, publish, distribute and/or sell |
| # copies of the Software, and permit persons to whom the Software is |
| # furnished to do so, under the terms of the COPYING file. |
| # |
| # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY |
| # KIND, either express or implied. |
| # |
| ########################################################################### |
| # |
| # 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 |