make.sh revision 1.1.1.1.4.2 1 1.1.1.1.4.2 pgoyette #!/bin/sh
2 1.1.1.1.4.2 pgoyette #
3 1.1.1.1.4.2 pgoyette # ZLIB compilation script for the OS/400.
4 1.1.1.1.4.2 pgoyette #
5 1.1.1.1.4.2 pgoyette #
6 1.1.1.1.4.2 pgoyette # This is a shell script since make is not a standard component of OS/400.
7 1.1.1.1.4.2 pgoyette
8 1.1.1.1.4.2 pgoyette
9 1.1.1.1.4.2 pgoyette ################################################################################
10 1.1.1.1.4.2 pgoyette #
11 1.1.1.1.4.2 pgoyette # Tunable configuration parameters.
12 1.1.1.1.4.2 pgoyette #
13 1.1.1.1.4.2 pgoyette ################################################################################
14 1.1.1.1.4.2 pgoyette
15 1.1.1.1.4.2 pgoyette TARGETLIB='ZLIB' # Target OS/400 program library
16 1.1.1.1.4.2 pgoyette STATBNDDIR='ZLIB_A' # Static binding directory.
17 1.1.1.1.4.2 pgoyette DYNBNDDIR='ZLIB' # Dynamic binding directory.
18 1.1.1.1.4.2 pgoyette SRVPGM="ZLIB" # Service program.
19 1.1.1.1.4.2 pgoyette IFSDIR='/zlib' # IFS support base directory.
20 1.1.1.1.4.2 pgoyette TGTCCSID='500' # Target CCSID of objects
21 1.1.1.1.4.2 pgoyette DEBUG='*NONE' # Debug level
22 1.1.1.1.4.2 pgoyette OPTIMIZE='40' # Optimisation level
23 1.1.1.1.4.2 pgoyette OUTPUT='*NONE' # Compilation output option.
24 1.1.1.1.4.2 pgoyette TGTRLS='V6R1M0' # Target OS release
25 1.1.1.1.4.2 pgoyette
26 1.1.1.1.4.2 pgoyette export TARGETLIB STATBNDDIR DYNBNDDIR SRVPGM IFSDIR
27 1.1.1.1.4.2 pgoyette export TGTCCSID DEBUG OPTIMIZE OUTPUT TGTRLS
28 1.1.1.1.4.2 pgoyette
29 1.1.1.1.4.2 pgoyette
30 1.1.1.1.4.2 pgoyette ################################################################################
31 1.1.1.1.4.2 pgoyette #
32 1.1.1.1.4.2 pgoyette # OS/400 specific definitions.
33 1.1.1.1.4.2 pgoyette #
34 1.1.1.1.4.2 pgoyette ################################################################################
35 1.1.1.1.4.2 pgoyette
36 1.1.1.1.4.2 pgoyette LIBIFSNAME="/QSYS.LIB/${TARGETLIB}.LIB"
37 1.1.1.1.4.2 pgoyette
38 1.1.1.1.4.2 pgoyette
39 1.1.1.1.4.2 pgoyette ################################################################################
40 1.1.1.1.4.2 pgoyette #
41 1.1.1.1.4.2 pgoyette # Procedures.
42 1.1.1.1.4.2 pgoyette #
43 1.1.1.1.4.2 pgoyette ################################################################################
44 1.1.1.1.4.2 pgoyette
45 1.1.1.1.4.2 pgoyette # action_needed dest [src]
46 1.1.1.1.4.2 pgoyette #
47 1.1.1.1.4.2 pgoyette # dest is an object to build
48 1.1.1.1.4.2 pgoyette # if specified, src is an object on which dest depends.
49 1.1.1.1.4.2 pgoyette #
50 1.1.1.1.4.2 pgoyette # exit 0 (succeeds) if some action has to be taken, else 1.
51 1.1.1.1.4.2 pgoyette
52 1.1.1.1.4.2 pgoyette action_needed()
53 1.1.1.1.4.2 pgoyette
54 1.1.1.1.4.2 pgoyette {
55 1.1.1.1.4.2 pgoyette [ ! -e "${1}" ] && return 0
56 1.1.1.1.4.2 pgoyette [ "${2}" ] || return 1
57 1.1.1.1.4.2 pgoyette [ "${1}" -ot "${2}" ] && return 0
58 1.1.1.1.4.2 pgoyette return 1
59 1.1.1.1.4.2 pgoyette }
60 1.1.1.1.4.2 pgoyette
61 1.1.1.1.4.2 pgoyette
62 1.1.1.1.4.2 pgoyette # make_module module_name source_name [additional_definitions]
63 1.1.1.1.4.2 pgoyette #
64 1.1.1.1.4.2 pgoyette # Compile source name into module if needed.
65 1.1.1.1.4.2 pgoyette # As side effect, append the module name to variable MODULES.
66 1.1.1.1.4.2 pgoyette # Set LINK to "YES" if the module has been compiled.
67 1.1.1.1.4.2 pgoyette
68 1.1.1.1.4.2 pgoyette make_module()
69 1.1.1.1.4.2 pgoyette
70 1.1.1.1.4.2 pgoyette {
71 1.1.1.1.4.2 pgoyette MODULES="${MODULES} ${1}"
72 1.1.1.1.4.2 pgoyette MODIFSNAME="${LIBIFSNAME}/${1}.MODULE"
73 1.1.1.1.4.2 pgoyette CSRC="`basename \"${2}\"`"
74 1.1.1.1.4.2 pgoyette
75 1.1.1.1.4.2 pgoyette if action_needed "${MODIFSNAME}" "${2}"
76 1.1.1.1.4.2 pgoyette then :
77 1.1.1.1.4.2 pgoyette elif [ ! "`sed -e \"/<source name=\\\"${CSRC}\\\">/,/<\\\\/source>/!d\" \
78 1.1.1.1.4.2 pgoyette -e '/<depend /!d' \
79 1.1.1.1.4.2 pgoyette -e 's/.* name=\"\\([^\"]*\\)\".*/\\1/' < \"${TOPDIR}/treebuild.xml\" |
80 1.1.1.1.4.2 pgoyette while read HDR
81 1.1.1.1.4.2 pgoyette do if action_needed \"${MODIFSNAME}\" \"${IFSDIR}/include/${HDR}\"
82 1.1.1.1.4.2 pgoyette then echo recompile
83 1.1.1.1.4.2 pgoyette break
84 1.1.1.1.4.2 pgoyette fi
85 1.1.1.1.4.2 pgoyette done`" ]
86 1.1.1.1.4.2 pgoyette then return 0
87 1.1.1.1.4.2 pgoyette fi
88 1.1.1.1.4.2 pgoyette
89 1.1.1.1.4.2 pgoyette CMD="CRTCMOD MODULE(${TARGETLIB}/${1}) SRCSTMF('${2}')"
90 1.1.1.1.4.2 pgoyette CMD="${CMD} SYSIFCOPT(*IFS64IO) OPTION(*INCDIRFIRST)"
91 1.1.1.1.4.2 pgoyette CMD="${CMD} LOCALETYPE(*LOCALE) FLAG(10)"
92 1.1.1.1.4.2 pgoyette CMD="${CMD} INCDIR('${IFSDIR}/include' ${INCLUDES})"
93 1.1.1.1.4.2 pgoyette CMD="${CMD} TGTCCSID(${TGTCCSID}) TGTRLS(${TGTRLS})"
94 1.1.1.1.4.2 pgoyette CMD="${CMD} OUTPUT(${OUTPUT})"
95 1.1.1.1.4.2 pgoyette CMD="${CMD} OPTIMIZE(${OPTIMIZE})"
96 1.1.1.1.4.2 pgoyette CMD="${CMD} DBGVIEW(${DEBUG})"
97 1.1.1.1.4.2 pgoyette system "${CMD}"
98 1.1.1.1.4.2 pgoyette LINK=YES
99 1.1.1.1.4.2 pgoyette }
100 1.1.1.1.4.2 pgoyette
101 1.1.1.1.4.2 pgoyette
102 1.1.1.1.4.2 pgoyette # Determine DB2 object name from IFS name.
103 1.1.1.1.4.2 pgoyette
104 1.1.1.1.4.2 pgoyette db2_name()
105 1.1.1.1.4.2 pgoyette
106 1.1.1.1.4.2 pgoyette {
107 1.1.1.1.4.2 pgoyette basename "${1}" |
108 1.1.1.1.4.2 pgoyette tr 'a-z-' 'A-Z_' |
109 1.1.1.1.4.2 pgoyette sed -e 's/\..*//' \
110 1.1.1.1.4.2 pgoyette -e 's/^\(.\).*\(.........\)$/\1\2/'
111 1.1.1.1.4.2 pgoyette }
112 1.1.1.1.4.2 pgoyette
113 1.1.1.1.4.2 pgoyette
114 1.1.1.1.4.2 pgoyette # Force enumeration types to be the same size as integers.
115 1.1.1.1.4.2 pgoyette
116 1.1.1.1.4.2 pgoyette copy_hfile()
117 1.1.1.1.4.2 pgoyette
118 1.1.1.1.4.2 pgoyette {
119 1.1.1.1.4.2 pgoyette sed -e '1i\
120 1.1.1.1.4.2 pgoyette #pragma enum(int)\
121 1.1.1.1.4.2 pgoyette ' "${@}" -e '$a\
122 1.1.1.1.4.2 pgoyette #pragma enum(pop)\
123 1.1.1.1.4.2 pgoyette '
124 1.1.1.1.4.2 pgoyette }
125 1.1.1.1.4.2 pgoyette
126 1.1.1.1.4.2 pgoyette
127 1.1.1.1.4.2 pgoyette ################################################################################
128 1.1.1.1.4.2 pgoyette #
129 1.1.1.1.4.2 pgoyette # Script initialization.
130 1.1.1.1.4.2 pgoyette #
131 1.1.1.1.4.2 pgoyette ################################################################################
132 1.1.1.1.4.2 pgoyette
133 1.1.1.1.4.2 pgoyette SCRIPTDIR=`dirname "${0}"`
134 1.1.1.1.4.2 pgoyette
135 1.1.1.1.4.2 pgoyette case "${SCRIPTDIR}" in
136 1.1.1.1.4.2 pgoyette /*) ;;
137 1.1.1.1.4.2 pgoyette *) SCRIPTDIR="`pwd`/${SCRIPTDIR}"
138 1.1.1.1.4.2 pgoyette esac
139 1.1.1.1.4.2 pgoyette
140 1.1.1.1.4.2 pgoyette while true
141 1.1.1.1.4.2 pgoyette do case "${SCRIPTDIR}" in
142 1.1.1.1.4.2 pgoyette */.) SCRIPTDIR="${SCRIPTDIR%/.}";;
143 1.1.1.1.4.2 pgoyette *) break;;
144 1.1.1.1.4.2 pgoyette esac
145 1.1.1.1.4.2 pgoyette done
146 1.1.1.1.4.2 pgoyette
147 1.1.1.1.4.2 pgoyette # The script directory is supposed to be in ${TOPDIR}/os400.
148 1.1.1.1.4.2 pgoyette
149 1.1.1.1.4.2 pgoyette TOPDIR=`dirname "${SCRIPTDIR}"`
150 1.1.1.1.4.2 pgoyette export SCRIPTDIR TOPDIR
151 1.1.1.1.4.2 pgoyette cd "${TOPDIR}"
152 1.1.1.1.4.2 pgoyette
153 1.1.1.1.4.2 pgoyette
154 1.1.1.1.4.2 pgoyette # Extract the version from the master compilation XML file.
155 1.1.1.1.4.2 pgoyette
156 1.1.1.1.4.2 pgoyette VERSION=`sed -e '/^<package /!d' \
157 1.1.1.1.4.2 pgoyette -e 's/^.* version="\([0-9.]*\)".*$/\1/' -e 'q' \
158 1.1.1.1.4.2 pgoyette < treebuild.xml`
159 1.1.1.1.4.2 pgoyette export VERSION
160 1.1.1.1.4.2 pgoyette
161 1.1.1.1.4.2 pgoyette ################################################################################
162 1.1.1.1.4.2 pgoyette
163 1.1.1.1.4.2 pgoyette
164 1.1.1.1.4.2 pgoyette # Create the OS/400 library if it does not exist.
165 1.1.1.1.4.2 pgoyette
166 1.1.1.1.4.2 pgoyette if action_needed "${LIBIFSNAME}"
167 1.1.1.1.4.2 pgoyette then CMD="CRTLIB LIB(${TARGETLIB}) TEXT('ZLIB: Data compression API')"
168 1.1.1.1.4.2 pgoyette system "${CMD}"
169 1.1.1.1.4.2 pgoyette fi
170 1.1.1.1.4.2 pgoyette
171 1.1.1.1.4.2 pgoyette
172 1.1.1.1.4.2 pgoyette # Create the DOCS source file if it does not exist.
173 1.1.1.1.4.2 pgoyette
174 1.1.1.1.4.2 pgoyette if action_needed "${LIBIFSNAME}/DOCS.FILE"
175 1.1.1.1.4.2 pgoyette then CMD="CRTSRCPF FILE(${TARGETLIB}/DOCS) RCDLEN(112)"
176 1.1.1.1.4.2 pgoyette CMD="${CMD} CCSID(${TGTCCSID}) TEXT('Documentation texts')"
177 1.1.1.1.4.2 pgoyette system "${CMD}"
178 1.1.1.1.4.2 pgoyette fi
179 1.1.1.1.4.2 pgoyette
180 1.1.1.1.4.2 pgoyette # Copy some documentation files if needed.
181 1.1.1.1.4.2 pgoyette
182 1.1.1.1.4.2 pgoyette for TEXT in "${TOPDIR}/ChangeLog" "${TOPDIR}/FAQ" \
183 1.1.1.1.4.2 pgoyette "${TOPDIR}/README" "${SCRIPTDIR}/README400"
184 1.1.1.1.4.2 pgoyette do MEMBER="${LIBIFSNAME}/DOCS.FILE/`db2_name \"${TEXT}\"`.MBR"
185 1.1.1.1.4.2 pgoyette
186 1.1.1.1.4.2 pgoyette if action_needed "${MEMBER}" "${TEXT}"
187 1.1.1.1.4.2 pgoyette then CMD="CPY OBJ('${TEXT}') TOOBJ('${MEMBER}') TOCCSID(${TGTCCSID})"
188 1.1.1.1.4.2 pgoyette CMD="${CMD} DTAFMT(*TEXT) REPLACE(*YES)"
189 1.1.1.1.4.2 pgoyette system "${CMD}"
190 1.1.1.1.4.2 pgoyette fi
191 1.1.1.1.4.2 pgoyette done
192 1.1.1.1.4.2 pgoyette
193 1.1.1.1.4.2 pgoyette
194 1.1.1.1.4.2 pgoyette # Create the OS/400 source program file for the C header files.
195 1.1.1.1.4.2 pgoyette
196 1.1.1.1.4.2 pgoyette SRCPF="${LIBIFSNAME}/H.FILE"
197 1.1.1.1.4.2 pgoyette
198 1.1.1.1.4.2 pgoyette if action_needed "${SRCPF}"
199 1.1.1.1.4.2 pgoyette then CMD="CRTSRCPF FILE(${TARGETLIB}/H) RCDLEN(112)"
200 1.1.1.1.4.2 pgoyette CMD="${CMD} CCSID(${TGTCCSID}) TEXT('ZLIB: C/C++ header files')"
201 1.1.1.1.4.2 pgoyette system "${CMD}"
202 1.1.1.1.4.2 pgoyette fi
203 1.1.1.1.4.2 pgoyette
204 1.1.1.1.4.2 pgoyette
205 1.1.1.1.4.2 pgoyette # Create the IFS directory for the C header files.
206 1.1.1.1.4.2 pgoyette
207 1.1.1.1.4.2 pgoyette if action_needed "${IFSDIR}/include"
208 1.1.1.1.4.2 pgoyette then mkdir -p "${IFSDIR}/include"
209 1.1.1.1.4.2 pgoyette fi
210 1.1.1.1.4.2 pgoyette
211 1.1.1.1.4.2 pgoyette # Copy the header files to DB2 library. Link from IFS include directory.
212 1.1.1.1.4.2 pgoyette
213 1.1.1.1.4.2 pgoyette for HFILE in "${TOPDIR}/"*.h
214 1.1.1.1.4.2 pgoyette do DEST="${SRCPF}/`db2_name \"${HFILE}\"`.MBR"
215 1.1.1.1.4.2 pgoyette
216 1.1.1.1.4.2 pgoyette if action_needed "${DEST}" "${HFILE}"
217 1.1.1.1.4.2 pgoyette then copy_hfile < "${HFILE}" > tmphdrfile
218 1.1.1.1.4.2 pgoyette
219 1.1.1.1.4.2 pgoyette # Need to translate to target CCSID.
220 1.1.1.1.4.2 pgoyette
221 1.1.1.1.4.2 pgoyette CMD="CPY OBJ('`pwd`/tmphdrfile') TOOBJ('${DEST}')"
222 1.1.1.1.4.2 pgoyette CMD="${CMD} TOCCSID(${TGTCCSID}) DTAFMT(*TEXT) REPLACE(*YES)"
223 1.1.1.1.4.2 pgoyette system "${CMD}"
224 1.1.1.1.4.2 pgoyette # touch -r "${HFILE}" "${DEST}"
225 1.1.1.1.4.2 pgoyette rm -f tmphdrfile
226 1.1.1.1.4.2 pgoyette fi
227 1.1.1.1.4.2 pgoyette
228 1.1.1.1.4.2 pgoyette IFSFILE="${IFSDIR}/include/`basename \"${HFILE}\"`"
229 1.1.1.1.4.2 pgoyette
230 1.1.1.1.4.2 pgoyette if action_needed "${IFSFILE}" "${DEST}"
231 1.1.1.1.4.2 pgoyette then rm -f "${IFSFILE}"
232 1.1.1.1.4.2 pgoyette ln -s "${DEST}" "${IFSFILE}"
233 1.1.1.1.4.2 pgoyette fi
234 1.1.1.1.4.2 pgoyette done
235 1.1.1.1.4.2 pgoyette
236 1.1.1.1.4.2 pgoyette
237 1.1.1.1.4.2 pgoyette # Install the ILE/RPG header file.
238 1.1.1.1.4.2 pgoyette
239 1.1.1.1.4.2 pgoyette
240 1.1.1.1.4.2 pgoyette HFILE="${SCRIPTDIR}/zlib.inc"
241 1.1.1.1.4.2 pgoyette DEST="${SRCPF}/ZLIB.INC.MBR"
242 1.1.1.1.4.2 pgoyette
243 1.1.1.1.4.2 pgoyette if action_needed "${DEST}" "${HFILE}"
244 1.1.1.1.4.2 pgoyette then CMD="CPY OBJ('${HFILE}') TOOBJ('${DEST}')"
245 1.1.1.1.4.2 pgoyette CMD="${CMD} TOCCSID(${TGTCCSID}) DTAFMT(*TEXT) REPLACE(*YES)"
246 1.1.1.1.4.2 pgoyette system "${CMD}"
247 1.1.1.1.4.2 pgoyette # touch -r "${HFILE}" "${DEST}"
248 1.1.1.1.4.2 pgoyette fi
249 1.1.1.1.4.2 pgoyette
250 1.1.1.1.4.2 pgoyette IFSFILE="${IFSDIR}/include/`basename \"${HFILE}\"`"
251 1.1.1.1.4.2 pgoyette
252 1.1.1.1.4.2 pgoyette if action_needed "${IFSFILE}" "${DEST}"
253 1.1.1.1.4.2 pgoyette then rm -f "${IFSFILE}"
254 1.1.1.1.4.2 pgoyette ln -s "${DEST}" "${IFSFILE}"
255 1.1.1.1.4.2 pgoyette fi
256 1.1.1.1.4.2 pgoyette
257 1.1.1.1.4.2 pgoyette
258 1.1.1.1.4.2 pgoyette # Create and compile the identification source file.
259 1.1.1.1.4.2 pgoyette
260 1.1.1.1.4.2 pgoyette echo '#pragma comment(user, "ZLIB version '"${VERSION}"'")' > os400.c
261 1.1.1.1.4.2 pgoyette echo '#pragma comment(user, __DATE__)' >> os400.c
262 1.1.1.1.4.2 pgoyette echo '#pragma comment(user, __TIME__)' >> os400.c
263 1.1.1.1.4.2 pgoyette echo '#pragma comment(copyright, "Copyright (C) 1995-2016 Jean-Loup Gailly, Mark Adler. OS/400 version by P. Monnerat.")' >> os400.c
264 1.1.1.1.4.2 pgoyette make_module OS400 os400.c
265 1.1.1.1.4.2 pgoyette LINK= # No need to rebuild service program yet.
266 1.1.1.1.4.2 pgoyette MODULES=
267 1.1.1.1.4.2 pgoyette
268 1.1.1.1.4.2 pgoyette
269 1.1.1.1.4.2 pgoyette # Get source list.
270 1.1.1.1.4.2 pgoyette
271 1.1.1.1.4.2 pgoyette CSOURCES=`sed -e '/<source name="/!d' \
272 1.1.1.1.4.2 pgoyette -e 's/.* name="\([^"]*\)".*/\1/' < treebuild.xml`
273 1.1.1.1.4.2 pgoyette
274 1.1.1.1.4.2 pgoyette # Compile the sources into modules.
275 1.1.1.1.4.2 pgoyette
276 1.1.1.1.4.2 pgoyette for SRC in ${CSOURCES}
277 1.1.1.1.4.2 pgoyette do MODULE=`db2_name "${SRC}"`
278 1.1.1.1.4.2 pgoyette make_module "${MODULE}" "${SRC}"
279 1.1.1.1.4.2 pgoyette done
280 1.1.1.1.4.2 pgoyette
281 1.1.1.1.4.2 pgoyette
282 1.1.1.1.4.2 pgoyette # If needed, (re)create the static binding directory.
283 1.1.1.1.4.2 pgoyette
284 1.1.1.1.4.2 pgoyette if action_needed "${LIBIFSNAME}/${STATBNDDIR}.BNDDIR"
285 1.1.1.1.4.2 pgoyette then LINK=YES
286 1.1.1.1.4.2 pgoyette fi
287 1.1.1.1.4.2 pgoyette
288 1.1.1.1.4.2 pgoyette if [ "${LINK}" ]
289 1.1.1.1.4.2 pgoyette then rm -rf "${LIBIFSNAME}/${STATBNDDIR}.BNDDIR"
290 1.1.1.1.4.2 pgoyette CMD="CRTBNDDIR BNDDIR(${TARGETLIB}/${STATBNDDIR})"
291 1.1.1.1.4.2 pgoyette CMD="${CMD} TEXT('ZLIB static binding directory')"
292 1.1.1.1.4.2 pgoyette system "${CMD}"
293 1.1.1.1.4.2 pgoyette
294 1.1.1.1.4.2 pgoyette for MODULE in ${MODULES}
295 1.1.1.1.4.2 pgoyette do CMD="ADDBNDDIRE BNDDIR(${TARGETLIB}/${STATBNDDIR})"
296 1.1.1.1.4.2 pgoyette CMD="${CMD} OBJ((${TARGETLIB}/${MODULE} *MODULE))"
297 1.1.1.1.4.2 pgoyette system "${CMD}"
298 1.1.1.1.4.2 pgoyette done
299 1.1.1.1.4.2 pgoyette fi
300 1.1.1.1.4.2 pgoyette
301 1.1.1.1.4.2 pgoyette
302 1.1.1.1.4.2 pgoyette # The exportation file for service program creation must be in a DB2
303 1.1.1.1.4.2 pgoyette # source file, so make sure it exists.
304 1.1.1.1.4.2 pgoyette
305 1.1.1.1.4.2 pgoyette if action_needed "${LIBIFSNAME}/TOOLS.FILE"
306 1.1.1.1.4.2 pgoyette then CMD="CRTSRCPF FILE(${TARGETLIB}/TOOLS) RCDLEN(112)"
307 1.1.1.1.4.2 pgoyette CMD="${CMD} CCSID(${TGTCCSID}) TEXT('ZLIB: build tools')"
308 1.1.1.1.4.2 pgoyette system "${CMD}"
309 1.1.1.1.4.2 pgoyette fi
310 1.1.1.1.4.2 pgoyette
311 1.1.1.1.4.2 pgoyette
312 1.1.1.1.4.2 pgoyette DEST="${LIBIFSNAME}/TOOLS.FILE/BNDSRC.MBR"
313 1.1.1.1.4.2 pgoyette
314 1.1.1.1.4.2 pgoyette if action_needed "${SCRIPTDIR}/bndsrc" "${DEST}"
315 1.1.1.1.4.2 pgoyette then CMD="CPY OBJ('${SCRIPTDIR}/bndsrc') TOOBJ('${DEST}')"
316 1.1.1.1.4.2 pgoyette CMD="${CMD} TOCCSID(${TGTCCSID}) DTAFMT(*TEXT) REPLACE(*YES)"
317 1.1.1.1.4.2 pgoyette system "${CMD}"
318 1.1.1.1.4.2 pgoyette # touch -r "${SCRIPTDIR}/bndsrc" "${DEST}"
319 1.1.1.1.4.2 pgoyette LINK=YES
320 1.1.1.1.4.2 pgoyette fi
321 1.1.1.1.4.2 pgoyette
322 1.1.1.1.4.2 pgoyette
323 1.1.1.1.4.2 pgoyette # Build the service program if needed.
324 1.1.1.1.4.2 pgoyette
325 1.1.1.1.4.2 pgoyette if action_needed "${LIBIFSNAME}/${SRVPGM}.SRVPGM"
326 1.1.1.1.4.2 pgoyette then LINK=YES
327 1.1.1.1.4.2 pgoyette fi
328 1.1.1.1.4.2 pgoyette
329 1.1.1.1.4.2 pgoyette if [ "${LINK}" ]
330 1.1.1.1.4.2 pgoyette then CMD="CRTSRVPGM SRVPGM(${TARGETLIB}/${SRVPGM})"
331 1.1.1.1.4.2 pgoyette CMD="${CMD} SRCFILE(${TARGETLIB}/TOOLS) SRCMBR(BNDSRC)"
332 1.1.1.1.4.2 pgoyette CMD="${CMD} MODULE(${TARGETLIB}/OS400)"
333 1.1.1.1.4.2 pgoyette CMD="${CMD} BNDDIR(${TARGETLIB}/${STATBNDDIR})"
334 1.1.1.1.4.2 pgoyette CMD="${CMD} TEXT('ZLIB ${VERSION} dynamic library')"
335 1.1.1.1.4.2 pgoyette CMD="${CMD} TGTRLS(${TGTRLS})"
336 1.1.1.1.4.2 pgoyette system "${CMD}"
337 1.1.1.1.4.2 pgoyette LINK=YES
338 1.1.1.1.4.2 pgoyette
339 1.1.1.1.4.2 pgoyette # Duplicate the service program for a versioned backup.
340 1.1.1.1.4.2 pgoyette
341 1.1.1.1.4.2 pgoyette BACKUP=`echo "${SRVPGM}${VERSION}" |
342 1.1.1.1.4.2 pgoyette sed -e 's/.*\(..........\)$/\1/' -e 's/\./_/g'`
343 1.1.1.1.4.2 pgoyette BACKUP="`db2_name \"${BACKUP}\"`"
344 1.1.1.1.4.2 pgoyette BKUPIFSNAME="${LIBIFSNAME}/${BACKUP}.SRVPGM"
345 1.1.1.1.4.2 pgoyette rm -f "${BKUPIFSNAME}"
346 1.1.1.1.4.2 pgoyette CMD="CRTDUPOBJ OBJ(${SRVPGM}) FROMLIB(${TARGETLIB})"
347 1.1.1.1.4.2 pgoyette CMD="${CMD} OBJTYPE(*SRVPGM) NEWOBJ(${BACKUP})"
348 1.1.1.1.4.2 pgoyette system "${CMD}"
349 1.1.1.1.4.2 pgoyette fi
350 1.1.1.1.4.2 pgoyette
351 1.1.1.1.4.2 pgoyette
352 1.1.1.1.4.2 pgoyette # If needed, (re)create the dynamic binding directory.
353 1.1.1.1.4.2 pgoyette
354 1.1.1.1.4.2 pgoyette if action_needed "${LIBIFSNAME}/${DYNBNDDIR}.BNDDIR"
355 1.1.1.1.4.2 pgoyette then LINK=YES
356 1.1.1.1.4.2 pgoyette fi
357 1.1.1.1.4.2 pgoyette
358 1.1.1.1.4.2 pgoyette if [ "${LINK}" ]
359 1.1.1.1.4.2 pgoyette then rm -rf "${LIBIFSNAME}/${DYNBNDDIR}.BNDDIR"
360 1.1.1.1.4.2 pgoyette CMD="CRTBNDDIR BNDDIR(${TARGETLIB}/${DYNBNDDIR})"
361 1.1.1.1.4.2 pgoyette CMD="${CMD} TEXT('ZLIB dynamic binding directory')"
362 1.1.1.1.4.2 pgoyette system "${CMD}"
363 1.1.1.1.4.2 pgoyette CMD="ADDBNDDIRE BNDDIR(${TARGETLIB}/${DYNBNDDIR})"
364 1.1.1.1.4.2 pgoyette CMD="${CMD} OBJ((*LIBL/${SRVPGM} *SRVPGM))"
365 1.1.1.1.4.2 pgoyette system "${CMD}"
366 1.1.1.1.4.2 pgoyette fi
367