3 # libcurl compilation script for the OS/400.
6 SCRIPTDIR=`dirname "${0}"`
7 . "${SCRIPTDIR}/initscript.sh"
11 # Create and compile the identification source file.
13 echo '#pragma comment(user, "libcurl version '"${LIBCURL_VERSION}"'")' > os400.c
14 echo '#pragma comment(user, __DATE__)' >> os400.c
15 echo '#pragma comment(user, __TIME__)' >> os400.c
16 echo '#pragma comment(copyright, "Copyright (C) 1998-2013 Daniel Stenberg et al. OS/400 version by P. Monnerat")' >> os400.c
17 make_module OS400 os400.c
18 LINK= # No need to rebuild service program yet.
27 shift # Drop the equal sign.
28 CSOURCES="$*" # Get the file names.
34 shift # Drop the equal sign.
35 HHEADERS="$*" # Get the file names.
41 # Compile the sources into modules.
45 make_module OS400SYS "${SCRIPTDIR}/os400sys.c"
46 make_module CCSIDCURL "${SCRIPTDIR}/ccsidcurl.c"
48 for SRC in ${CSOURCES}
49 do MODULE=`db2_name "${SRC}"`
50 make_module "${MODULE}" "${SRC}"
54 # If needed, (re)create the static binding directory.
56 if action_needed "${LIBIFSNAME}/${STATBNDDIR}.BNDDIR"
61 then rm -rf "${LIBIFSNAME}/${STATBNDDIR}.BNDDIR"
62 CMD="CRTBNDDIR BNDDIR(${TARGETLIB}/${STATBNDDIR})"
63 CMD="${CMD} TEXT('LibCurl API static binding directory')"
66 for MODULE in ${MODULES}
67 do CMD="ADDBNDDIRE BNDDIR(${TARGETLIB}/${STATBNDDIR})"
68 CMD="${CMD} OBJ((${TARGETLIB}/${MODULE} *MODULE))"
74 # The exportation file for service program creation must be in a DB2
75 # source file, so make sure it exists.
77 if action_needed "${LIBIFSNAME}/TOOLS.FILE"
78 then CMD="CRTSRCPF FILE(${TARGETLIB}/TOOLS) RCDLEN(112)"
79 CMD="${CMD} TEXT('curl: build tools')"
84 # Gather the list of symbols to export.
86 EXPORTS=`grep '^CURL_EXTERN[ ]' \
87 "${TOPDIR}"/include/curl/*.h \
88 "${SCRIPTDIR}/ccsidcurl.h" |
89 sed -e 's/^.*CURL_EXTERN[ ]\(.*\)(.*$/\1/' \
95 # Create the service program exportation file in DB2 member if needed.
97 BSF="${LIBIFSNAME}/TOOLS.FILE/BNDSRC.MBR"
99 if action_needed "${BSF}" Makefile.am
104 then echo " STRPGMEXP PGMLVL(*CURRENT) SIGNATURE('LIBCURL_${SONAME}')" \
106 for EXPORT in ${EXPORTS}
107 do echo ' EXPORT SYMBOL("'"${EXPORT}"'")' >> "${BSF}"
110 echo ' ENDPGMEXP' >> "${BSF}"
114 # Build the service program if needed.
116 if action_needed "${LIBIFSNAME}/${SRVPGM}.SRVPGM"
121 then CMD="CRTSRVPGM SRVPGM(${TARGETLIB}/${SRVPGM})"
122 CMD="${CMD} SRCFILE(${TARGETLIB}/TOOLS) SRCMBR(BNDSRC)"
123 CMD="${CMD} MODULE(${TARGETLIB}/OS400)"
124 CMD="${CMD} BNDDIR(${TARGETLIB}/${STATBNDDIR})"
125 CMD="${CMD} BNDSRVPGM(QADRTTS QGLDCLNT QGLDBRDR)"
126 CMD="${CMD} TEXT('curl API library')"
127 CMD="${CMD} TGTRLS(${TGTRLS})"
133 # If needed, (re)create the dynamic binding directory.
135 if action_needed "${LIBIFSNAME}/${DYNBNDDIR}.BNDDIR"
140 then rm -rf "${LIBIFSNAME}/${DYNBNDDIR}.BNDDIR"
141 CMD="CRTBNDDIR BNDDIR(${TARGETLIB}/${DYNBNDDIR})"
142 CMD="${CMD} TEXT('LibCurl API dynamic binding directory')"
144 CMD="ADDBNDDIRE BNDDIR(${TARGETLIB}/${DYNBNDDIR})"
145 CMD="${CMD} OBJ((*LIBL/${SRVPGM} *SRVPGM))"
150 # Rebuild the formdata test if needed.
152 if [ "${TEST_FORMDATA}" ]
154 make_module TFORMDATA formdata.c "'_FORM_DEBUG' 'CURLDEBUG'"
155 make_module TSTREQUAL strequal.c "'_FORM_DEBUG' 'CURLDEBUG'"
156 make_module TMEMDEBUG memdebug.c "'_FORM_DEBUG' 'CURLDEBUG'"
157 make_module TMPRINTF mprintf.c "'_FORM_DEBUG' 'CURLDEBUG'"
158 make_module TSTRERROR strerror.c "'_FORM_DEBUG' 'CURLDEBUG'"
159 # The following modules should not be needed (see comment in
160 # formdata.c. However, there are some unsatisfied
161 # external references leading in the following
162 # modules to be (recursively) needed.
163 MODULES="${MODULES} EASY STRDUP SSLGEN QSSL HOSTIP HOSTIP4 HOSTIP6"
164 MODULES="${MODULES} URL HASH TRANSFER GETINFO COOKIE SENDF SELECT"
165 MODULES="${MODULES} INET_NTOP SHARE HOSTTHRE MULTI LLIST FTP HTTP"
166 MODULES="${MODULES} HTTP_DIGES HTTP_CHUNK HTTP_NEGOT TIMEVAL HOSTSYN"
167 MODULES="${MODULES} CONNECT SOCKS PROGRESS ESCAPE INET_PTON GETENV"
168 MODULES="${MODULES} DICT LDAP TELNET FILE TFTP NETRC PARSEDATE"
169 MODULES="${MODULES} SPEEDCHECK SPLAY BASE64 SECURITY IF2IP MD5"
170 MODULES="${MODULES} KRB5 OS400SYS"
172 PGMIFSNAME="${LIBIFSNAME}/TFORMDATA.PGM"
174 if action_needed "${PGMIFSNAME}"
179 then CMD="CRTPGM PGM(${TARGETLIB}/TFORMDATA)"
180 CMD="${CMD} ENTMOD(QADRT/QADRTMAIN2)"
183 for MODULE in ${MODULES}
184 do CMD="${CMD} ${TARGETLIB}/${MODULE}"
187 CMD="${CMD} ) BNDSRVPGM(QADRTTS)"
188 CMD="${CMD} TGTRLS(${TGTRLS})"