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# libcurl compilation script for the OS/400. 27*6236dae4SAndroid Build Coastguard Worker# 28*6236dae4SAndroid Build Coastguard Worker 29*6236dae4SAndroid Build Coastguard WorkerSCRIPTDIR=$(dirname "${0}") 30*6236dae4SAndroid Build Coastguard Worker. "${SCRIPTDIR}/initscript.sh" 31*6236dae4SAndroid Build Coastguard Workercd "${TOPDIR}/lib" || exit 1 32*6236dae4SAndroid Build Coastguard Worker 33*6236dae4SAndroid Build Coastguard Worker# Need to have IFS access to the mih/cipher header file. 34*6236dae4SAndroid Build Coastguard Worker 35*6236dae4SAndroid Build Coastguard Workerif action_needed cipher.mih '/QSYS.LIB/QSYSINC.LIB/MIH.FILE/CIPHER.MBR' 36*6236dae4SAndroid Build Coastguard Workerthen rm -f cipher.mih 37*6236dae4SAndroid Build Coastguard Worker ln -s '/QSYS.LIB/QSYSINC.LIB/MIH.FILE/CIPHER.MBR' cipher.mih 38*6236dae4SAndroid Build Coastguard Workerfi 39*6236dae4SAndroid Build Coastguard Worker 40*6236dae4SAndroid Build Coastguard Worker 41*6236dae4SAndroid Build Coastguard Worker# Create and compile the identification source file. 42*6236dae4SAndroid Build Coastguard Worker 43*6236dae4SAndroid Build Coastguard Worker{ 44*6236dae4SAndroid Build Coastguard Worker echo '#pragma comment(user, "libcurl version '"${LIBCURL_VERSION}"'")' 45*6236dae4SAndroid Build Coastguard Worker echo '#pragma comment(user, __DATE__)' 46*6236dae4SAndroid Build Coastguard Worker echo '#pragma comment(user, __TIME__)' 47*6236dae4SAndroid Build Coastguard Worker echo '#pragma comment(copyright, "Copyright (C) Daniel Stenberg et al. OS/400 version by P. Monnerat")' 48*6236dae4SAndroid Build Coastguard Worker} > os400.c 49*6236dae4SAndroid Build Coastguard Workermake_module OS400 os400.c BUILDING_LIBCURL 50*6236dae4SAndroid Build Coastguard WorkerLINK= # No need to rebuild service program yet. 51*6236dae4SAndroid Build Coastguard WorkerMODULES= 52*6236dae4SAndroid Build Coastguard Worker 53*6236dae4SAndroid Build Coastguard Worker 54*6236dae4SAndroid Build Coastguard Worker# Get source list (CSOURCES variable). 55*6236dae4SAndroid Build Coastguard Worker 56*6236dae4SAndroid Build Coastguard Workerget_make_vars Makefile.inc 57*6236dae4SAndroid Build Coastguard Worker 58*6236dae4SAndroid Build Coastguard Worker 59*6236dae4SAndroid Build Coastguard Worker# Compile the sources into modules. 60*6236dae4SAndroid Build Coastguard Worker 61*6236dae4SAndroid Build Coastguard Worker# shellcheck disable=SC2034 62*6236dae4SAndroid Build Coastguard WorkerINCLUDES="'$(pwd)'" 63*6236dae4SAndroid Build Coastguard Worker 64*6236dae4SAndroid Build Coastguard Workermake_module OS400SYS "${SCRIPTDIR}/os400sys.c" BUILDING_LIBCURL 65*6236dae4SAndroid Build Coastguard Workermake_module CCSIDCURL "${SCRIPTDIR}/ccsidcurl.c" BUILDING_LIBCURL 66*6236dae4SAndroid Build Coastguard Worker 67*6236dae4SAndroid Build Coastguard Workerfor SRC in ${CSOURCES} 68*6236dae4SAndroid Build Coastguard Workerdo MODULE=$(db2_name "${SRC}") 69*6236dae4SAndroid Build Coastguard Worker make_module "${MODULE}" "${SRC}" BUILDING_LIBCURL 70*6236dae4SAndroid Build Coastguard Workerdone 71*6236dae4SAndroid Build Coastguard Worker 72*6236dae4SAndroid Build Coastguard Worker 73*6236dae4SAndroid Build Coastguard Worker# If needed, (re)create the static binding directory. 74*6236dae4SAndroid Build Coastguard Worker 75*6236dae4SAndroid Build Coastguard Workerif action_needed "${LIBIFSNAME}/${STATBNDDIR}.BNDDIR" 76*6236dae4SAndroid Build Coastguard Workerthen LINK=YES 77*6236dae4SAndroid Build Coastguard Workerfi 78*6236dae4SAndroid Build Coastguard Worker 79*6236dae4SAndroid Build Coastguard Workerif [ -n "${LINK}" ] 80*6236dae4SAndroid Build Coastguard Workerthen rm -rf "${LIBIFSNAME}/${STATBNDDIR}.BNDDIR" 81*6236dae4SAndroid Build Coastguard Worker CMD="CRTBNDDIR BNDDIR(${TARGETLIB}/${STATBNDDIR})" 82*6236dae4SAndroid Build Coastguard Worker CMD="${CMD} TEXT('LibCurl API static binding directory')" 83*6236dae4SAndroid Build Coastguard Worker CLcommand "${CMD}" 84*6236dae4SAndroid Build Coastguard Worker 85*6236dae4SAndroid Build Coastguard Worker for MODULE in ${MODULES} 86*6236dae4SAndroid Build Coastguard Worker do CMD="ADDBNDDIRE BNDDIR(${TARGETLIB}/${STATBNDDIR})" 87*6236dae4SAndroid Build Coastguard Worker CMD="${CMD} OBJ((${TARGETLIB}/${MODULE} *MODULE))" 88*6236dae4SAndroid Build Coastguard Worker CLcommand "${CMD}" 89*6236dae4SAndroid Build Coastguard Worker done 90*6236dae4SAndroid Build Coastguard Workerfi 91*6236dae4SAndroid Build Coastguard Worker 92*6236dae4SAndroid Build Coastguard Worker 93*6236dae4SAndroid Build Coastguard Worker# The exportation file for service program creation must be in a DB2 94*6236dae4SAndroid Build Coastguard Worker# source file, so make sure it exists. 95*6236dae4SAndroid Build Coastguard Worker 96*6236dae4SAndroid Build Coastguard Workerif action_needed "${LIBIFSNAME}/TOOLS.FILE" 97*6236dae4SAndroid Build Coastguard Workerthen CMD="CRTSRCPF FILE(${TARGETLIB}/TOOLS) RCDLEN(112)" 98*6236dae4SAndroid Build Coastguard Worker CMD="${CMD} TEXT('curl: build tools')" 99*6236dae4SAndroid Build Coastguard Worker CLcommand "${CMD}" 100*6236dae4SAndroid Build Coastguard Workerfi 101*6236dae4SAndroid Build Coastguard Worker 102*6236dae4SAndroid Build Coastguard Worker 103*6236dae4SAndroid Build Coastguard Worker# Gather the list of symbols to export. 104*6236dae4SAndroid Build Coastguard Worker# - Unfold lines from the header files so that they contain a semicolon. 105*6236dae4SAndroid Build Coastguard Worker# - Keep only CURL_EXTERN definitions. 106*6236dae4SAndroid Build Coastguard Worker# - Remove the CURL_DEPRECATED and CURL_TEMP_PRINTF macro calls. 107*6236dae4SAndroid Build Coastguard Worker# - Drop the parenthesized function arguments and what follows. 108*6236dae4SAndroid Build Coastguard Worker# - Keep the trailing function name only. 109*6236dae4SAndroid Build Coastguard Worker 110*6236dae4SAndroid Build Coastguard WorkerEXPORTS=$(cat "${TOPDIR}"/include/curl/*.h "${SCRIPTDIR}/ccsidcurl.h" | 111*6236dae4SAndroid Build Coastguard Worker sed -e 'H;s/.*//;x;s/\n//;s/.*/& /' \ 112*6236dae4SAndroid Build Coastguard Worker -e '/^CURL_EXTERN[[:space:]]/!d' \ 113*6236dae4SAndroid Build Coastguard Worker -e '/\;/!{x;d;}' \ 114*6236dae4SAndroid Build Coastguard Worker -e 's/ CURL_DEPRECATED([^)]*)//g' \ 115*6236dae4SAndroid Build Coastguard Worker -e 's/ CURL_TEMP_PRINTF([^)]*)//g' \ 116*6236dae4SAndroid Build Coastguard Worker -e 's/[[:space:]]*(.*$//' \ 117*6236dae4SAndroid Build Coastguard Worker -e 's/^.*[^A-Za-z0-9_]\([A-Za-z0-9_]*\)$/\1/') 118*6236dae4SAndroid Build Coastguard Worker 119*6236dae4SAndroid Build Coastguard Worker 120*6236dae4SAndroid Build Coastguard Worker# Create the service program exportation file in DB2 member if needed. 121*6236dae4SAndroid Build Coastguard Worker 122*6236dae4SAndroid Build Coastguard WorkerBSF="${LIBIFSNAME}/TOOLS.FILE/BNDSRC.MBR" 123*6236dae4SAndroid Build Coastguard Worker 124*6236dae4SAndroid Build Coastguard Workerif action_needed "${BSF}" Makefile.am 125*6236dae4SAndroid Build Coastguard Workerthen LINK=YES 126*6236dae4SAndroid Build Coastguard Workerfi 127*6236dae4SAndroid Build Coastguard Worker 128*6236dae4SAndroid Build Coastguard Workerif [ -n "${LINK}" ] 129*6236dae4SAndroid Build Coastguard Workerthen echo " STRPGMEXP PGMLVL(*CURRENT) SIGNATURE('LIBCURL_${SONAME}')" \ 130*6236dae4SAndroid Build Coastguard Worker > "${BSF}" 131*6236dae4SAndroid Build Coastguard Worker for EXPORT in ${EXPORTS} 132*6236dae4SAndroid Build Coastguard Worker do echo ' EXPORT SYMBOL("'"${EXPORT}"'")' >> "${BSF}" 133*6236dae4SAndroid Build Coastguard Worker done 134*6236dae4SAndroid Build Coastguard Worker 135*6236dae4SAndroid Build Coastguard Worker echo ' ENDPGMEXP' >> "${BSF}" 136*6236dae4SAndroid Build Coastguard Workerfi 137*6236dae4SAndroid Build Coastguard Worker 138*6236dae4SAndroid Build Coastguard Worker 139*6236dae4SAndroid Build Coastguard Worker# Build the service program if needed. 140*6236dae4SAndroid Build Coastguard Worker 141*6236dae4SAndroid Build Coastguard Workerif action_needed "${LIBIFSNAME}/${SRVPGM}.SRVPGM" 142*6236dae4SAndroid Build Coastguard Workerthen LINK=YES 143*6236dae4SAndroid Build Coastguard Workerfi 144*6236dae4SAndroid Build Coastguard Worker 145*6236dae4SAndroid Build Coastguard Workerif [ -n "${LINK}" ] 146*6236dae4SAndroid Build Coastguard Workerthen CMD="CRTSRVPGM SRVPGM(${TARGETLIB}/${SRVPGM})" 147*6236dae4SAndroid Build Coastguard Worker CMD="${CMD} SRCFILE(${TARGETLIB}/TOOLS) SRCMBR(BNDSRC)" 148*6236dae4SAndroid Build Coastguard Worker CMD="${CMD} MODULE(${TARGETLIB}/OS400)" 149*6236dae4SAndroid Build Coastguard Worker CMD="${CMD} BNDDIR(${TARGETLIB}/${STATBNDDIR}" 150*6236dae4SAndroid Build Coastguard Worker if [ "${WITH_ZLIB}" != 0 ] 151*6236dae4SAndroid Build Coastguard Worker then CMD="${CMD} ${ZLIB_LIB}/${ZLIB_BNDDIR}" 152*6236dae4SAndroid Build Coastguard Worker liblist -a "${ZLIB_LIB}" 153*6236dae4SAndroid Build Coastguard Worker fi 154*6236dae4SAndroid Build Coastguard Worker if [ "${WITH_LIBSSH2}" != 0 ] 155*6236dae4SAndroid Build Coastguard Worker then CMD="${CMD} ${LIBSSH2_LIB}/${LIBSSH2_BNDDIR}" 156*6236dae4SAndroid Build Coastguard Worker liblist -a "${LIBSSH2_LIB}" 157*6236dae4SAndroid Build Coastguard Worker fi 158*6236dae4SAndroid Build Coastguard Worker CMD="${CMD})" 159*6236dae4SAndroid Build Coastguard Worker CMD="${CMD} BNDSRVPGM(QADRTTS QGLDCLNT QGLDBRDR)" 160*6236dae4SAndroid Build Coastguard Worker CMD="${CMD} TEXT('curl API library')" 161*6236dae4SAndroid Build Coastguard Worker CMD="${CMD} TGTRLS(${TGTRLS})" 162*6236dae4SAndroid Build Coastguard Worker CLcommand "${CMD}" 163*6236dae4SAndroid Build Coastguard Worker LINK=YES 164*6236dae4SAndroid Build Coastguard Workerfi 165*6236dae4SAndroid Build Coastguard Worker 166*6236dae4SAndroid Build Coastguard Worker 167*6236dae4SAndroid Build Coastguard Worker# If needed, (re)create the dynamic binding directory. 168*6236dae4SAndroid Build Coastguard Worker 169*6236dae4SAndroid Build Coastguard Workerif action_needed "${LIBIFSNAME}/${DYNBNDDIR}.BNDDIR" 170*6236dae4SAndroid Build Coastguard Workerthen LINK=YES 171*6236dae4SAndroid Build Coastguard Workerfi 172*6236dae4SAndroid Build Coastguard Worker 173*6236dae4SAndroid Build Coastguard Workerif [ -n "${LINK}" ] 174*6236dae4SAndroid Build Coastguard Workerthen rm -rf "${LIBIFSNAME}/${DYNBNDDIR}.BNDDIR" 175*6236dae4SAndroid Build Coastguard Worker CMD="CRTBNDDIR BNDDIR(${TARGETLIB}/${DYNBNDDIR})" 176*6236dae4SAndroid Build Coastguard Worker CMD="${CMD} TEXT('LibCurl API dynamic binding directory')" 177*6236dae4SAndroid Build Coastguard Worker CLcommand "${CMD}" 178*6236dae4SAndroid Build Coastguard Worker CMD="ADDBNDDIRE BNDDIR(${TARGETLIB}/${DYNBNDDIR})" 179*6236dae4SAndroid Build Coastguard Worker CMD="${CMD} OBJ((*LIBL/${SRVPGM} *SRVPGM))" 180*6236dae4SAndroid Build Coastguard Worker CLcommand "${CMD}" 181*6236dae4SAndroid Build Coastguard Workerfi 182