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