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_AVX_CHUNKSET \ 36 -DX86_SSE2_CHUNKSET \ 37 -DUNALIGNED_OK \ 38 -DUNALIGNED64_OK \ 39 # 40LDFLAGS = -nologo -debug -incremental:no -opt:ref -manifest 41ARFLAGS = -nologo 42RCFLAGS = /dWIN32 /r 43DEFFILE = zlib.def 44RCFILE = zlib1.rc 45RESFILE = zlib1.res 46WITH_GZFILEOP = yes 47ZLIB_COMPAT = 48SUFFIX = 49 50OBJS = \ 51 adler32.obj \ 52 chunkset.obj \ 53 chunkset_avx.obj \ 54 chunkset_sse.obj \ 55 compare258.obj \ 56 compare258_avx.obj \ 57 compare258_sse.obj \ 58 compress.obj \ 59 crc32.obj \ 60 crc32_comb.obj \ 61 crc_folding.obj \ 62 deflate.obj \ 63 deflate_fast.obj \ 64 deflate_quick.obj \ 65 deflate_slow.obj \ 66 deflate_medium.obj \ 67 functable.obj \ 68 infback.obj \ 69 inflate.obj \ 70 inftrees.obj \ 71 inffast.obj \ 72 insert_string.obj \ 73 insert_string_sse.obj \ 74 slide_avx.obj \ 75 slide_sse.obj \ 76 trees.obj \ 77 uncompr.obj \ 78 zutil.obj \ 79 x86.obj \ 80 # 81!if "$(ZLIB_COMPAT)" != "" 82WITH_GZFILEOP = yes 83WFLAGS = $(WFLAGS) -DZLIB_COMPAT 84DEFFILE = zlibcompat.def 85!else 86STATICLIB = zlib-ng.lib 87SHAREDLIB = zlib-ng1.dll 88IMPLIB = zngdll.lib 89DEFFILE = zlib-ng.def 90RCFILE = zlib-ng1.rc 91RESFILE = zlib-ng1.res 92SUFFIX = -ng 93!endif 94 95!if "$(WITH_GZFILEOP)" != "" 96WFLAGS = $(WFLAGS) -DWITH_GZFILEOP 97OBJS = $(OBJS) gzlib.obj gzread.obj gzwrite.obj 98!endif 99 100# targets 101all: $(STATICLIB) $(SHAREDLIB) $(IMPLIB) \ 102 example.exe minigzip.exe example_d.exe minigzip_d.exe 103 104zconf: $(TOP)/zconf$(SUFFIX).h.in 105 $(CP) $(TOP)\zconf$(SUFFIX).h.in $(TOP)\zconf$(SUFFIX).h 106 107$(STATICLIB): zconf $(OBJS) 108 $(AR) $(ARFLAGS) -out:$@ $(OBJS) 109 110$(IMPLIB): $(SHAREDLIB) 111 112$(SHAREDLIB): zconf $(TOP)/win32/$(DEFFILE) $(OBJS) $(RESFILE) 113 $(LD) $(LDFLAGS) -def:$(TOP)/win32/$(DEFFILE) -dll -implib:$(IMPLIB) \ 114 -out:$@ -base:0x5A4C0000 $(OBJS) $(RESFILE) 115 if exist $@.manifest \ 116 mt -nologo -manifest $@.manifest -outputresource:$@;2 117 118example.exe: example.obj gzlib2.obj gzread2.obj gzwrite2.obj $(STATICLIB) 119 $(LD) $(LDFLAGS) example.obj gzlib2.obj gzread2.obj gzwrite2.obj $(STATICLIB) 120 if exist $@.manifest \ 121 mt -nologo -manifest $@.manifest -outputresource:$@;1 122 123minigzip.exe: minigzip.obj gzlib2.obj gzread2.obj gzwrite2.obj $(STATICLIB) 124 $(LD) $(LDFLAGS) minigzip.obj gzlib2.obj gzread2.obj gzwrite2.obj $(STATICLIB) 125 if exist $@.manifest \ 126 mt -nologo -manifest $@.manifest -outputresource:$@;1 127 128example_d.exe: example.obj gzlib2.obj gzread2.obj gzwrite2.obj $(IMPLIB) 129 $(LD) $(LDFLAGS) -out:$@ example.obj gzlib2.obj gzread2.obj gzwrite2.obj $(IMPLIB) 130 if exist $@.manifest \ 131 mt -nologo -manifest $@.manifest -outputresource:$@;1 132 133minigzip_d.exe: minigzip.obj gzlib2.obj gzread2.obj gzwrite2.obj $(IMPLIB) 134 $(LD) $(LDFLAGS) -out:$@ minigzip.obj gzlib2.obj gzread2.obj gzwrite2.obj $(IMPLIB) 135 if exist $@.manifest \ 136 mt -nologo -manifest $@.manifest -outputresource:$@;1 137 138{$(TOP)}.c.obj: 139 $(CC) -c $(WFLAGS) $(CFLAGS) $< 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 162gzlib.obj: $(SRCDIR)/gzlib.c $(SRCDIR)/zbuild.h $(SRCDIR)/gzguts.h $(SRCDIR)/zutil_p.h 163gzread.obj: $(SRCDIR)/gzread.c $(SRCDIR)/zbuild.h $(SRCDIR)/gzguts.h $(SRCDIR)/zutil_p.h 164gzwrite.obj: $(SRCDIR)/gzwrite.c $(SRCDIR)/zbuild.h $(SRCDIR)/gzguts.h $(SRCDIR)/zutil_p.h 165compress.obj: $(SRCDIR)/compress.c $(SRCDIR)/zbuild.h $(SRCDIR)/zlib$(SUFFIX).h 166uncompr.obj: $(SRCDIR)/uncompr.c $(SRCDIR)/zbuild.h $(SRCDIR)/zlib$(SUFFIX).h 167chunkset.obj: $(SRCDIR)/zbuild.h $(SRCDIR)/zutil.h 168chunkset_avx.obj: $(SRCDIR)/arch/x86/chunkset_avx.c $(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 171crc32_comb.obj: $(SRCDIR)/crc32_comb.c $(SRCDIR)/zbuild.h $(SRCDIR)/deflate.h $(SRCDIR)/crc32_comb_tbl.h 172deflate.obj: $(SRCDIR)/deflate.c $(SRCDIR)/zbuild.h $(SRCDIR)/deflate.h $(SRCDIR)/deflate_p.h $(SRCDIR)/functable.h 173deflate_fast.obj: $(SRCDIR)/deflate_fast.c $(SRCDIR)/zbuild.h $(SRCDIR)/deflate.h $(SRCDIR)/deflate_p.h $(SRCDIR)/functable.h 174deflate_medium.obj: $(SRCDIR)/deflate_medium.c $(SRCDIR)/zbuild.h $(SRCDIR)/deflate.h $(SRCDIR)/deflate_p.h $(SRCDIR)/functable.h 175deflate_quick.obj: $(SRCDIR)/deflate_quick.c $(SRCDIR)/zbuild.h $(SRCDIR)/deflate.h $(SRCDIR)/deflate_p.h $(SRCDIR)/functable.h $(SRCDIR)/trees_emit.h 176deflate_slow.obj: $(SRCDIR)/deflate_slow.c $(SRCDIR)/zbuild.h $(SRCDIR)/deflate.h $(SRCDIR)/deflate_p.h $(SRCDIR)/functable.h 177infback.obj: $(SRCDIR)/infback.c $(SRCDIR)/zbuild.h $(SRCDIR)/zutil.h $(SRCDIR)/inftrees.h $(SRCDIR)/inflate.h $(SRCDIR)/inffast.h 178inffast.obj: $(SRCDIR)/inffast.c $(SRCDIR)/zbuild.h $(SRCDIR)/zutil.h $(SRCDIR)/inftrees.h $(SRCDIR)/inflate.h $(SRCDIR)/inffast.h $(SRCDIR)/functable.h 179inflate.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 180inftrees.obj: $(SRCDIR)/inftrees.c $(SRCDIR)/zbuild.h $(SRCDIR)/zutil.h $(SRCDIR)/inftrees.h 181slide_sse.obj: $(SRCDIR)/arch/x86/slide_sse.c $(SRCDIR)/deflate.h 182trees.obj: $(SRCDIR)/zbuild.h $(SRCDIR)/deflate.h $(SRCDIR)/trees_tbl.h 183zutil.obj: $(SRCDIR)/zbuild.h $(SRCDIR)/zutil.h $(SRCDIR)/zutil_p.h 184 185example.obj: $(TOP)/test/example.c $(TOP)/zbuild.h $(TOP)/zlib$(SUFFIX).h 186 187minigzip.obj: $(TOP)/test/minigzip.c $(TOP)/zbuild.h $(TOP)/zlib$(SUFFIX).h 188 189$(RESFILE): $(TOP)/win32/$(RCFILE) 190 $(RC) $(RCFLAGS) /fo$@ $(TOP)/win32/$(RCFILE) 191 192# testing 193test: example.exe minigzip.exe 194 example 195 echo hello world | minigzip | minigzip -d 196 197testdll: example_d.exe minigzip_d.exe 198 example_d 199 echo hello world | minigzip_d | minigzip_d -d 200 201 202# cleanup 203clean: 204 -del $(STATICLIB) 205 -del $(SHAREDLIB) 206 -del $(IMPLIB) 207 -del *.obj 208 -del *.res 209 -del *.exp 210 -del *.exe 211 -del *.pdb 212 -del *.manifest 213 214distclean: clean 215 -del zconf$(SUFFIX).h 216