14 case "${SCRIPTDIR}" in
16 *) SCRIPTDIR="`pwd`/${SCRIPTDIR}"
20 do case "${SCRIPTDIR}" in
21 */.) SCRIPTDIR="${SCRIPTDIR%/.}";;
26 # The script directory is supposed to be in $TOPDIR/packages/os400.
28 TOPDIR=`dirname "${SCRIPTDIR}"`
29 TOPDIR=`dirname "${TOPDIR}"`
30 export SCRIPTDIR TOPDIR
32 # Extract the SONAME from the library makefile.
34 SONAME=`sed -e '/^VERSIONINFO=/!d' -e 's/^.* \([0-9]*\):.*$/\1/' -e 'q' \
35 < "${TOPDIR}/lib/Makefile.am"`
39 ################################################################################
41 # Tunable configuration parameters.
43 ################################################################################
45 setenv TARGETLIB 'CURL' # Target OS/400 program library.
46 setenv STATBNDDIR 'CURL_A' # Static binding directory.
47 setenv DYNBNDDIR 'CURL' # Dynamic binding directory.
48 setenv SRVPGM "CURL.${SONAME}" # Service program.
49 setenv TGTCCSID '500' # Target CCSID of objects.
50 setenv DEBUG '*ALL' # Debug level.
51 setenv OPTIMIZE '10' # Optimisation level
52 setenv OUTPUT '*NONE' # Compilation output option.
53 setenv TGTRLS 'V5R3M0' # Target OS release.
54 setenv IFSDIR '/curl' # Installation IFS directory.
56 # Define ZLIB availability and locations.
58 setenv WITH_ZLIB 0 # Define to 1 to enable.
59 setenv ZLIB_INCLUDE '/zlib/include' # ZLIB include IFS directory.
60 setenv ZLIB_LIB 'ZLIB' # ZLIB library.
61 setenv ZLIB_BNDDIR 'ZLIB_A' # ZLIB binding directory.
64 ################################################################################
66 # Need to get the version definitions.
68 LIBCURL_VERSION=`grep '^#define *LIBCURL_VERSION ' \
69 "${TOPDIR}/include/curl/curlver.h" |
70 sed 's/.*"\(.*\)".*/\1/'`
71 LIBCURL_VERSION_MAJOR=`grep '^#define *LIBCURL_VERSION_MAJOR ' \
72 "${TOPDIR}/include/curl/curlver.h" |
73 sed 's/^#define *LIBCURL_VERSION_MAJOR *\([^ ]*\).*/\1/'`
74 LIBCURL_VERSION_MINOR=`grep '^#define *LIBCURL_VERSION_MINOR ' \
75 "${TOPDIR}/include/curl/curlver.h" |
76 sed 's/^#define *LIBCURL_VERSION_MINOR *\([^ ]*\).*/\1/'`
77 LIBCURL_VERSION_PATCH=`grep '^#define *LIBCURL_VERSION_PATCH ' \
78 "${TOPDIR}/include/curl/curlver.h" |
79 sed 's/^#define *LIBCURL_VERSION_PATCH *\([^ ]*\).*/\1/'`
80 LIBCURL_VERSION_NUM=`grep '^#define *LIBCURL_VERSION_NUM ' \
81 "${TOPDIR}/include/curl/curlver.h" |
82 sed 's/^#define *LIBCURL_VERSION_NUM *0x\([^ ]*\).*/\1/'`
83 LIBCURL_TIMESTAMP=`grep '^#define *LIBCURL_TIMESTAMP ' \
84 "${TOPDIR}/include/curl/curlver.h" |
85 sed 's/.*"\(.*\)".*/\1/'`
86 export LIBCURL_VERSION
87 export LIBCURL_VERSION_MAJOR LIBCURL_VERSION_MINOR LIBCURL_VERSION_PATCH
88 export LIBCURL_VERSION_NUM LIBCURL_TIMESTAMP
90 ################################################################################
92 # OS/400 specific definitions.
94 ################################################################################
96 LIBIFSNAME="/QSYS.LIB/${TARGETLIB}.LIB"
99 ################################################################################
103 ################################################################################
105 # action_needed dest [src]
107 # dest is an object to build
108 # if specified, src is an object on which dest depends.
110 # exit 0 (succeeds) if some action has to be taken, else 1.
115 [ ! -e "${1}" ] && return 0
116 [ "${2}" ] || return 1
117 [ "${1}" -ot "${2}" ] && return 0
122 # canonicalize_path path
124 # Return canonicalized path as:
126 # - No . or .. component.
131 if expr "${1}" : '^/' > /dev/null
144 ..) R=`expr "${R}" : '^\(.*/\)..*'`
153 echo "/`expr "${R}" : '^\(.*\)/'`"
157 # make_module module_name source_name [additional_definitions]
159 # Compile source name into ASCII module if needed.
160 # As side effect, append the module name to variable MODULES.
161 # Set LINK to "YES" if the module has been compiled.
166 MODULES="${MODULES} ${1}"
167 MODIFSNAME="${LIBIFSNAME}/${1}.MODULE"
168 action_needed "${MODIFSNAME}" "${2}" || return 0;
169 SRCDIR=`dirname \`canonicalize_path "${2}"\``
171 # #pragma convert has to be in the source file itself, i.e.
172 # putting it in an include file makes it only active
173 # for that include file.
174 # Thus we build a temporary file with the pragma prepended to
175 # the source file and we compile that themporary file.
177 echo "#line 1 \"${2}\"" > __tmpsrcf.c
178 echo "#pragma convert(819)" >> __tmpsrcf.c
179 echo "#line 1" >> __tmpsrcf.c
180 cat "${2}" >> __tmpsrcf.c
181 CMD="CRTCMOD MODULE(${TARGETLIB}/${1}) SRCSTMF('__tmpsrcf.c')"
182 # CMD="${CMD} SYSIFCOPT(*IFS64IO) OPTION(*INCDIRFIRST *SHOWINC *SHOWSYS)"
183 CMD="${CMD} SYSIFCOPT(*IFS64IO) OPTION(*INCDIRFIRST)"
184 CMD="${CMD} LOCALETYPE(*LOCALE)"
185 CMD="${CMD} INCDIR('/qibm/proddata/qadrt/include'"
186 CMD="${CMD} '${TOPDIR}/include/curl' '${TOPDIR}/include' '${SRCDIR}'"
187 CMD="${CMD} '${TOPDIR}/packages/OS400'"
189 if [ "${WITH_ZLIB}" != "0" ]
190 then CMD="${CMD} '${ZLIB_INCLUDE}'"
193 CMD="${CMD} ${INCLUDES})"
194 CMD="${CMD} TGTCCSID(${TGTCCSID}) TGTRLS(${TGTRLS})"
195 CMD="${CMD} OUTPUT(${OUTPUT})"
196 CMD="${CMD} OPTIMIZE(${OPTIMIZE})"
197 CMD="${CMD} DBGVIEW(${DEBUG})"
201 if [ "${WITH_ZLIB}" != "0" ]
202 then DEFINES="${DEFINES} HAVE_LIBZ HAVE_ZLIB_H"
206 then CMD="${CMD} DEFINE(${DEFINES})"
215 # Determine DB2 object name from IFS name.
220 if [ "${2}" = 'nomangle' ]
221 then basename "${1}" |
224 -e 's/^\(.\).*\(.........\)$/\1\2/'
225 else basename "${1}" |
229 -e 's/^\(.\).*\(.........\)$/\1\2/'
234 # Copy IFS file replacing version info.
239 sed -e "s/@LIBCURL_VERSION@/${LIBCURL_VERSION}/g" \
240 -e "s/@LIBCURL_VERSION_MAJOR@/${LIBCURL_VERSION_MAJOR}/g" \
241 -e "s/@LIBCURL_VERSION_MINOR@/${LIBCURL_VERSION_MINOR}/g" \
242 -e "s/@LIBCURL_VERSION_PATCH@/${LIBCURL_VERSION_PATCH}/g" \
243 -e "s/@LIBCURL_VERSION_NUM@/${LIBCURL_VERSION_NUM}/g" \
244 -e "s/@LIBCURL_TIMESTAMP@/${LIBCURL_TIMESTAMP}/g" \