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