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# nmake -f win32/Makefile.msc LOC="-DASMV -DASMINF" \ 8# OBJA="inffas32.obj match686.obj" (use ASM code, x86) 9# nmake -f win32/Makefile.msc AS=ml64 LOC="-DASMV -DASMINF" \ 10# OBJA="inffasx64.obj gvmat64.obj inffas8664.c" (use ASM code, x64) 11 12# optional build flags 13LOC = 14 15# variables 16!IFDEF DEBUG 17STATICLIB = zlib_debug.lib 18SHAREDLIB = zlib1_debug.dll 19IMPLIB = zdll_debug.lib 20!ELSE 21STATICLIB = zlib.lib 22SHAREDLIB = zlib1.dll 23IMPLIB = zdll.lib 24!ENDIF 25 26CC = cl 27AS = ml 28LD = link 29AR = lib 30RC = rc 31!IFDEF DEBUG 32CFLAGS = -nologo /MDd /Od /Zi /GS /D "DEBUG" /D "_DEBUG" $(LOC) 33!ELSE 34CFLAGS = -nologo /MD /O2 /GS $(LOC) 35!ENDIF 36WFLAGS = -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE 37ASFLAGS = -coff -Zi $(LOC) 38 39!IF "$(PLATFORM)" == "x86" 40!IFDEF DEBUG 41LDFLAGS = -nologo -debug /SAFESEH /FIXED:NO /dynamicbase 42!ELSE 43LDFLAGS = -nologo -release /debug /SAFESEH /FIXED:NO /dynamicbase 44!ENDIF 45!ELSE 46!IFDEF DEBUG 47LDFLAGS = -nologo -debug /FIXED:NO /dynamicbase 48!ELSE 49LDFLAGS = -nologo -release /debug /FIXED:NO /dynamicbase 50!ENDIF 51!ENDIF 52 53ARFLAGS = -nologo 54RCFLAGS = /dWIN32 /r 55 56OBJS = adler32.obj compress.obj crc32.obj deflate.obj gzclose.obj gzlib.obj gzread.obj \ 57 gzwrite.obj infback.obj inflate.obj inftrees.obj trees.obj uncompr.obj zutil.obj \ 58 inffast.obj 59OBJA = 60 61 62# targets 63all: $(STATICLIB) $(SHAREDLIB) $(IMPLIB) \ 64 example.exe minigzip.exe example_d.exe minigzip_d.exe 65 66$(STATICLIB): $(OBJS) $(OBJA) 67 $(AR) $(ARFLAGS) -out:$@ $(OBJS) $(OBJA) 68 69$(IMPLIB): $(SHAREDLIB) 70 71$(SHAREDLIB): win32/zlib.def $(OBJS) $(OBJA) zlib1.res 72 $(LD) $(LDFLAGS) -def:win32/zlib.def -dll -implib:$(IMPLIB) \ 73 -out:$@ -base:0x5A4C0000 $(OBJS) $(OBJA) zlib1.res 74 if exist $@.manifest \ 75 mt -nologo -manifest $@.manifest -outputresource:$@;2 76 77example.exe: example.obj $(STATICLIB) 78 $(LD) $(LDFLAGS) example.obj $(STATICLIB) 79 if exist $@.manifest \ 80 mt -nologo -manifest $@.manifest -outputresource:$@;1 81 82minigzip.exe: minigzip.obj $(STATICLIB) 83 $(LD) $(LDFLAGS) minigzip.obj $(STATICLIB) 84 if exist $@.manifest \ 85 mt -nologo -manifest $@.manifest -outputresource:$@;1 86 87example_d.exe: example.obj $(IMPLIB) 88 $(LD) $(LDFLAGS) -out:$@ example.obj $(IMPLIB) 89 if exist $@.manifest \ 90 mt -nologo -manifest $@.manifest -outputresource:$@;1 91 92minigzip_d.exe: minigzip.obj $(IMPLIB) 93 $(LD) $(LDFLAGS) -out:$@ minigzip.obj $(IMPLIB) 94 if exist $@.manifest \ 95 mt -nologo -manifest $@.manifest -outputresource:$@;1 96 97.c.obj: 98 $(CC) -c $(WFLAGS) $(CFLAGS) $< 99 100{contrib/masmx64}.c.obj: 101 $(CC) -c $(WFLAGS) $(CFLAGS) $< 102 103{contrib/masmx64}.asm.obj: 104 $(AS) -c $(ASFLAGS) $< 105 106{contrib/masmx86}.asm.obj: 107 $(AS) -c $(ASFLAGS) $< 108 109adler32.obj: adler32.c zlib.h zconf.h 110 111compress.obj: compress.c zlib.h zconf.h 112 113crc32.obj: crc32.c zlib.h zconf.h crc32.h 114 115deflate.obj: deflate.c deflate.h zutil.h zlib.h zconf.h 116 117gzclose.obj: gzclose.c zlib.h zconf.h gzguts.h 118 119gzlib.obj: gzlib.c zlib.h zconf.h gzguts.h 120 121gzread.obj: gzread.c zlib.h zconf.h gzguts.h 122 123gzwrite.obj: gzwrite.c zlib.h zconf.h gzguts.h 124 125infback.obj: infback.c zutil.h zlib.h zconf.h inftrees.h inflate.h \ 126 inffast.h inffixed.h 127 128inffast.obj: inffast.c zutil.h zlib.h zconf.h inftrees.h inflate.h \ 129 inffast.h 130 131inflate.obj: inflate.c zutil.h zlib.h zconf.h inftrees.h inflate.h \ 132 inffast.h inffixed.h 133 134inftrees.obj: inftrees.c zutil.h zlib.h zconf.h inftrees.h 135 136trees.obj: trees.c zutil.h zlib.h zconf.h deflate.h trees.h 137 138uncompr.obj: uncompr.c zlib.h zconf.h 139 140zutil.obj: zutil.c zutil.h zlib.h zconf.h 141 142gvmat64.obj: contrib\masmx64\gvmat64.asm 143 144inffasx64.obj: contrib\masmx64\inffasx64.asm 145 146inffas8664.obj: contrib\masmx64\inffas8664.c zutil.h zlib.h zconf.h \ 147 inftrees.h inflate.h inffast.h 148 149inffas32.obj: contrib\masmx86\inffas32.asm 150 151match686.obj: contrib\masmx86\match686.asm 152 153example.obj: example.c zlib.h zconf.h 154 155minigzip.obj: minigzip.c zlib.h zconf.h 156 157zlib1.res: win32/zlib1.rc 158 $(RC) $(RCFLAGS) /fo$@ win32/zlib1.rc 159 160 161# testing 162test: example.exe minigzip.exe 163 example 164 echo hello world | minigzip | minigzip -d 165 166testdll: example_d.exe minigzip_d.exe 167 example_d 168 echo hello world | minigzip_d | minigzip_d -d 169 170 171# cleanup 172clean: 173 -del $(STATICLIB) 174 -del $(SHAREDLIB) 175 -del $(IMPLIB) 176 -del *.obj 177 -del *.res 178 -del *.exp 179 -del *.exe 180 -del *.pdb 181 -del *.manifest 182 -del foo.gz 183