1# Makefile for UnZip(SFX) and fUnZip for Borland C++ for Windows 9x/NT
2# Version: 6.0 and later
3# Alvin Koh, Jim Knoble, Christian Spieler, E-Yen Tan, Cosmin Truta, etc.
4#
5# Tested with Borland C++ 5.5 (may work with older C++Builder 3.0, too)
6#
7# Last revised: 07 Sep 2008 (Christian Spieler)
8#
9#
10
11#    Optional nonstandard preprocessor flags (as -DCHECK_EOF or -DDOS_WILD)
12#    should be added to the environment via "set LOCAL_UNZIP=-DFOO" or added
13#    to the declaration of LOC here:
14LOC = $(LOCAL_UNZIP)
15
16# Type for CPU required: 3: 80386, 4: 80486, 5: Pentium,
17#                        6: Pentium Pro, Pentium II, etc.
18!ifndef CPU_TYP
19CPU_TYP = 6
20!endif
21
22# (De)Select inclusion of optimized assembler CRC32 routine:
23!ifdef NOASM
24USE_ASMCRC=0
25!else
26!ifdef USEASM
27USE_ASMCRC=1
28!endif
29!endif
30
31# Specify USEMASM=1 or USETASM=1 in case you have one of these x86 assemblers
32# to use the assembler instead of the inline ASM C code.
33#USEMASM=1
34#USETASM=1
35# For the Turbo Assembler, you may choose between the (old) 16-bit version
36# and the 32-bit program which is faster provides more resources.
37#USETASM16=1
38
39!ifndef USE_ASMCRC
40# default to ASM CRC C code for now (BCC needs TASM32 to support inline asm)...
41USE_ASMCRC = 0
42!endif
43
44!ifndef USE_IZTIMEZONE
45#default: do not use the IZ timezone replacement
46USE_IZTIMEZONE=0
47!endif
48
49!if $(USE_IZTIMEZONE) != 0
50LOC = -DW32_USE_IZ_TIMEZONE $(LOC)
51!endif
52
53# If you have bcc32i, you should define:
54# CC = bcc32i
55# This compiler generates a faster code.
56CC = bcc32
57!ifdef USETASM16
58AS = tasm
59!else
60AS = tasm32
61!endif
62AR = tlib
63LD = ilink32
64
65!if $(USE_ASMCRC) != 0
66ASMFLG = -DASM_CRC
67CRC32 = crc_i386
68CRC32X = $(CRC32)
69CRC32F = $(CRC32)
70CRC32L = $(CRC32)
71CRC32G = $(CRC32)
72CRC32B = $(CRC32)
73!else
74ASMFLG =
75CRC32 = crc32
76CRC32X = crc32x
77CRC32F = crc32f
78CRC32L = crc32l
79CRC32G = crc32g
80CRC32B = $(OB)crc32b
81!endif
82
83!if $(USE_IZTIMEZONE) != 0
84TIMEZONE_OBJU = timezone.obj
85TIMEZONE_OBJX = timezonx.obj
86TIMEZONE_OBJD = timezonl.obj
87TIMEZONE_OBLX = timezolx.obj
88TIMEZONE_OBJB = $(OB)timezonb.obj
89!else
90TIMEZONE_OBJU =
91TIMEZONE_OBJX =
92TIMEZONE_OBJD =
93TIMEZONE_OBLX =
94TIMEZONE_OBJB =
95!endif
96
97!if $(UNCLEAN)
98DIRT = -DUSE_SMITH_CODE -DUSE_UNSHRINK
99!else
100DIRT =
101!endif
102
103!if $(DEBUG)
104CC_SIZE_OPT = -Od
105CC_SPEED_OPT = -Od
106!else
107# Smallest code
108CC_SIZE_OPT = -O1 -OS
109# Fastest code
110CC_SPEED_OPT = -O2 -OS -Oc
111!endif
112!if $(WARNINGS)
113CC_WARN = -w -w-aus -w-par -w-sig -w-use
114!else
115CC_WARN = -w-
116!endif
117
118# compiler flags
119
120ASCPUFLAG = __$(CPU_TYP)86
121!if $(CPU_TYP) != 0
122CC_CPUFLG = -$(CPU_TYP)
123!endif
124ASFLAGS = -ml -m2 -w0 -D$(ASCPUFLAG) $(LOC)
125CFLAGS = $(CC_WARN) $(CC_CPUFLG) -d -ff- -k- -P-.C -I. $(ASMFLG) $(LOC) $(DIRT)
126LDFLAGS = # -lxncd -l-P		# for bcc
127LDFLAGS_DLL = $(LDFLAGS) -tWD
128LDFLAGS_GUI = $(LDFLAGS) -tW
129UNFLAGS = $(CFLAGS) $(CC_SPEED_OPT)
130FUFLAGS = $(CFLAGS) $(CC_SPEED_OPT) -K -DFUNZIP
131SXFLAGS = $(CFLAGS) $(CC_SIZE_OPT) -DSFX
132DLFLAGS = $(CFLAGS) $(CC_SPEED_OPT) -tWD -DWINDLL -DDLL
133SLFLAGS = $(CFLAGS) $(CC_SIZE_OPT) -DWINDLL -DDLL -DUNZIPLIB -DSFX
134GXFLAGS = $(CFLAGS) $(CC_SIZE_OPT) -tW -DSFX
135LBFLAGS = $(CFLAGS) $(CC_SPEED_OPT) -DWINDLL -DDLL -DUNZIPLIB
136
137# list macros
138
139# special subdirectory for the static library binaries, to separate them
140# from other binaries (including dll import library file)
141OBDIR = ow32lib
142OB = $(OBDIR)/
143
144# object files
145OBJU1 = unzip.obj $(CRC32).obj crypt.obj envargs.obj explode.obj
146OBJU2 = extract.obj fileio.obj globals.obj inflate.obj list.obj match.obj
147OBJU3 = process.obj ttyio.obj ubz2err.obj unreduce.obj unshrink.obj zipinfo.obj
148OBJUS = win32.obj win32i64.obj nt.obj $(TIMEZONE_OBJU)
149OBJU  = $(OBJU1) $(OBJU2) $(OBJU3) $(OBJUS)
150OBJF  = funzip.obj $(CRC32F).obj cryptf.obj globalsf.obj inflatef.obj \
151	ttyiof.obj win32f.obj win32i64f.obj
152OBJX1 = unzipsfx.obj $(CRC32X).obj cryptx.obj
153OBJX2 = extractx.obj fileiox.obj globalsx.obj inflatex.obj matchx.obj
154OBJX3 = processx.obj ttyiox.obj ubz2errx.obj
155OBJXS = win32x.obj win32i64x.obj ntx.obj $(TIMEZONE_OBJX)
156OBJX  = $(OBJX1) $(OBJX2) $(OBJX3) $(OBJXS)
157OBJD1 = api.obj $(CRC32L).obj cryptl.obj explodel.obj
158OBJD2 = extractl.obj fileiol.obj globalsl.obj inflatel.obj listl.obj matchl.obj
159OBJD3 = processl.obj ubz2errl.obj unreducl.obj unshrnkl.obj zipinfol.obj
160OBJDS = win32l.obj win32i64l.obj ntl.obj windll.obj $(ASMOBJS) $(TIMEZONE_OBJD)
161OBJD  = $(OBJD1) $(OBJD2) $(OBJD3) $(OBJDS)
162OBLX1 = apig.obj $(CRC32G).obj cryptg.obj
163OBLX2 = extractg.obj fileiog.obj globalsg.obj inflateg.obj
164OBLX3 = matchg.obj processg.obj ubz2errg.obj
165OBLXS = win32g.obj win32i64g.obj ntg.obj windllg.obj $(TIMEZONE_OBLX)
166OBLX  = $(OBLX1) $(OBLX2) $(OBLX3) $(OBLXS)
167OBGX  = sfxwiz.obj
168OBJLIB = $(OB)windllb.obj $(OB)apib.obj
169OBJB1 = $(CRC32B).obj $(OB)cryptb.obj
170OBJB2 = $(OB)explodeb.obj $(OB)extractb.obj $(OB)fileiob.obj $(OB)globalsb.obj
171OBJB3 = $(OB)inflateb.obj $(OB)listb.obj $(OB)matchb.obj $(OB)processb.obj
172OBJB4 = $(OB)ubz2errb.obj $(OB)unreducb.obj $(OB)unshrnkb.obj $(OB)zipinfob.obj
173OBJBS = $(OB)win32b.obj $(OB)win32i64b.obj $(OB)ntb.obj $(TIMEZONE_OBJB)
174OBJB  = $(OBJLIB) $(OBJB1) $(OBJB2) $(OBJB3) $(OBJB4) $(OBJBS)
175
176UNZIP_H = unzip.h unzpriv.h globals.h win32/w32cfg.h
177WINDLL_H = windll/windll.h windll/structs.h windll/decs.h
178WINDLL_DEF = windll/windll32.def
179WINDLL_IMP_H = windll/decs.h windll/structs.h
180
181# implicit rules
182
183.asm.obj:
184	$(AS) $(ASFLAGS) $<
185
186.c.obj:
187	$(CC) -c $(UNFLAGS) {$< }
188
189# explicit rules
190
191# Default target is all the command line executables
192unzips: unzip.exe funzip.exe unzipsfx.exe
193dll:    unzip32.dll
194dllsample: uzexampl.exe
195guisfx: SFXWiz32.exe
196lib:    $(OBDIR) $(OB)unzip32.lib
197all:    unzips dll dllsample guisfx lib
198
199unzip.exe:      $(OBJU) winapp.res
200	$(CC) $(LDFLAGS) -e$@ @&&|
201$(OBJU)
202|
203
204funzip.exe:     $(OBJF)
205	$(CC) $(LDFLAGS) -e$@ @&&|
206$(OBJF)
207|
208
209unzipsfx.exe:   $(OBJX)
210	$(CC) $(LDFLAGS) -e$@ @&&|
211$(OBJX)
212|
213
214unzip32.dll:    $(OBJD) windll.res $(WINDLL_DEF)
215	$(LD) -Gn -x -c -aa -Tpd @&&|
216c0d32.obj $(OBJD),$@,,import32.lib cw32.lib,$(WINDLL_DEF:/=\),windll.res
217|
218#	$(CC) $(LDFLAGS_DLL) -e$@ @&&|
219#$(OBJD)
220##, windll.res
221#|
222#	brc32 windll.res $@
223
224unzsfx32.lib:   $(OBLX)
225	$(AR) /C $(@:/=\) @&&|
226/u $(OBLX:/=\)
227|
228
229SFXWiz32.exe:   $(OBGX) sfxwiz.res unzsfx32.lib
230	$(LD) -Gn -x -c -aa -Tpe @&&|
231c0w32.obj $(OBGX),$@,,unzsfx32.lib import32.lib cw32.lib,,sfxwiz.res
232|
233#	$(CC) $(LDFLAGS_GUI) -e$@ $(OBGX) unzsfx32.lib $(LDLIBS)
234#	brc32 sfxwiz.res $@
235
236uzexampl.exe:   uzexampl.obj
237	$(CC) $(LDFLAGS) -e$@ uzexampl.obj #version.lib
238
239$(OB)unzip32.lib: $(OBJB)
240	$(AR) /C $(@:/=\) @&&|
241/u $(OBJB:/=\)
242|
243
244clean:
245	rem Ignore any errors in the following...
246	-del *.obj
247	-del winapp.res
248	-del unzip.exe
249	-del funzip.exe
250	-del unzipsfx.exe
251	-del windll.res
252	-del unzip32.dll
253	-del uzexampl.exe
254	-del sfxwiz.res
255	-del unzsfx32.lib
256	-del SFXWiz32.exe
257	-del $(OB:/=\)*.obj
258	-del $(OB:/=\)unzip32.lib
259	-del *.tds
260	-del $(OB:/=\)*.tds
261
262# individual file dependencies
263
264crc32.obj:      crc32.c $(UNZIP_H) zip.h crc32.h
265crypt.obj:      crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h
266envargs.obj:    envargs.c $(UNZIP_H)
267explode.obj:    explode.c $(UNZIP_H)
268extract.obj:    extract.c $(UNZIP_H) crc32.h crypt.h
269fileio.obj:     fileio.c $(UNZIP_H) crc32.h crypt.h ttyio.h ebcdic.h
270globals.obj:    globals.c $(UNZIP_H)
271inflate.obj:    inflate.c inflate.h $(UNZIP_H)
272list.obj:       list.c $(UNZIP_H)
273match.obj:      match.c $(UNZIP_H)
274process.obj:    process.c $(UNZIP_H) crc32.h
275timezone.obj:   timezone.c $(UNZIP_H) zip.h timezone.h
276ttyio.obj:      ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h
277ubz2err.obj:    ubz2err.c $(UNZIP_H)
278unreduce.obj:   unreduce.c $(UNZIP_H)
279unshrink.obj:   unshrink.c $(UNZIP_H)
280unzip.obj:      unzip.c $(UNZIP_H) crypt.h unzvers.h consts.h
281zipinfo.obj:    zipinfo.c $(UNZIP_H)
282
283!ifdef USEMASM
284crc_i386.obj:   win32/crc_i386.asm
285	masm -ml win32/crc_i386.asm,$@;
286!else
287!ifdef USETASM
288crc_i386.obj:   win32/crc_i386.asm
289	$(AS) $(ASFLAGS) win32\crc_i386.asm, $@ ;
290!else
291crc_i386.obj:	win32/crc_i386.c
292	$(CC) -c $(UNFLAGS) -o$@ win32/crc_i386.c
293!endif
294!endif
295
296win32.obj:      win32/win32.c $(UNZIP_H) win32/nt.h
297	$(CC) -c $(UNFLAGS) win32/win32.c
298
299win32i64.obj:   win32/win32i64.c $(UNZIP_H)
300	$(CC) -c $(UNFLAGS) win32/win32i64.c
301
302nt.obj:         win32/nt.c $(UNZIP_H) win32/nt.h
303	$(CC) -c $(UNFLAGS) win32/nt.c
304
305funzip.obj:     funzip.c $(UNZIP_H) crc32.h crypt.h ttyio.h
306	$(CC) -c $(FUFLAGS) -o$@ funzip.c
307
308crc32f.obj:     crc32.c $(UNZIP_H) zip.h crc32.h
309	$(CC) -c $(FUFLAGS) -o$@ crc32.c
310
311cryptf.obj:     crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h
312	$(CC) -c $(FUFLAGS) -o$@ crypt.c
313
314globalsf.obj:   globals.c $(UNZIP_H)
315	$(CC) -c $(FUFLAGS) -o$@ globals.c
316
317inflatef.obj:   inflate.c inflate.h $(UNZIP_H) crypt.h
318	$(CC) -c $(FUFLAGS) -o$@ inflate.c
319
320ttyiof.obj:     ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h
321	$(CC) -c $(FUFLAGS) -o$@ ttyio.c
322
323win32f.obj:     win32/win32.c $(UNZIP_H) win32/nt.h
324	$(CC) -c $(FUFLAGS) -o$@ win32/win32.c
325
326win32i64f.obj:  win32/win32i64.c $(UNZIP_H)
327	$(CC) -c $(FUFLAGS) -o$@ win32/win32i64.c
328
329unzipsfx.obj:   unzip.c $(UNZIP_H) crypt.h unzvers.h consts.h
330	$(CC) -c $(SXFLAGS) -o$@ unzip.c
331
332crc32x.obj:     crc32.c $(UNZIP_H) zip.h crc32.h
333	$(CC) -c $(SXFLAGS) -o$@ crc32.c
334
335cryptx.obj:     crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h
336	$(CC) -c $(SXFLAGS) -o$@ crypt.c
337
338extractx.obj:   extract.c $(UNZIP_H) crc32.h crypt.h
339	$(CC) -c $(SXFLAGS) -o$@ extract.c
340
341fileiox.obj:    fileio.c $(UNZIP_H) crc32.h crypt.h ttyio.h ebcdic.h
342	$(CC) -c $(SXFLAGS) -o$@ fileio.c
343
344globalsx.obj:   globals.c $(UNZIP_H)
345	$(CC) -c $(SXFLAGS) -o$@ globals.c
346
347inflatex.obj:   inflate.c inflate.h $(UNZIP_H)
348	$(CC) -c $(SXFLAGS) -o$@ inflate.c
349
350matchx.obj:     match.c $(UNZIP_H)
351	$(CC) -c $(SXFLAGS) -o$@ match.c
352
353processx.obj:   process.c $(UNZIP_H) crc32.h
354	$(CC) -c $(SXFLAGS) -o$@ process.c
355
356timezonx.obj:   timezone.c $(UNZIP_H) zip.h timezone.h
357	$(CC) -c $(SXFLAGS) -o$@ timezone.c
358
359ttyiox.obj:     ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h
360	$(CC) -c $(SXFLAGS) -o$@ ttyio.c
361
362ubz2errx.obj:   ubz2err.c $(UNZIP_H)
363	$(CC) -c $(SXFLAGS) -o$@ ubz2err.c
364
365win32x.obj:     win32/win32.c $(UNZIP_H) win32/nt.h
366	$(CC) -c $(SXFLAGS) -o$@ win32/win32.c
367
368win32i64x.obj:  win32/win32i64.c $(UNZIP_H)
369	$(CC) -c $(SXFLAGS) -o$@ win32/win32i64.c
370
371ntx.obj:        win32/nt.c $(UNZIP_H) win32/nt.h
372	$(CC) -c $(SXFLAGS) -o$@ win32/nt.c
373
374uzexampl.obj:   windll/uzexampl.c windll/uzexampl.h
375	$(CC) -c $(UNFLAGS) -I./windll -o$@ windll/uzexampl.c
376
377winapp.res:	win32/winapp.rc unzvers.h
378	$(RC) /l 0x409 /fo$@ /i win32 /d WIN32 win32/winapp.rc
379
380# DLL compilation section
381api.obj:        api.c $(UNZIP_H) $(WINDLL_H) unzvers.h
382	$(CC) -c $(DLFLAGS) -o$@ api.c
383
384crc32l.obj:     crc32.c $(UNZIP_H) zip.h crc32.h
385	$(CC) -c $(DLFLAGS) -o$@ crc32.c
386
387cryptl.obj:     crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h
388	$(CC) -c $(DLFLAGS) -o$@ crypt.c
389
390explodel.obj:    explode.c $(UNZIP_H)
391	$(CC) -c $(DLFLAGS) -o$@ explode.c
392
393extractl.obj:   extract.c $(UNZIP_H) $(WINDLL_H) crc32.h crypt.h
394	$(CC) -c $(DLFLAGS) -o$@ extract.c
395
396fileiol.obj:    fileio.c $(UNZIP_H) $(WINDLL_H) crc32.h crypt.h ttyio.h ebcdic.h
397	$(CC) -c $(DLFLAGS) -o$@ fileio.c
398
399globalsl.obj:   globals.c $(UNZIP_H)
400	$(CC) -c $(DLFLAGS) -o$@ globals.c
401
402inflatel.obj:   inflate.c inflate.h $(UNZIP_H) crypt.h
403	$(CC) -c $(DLFLAGS) -o$@ inflate.c
404
405listl.obj:      list.c $(UNZIP_H) $(WINDLL_H)
406	$(CC) -c $(DLFLAGS) -o$@ list.c
407
408matchl.obj:     match.c $(UNZIP_H)
409	$(CC) -c $(DLFLAGS) -o$@ match.c
410
411processl.obj:   process.c $(UNZIP_H) $(WINDLL_H) crc32.h
412	$(CC) -c $(DLFLAGS) -o$@ process.c
413
414timezonl.obj:   timezone.c $(UNZIP_H) zip.h timezone.h
415	$(CC) -c $(DLFLAGS) -o$@ timezone.c
416
417ubz2errl.obj:   ubz2err.c $(UNZIP_H)
418	$(CC) -c $(DLFLAGS) -o$@ ubz2err.c
419
420unreducl.obj:   unreduce.c $(UNZIP_H)
421	$(CC) -c $(DLFLAGS) -o$@ unreduce.c
422
423unshrnkl.obj:   unshrink.c $(UNZIP_H)
424	$(CC) -c $(DLFLAGS) -o$@ unshrink.c
425
426zipinfol.obj:   zipinfo.c $(UNZIP_H)
427	$(CC) -c $(DLFLAGS) -o$@ zipinfo.c
428
429win32l.obj:     win32/win32.c $(UNZIP_H) win32/nt.h
430	$(CC) -c $(DLFLAGS) -o$@ win32/win32.c
431
432win32i64l.obj:  win32/win32i64.c $(UNZIP_H)
433	$(CC) -c $(DLFLAGS) -o$@ win32/win32i64.c
434
435ntl.obj:        win32/nt.c $(UNZIP_H) win32/nt.h
436	$(CC) -c $(DLFLAGS) -o$@ win32/nt.c
437
438windll.obj: windll/windll.c $(UNZIP_H) $(WINDLL_H) crypt.h unzvers.h consts.h
439	$(CC) -c $(DLFLAGS) -o$@ windll/windll.c
440
441windll.res:	windll/windll.rc unzvers.h
442	$(RC) /l 0x409 /fo$@ /i windll /d WIN32 windll/windll.rc
443
444# SFX Lib compilation section
445apig.obj:       api.c $(UNZIP_H) $(WINDLL_H) unzvers.h
446	$(CC) -c $(SLFLAGS) -o$@ api.c
447
448crc32g.obj:     crc32.c $(UNZIP_H) zip.h crc32.h
449	$(CC) -c $(SLFLAGS) -o$@ crc32.c
450
451cryptg.obj:     crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h
452	$(CC) -c $(SLFLAGS) -o$@ crypt.c
453
454explodeg.obj:    explode.c $(UNZIP_H)
455	$(CC) -c $(SLFLAGS) -o$@ explode.c
456
457extractg.obj:   extract.c $(UNZIP_H) $(WINDLL_H) crc32.h crypt.h
458	$(CC) -c $(SLFLAGS) -o$@ extract.c
459
460fileiog.obj:    fileio.c $(UNZIP_H) $(WINDLL_H) crc32.h crypt.h ttyio.h ebcdic.h
461	$(CC) -c $(SLFLAGS) -o$@ fileio.c
462
463globalsg.obj:   globals.c $(UNZIP_H)
464	$(CC) -c $(SLFLAGS) -o$@ globals.c
465
466inflateg.obj:   inflate.c inflate.h $(UNZIP_H) crypt.h
467	$(CC) -c $(SLFLAGS) -o$@ inflate.c
468
469matchg.obj:     match.c $(UNZIP_H)
470	$(CC) -c $(SLFLAGS) -o$@ match.c
471
472processg.obj:   process.c $(UNZIP_H) $(WINDLL_H) crc32.h
473	$(CC) -c $(SLFLAGS) -o$@ process.c
474
475timezong.obj:   timezone.c $(UNZIP_H) zip.h timezone.h
476	$(CC) -c $(SLFLAGS) -o$@ timezone.c
477
478ubz2errg.obj:   ubz2err.c $(UNZIP_H)
479	$(CC) -c $(SLFLAGS) -o$@ ubz2err.c
480
481win32g.obj:     win32/win32.c $(UNZIP_H) win32/nt.h
482	$(CC) -c $(SLFLAGS) -o$@ win32/win32.c
483
484win32i64g.obj:  win32/win32i64.c $(UNZIP_H)
485	$(CC) -c $(SLFLAGS) -o$@ win32/win32i64.c
486
487ntg.obj:        win32/nt.c $(UNZIP_H) win32/nt.h
488	$(CC) -c $(SLFLAGS) -o$@ win32/nt.c
489
490windllg.obj: windll/windll.c $(UNZIP_H) $(WINDLL_H) crypt.h unzvers.h consts.h
491	$(CC) -c $(SLFLAGS) -o$@ windll/windll.c
492
493sfxwiz.obj:     windll/guisfx/sfxwiz.c windll/guisfx/dialog.h $(WINDLL_IMP_H)
494	$(CC) -c $(GXFLAGS) -o$@ windll/guisfx/sfxwiz.c
495
496sfxwiz.res:     windll/guisfx/sfxwiz.rc
497	$(RC) /l 0x409 /fo$@ /i windll/guisfx /d WIN32 windll/guisfx/sfxwiz.rc
498
499# Static LIB compilation section
500$(OB)apib.obj:      api.c $(UNZIP_H) $(WINDLL_H) unzvers.h
501	$(CC) -c $(LBFLAGS) -o$@ api.c
502
503$(OB)crc32b.obj:    crc32.c $(UNZIP_H) zip.h crc32.h
504	$(CC) -c $(LBFLAGS) -o$@ crc32.c
505
506$(OB)cryptb.obj:    crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h
507	$(CC) -c $(LBFLAGS) -o$@ crypt.c
508
509$(OB)explodeb.obj:  explode.c $(UNZIP_H)
510	$(CC) -c $(LBFLAGS) -o$@ explode.c
511
512$(OB)extractb.obj:  extract.c $(UNZIP_H) $(WINDLL_H) crc32.h crypt.h
513	$(CC) -c $(LBFLAGS) -o$@ extract.c
514
515$(OB)fileiob.obj:   fileio.c $(UNZIP_H) $(WINDLL_H) crc32.h crypt.h ttyio.h ebcdic.h
516	$(CC) -c $(LBFLAGS) -o$@ fileio.c
517
518$(OB)globalsb.obj:  globals.c $(UNZIP_H)
519	$(CC) -c $(LBFLAGS) -o$@ globals.c
520
521$(OB)inflateb.obj:  inflate.c inflate.h $(UNZIP_H) crypt.h
522	$(CC) -c $(LBFLAGS) -o$@ inflate.c
523
524$(OB)listb.obj:     list.c $(UNZIP_H) $(WINDLL_H)
525	$(CC) -c $(LBFLAGS) -o$@ list.c
526
527$(OB)matchb.obj:    match.c $(UNZIP_H)
528	$(CC) -c $(LBFLAGS) -o$@ match.c
529
530$(OB)processb.obj:  process.c $(UNZIP_H) $(WINDLL_H) crc32.h
531	$(CC) -c $(LBFLAGS) -o$@ process.c
532
533$(OB)timezonb.obj:  timezone.c $(UNZIP_H) zip.h timezone.h
534	$(CC) -c $(LBFLAGS) -o$@ timezone.c
535
536$(OB)ubz2errb.obj:  ubz2err.c $(UNZIP_H)
537	$(CC) -c $(LBFLAGS) -o$@ ubz2err.c
538
539$(OB)unreducb.obj:  unreduce.c $(UNZIP_H)
540	$(CC) -c $(LBFLAGS) -o$@ unreduce.c
541
542$(OB)unshrnkb.obj:  unshrink.c $(UNZIP_H)
543	$(CC) -c $(LBFLAGS) -o$@ unshrink.c
544
545$(OB)zipinfob.obj:  zipinfo.c $(UNZIP_H)
546	$(CC) -c $(LBFLAGS) -o$@ zipinfo.c
547
548$(OB)win32b.obj:    win32/win32.c $(UNZIP_H) win32/nt.h
549	$(CC) -c $(LBFLAGS) -o$@ win32/win32.c
550
551$(OB)win32i64b.obj: win32/win32i64.c $(UNZIP_H)
552	$(CC) -c $(LBFLAGS) -o$@ win32/win32i64.c
553
554$(OB)ntb.obj:       win32/nt.c $(UNZIP_H) win32/nt.h
555	$(CC) -c $(LBFLAGS) -o$@ win32/nt.c
556
557$(OB)windllb.obj: windll/windll.c $(UNZIP_H) $(WINDLL_H) crypt.h unzvers.h consts.h
558	$(CC) -c $(LBFLAGS) -o$@ windll/windll.c
559
560$(OBDIR):
561	-mkdir $@
562