1# Makefile for zlib using Microsoft (Visual) C 2# zlib is copyright (C) 1995-2006 Jean-loup Gailly and Mark Adler 3# 4# Usage: 5# nmake -f win32/Makefile.msc (standard build) 6# nmake -f win32/Makefile.msc LOC=-DFOO (nonstandard build) 7 8# The toplevel directory of the source tree. 9# 10TOP = . 11 12# optional build flags 13LOC = 14 15# variables 16STATICLIB = zlib.lib 17SHAREDLIB = zlib1.dll 18IMPLIB = zdll.lib 19 20CC = cl 21LD = link 22AR = lib 23RC = rc 24CP = copy /y 25CFLAGS = -nologo -MD -W3 -O2 -Oy- -Zi -Fd"zlib" $(LOC) 26WFLAGS = \ 27 -D_CRT_SECURE_NO_DEPRECATE \ 28 -D_CRT_NONSTDC_NO_DEPRECATE \ 29 -DX86_FEATURES \ 30 -DX86_PCLMULQDQ_CRC \ 31 -DX86_SSE2 \ 32 -DX86_SSE42_CRC_INTRIN \ 33 -DX86_SSE42_CRC_HASH \ 34 -DX86_AVX2 \ 35 -DX86_SSE2_CHUNKSET \ 36 -DUNALIGNED_OK \ 37 -DUNALIGNED64_OK \ 38 # 39LDFLAGS = -nologo -debug -incremental:no -opt:ref -manifest 40ARFLAGS = -nologo 41RCFLAGS = /dWIN32 /r 42DEFFILE = zlib.def 43RCFILE = zlib1.rc 44RESFILE = zlib1.res 45WITH_GZFILEOP = 46ZLIB_COMPAT = 47SUFFIX = 48 49OBJS = \ 50 adler32.obj \ 51 chunkset.obj \ 52 chunkset_sse.obj \ 53 compare258.obj \ 54 compare258_avx.obj \ 55 compare258_sse.obj \ 56 compress.obj \ 57 crc32.obj \ 58 crc_folding.obj \ 59 deflate.obj \ 60 deflate_fast.obj \ 61 deflate_quick.obj \ 62 deflate_slow.obj \ 63 deflate_medium.obj \ 64 functable.obj \ 65 infback.obj \ 66 inflate.obj \ 67 inftrees.obj \ 68 inffast.obj \ 69 insert_string.obj \ 70 insert_string_sse.obj \ 71 slide_avx.obj \ 72 slide_sse.obj \ 73 trees.obj \ 74 uncompr.obj \ 75 zutil.obj \ 76 x86.obj \ 77 # 78!if "$(ZLIB_COMPAT)" != "" 79WITH_GZFILEOP = yes 80WFLAGS = $(WFLAGS) -DZLIB_COMPAT 81DEFFILE = zlibcompat.def 82!else 83STATICLIB = zlib-ng.lib 84SHAREDLIB = zlib-ng1.dll 85IMPLIB = zngdll.lib 86DEFFILE = zlib-ng.def 87RCFILE = zlib-ng1.rc 88RESFILE = zlib-ng1.res 89SUFFIX = -ng 90!endif 91 92!if "$(WITH_GZFILEOP)" != "" 93WFLAGS = $(WFLAGS) -DWITH_GZFILEOP 94OBJS = $(OBJS) gzclose.obj gzlib.obj gzread.obj gzwrite.obj 95!endif 96 97# targets 98all: $(STATICLIB) $(SHAREDLIB) $(IMPLIB) \ 99 example.exe minigzip.exe example_d.exe minigzip_d.exe 100 101zconf: $(TOP)/zconf$(SUFFIX).h.in 102 $(CP) $(TOP)\zconf$(SUFFIX).h.in $(TOP)\zconf$(SUFFIX).h 103 104$(STATICLIB): zconf $(OBJS) 105 $(AR) $(ARFLAGS) -out:$@ $(OBJS) 106 107$(IMPLIB): $(SHAREDLIB) 108 109$(SHAREDLIB): zconf $(TOP)/win32/$(DEFFILE) $(OBJS) $(RESFILE) 110 $(LD) $(LDFLAGS) -def:$(TOP)/win32/$(DEFFILE) -dll -implib:$(IMPLIB) \ 111 -out:$@ -base:0x5A4C0000 $(OBJS) $(RESFILE) 112 if exist $@.manifest \ 113 mt -nologo -manifest $@.manifest -outputresource:$@;2 114 115example.exe: example.obj gzclose2.obj gzlib2.obj gzread2.obj gzwrite2.obj $(STATICLIB) 116 $(LD) $(LDFLAGS) example.obj gzclose2.obj gzlib2.obj gzread2.obj gzwrite2.obj $(STATICLIB) 117 if exist $@.manifest \ 118 mt -nologo -manifest $@.manifest -outputresource:$@;1 119 120minigzip.exe: minigzip.obj gzclose2.obj gzlib2.obj gzread2.obj gzwrite2.obj $(STATICLIB) 121 $(LD) $(LDFLAGS) minigzip.obj gzclose2.obj gzlib2.obj gzread2.obj gzwrite2.obj $(STATICLIB) 122 if exist $@.manifest \ 123 mt -nologo -manifest $@.manifest -outputresource:$@;1 124 125example_d.exe: example.obj gzclose2.obj gzlib2.obj gzread2.obj gzwrite2.obj $(IMPLIB) 126 $(LD) $(LDFLAGS) -out:$@ example.obj gzclose2.obj gzlib2.obj gzread2.obj gzwrite2.obj $(IMPLIB) 127 if exist $@.manifest \ 128 mt -nologo -manifest $@.manifest -outputresource:$@;1 129 130minigzip_d.exe: minigzip.obj gzclose2.obj gzlib2.obj gzread2.obj gzwrite2.obj $(IMPLIB) 131 $(LD) $(LDFLAGS) -out:$@ minigzip.obj gzclose2.obj gzlib2.obj gzread2.obj gzwrite2.obj $(IMPLIB) 132 if exist $@.manifest \ 133 mt -nologo -manifest $@.manifest -outputresource:$@;1 134 135{$(TOP)}.c.obj: 136 $(CC) -c $(WFLAGS) $(CFLAGS) $< 137 138gzclose2.obj: gzclose.c 139 $(CC) -c $(WFLAGS) $(CFLAGS) -DWITH_GZFILEOP -Fogzclose2.obj gzclose.c 140 141gzlib2.obj: gzlib.c 142 $(CC) -c $(WFLAGS) $(CFLAGS) -DWITH_GZFILEOP -Fogzlib2.obj gzlib.c 143 144gzread2.obj: gzread.c 145 $(CC) -c $(WFLAGS) $(CFLAGS) -DWITH_GZFILEOP -Fogzread2.obj gzread.c 146 147gzwrite2.obj: gzwrite.c 148 $(CC) -c $(WFLAGS) $(CFLAGS) -DWITH_GZFILEOP -Fogzwrite2.obj gzwrite.c 149 150{$(TOP)/arch/x86}.c.obj: 151 $(CC) -c -I$(TOP) $(WFLAGS) $(CFLAGS) $< 152 153{$(TOP)/test}.c.obj: 154 $(CC) -c -I$(TOP) $(WFLAGS) $(CFLAGS) -DWITH_GZFILEOP $< 155 156$(TOP)/zconf$(SUFFIX).h: zconf 157 158SRCDIR = $(TOP) 159# Keep the dependences in sync with top-level Makefile.in 160adler32.obj: $(SRCDIR)/adler32.c $(SRCDIR)/zbuild.h $(SRCDIR)/zutil.h $(SRCDIR)/functable.h $(SRCDIR)/adler32_p.h 161functable.obj: $(SRCDIR)/functable.c $(SRCDIR)/zbuild.h $(SRCDIR)/functable.h $(SRCDIR)/deflate.h $(SRCDIR)/deflate_p.h $(SRCDIR)/zendian.h $(SRCDIR)/arch/x86/x86.h 162gzclose.obj: $(SRCDIR)/gzclose.c $(SRCDIR)/zbuild.h $(SRCDIR)/gzguts.h 163gzlib.obj: $(SRCDIR)/gzlib.c $(SRCDIR)/zbuild.h $(SRCDIR)/gzguts.h 164gzread.obj: $(SRCDIR)/gzread.c $(SRCDIR)/zbuild.h $(SRCDIR)/gzguts.h 165gzwrite.obj: $(SRCDIR)/gzwrite.c $(SRCDIR)/zbuild.h $(SRCDIR)/gzguts.h 166compress.obj: $(SRCDIR)/compress.c $(SRCDIR)/zbuild.h $(SRCDIR)/zlib$(SUFFIX).h 167uncompr.obj: $(SRCDIR)/uncompr.c $(SRCDIR)/zbuild.h $(SRCDIR)/zlib$(SUFFIX).h 168chunkset.obj: $(SRCDIR)/zbuild.h $(SRCDIR)/zutil.h 169chunkset_sse.obj: $(SRCDIR)/arch/x86/chunkset_sse.c $(SRCDIR)/zbuild.h $(SRCDIR)/zutil.h 170crc32.obj: $(SRCDIR)/crc32.c $(SRCDIR)/zbuild.h $(SRCDIR)/zendian.h $(SRCDIR)/deflate.h $(SRCDIR)/functable.h $(SRCDIR)/crc32_tbl.h 171deflate.obj: $(SRCDIR)/deflate.c $(SRCDIR)/zbuild.h $(SRCDIR)/deflate.h $(SRCDIR)/deflate_p.h $(SRCDIR)/functable.h 172deflate_fast.obj: $(SRCDIR)/deflate_fast.c $(SRCDIR)/zbuild.h $(SRCDIR)/deflate.h $(SRCDIR)/deflate_p.h $(SRCDIR)/functable.h 173deflate_medium.obj: $(SRCDIR)/deflate_medium.c $(SRCDIR)/zbuild.h $(SRCDIR)/deflate.h $(SRCDIR)/deflate_p.h $(SRCDIR)/functable.h 174deflate_quick.obj: $(SRCDIR)/deflate_quick.c $(SRCDIR)/zbuild.h $(SRCDIR)/deflate.h $(SRCDIR)/deflate_p.h $(SRCDIR)/functable.h $(SRCDIR)/trees_emit.h 175deflate_slow.obj: $(SRCDIR)/deflate_slow.c $(SRCDIR)/zbuild.h $(SRCDIR)/deflate.h $(SRCDIR)/deflate_p.h $(SRCDIR)/functable.h 176infback.obj: $(SRCDIR)/infback.c $(SRCDIR)/zbuild.h $(SRCDIR)/zutil.h $(SRCDIR)/inftrees.h $(SRCDIR)/inflate.h $(SRCDIR)/inffast.h 177inffast.obj: $(SRCDIR)/inffast.c $(SRCDIR)/zbuild.h $(SRCDIR)/zutil.h $(SRCDIR)/inftrees.h $(SRCDIR)/inflate.h $(SRCDIR)/inffast.h $(SRCDIR)/functable.h 178inflate.obj: $(SRCDIR)/inflate.c $(SRCDIR)/zbuild.h $(SRCDIR)/zutil.h $(SRCDIR)/inftrees.h $(SRCDIR)/inflate.h $(SRCDIR)/inffast.h $(SRCDIR)/functable.h $(SRCDIR)/functable.h 179inftrees.obj: $(SRCDIR)/inftrees.c $(SRCDIR)/zbuild.h $(SRCDIR)/zutil.h $(SRCDIR)/inftrees.h 180slide_sse.obj: $(SRCDIR)/arch/x86/slide_sse.c $(SRCDIR)/deflate.h 181trees.obj: $(SRCDIR)/zbuild.h $(SRCDIR)/deflate.h $(SRCDIR)/trees_tbl.h 182zutil.obj: $(SRCDIR)/zbuild.h $(SRCDIR)/zutil.h $(SRCDIR)/gzguts.h 183 184example.obj: $(TOP)/test/example.c $(TOP)/zbuild.h $(TOP)/zlib$(SUFFIX).h 185 186minigzip.obj: $(TOP)/test/minigzip.c $(TOP)/zbuild.h $(TOP)/zlib$(SUFFIX).h 187 188$(RESFILE): $(TOP)/win32/$(RCFILE) 189 $(RC) $(RCFLAGS) /fo$@ $(TOP)/win32/$(RCFILE) 190 191# testing 192test: example.exe minigzip.exe 193 example 194 echo hello world | minigzip | minigzip -d 195 196testdll: example_d.exe minigzip_d.exe 197 example_d 198 echo hello world | minigzip_d | minigzip_d -d 199 200 201# cleanup 202clean: 203 -del $(STATICLIB) 204 -del $(SHAREDLIB) 205 -del $(IMPLIB) 206 -del *.obj 207 -del *.res 208 -del *.exp 209 -del *.exe 210 -del *.pdb 211 -del *.manifest 212 213distclean: clean 214 -del zconf$(SUFFIX).h 215