cannam@89: # Makefile for zlib using Microsoft (Visual) C cannam@89: # zlib is copyright (C) 1995-2006 Jean-loup Gailly and Mark Adler cannam@89: # cannam@89: # Usage: cannam@89: # nmake -f win32/Makefile.msc (standard build) cannam@89: # nmake -f win32/Makefile.msc LOC=-DFOO (nonstandard build) cannam@89: # nmake -f win32/Makefile.msc LOC="-DASMV -DASMINF" \ cannam@89: # OBJA="inffas32.obj match686.obj" (use ASM code, x86) cannam@89: # nmake -f win32/Makefile.msc AS=ml64 LOC="-DASMV -DASMINF -I." \ cannam@89: # OBJA="inffasx64.obj gvmat64.obj inffas8664.obj" (use ASM code, x64) cannam@89: cannam@89: # optional build flags cannam@89: LOC = cannam@89: cannam@89: # variables cannam@89: STATICLIB = zlib.lib cannam@89: SHAREDLIB = zlib1.dll cannam@89: IMPLIB = zdll.lib cannam@89: cannam@89: CC = cl cannam@89: AS = ml cannam@89: LD = link cannam@89: AR = lib cannam@89: RC = rc cannam@89: CFLAGS = -nologo -MD -W3 -O2 -Oy- -Zi -Fd"zlib" $(LOC) cannam@89: WFLAGS = -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE cannam@89: ASFLAGS = -coff -Zi $(LOC) cannam@89: LDFLAGS = -nologo -debug -incremental:no -opt:ref cannam@89: ARFLAGS = -nologo cannam@89: RCFLAGS = /dWIN32 /r cannam@89: cannam@89: OBJS = adler32.obj compress.obj crc32.obj deflate.obj gzclose.obj gzlib.obj gzread.obj \ cannam@89: gzwrite.obj infback.obj inflate.obj inftrees.obj inffast.obj trees.obj uncompr.obj zutil.obj cannam@89: OBJA = cannam@89: cannam@89: cannam@89: # targets cannam@89: all: $(STATICLIB) $(SHAREDLIB) $(IMPLIB) \ cannam@89: example.exe minigzip.exe example_d.exe minigzip_d.exe cannam@89: cannam@89: $(STATICLIB): $(OBJS) $(OBJA) cannam@89: $(AR) $(ARFLAGS) -out:$@ $(OBJS) $(OBJA) cannam@89: cannam@89: $(IMPLIB): $(SHAREDLIB) cannam@89: cannam@89: $(SHAREDLIB): win32/zlib.def $(OBJS) $(OBJA) zlib1.res cannam@89: $(LD) $(LDFLAGS) -def:win32/zlib.def -dll -implib:$(IMPLIB) \ cannam@89: -out:$@ -base:0x5A4C0000 $(OBJS) $(OBJA) zlib1.res cannam@89: if exist $@.manifest \ cannam@89: mt -nologo -manifest $@.manifest -outputresource:$@;2 cannam@89: cannam@89: example.exe: example.obj $(STATICLIB) cannam@89: $(LD) $(LDFLAGS) example.obj $(STATICLIB) cannam@89: if exist $@.manifest \ cannam@89: mt -nologo -manifest $@.manifest -outputresource:$@;1 cannam@89: cannam@89: minigzip.exe: minigzip.obj $(STATICLIB) cannam@89: $(LD) $(LDFLAGS) minigzip.obj $(STATICLIB) cannam@89: if exist $@.manifest \ cannam@89: mt -nologo -manifest $@.manifest -outputresource:$@;1 cannam@89: cannam@89: example_d.exe: example.obj $(IMPLIB) cannam@89: $(LD) $(LDFLAGS) -out:$@ example.obj $(IMPLIB) cannam@89: if exist $@.manifest \ cannam@89: mt -nologo -manifest $@.manifest -outputresource:$@;1 cannam@89: cannam@89: minigzip_d.exe: minigzip.obj $(IMPLIB) cannam@89: $(LD) $(LDFLAGS) -out:$@ minigzip.obj $(IMPLIB) cannam@89: if exist $@.manifest \ cannam@89: mt -nologo -manifest $@.manifest -outputresource:$@;1 cannam@89: cannam@89: .c.obj: cannam@89: $(CC) -c $(WFLAGS) $(CFLAGS) $< cannam@89: cannam@89: {test}.c.obj: cannam@89: $(CC) -c -I. $(WFLAGS) $(CFLAGS) $< cannam@89: cannam@89: {contrib/masmx64}.c.obj: cannam@89: $(CC) -c $(WFLAGS) $(CFLAGS) $< cannam@89: cannam@89: {contrib/masmx64}.asm.obj: cannam@89: $(AS) -c $(ASFLAGS) $< cannam@89: cannam@89: {contrib/masmx86}.asm.obj: cannam@89: $(AS) -c $(ASFLAGS) $< cannam@89: cannam@89: adler32.obj: adler32.c zlib.h zconf.h cannam@89: cannam@89: compress.obj: compress.c zlib.h zconf.h cannam@89: cannam@89: crc32.obj: crc32.c zlib.h zconf.h crc32.h cannam@89: cannam@89: deflate.obj: deflate.c deflate.h zutil.h zlib.h zconf.h cannam@89: cannam@89: gzclose.obj: gzclose.c zlib.h zconf.h gzguts.h cannam@89: cannam@89: gzlib.obj: gzlib.c zlib.h zconf.h gzguts.h cannam@89: cannam@89: gzread.obj: gzread.c zlib.h zconf.h gzguts.h cannam@89: cannam@89: gzwrite.obj: gzwrite.c zlib.h zconf.h gzguts.h cannam@89: cannam@89: infback.obj: infback.c zutil.h zlib.h zconf.h inftrees.h inflate.h \ cannam@89: inffast.h inffixed.h cannam@89: cannam@89: inffast.obj: inffast.c zutil.h zlib.h zconf.h inftrees.h inflate.h \ cannam@89: inffast.h cannam@89: cannam@89: inflate.obj: inflate.c zutil.h zlib.h zconf.h inftrees.h inflate.h \ cannam@89: inffast.h inffixed.h cannam@89: cannam@89: inftrees.obj: inftrees.c zutil.h zlib.h zconf.h inftrees.h cannam@89: cannam@89: trees.obj: trees.c zutil.h zlib.h zconf.h deflate.h trees.h cannam@89: cannam@89: uncompr.obj: uncompr.c zlib.h zconf.h cannam@89: cannam@89: zutil.obj: zutil.c zutil.h zlib.h zconf.h cannam@89: cannam@89: gvmat64.obj: contrib\masmx64\gvmat64.asm cannam@89: cannam@89: inffasx64.obj: contrib\masmx64\inffasx64.asm cannam@89: cannam@89: inffas8664.obj: contrib\masmx64\inffas8664.c zutil.h zlib.h zconf.h \ cannam@89: inftrees.h inflate.h inffast.h cannam@89: cannam@89: inffas32.obj: contrib\masmx86\inffas32.asm cannam@89: cannam@89: match686.obj: contrib\masmx86\match686.asm cannam@89: cannam@89: example.obj: test/example.c zlib.h zconf.h cannam@89: cannam@89: minigzip.obj: test/minigzip.c zlib.h zconf.h cannam@89: cannam@89: zlib1.res: win32/zlib1.rc cannam@89: $(RC) $(RCFLAGS) /fo$@ win32/zlib1.rc cannam@89: cannam@89: cannam@89: # testing cannam@89: test: example.exe minigzip.exe cannam@89: example cannam@89: echo hello world | minigzip | minigzip -d cannam@89: cannam@89: testdll: example_d.exe minigzip_d.exe cannam@89: example_d cannam@89: echo hello world | minigzip_d | minigzip_d -d cannam@89: cannam@89: cannam@89: # cleanup cannam@89: clean: cannam@89: -del $(STATICLIB) cannam@89: -del $(SHAREDLIB) cannam@89: -del $(IMPLIB) cannam@89: -del *.obj cannam@89: -del *.res cannam@89: -del *.exp cannam@89: -del *.exe cannam@89: -del *.pdb cannam@89: -del *.manifest cannam@89: -del foo.gz