e2a87082d5d8e008f8cd7294d7f62f6aab1f3ebe
[platform/upstream/curl.git] / packages / OS400 / make-lib.sh
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
11 #      Create and compile the identification source file.
12
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.
19 MODULES=
20
21
22 #       Get source list.
23
24 CSOURCES()
25
26 {
27         shift                   # Drop the equal sign.
28         CSOURCES="$*"           # Get the file names.
29 }
30
31 HHEADERS()
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
43 INCLUDES="'`pwd`'"
44
45 make_module     OS400SYS        "${SCRIPTDIR}/os400sys.c"
46 make_module     CCSIDCURL       "${SCRIPTDIR}/ccsidcurl.c"
47
48 for SRC in ${CSOURCES}
49 do      MODULE=`db2_name "${SRC}"`
50         make_module "${MODULE}" "${SRC}"
51 done
52
53
54 #       If needed, (re)create the static binding directory.
55
56 if action_needed "${LIBIFSNAME}/${STATBNDDIR}.BNDDIR"
57 then    LINK=YES
58 fi
59
60 if [ "${LINK}" ]
61 then    rm -rf "${LIBIFSNAME}/${STATBNDDIR}.BNDDIR"
62         CMD="CRTBNDDIR BNDDIR(${TARGETLIB}/${STATBNDDIR})"
63         CMD="${CMD} TEXT('LibCurl API static binding directory')"
64         system "${CMD}"
65
66         for MODULE in ${MODULES}
67         do      CMD="ADDBNDDIRE BNDDIR(${TARGETLIB}/${STATBNDDIR})"
68                 CMD="${CMD} OBJ((${TARGETLIB}/${MODULE} *MODULE))"
69                 system "${CMD}"
70         done
71 fi
72
73
74 #       The exportation file for service program creation must be in a DB2
75 #               source file, so make sure it exists.
76
77 if action_needed "${LIBIFSNAME}/TOOLS.FILE"
78 then    CMD="CRTSRCPF FILE(${TARGETLIB}/TOOLS) RCDLEN(112)"
79         CMD="${CMD} TEXT('curl: build tools')"
80         system "${CMD}"
81 fi
82
83
84 #       Gather the list of symbols to export.
85
86 EXPORTS=`grep '^CURL_EXTERN[    ]'                                      \
87               "${TOPDIR}"/include/curl/*.h                              \
88               "${SCRIPTDIR}/ccsidcurl.h"                                |
89          sed -e 's/^.*CURL_EXTERN[      ]\(.*\)(.*$/\1/'                \
90              -e 's/[    ]*$//'                                          \
91              -e 's/^.*[         ][      ]*//'                           \
92              -e 's/^\*//'                                               \
93              -e 's/(\(.*\))/\1/'`
94
95 #       Create the service program exportation file in DB2 member if needed.
96
97 BSF="${LIBIFSNAME}/TOOLS.FILE/BNDSRC.MBR"
98
99 if action_needed "${BSF}" Makefile.am
100 then    LINK=YES
101 fi
102
103 if [ "${LINK}" ]
104 then    echo " STRPGMEXP PGMLVL(*CURRENT) SIGNATURE('LIBCURL_${SONAME}')" \
105             > "${BSF}"
106         for EXPORT in ${EXPORTS}
107         do      echo ' EXPORT    SYMBOL("'"${EXPORT}"'")' >> "${BSF}"
108         done
109
110         echo ' ENDPGMEXP' >> "${BSF}"
111 fi
112
113
114 #       Build the service program if needed.
115
116 if action_needed "${LIBIFSNAME}/${SRVPGM}.SRVPGM"
117 then    LINK=YES
118 fi
119
120 if [ "${LINK}" ]
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})"
128         system "${CMD}"
129         LINK=YES
130 fi
131
132
133 #       If needed, (re)create the dynamic binding directory.
134
135 if action_needed "${LIBIFSNAME}/${DYNBNDDIR}.BNDDIR"
136 then    LINK=YES
137 fi
138
139 if [ "${LINK}" ]
140 then    rm -rf "${LIBIFSNAME}/${DYNBNDDIR}.BNDDIR"
141         CMD="CRTBNDDIR BNDDIR(${TARGETLIB}/${DYNBNDDIR})"
142         CMD="${CMD} TEXT('LibCurl API dynamic binding directory')"
143         system "${CMD}"
144         CMD="ADDBNDDIRE BNDDIR(${TARGETLIB}/${DYNBNDDIR})"
145         CMD="${CMD} OBJ((*LIBL/${SRVPGM} *SRVPGM))"
146         system "${CMD}"
147 fi
148
149
150 #       Rebuild the formdata test if needed.
151
152 if [ "${TEST_FORMDATA}" ]
153 then    MODULES=
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"
171
172         PGMIFSNAME="${LIBIFSNAME}/TFORMDATA.PGM"
173
174         if action_needed "${PGMIFSNAME}"
175         then    LINK=YES
176         fi
177
178         if [ "${LINK}" ]
179         then    CMD="CRTPGM PGM(${TARGETLIB}/TFORMDATA)"
180                 CMD="${CMD} ENTMOD(QADRT/QADRTMAIN2)"
181                 CMD="${CMD} MODULE("
182
183                 for MODULE in ${MODULES}
184                 do      CMD="${CMD} ${TARGETLIB}/${MODULE}"
185                 done
186
187                 CMD="${CMD} ) BNDSRVPGM(QADRTTS)"
188                 CMD="${CMD} TGTRLS(${TGTRLS})"
189                 system "${CMD}"
190         fi
191 fi