1#!/bin/sh 2# 3# libcurl compilation script for the OS/400. 4# 5 6SCRIPTDIR=`dirname "${0}"` 7. "${SCRIPTDIR}/initscript.sh" 8cd "${TOPDIR}/lib" 9 10 11# Create and compile the identification source file. 12 13echo '#pragma comment(user, "libcurl version '"${LIBCURL_VERSION}"'")' > os400.c 14echo '#pragma comment(user, __DATE__)' >> os400.c 15echo '#pragma comment(user, __TIME__)' >> os400.c 16echo '#pragma comment(copyright, "Copyright (C) 1998-2011 Daniel Stenberg et al. OS/400 version by P. Monnerat")' >> os400.c 17make_module OS400 os400.c 18LINK= # No need to rebuild service program yet. 19MODULES= 20 21 22# Get source list. 23 24CSOURCES() 25 26{ 27 shift # Drop the equal sign. 28 CSOURCES="$*" # Get the file names. 29} 30 31HHEADERS() 32 33{ 34 shift # Drop the equal sign. 35 HHEADERS="$*" # Get the file names. 36} 37 38. Makefile.inc 39 40 41# Compile the sources into modules. 42 43INCLUDES="'`pwd`'" 44 45make_module OS400SYS "${SCRIPTDIR}/os400sys.c" 46make_module CCSIDCURL "${SCRIPTDIR}/ccsidcurl.c" 47 48for SRC in ${CSOURCES} 49do MODULE=`basename "${SRC}" .c | 50 tr '[a-z]' '[A-Z]' | 51 sed -e 's/^\(..........\).*/\1/'` 52 make_module "${MODULE}" "${SRC}" 53done 54 55 56# If needed, (re)create the static binding directory. 57 58if action_needed "${LIBIFSNAME}/${STATBNDDIR}.BNDDIR" 59then LINK=YES 60fi 61 62if [ "${LINK}" ] 63then rm -rf "${LIBIFSNAME}/${STATBNDDIR}.BNDDIR" 64 CMD="CRTBNDDIR BNDDIR(${TARGETLIB}/${STATBNDDIR})" 65 CMD="${CMD} TEXT('LibCurl API static binding directory')" 66 system "${CMD}" 67 68 for MODULE in ${MODULES} 69 do CMD="ADDBNDDIRE BNDDIR(${TARGETLIB}/${STATBNDDIR})" 70 CMD="${CMD} OBJ((${TARGETLIB}/${MODULE} *MODULE))" 71 system "${CMD}" 72 done 73fi 74 75 76# The exportation file for service program creation must be in a DB2 77# source file, so make sure it exists. 78 79if action_needed "${LIBIFSNAME}/TOOLS.FILE" 80then CMD="CRTSRCPF FILE(${TARGETLIB}/TOOLS) RCDLEN(112)" 81 CMD="${CMD} TEXT('curl: build tools')" 82 system "${CMD}" 83fi 84 85 86# Gather the list of symbols to export. 87 88EXPORTS=`grep '^CURL_EXTERN[ ]' \ 89 "${TOPDIR}"/include/curl/*.h \ 90 "${SCRIPTDIR}/ccsidcurl.h" | 91 sed -e 's/^.*CURL_EXTERN[ ]\(.*\)(.*$/\1/' \ 92 -e 's/[ ]*$//' \ 93 -e 's/^.*[ ][ ]*//' \ 94 -e 's/^\*//' \ 95 -e 's/(\(.*\))/\1/'` 96 97# Create the service program exportation file in DB2 member if needed. 98 99BSF="${LIBIFSNAME}/TOOLS.FILE/BNDSRC.MBR" 100 101if action_needed "${BSF}" Makefile.am 102then LINK=YES 103fi 104 105if [ "${LINK}" ] 106then echo " STRPGMEXP PGMLVL(*CURRENT) SIGNATURE('LIBCURL_${SONAME}')" \ 107 > "${BSF}" 108 for EXPORT in ${EXPORTS} 109 do echo ' EXPORT SYMBOL("'"${EXPORT}"'")' >> "${BSF}" 110 done 111 112 echo ' ENDPGMEXP' >> "${BSF}" 113fi 114 115 116# Build the service program if needed. 117 118if action_needed "${LIBIFSNAME}/${SRVPGM}.SRVPGM" 119then LINK=YES 120fi 121 122if [ "${LINK}" ] 123then CMD="CRTSRVPGM SRVPGM(${TARGETLIB}/${SRVPGM})" 124 CMD="${CMD} SRCFILE(${TARGETLIB}/TOOLS) SRCMBR(BNDSRC)" 125 CMD="${CMD} MODULE(${TARGETLIB}/OS400)" 126 CMD="${CMD} BNDDIR(${TARGETLIB}/${STATBNDDIR})" 127 CMD="${CMD} BNDSRVPGM(QADRTTS QGLDCLNT QGLDBRDR)" 128 CMD="${CMD} TEXT('curl API library')" 129 CMD="${CMD} TGTRLS(${TGTRLS})" 130 system "${CMD}" 131 LINK=YES 132fi 133 134 135# If needed, (re)create the dynamic binding directory. 136 137if action_needed "${LIBIFSNAME}/${DYNBNDDIR}.BNDDIR" 138then LINK=YES 139fi 140 141if [ "${LINK}" ] 142then rm -rf "${LIBIFSNAME}/${DYNBNDDIR}.BNDDIR" 143 CMD="CRTBNDDIR BNDDIR(${TARGETLIB}/${DYNBNDDIR})" 144 CMD="${CMD} TEXT('LibCurl API dynamic binding directory')" 145 system "${CMD}" 146 CMD="ADDBNDDIRE BNDDIR(${TARGETLIB}/${DYNBNDDIR})" 147 CMD="${CMD} OBJ((*LIBL/${SRVPGM} *SRVPGM))" 148 system "${CMD}" 149fi 150 151 152# Rebuild the formdata test if needed. 153 154if [ "${TEST_FORMDATA}" ] 155then MODULES= 156 make_module TFORMDATA formdata.c "'_FORM_DEBUG' 'CURLDEBUG'" 157 make_module TSTREQUAL strequal.c "'_FORM_DEBUG' 'CURLDEBUG'" 158 make_module TMEMDEBUG memdebug.c "'_FORM_DEBUG' 'CURLDEBUG'" 159 make_module TMPRINTF mprintf.c "'_FORM_DEBUG' 'CURLDEBUG'" 160 make_module TSTRERROR strerror.c "'_FORM_DEBUG' 'CURLDEBUG'" 161 # The following modules should not be needed (see comment in 162 # formdata.c. However, there are some unsatisfied 163 # external references leading in the following 164 # modules to be (recursively) needed. 165 MODULES="${MODULES} EASY STRDUP SSLGEN QSSL HOSTIP HOSTIP4 HOSTIP6" 166 MODULES="${MODULES} URL HASH TRANSFER GETINFO COOKIE SENDF SELECT" 167 MODULES="${MODULES} INET_NTOP SHARE HOSTTHRE MULTI LLIST FTP HTTP" 168 MODULES="${MODULES} HTTP_DIGES HTTP_CHUNK HTTP_NEGOT TIMEVAL HOSTSYN" 169 MODULES="${MODULES} CONNECT SOCKS PROGRESS ESCAPE INET_PTON GETENV" 170 MODULES="${MODULES} DICT LDAP TELNET FILE TFTP NETRC PARSEDATE" 171 MODULES="${MODULES} SPEEDCHECK SPLAY BASE64 SECURITY IF2IP MD5" 172 MODULES="${MODULES} KRB5 OS400SYS" 173 174 PGMIFSNAME="${LIBIFSNAME}/TFORMDATA.PGM" 175 176 if action_needed "${PGMIFSNAME}" 177 then LINK=YES 178 fi 179 180 if [ "${LINK}" ] 181 then CMD="CRTPGM PGM(${TARGETLIB}/TFORMDATA)" 182 CMD="${CMD} ENTMOD(QADRT/QADRTMAIN2)" 183 CMD="${CMD} MODULE(" 184 185 for MODULE in ${MODULES} 186 do CMD="${CMD} ${TARGETLIB}/${MODULE}" 187 done 188 189 CMD="${CMD} ) BNDSRVPGM(QADRTTS)" 190 CMD="${CMD} TGTRLS(${TGTRLS})" 191 system "${CMD}" 192 fi 193fi 194