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 19SYMBOL_PREFIX = 20 21CC = cl 22LD = link 23AR = lib 24RC = rc 25CP = copy /y 26CFLAGS = -nologo -MD -W3 -O2 -Oy- -Zi -Fd"zlib" $(LOC) 27WFLAGS = \ 28 -D_ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE=1 \ 29 -D_CRT_SECURE_NO_DEPRECATE \ 30 -D_CRT_NONSTDC_NO_DEPRECATE \ 31 -DARM_FEATURES \ 32 -DARM_NEON_HASLD4 \ 33 # 34LDFLAGS = -nologo -debug -incremental:no -opt:ref -manifest 35ARFLAGS = -nologo 36RCFLAGS = /dARM /r 37DEFFILE = zlib.def 38RCFILE = zlib1.rc 39RESFILE = zlib1.res 40WITH_GZFILEOP = yes 41ZLIB_COMPAT = 42WITH_ACLE = 43WITH_NEON = 44WITH_VFPV3 = 45NEON_ARCH = /arch:VFPv4 46SUFFIX = 47 48OBJS = \ 49 adler32.obj \ 50 adler32_fold.obj \ 51 arm_features.obj \ 52 chunkset.obj \ 53 compare256.obj \ 54 compress.obj \ 55 cpu_features.obj \ 56 crc32_braid.obj \ 57 crc32_braid_comb.obj \ 58 crc32_fold.obj \ 59 deflate.obj \ 60 deflate_fast.obj \ 61 deflate_huff.obj \ 62 deflate_medium.obj \ 63 deflate_quick.obj \ 64 deflate_rle.obj \ 65 deflate_slow.obj \ 66 deflate_stored.obj \ 67 functable.obj \ 68 infback.obj \ 69 inflate.obj \ 70 inftrees.obj \ 71 inffast.obj \ 72 insert_string.obj \ 73 insert_string_roll.obj \ 74 slide_hash.obj \ 75 trees.obj \ 76 uncompr.obj \ 77 zutil.obj \ 78 # 79!if "$(ZLIB_COMPAT)" != "" 80WITH_GZFILEOP = yes 81WFLAGS = $(WFLAGS) -DZLIB_COMPAT 82DEFFILE = zlibcompat.def 83!else 84STATICLIB = zlib-ng.lib 85SHAREDLIB = zlib-ng1.dll 86IMPLIB = zngdll.lib 87DEFFILE = zlib-ng.def 88RCFILE = zlib-ng1.rc 89RESFILE = zlib-ng1.res 90SUFFIX = -ng 91!endif 92 93!if "$(WITH_GZFILEOP)" != "" 94WFLAGS = $(WFLAGS) -DWITH_GZFILEOP 95OBJS = $(OBJS) gzlib.obj gzread.obj gzwrite.obj 96!endif 97 98!if "$(WITH_ACLE)" != "" 99WFLAGS = $(WFLAGS) -DARM_ACLE_CRC_HASH 100OBJS = $(OBJS) crc32_acle.obj insert_string_acle.obj 101!endif 102!if "$(WITH_VFPV3)" != "" 103NEON_ARCH = /arch:VFPv3 104!endif 105!if "$(WITH_NEON)" != "" 106CFLAGS = $(CFLAGS) $(NEON_ARCH) 107WFLAGS = $(WFLAGS) \ 108 -D__ARM_NEON__=1 \ 109 -DARM_NEON \ 110 -DARM_NEON_ADLER32 \ 111 -DARM_NEON_CHUNKSET \ 112 -DARM_NEON_SLIDEHASH \ 113 -DARM_NOCHECK_NEON \ 114 # 115OBJS = $(OBJS) adler32_neon.obj chunkset_neon.obj compare256_neon.obj slide_hash_neon.obj 116!endif 117 118# targets 119all: $(STATICLIB) $(SHAREDLIB) $(IMPLIB) \ 120 example.exe minigzip.exe example_d.exe minigzip_d.exe 121 122!if "$(SYMBOL_PREFIX)" != "" 123zlib_name_mangling$(SUFFIX).h: zlib_name_mangling$(SUFFIX).h.in 124 cscript $(TOP)\win32\replace.vbs $(TOP)\zlib_name_mangling$(SUFFIX).h.in zlib_name_mangling$(SUFFIX).h "@ZLIB_SYMBOL_PREFIX@" "$(SYMBOL_PREFIX)" 125!else 126zlib_name_mangling$(SUFFIX).h: zlib_name_mangling.h.empty 127 $(CP) $(TOP)\zlib_name_mangling.h.empty zlib_name_mangling$(SUFFIX).h 128!endif 129 130zlib$(SUFFIX).h: zlib$(SUFFIX).h.in 131 cscript $(TOP)\win32\replace.vbs $(TOP)\zlib$(SUFFIX).h.in zlib$(SUFFIX).h "@ZLIB_SYMBOL_PREFIX@" "$(SYMBOL_PREFIX)" 132 133gzread.c: gzread.c.in 134 cscript $(TOP)\win32\replace.vbs $(TOP)\gzread.c.in gzread.c "@ZLIB_SYMBOL_PREFIX@" "$(SYMBOL_PREFIX)" 135 136zconf: $(TOP)/zconf$(SUFFIX).h.in $(TOP)/zlib$(SUFFIX).h $(TOP)/zlib_name_mangling$(SUFFIX).h 137 $(CP) $(TOP)\zconf$(SUFFIX).h.in $(TOP)\zconf$(SUFFIX).h 138 139$(TOP)/win32/$(DEFFILE): $(TOP)/win32/$(DEFFILE).in 140 cscript $(TOP)\win32\replace.vbs $(TOP)/win32/$(DEFFILE).in $(TOP)/win32/$(DEFFILE) "@ZLIB_SYMBOL_PREFIX@" "$(SYMBOL_PREFIX)" 141 142$(STATICLIB): zconf $(OBJS) 143 $(AR) $(ARFLAGS) -out:$@ $(OBJS) 144 145$(IMPLIB): $(SHAREDLIB) 146 147$(SHAREDLIB): zconf $(TOP)/win32/$(DEFFILE) $(OBJS) $(RESFILE) 148 $(LD) $(LDFLAGS) -def:$(TOP)/win32/$(DEFFILE) -dll -implib:$(IMPLIB) \ 149 -out:$@ -base:0x5A4C0000 $(OBJS) $(RESFILE) 150 if exist $@.manifest \ 151 mt -nologo -manifest $@.manifest -outputresource:$@;2 152 153example.exe: example.obj gzlib2.obj gzread2.obj gzwrite2.obj $(STATICLIB) 154 $(LD) $(LDFLAGS) example.obj gzlib2.obj gzread2.obj gzwrite2.obj $(STATICLIB) 155 if exist $@.manifest \ 156 mt -nologo -manifest $@.manifest -outputresource:$@;1 157 158minigzip.exe: minigzip.obj gzlib2.obj gzread2.obj gzwrite2.obj $(STATICLIB) 159 $(LD) $(LDFLAGS) minigzip.obj gzlib2.obj gzread2.obj gzwrite2.obj $(STATICLIB) 160 if exist $@.manifest \ 161 mt -nologo -manifest $@.manifest -outputresource:$@;1 162 163example_d.exe: example.obj gzlib2.obj gzread2.obj gzwrite2.obj $(IMPLIB) 164 $(LD) $(LDFLAGS) -out:$@ example.obj gzlib2.obj gzread2.obj gzwrite2.obj $(IMPLIB) 165 if exist $@.manifest \ 166 mt -nologo -manifest $@.manifest -outputresource:$@;1 167 168minigzip_d.exe: minigzip.obj gzlib2.obj gzread2.obj gzwrite2.obj $(IMPLIB) 169 $(LD) $(LDFLAGS) -out:$@ minigzip.obj gzlib2.obj gzread2.obj gzwrite2.obj $(IMPLIB) 170 if exist $@.manifest \ 171 mt -nologo -manifest $@.manifest -outputresource:$@;1 172 173{$(TOP)}.c.obj: 174 $(CC) -c $(WFLAGS) $(CFLAGS) $< 175 176gzlib2.obj: gzlib.c 177 $(CC) -c $(WFLAGS) $(CFLAGS) -DWITH_GZFILEOP -Fogzlib2.obj gzlib.c 178 179gzread2.obj: gzread.c 180 $(CC) -c $(WFLAGS) $(CFLAGS) -DWITH_GZFILEOP -Fogzread2.obj gzread.c 181 182gzwrite2.obj: gzwrite.c 183 $(CC) -c $(WFLAGS) $(CFLAGS) -DWITH_GZFILEOP -Fogzwrite2.obj gzwrite.c 184 185{$(TOP)/arch/arm}.c.obj: 186 $(CC) -c -I$(TOP) $(WFLAGS) $(CFLAGS) $< 187 188{$(TOP)/test}.c.obj: 189 $(CC) -c -I$(TOP) $(WFLAGS) $(CFLAGS) -DWITH_GZFILEOP $< 190 191$(TOP)/zconf$(SUFFIX).h: zconf 192 193SRCDIR = $(TOP) 194# Keep the dependences in sync with top-level Makefile.in 195adler32.obj: $(SRCDIR)/adler32.c $(SRCDIR)/zbuild.h $(SRCDIR)/zutil.h $(SRCDIR)/functable.h $(SRCDIR)/adler32_p.h 196adler32_fold.obj: $(SRCDIR)/adler32_fold.c $(SRCDIR)/zbuild.h $(SRCDIR)/adler32_fold.h $(SRCDIR)/functable.h 197functable.obj: $(SRCDIR)/functable.c $(SRCDIR)/zbuild.h $(SRCDIR)/functable.h $(SRCDIR)/deflate.h $(SRCDIR)/deflate_p.h $(SRCDIR)/zendian.h $(SRCDIR)/arch/x86/x86_features.h 198gzlib.obj: $(SRCDIR)/gzlib.c $(SRCDIR)/zbuild.h $(SRCDIR)/gzguts.h $(SRCDIR)/zutil_p.h 199gzread.obj: $(SRCDIR)/gzread.c $(SRCDIR)/zbuild.h $(SRCDIR)/gzguts.h $(SRCDIR)/zutil_p.h 200gzwrite.obj: $(SRCDIR)/gzwrite.c $(SRCDIR)/zbuild.h $(SRCDIR)/gzguts.h $(SRCDIR)/zutil_p.h 201compress.obj: $(SRCDIR)/compress.c $(SRCDIR)/zbuild.h $(SRCDIR)/zlib$(SUFFIX).h 202uncompr.obj: $(SRCDIR)/uncompr.c $(SRCDIR)/zbuild.h $(SRCDIR)/zlib$(SUFFIX).h 203chunkset.obj: $(SRCDIR)/zbuild.h $(SRCDIR)/zutil.h 204cpu_features.obj: $(SRCDIR)/cpu_features.c $(SRCDIR)/zbuild.h $(SRCDIR)/zutil.h 205crc32_braid.obj: $(SRCDIR)/crc32_braid.c $(SRCDIR)/zbuild.h $(SRCDIR)/zendian.h $(SRCDIR)/deflate.h $(SRCDIR)/functable.h $(SRCDIR)/crc32_braid_p.h $(SRCDIR)/crc32_braid_tbl.h 206crc32_braid_comb.obj: $(SRCDIR)/crc32_braid_comb.c $(SRCDIR)/zbuild.h $(SRCDIR)/zutil.h $(SRCDIR)/crc32_braid_p.h $(SRCDIR)/crc32_braid_tbl.h $(SRCDIR)/crc32_braid_comb_p.h 207crc32_fold.obj: $(SRCDIR)/crc32_fold.c $(SRCDIR)/zbuild.h 208deflate.obj: $(SRCDIR)/deflate.c $(SRCDIR)/zbuild.h $(SRCDIR)/deflate.h $(SRCDIR)/deflate_p.h $(SRCDIR)/functable.h 209deflate_fast.obj: $(SRCDIR)/deflate_fast.c $(SRCDIR)/zbuild.h $(SRCDIR)/deflate.h $(SRCDIR)/deflate_p.h $(SRCDIR)/functable.h 210deflate_huff.obj: $(SRCDIR)/deflate_huff.c $(SRCDIR)/zbuild.h $(SRCDIR)/deflate.h $(SRCDIR)/deflate_p.h $(SRCDIR)/functable.h 211deflate_medium.obj: $(SRCDIR)/deflate_medium.c $(SRCDIR)/zbuild.h $(SRCDIR)/deflate.h $(SRCDIR)/deflate_p.h $(SRCDIR)/functable.h 212deflate_quick.obj: $(SRCDIR)/deflate_quick.c $(SRCDIR)/zbuild.h $(SRCDIR)/deflate.h $(SRCDIR)/deflate_p.h $(SRCDIR)/functable.h $(SRCDIR)/trees_emit.h 213deflate_rle.obj: $(SRCDIR)/deflate_rle.c $(SRCDIR)/zbuild.h $(SRCDIR)/deflate.h $(SRCDIR)/deflate_p.h $(SRCDIR)/functable.h 214deflate_slow.obj: $(SRCDIR)/deflate_slow.c $(SRCDIR)/zbuild.h $(SRCDIR)/deflate.h $(SRCDIR)/deflate_p.h $(SRCDIR)/functable.h 215deflate_stored.obj: $(SRCDIR)/deflate_stored.c $(SRCDIR)/zbuild.h $(SRCDIR)/deflate.h $(SRCDIR)/deflate_p.h $(SRCDIR)/functable.h 216infback.obj: $(SRCDIR)/infback.c $(SRCDIR)/zbuild.h $(SRCDIR)/zutil.h $(SRCDIR)/inftrees.h $(SRCDIR)/inflate.h $(SRCDIR)/inffast.h 217inffast.obj: $(SRCDIR)/inffast.c $(SRCDIR)/zbuild.h $(SRCDIR)/zutil.h $(SRCDIR)/inftrees.h $(SRCDIR)/inflate.h $(SRCDIR)/inffast.h $(SRCDIR)/functable.h 218inflate.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 219inftrees.obj: $(SRCDIR)/inftrees.c $(SRCDIR)/zbuild.h $(SRCDIR)/zutil.h $(SRCDIR)/inftrees.h 220slide_hash.obj: $(SRCDIR)/slide_hash.c $(SRCDIR)/zbuild.h $(SRCDIR)/deflate.h 221trees.obj: $(SRCDIR)/zbuild.h $(SRCDIR)/deflate.h $(SRCDIR)/trees_tbl.h 222zutil.obj: $(SRCDIR)/zbuild.h $(SRCDIR)/zutil.h $(SRCDIR)/zutil_p.h 223 224example.obj: $(TOP)/test/example.c $(TOP)/zbuild.h $(TOP)/zlib$(SUFFIX).h 225 226minigzip.obj: $(TOP)/test/minigzip.c $(TOP)/zbuild.h $(TOP)/zlib$(SUFFIX).h 227 228$(RESFILE): $(TOP)/win32/$(RCFILE) 229 $(RC) $(RCFLAGS) /fo$@ $(TOP)/win32/$(RCFILE) 230 231# testing 232test: example.exe minigzip.exe 233 example 234 echo hello world | minigzip | minigzip -d 235 236testdll: example_d.exe minigzip_d.exe 237 example_d 238 echo hello world | minigzip_d | minigzip_d -d 239 240 241# cleanup 242clean: 243 -del $(STATICLIB) 244 -del $(SHAREDLIB) 245 -del $(IMPLIB) 246 -del *.obj 247 -del *.res 248 -del *.exp 249 -del *.exe 250 -del *.pdb 251 -del *.manifest 252 253distclean: clean 254 -del zconf$(SUFFIX).h 255 -del zlib$(SUFFIX).h 256 -del zlib_name_mangling$(SUFFIX).h 257 -del $(TOP)\win32\zlib.def 258 -del $(TOP)\win32\zlibcompat.def 259 -del $(TOP)\win32\zlib-ng.def 260 -del gzread.c 261