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.arm (standard build) 6# nmake -f win32/Makefile.arm 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 -DUNALIGNED_OK \ 30 -D_ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE=1 \ 31 -DARM_FEATURES \ 32 # 33LDFLAGS = -nologo -debug -incremental:no -opt:ref -manifest 34ARFLAGS = -nologo 35RCFLAGS = /dARM /r 36DEFFILE = zlib.def 37RCFILE = zlib1.rc 38RESFILE = zlib1.res 39WITH_GZFILEOP = yes 40ZLIB_COMPAT = 41WITH_ACLE = 42WITH_NEON = 43WITH_VFPV3 = 44NEON_ARCH = /arch:VFPv4 45SUFFIX = 46 47OBJS = \ 48 adler32.obj \ 49 armfeature.obj \ 50 chunkset.obj \ 51 compare258.obj \ 52 compress.obj \ 53 crc32.obj \ 54 crc32_comb.obj \ 55 deflate.obj \ 56 deflate_fast.obj \ 57 deflate_slow.obj \ 58 deflate_quick.obj \ 59 deflate_medium.obj \ 60 functable.obj \ 61 infback.obj \ 62 inflate.obj \ 63 inftrees.obj \ 64 inffast.obj \ 65 insert_string.obj \ 66 trees.obj \ 67 uncompr.obj \ 68 zutil.obj \ 69 # 70!if "$(ZLIB_COMPAT)" != "" 71WITH_GZFILEOP = yes 72WFLAGS = $(WFLAGS) -DZLIB_COMPAT 73DEFFILE = zlibcompat.def 74!else 75STATICLIB = zlib-ng.lib 76SHAREDLIB = zlib-ng1.dll 77IMPLIB = zngdll.lib 78DEFFILE = zlib-ng.def 79RCFILE = zlib-ng1.rc 80RESFILE = zlib-ng1.res 81SUFFIX = -ng 82!endif 83 84!if "$(WITH_GZFILEOP)" != "" 85WFLAGS = $(WFLAGS) -DWITH_GZFILEOP 86OBJS = $(OBJS) gzlib.obj gzread.obj gzwrite.obj 87!endif 88 89!if "$(WITH_ACLE)" != "" 90WFLAGS = $(WFLAGS) -DARM_ACLE_CRC_HASH 91OBJS = $(OBJS) crc32_acle.obj insert_string_acle.obj 92!endif 93!if "$(WITH_VFPV3)" != "" 94NEON_ARCH = /arch:VFPv3 95!endif 96!if "$(WITH_NEON)" != "" 97CFLAGS = $(CFLAGS) $(NEON_ARCH) 98WFLAGS = $(WFLAGS) \ 99 -D__ARM_NEON__=1 \ 100 -DARM_NEON_ADLER32 \ 101 -DARM_NEON_CHUNKSET \ 102 -DARM_NEON_SLIDEHASH \ 103 -DARM_NOCHECK_NEON \ 104 # 105OBJS = $(OBJS) adler32_neon.obj chunkset_neon.obj slide_neon.obj 106!endif 107 108# targets 109all: $(STATICLIB) $(SHAREDLIB) $(IMPLIB) \ 110 example.exe minigzip.exe example_d.exe minigzip_d.exe 111 112zconf: $(TOP)/zconf$(SUFFIX).h.in 113 $(CP) $(TOP)\zconf$(SUFFIX).h.in $(TOP)\zconf$(SUFFIX).h 114 115$(STATICLIB): zconf $(OBJS) 116 $(AR) $(ARFLAGS) -out:$@ $(OBJS) 117 118$(IMPLIB): $(SHAREDLIB) 119 120$(SHAREDLIB): zconf $(TOP)/win32/$(DEFFILE) $(OBJS) $(RESFILE) 121 $(LD) $(LDFLAGS) -def:$(TOP)/win32/$(DEFFILE) -dll -implib:$(IMPLIB) \ 122 -out:$@ -base:0x5A4C0000 $(OBJS) $(RESFILE) 123 if exist $@.manifest \ 124 mt -nologo -manifest $@.manifest -outputresource:$@;2 125 126example.exe: example.obj gzlib2.obj gzread2.obj gzwrite2.obj $(STATICLIB) 127 $(LD) $(LDFLAGS) example.obj gzlib2.obj gzread2.obj gzwrite2.obj $(STATICLIB) 128 if exist $@.manifest \ 129 mt -nologo -manifest $@.manifest -outputresource:$@;1 130 131minigzip.exe: minigzip.obj gzlib2.obj gzread2.obj gzwrite2.obj $(STATICLIB) 132 $(LD) $(LDFLAGS) minigzip.obj gzlib2.obj gzread2.obj gzwrite2.obj $(STATICLIB) 133 if exist $@.manifest \ 134 mt -nologo -manifest $@.manifest -outputresource:$@;1 135 136example_d.exe: example.obj gzlib2.obj gzread2.obj gzwrite2.obj $(IMPLIB) 137 $(LD) $(LDFLAGS) -out:$@ example.obj gzlib2.obj gzread2.obj gzwrite2.obj $(IMPLIB) 138 if exist $@.manifest \ 139 mt -nologo -manifest $@.manifest -outputresource:$@;1 140 141minigzip_d.exe: minigzip.obj gzlib2.obj gzread2.obj gzwrite2.obj $(IMPLIB) 142 $(LD) $(LDFLAGS) -out:$@ minigzip.obj gzlib2.obj gzread2.obj gzwrite2.obj $(IMPLIB) 143 if exist $@.manifest \ 144 mt -nologo -manifest $@.manifest -outputresource:$@;1 145 146{$(TOP)}.c.obj: 147 $(CC) -c $(WFLAGS) $(CFLAGS) $< 148 149gzlib2.obj: gzlib.c 150 $(CC) -c $(WFLAGS) $(CFLAGS) -DWITH_GZFILEOP -Fogzlib2.obj gzlib.c 151 152gzread2.obj: gzread.c 153 $(CC) -c $(WFLAGS) $(CFLAGS) -DWITH_GZFILEOP -Fogzread2.obj gzread.c 154 155gzwrite2.obj: gzwrite.c 156 $(CC) -c $(WFLAGS) $(CFLAGS) -DWITH_GZFILEOP -Fogzwrite2.obj gzwrite.c 157 158{$(TOP)/arch/arm}.c.obj: 159 $(CC) -c -I$(TOP) $(WFLAGS) $(CFLAGS) $< 160 161{$(TOP)/test}.c.obj: 162 $(CC) -c -I$(TOP) $(WFLAGS) $(CFLAGS) -DWITH_GZFILEOP $< 163 164$(TOP)/zconf$(SUFFIX).h: zconf 165 166SRCDIR = $(TOP) 167# Keep the dependences in sync with top-level Makefile.in 168adler32.obj: $(SRCDIR)/adler32.c $(SRCDIR)/zbuild.h $(SRCDIR)/zutil.h $(SRCDIR)/functable.h $(SRCDIR)/adler32_p.h 169functable.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 170gzlib.obj: $(SRCDIR)/gzlib.c $(SRCDIR)/zbuild.h $(SRCDIR)/gzguts.h $(SRCDIR)/zutil_p.h 171gzread.obj: $(SRCDIR)/gzread.c $(SRCDIR)/zbuild.h $(SRCDIR)/gzguts.h $(SRCDIR)/zutil_p.h 172gzwrite.obj: $(SRCDIR)/gzwrite.c $(SRCDIR)/zbuild.h $(SRCDIR)/gzguts.h $(SRCDIR)/zutil_p.h 173compress.obj: $(SRCDIR)/compress.c $(SRCDIR)/zbuild.h $(SRCDIR)/zlib$(SUFFIX).h 174uncompr.obj: $(SRCDIR)/uncompr.c $(SRCDIR)/zbuild.h $(SRCDIR)/zlib$(SUFFIX).h 175chunkset.obj: $(SRCDIR)/zbuild.h $(SRCDIR)/zutil.h 176crc32.obj: $(SRCDIR)/crc32.c $(SRCDIR)/zbuild.h $(SRCDIR)/zendian.h $(SRCDIR)/deflate.h $(SRCDIR)/functable.h $(SRCDIR)/crc32_tbl.h 177crc32_comb.obj: $(SRCDIR)/crc32_comb.c $(SRCDIR)/zbuild.h $(SRCDIR)/deflate.h $(SRCDIR)/crc32_comb_tbl.h 178deflate.obj: $(SRCDIR)/deflate.c $(SRCDIR)/zbuild.h $(SRCDIR)/deflate.h $(SRCDIR)/deflate_p.h $(SRCDIR)/functable.h 179deflate_fast.obj: $(SRCDIR)/deflate_fast.c $(SRCDIR)/zbuild.h $(SRCDIR)/deflate.h $(SRCDIR)/deflate_p.h $(SRCDIR)/functable.h 180deflate_medium.obj: $(SRCDIR)/deflate_medium.c $(SRCDIR)/zbuild.h $(SRCDIR)/deflate.h $(SRCDIR)/deflate_p.h $(SRCDIR)/functable.h 181deflate_quick.obj: $(SRCDIR)/deflate_quick.c $(SRCDIR)/zbuild.h $(SRCDIR)/deflate.h $(SRCDIR)/deflate_p.h $(SRCDIR)/functable.h $(SRCDIR)/trees_emit.h 182deflate_slow.obj: $(SRCDIR)/deflate_slow.c $(SRCDIR)/zbuild.h $(SRCDIR)/deflate.h $(SRCDIR)/deflate_p.h $(SRCDIR)/functable.h 183infback.obj: $(SRCDIR)/infback.c $(SRCDIR)/zbuild.h $(SRCDIR)/zutil.h $(SRCDIR)/inftrees.h $(SRCDIR)/inflate.h $(SRCDIR)/inffast.h 184inffast.obj: $(SRCDIR)/inffast.c $(SRCDIR)/zbuild.h $(SRCDIR)/zutil.h $(SRCDIR)/inftrees.h $(SRCDIR)/inflate.h $(SRCDIR)/inffast.h $(SRCDIR)/functable.h 185inflate.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 186inftrees.obj: $(SRCDIR)/inftrees.c $(SRCDIR)/zbuild.h $(SRCDIR)/zutil.h $(SRCDIR)/inftrees.h 187trees.obj: $(SRCDIR)/zbuild.h $(SRCDIR)/deflate.h $(SRCDIR)/trees_tbl.h 188zutil.obj: $(SRCDIR)/zbuild.h $(SRCDIR)/zutil.h $(SRCDIR)/zutil_p.h 189 190example.obj: $(TOP)/test/example.c $(TOP)/zbuild.h $(TOP)/zlib$(SUFFIX).h 191 192minigzip.obj: $(TOP)/test/minigzip.c $(TOP)/zbuild.h $(TOP)/zlib$(SUFFIX).h 193 194$(RESFILE): $(TOP)/win32/$(RCFILE) 195 $(RC) $(RCFLAGS) /fo$@ $(TOP)/win32/$(RCFILE) 196 197# testing 198test: example.exe minigzip.exe 199 example 200 echo hello world | minigzip | minigzip -d 201 202testdll: example_d.exe minigzip_d.exe 203 example_d 204 echo hello world | minigzip_d | minigzip_d -d 205 206 207# cleanup 208clean: 209 -del $(STATICLIB) 210 -del $(SHAREDLIB) 211 -del $(IMPLIB) 212 -del *.obj 213 -del *.res 214 -del *.exp 215 -del *.exe 216 -del *.pdb 217 -del *.manifest 218 219distclean: clean 220 -del zconf$(SUFFIX).h 221