1# Makefile for Zip, ZipCloak, ZipNote and ZipSplit for
2# 32-bit Microsoft Visual C++
3
4# To use, do "nmake -f makefile.w32"
5
6# Add "NOASM=1" to the nmake command to disable usage of assembler sources
7# if you do not have masm 6.1X.
8
9# Optional nonstandard preprocessor flags (as -DMEDIUM_MEM or -DNO_ASM)
10# should be added to the environment via "set LOCAL_ZIP=-DFOO" or added
11# to the declaration of LOC here:
12LOC = $(LOCAL_ZIP)
13
14!IFNDEF debug
15NODEBUG=1
16!ENDIF
17
18# Uncomment the following macro to use the optimized assembler
19# routines in Zip:
20!IFDEF NOASM
21ASMOBJS =
22CRCA_O =
23CFLG_ASM = -DNO_ASM
24!ELSE
25ASMOBJS = match32.obj
26CRCA_O = crci386c.obj
27CFLG_ASM = -DASM_CRC
28!ENDIF
29
30!IFDEF USEBZ2
31LOC=$(LOC) -DBZIP2_SUPPORT
32!IFNDEF debug
33EXTLIB=$(EXTLIB) libbz2.lib
34!ELSE
35EXTLIB=$(EXTLIB) libbz2.lib
36!ENDIF
37!ENDIF
38
39!IFDEF USEZLIB
40LOC=$(LOC) -DUSE_ZLIB
41ASMOBJS=
42!IFNDEF debug
43EXTLIB=$(EXTLIB) zlib.lib
44!ELSE
45EXTLIB=$(EXTLIB) zlib.lib
46!ENDIF
47!ENDIF
48
49!IFDEF USEZLIB
50USE_MSVCRT=1
51!ELSE
52!IFDEF USEBZIP2
53USE_MSVCRT=1
54!ELSE
55USE_MSVCRT=0
56!ENDIF
57!ENDIF # USEZLIB
58
59!IF $(USE_MSVCRT) == 1
60CRTLIB=-MD
61!ELSE
62!IF "$(VS80COMNTOOLS)" == ""
63CRTLIB=-ML
64!ELSE
65# no single-threaded CRT static lib, only multi-threaded in VC8
66CRTLIB=-MT
67!ENDIF
68!ENDIF
69
70!IFDEF NODEBUG
71cdebug = -O2
72cdbgsz = -O1
73!ELSE
74cdebug = -Od
75cdbgsz = $(cdebug)
76!ENDIF
77
78# ------------- 32-bit Microsoft Visual C++ -------------
79CC=cl -nologo
80CFLAGS=-W3 $(cdebug) -DWIN32 $(CFLG_ASM) $(CRTLIB) $(LOC)
81UTILFLAGS=$(CFLAGS) -DUTIL -Fo$@
82
83# Remove "-coff" from ASFLAGS if you do not have MASM 6.11.
84
85AS=ml -nologo
86ASFLAGS=-c -coff -Cx
87
88RC=rc
89
90# If you build 16-bit executables with MS Visual C++ v1.0/1.5 and link them
91# with the /KNOWEAS switch, you can build dual-mode MS-DOS/Win32 executables
92# by passing the -stub switch to the 32-bit linker to specify the 16-bit part.
93
94LD=link -nologo
95LDFLAGS=user32.lib advapi32.lib /OPT:NOWIN98 /INCREMENTAL:NO /PDB:$*.pdb $(EXTLIB)
96SYMS=/DEBUG:full /DEBUGTYPE:CV
97!IFDEF debug
98LDFLAGS=$(LDFLAGS) $(SYMS)
99CFLAGS=$(CFLAGS) /Zi
100!ELSE
101LDFLAGS=$(LDFLAGS) /RELEASE
102!IFDEF sym
103LDFLAGS=$(LDFLAGS) $(SYMS)
104CFLAGS=$(CFLAGS) /Zi
105!ENDIF
106!ENDIF
107
108# variables
109OBJZ = zip.obj crypt.obj ttyio.obj zipfile.obj zipup.obj fileio.obj util.obj \
110 crc32.obj $(CRCA_O) globals.obj
111
112OBJI = deflate.obj trees.obj $(ASMOBJS) win32.obj win32zip.obj nt.obj win32i64.obj
113
114OBJU = zipfile_.obj fileio_.obj util_.obj crc32_.obj $(CRCA_O) globals.obj \
115 win32_.obj win32i64.obj
116OBJN = zipnote.obj $(OBJU)
117OBJC = zipcloak.obj crypt_.obj ttyio.obj $(OBJU)
118OBJS = zipsplit.obj $(OBJU)
119
120ZIP_H = zip.h ziperr.h tailor.h win32/osdep.h
121
122ZIPS = zip.exe zipnote.exe zipsplit.exe zipcloak.exe
123
124zips:   $(ZIPS)
125
126zip.obj:        zip.c $(ZIP_H) revision.h crc32.h crypt.h ttyio.h
127 $(CC) -c $(CFLAGS) $*.c
128
129zipfile.obj:    zipfile.c $(ZIP_H) crc32.h
130 $(CC) -c $(CFLAGS) $*.c
131
132zipup.obj:      zipup.c $(ZIP_H) revision.h crc32.h crypt.h win32/zipup.h
133 $(CC) -c $(CFLAGS) $*.c
134
135fileio.obj:     fileio.c $(ZIP_H) crc32.h
136 $(CC) -c $(CFLAGS) $*.c
137
138util.obj:       util.c $(ZIP_H)
139 $(CC) -c $(CFLAGS) $*.c
140
141globals.obj:    globals.c $(ZIP_H)
142 $(CC) -c $(CFLAGS) $*.c
143
144deflate.obj:    deflate.c $(ZIP_H)
145 $(CC) -c $(CFLAGS) $*.c
146
147trees.obj:      trees.c $(ZIP_H)
148 $(CC) -c $(CFLAGS) $*.c
149
150crc32.obj:      crc32.c $(ZIP_H) crc32.h
151 $(CC) -c $(CFLAGS) $*.c
152
153crypt.obj:      crypt.c $(ZIP_H) crypt.h crc32.h ttyio.h
154 $(CC) -c $(CFLAGS) $*.c
155
156ttyio.obj:      ttyio.c $(ZIP_H) crypt.h ttyio.h
157 $(CC) -c $(CFLAGS) $*.c
158
159win32i64.obj:   win32/win32i64.c $(ZIP_H)
160 $(CC) -c $(CFLAGS) -I. win32/win32i64.c
161
162win32zip.obj:   win32/win32zip.c $(ZIP_H) win32/win32zip.h win32/nt.h
163 $(CC) -c $(CFLAGS) -I. win32/win32zip.c
164
165win32.obj:      win32/win32.c $(ZIP_H) win32/win32zip.h
166 $(CC) -c $(CFLAGS) -I. win32/win32.c
167
168nt.obj:         win32/nt.c $(ZIP_H) win32/nt.h
169 $(CC) -c $(CFLAGS) -I. win32/nt.c
170
171zipcloak.obj:   zipcloak.c $(ZIP_H) revision.h crc32.h crypt.h ttyio.h
172 $(CC) -c $(CFLAGS) $*.c
173
174zipnote.obj:    zipnote.c $(ZIP_H) revision.h
175 $(CC) -c $(CFLAGS) $*.c
176
177zipsplit.obj:   zipsplit.c $(ZIP_H) revision.h
178 $(CC) -c $(CFLAGS) $*.c
179
180zipfile_.obj:   zipfile.c $(ZIP_H) crc32.h
181 $(CC) -c $(UTILFLAGS) zipfile.c
182
183fileio_.obj:    fileio.c $(ZIP_H) crc32.h
184 $(CC) -c $(UTILFLAGS) fileio.c
185
186util_.obj:      util.c $(ZIP_H)
187 $(CC) -c $(UTILFLAGS) util.c
188
189crc32_.obj:     crc32.c $(ZIP_H) crc32.h
190 $(CC) -c $(UTILFLAGS) crc32.c
191
192crypt_.obj:     crypt.c $(ZIP_H) crypt.h crc32.h ttyio.h
193 $(CC) -c $(UTILFLAGS) crypt.c
194
195win32_.obj:     win32/win32.c $(ZIP_H) win32/win32zip.h
196 $(CC) -c $(UTILFLAGS) -I. win32/win32.c
197
198crci386c.obj:   win32/crc_i386.c $(ZIP_H) crc32.h
199 $(CC) -c $(CFLAGS) -I. -Fo$@ win32/crc_i386.c
200
201crc_i386.obj:   win32/crc_i386.asm
202 $(AS) $(ASFLAGS) win32\crc_i386.asm
203
204match32.obj:    win32/match32.asm
205 $(AS) $(ASFLAGS) win32\match32.asm
206
207zip.res:        win32/zip.rc revision.h
208	$(RC) /l 0x409 /fo$@ /i win32 /d WIN32 win32/zip.rc
209
210zip.exe: $(OBJZ) $(OBJI) zip.res
211 $(LD) $(LDFLAGS) $(OBJZ) $(OBJI) zip.res
212
213zipcloak.exe: $(OBJC)
214 $(LD) $(LDFLAGS) $(OBJC)
215
216zipnote.exe: $(OBJN)
217 $(LD) $(LDFLAGS) $(OBJN)
218
219zipsplit.exe: $(OBJS)
220 $(LD) $(LDFLAGS) $(OBJS)
221
222clean:
223 -del *.obj
224 -del *.exe
225