make-tests.sh (5185B)
1 #!/bin/sh 2 #*************************************************************************** 3 # _ _ ____ _ 4 # Project ___| | | | _ \| | 5 # / __| | | | |_) | | 6 # | (__| |_| | _ <| |___ 7 # \___|\___/|_| \_\_____| 8 # 9 # Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al. 10 # 11 # This software is licensed as described in the file COPYING, which 12 # you should have received as part of this distribution. The terms 13 # are also available at https://curl.se/docs/copyright.html. 14 # 15 # You may opt to use, copy, modify, merge, publish, distribute and/or sell 16 # copies of the Software, and permit persons to whom the Software is 17 # furnished to do so, under the terms of the COPYING file. 18 # 19 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY 20 # KIND, either express or implied. 21 # 22 # SPDX-License-Identifier: curl 23 # 24 ########################################################################### 25 # 26 # tests compilation script for the OS/400. 27 # 28 29 30 SCRIPTDIR=$(dirname "${0}") 31 . "${SCRIPTDIR}/initscript.sh" 32 cd "${TOPDIR}/tests" || exit 1 33 34 35 # Build programs in a directory. 36 37 build_all_programs() 38 39 { 40 # Compile all programs. 41 # The list is found in variable "noinst_PROGRAMS" 42 43 # shellcheck disable=SC2034 44 INCLUDES="'$(pwd)' '${TOPDIR}/lib' '${TOPDIR}/src'" 45 MODS="${1}" 46 SRVPGMS="${2}" 47 48 # shellcheck disable=SC2154 49 for PGM in ${noinst_PROGRAMS} 50 do DB2PGM=$(db2_name "${PGM}") 51 PGMIFSNAME="${LIBIFSNAME}/${DB2PGM}.PGM" 52 53 # Extract preprocessor symbol definitions from 54 # compilation options for the program. 55 56 PGMCFLAGS="$(eval echo "\${${PGM}_CFLAGS}")" 57 PGMDFNS= 58 59 for FLAG in ${PGMCFLAGS} 60 do case "${FLAG}" in 61 -D?*) # shellcheck disable=SC2001 62 DEFINE="$(echo "${FLAG}" | sed 's/^..//')" 63 PGMDFNS="${PGMDFNS} '${DEFINE}'" 64 ;; 65 esac 66 done 67 68 # Compile all C sources for the program into modules. 69 70 PGMSOURCES="$(eval echo "\${${PGM}_SOURCES}")" 71 LINK= 72 MODULES= 73 74 for SOURCE in ${PGMSOURCES} 75 do case "${SOURCE}" in 76 *.c) # Special processing for libxxx.c files: 77 # their module name is determined 78 # by the target PROGRAM name. 79 80 case "${SOURCE}" in 81 lib*.c) MODULE="${DB2PGM}" 82 ;; 83 *) MODULE=$(db2_name "${SOURCE}") 84 ;; 85 esac 86 87 # If source is in a sibling directory, 88 # prefix module name with 'X'. 89 90 case "${SOURCE}" in 91 ../*) MODULE=$(db2_name "X${MODULE}") 92 ;; 93 esac 94 95 make_module "${MODULE}" "${SOURCE}" "${PGMDFNS}" 96 if action_needed "${PGMIFSNAME}" "${MODIFSNAME}" 97 then LINK=yes 98 fi 99 ;; 100 esac 101 done 102 103 # Link program if needed. 104 105 if [ -n "${LINK}" ] 106 then PGMLDADD="$(eval echo "\${${PGM}_LDADD}")" 107 for M in ${PGMLDADD} 108 do case "${M}" in 109 -*) ;; # Ignore non-module. 110 *) MODULES="${MODULES} $(db2_name "${M}")" 111 ;; 112 esac 113 done 114 MODULES="$(echo "${MODULES}" | 115 sed "s/[^ ][^ ]*/${TARGETLIB}\/&/g")" 116 CMD="CRTPGM PGM(${TARGETLIB}/${DB2PGM})" 117 CMD="${CMD} ENTMOD(${TARGETLIB}/CURLMAIN)" 118 CMD="${CMD} MODULE(${MODULES} ${MODS})" 119 CMD="${CMD} BNDSRVPGM(${SRVPGMS} QADRTTS)" 120 CMD="${CMD} TGTRLS(${TGTRLS})" 121 CLcommand "${CMD}" 122 fi 123 done 124 } 125 126 127 # Build programs in the server directory. 128 129 ( 130 cd server || exit 1 131 get_make_vars Makefile.inc 132 build_all_programs "${TARGETLIB}/OS400SYS" 133 ) 134 135 136 # Build all programs in the libtest subdirectory. 137 138 ( 139 cd libtest || exit 1 140 get_make_vars Makefile.inc 141 142 # shellcheck disable=SC2153 143 build_all_programs "" "${TARGETLIB}/${SRVPGM}" 144 )