Makefile.arm 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272
  1. # Makefile for zlib using Microsoft (Visual) C
  2. # zlib is copyright (C) 1995-2024 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. # The toplevel directory of the source tree.
  8. #
  9. TOP = .
  10. # optional build flags
  11. LOC =
  12. # variables
  13. STATICLIB = zlib.lib
  14. SHAREDLIB = zlib1.dll
  15. IMPLIB = zdll.lib
  16. SYMBOL_PREFIX =
  17. CC = cl
  18. LD = link
  19. AR = lib
  20. RC = rc
  21. CP = copy /y
  22. INCLUDES = -I$(TOP) -I$(TOP)/arch/arm -I$(TOP)/arch/generic
  23. CFLAGS = -nologo -MD -W3 -O2 -Oy- -Zi -Fd"zlib" $(LOC) $(INCLUDES)
  24. WFLAGS = \
  25. -D_ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE=1 \
  26. -D_CRT_SECURE_NO_DEPRECATE \
  27. -D_CRT_NONSTDC_NO_DEPRECATE \
  28. -DARM_FEATURES \
  29. -DARM_NEON_HASLD4 \
  30. #
  31. LDFLAGS = -nologo -debug -incremental:no -opt:ref -manifest
  32. ARFLAGS = -nologo
  33. RCFLAGS = /dARM /r
  34. DEFFILE = zlib.def
  35. RCFILE = zlib1.rc
  36. RESFILE = zlib1.res
  37. WITH_GZFILEOP = yes
  38. ZLIB_COMPAT =
  39. WITH_ACLE =
  40. WITH_NEON =
  41. WITH_ARMV6 =
  42. WITH_VFPV3 =
  43. NEON_ARCH = /arch:VFPv4
  44. SUFFIX =
  45. OBJS = \
  46. adler32.obj \
  47. adler32_c.obj \
  48. adler32_fold_c.obj \
  49. arm_features.obj \
  50. chunkset_c.obj \
  51. compare256_c.obj \
  52. compress.obj \
  53. cpu_features.obj \
  54. crc32.obj \
  55. crc32_braid_c.obj \
  56. crc32_braid_comb.obj \
  57. crc32_fold_c.obj \
  58. deflate.obj \
  59. deflate_fast.obj \
  60. deflate_huff.obj \
  61. deflate_medium.obj \
  62. deflate_quick.obj \
  63. deflate_rle.obj \
  64. deflate_slow.obj \
  65. deflate_stored.obj \
  66. functable.obj \
  67. infback.obj \
  68. inflate.obj \
  69. inftrees.obj \
  70. insert_string.obj \
  71. insert_string_roll.obj \
  72. slide_hash_c.obj \
  73. trees.obj \
  74. uncompr.obj \
  75. zutil.obj \
  76. #
  77. !if "$(ZLIB_COMPAT)" != ""
  78. WITH_GZFILEOP = yes
  79. WFLAGS = $(WFLAGS) -DZLIB_COMPAT
  80. DEFFILE = zlibcompat.def
  81. !else
  82. STATICLIB = zlib-ng.lib
  83. SHAREDLIB = zlib-ng1.dll
  84. IMPLIB = zngdll.lib
  85. DEFFILE = zlib-ng.def
  86. RCFILE = zlib-ng1.rc
  87. RESFILE = zlib-ng1.res
  88. SUFFIX = -ng
  89. !endif
  90. !if "$(WITH_GZFILEOP)" != ""
  91. WFLAGS = $(WFLAGS) -DWITH_GZFILEOP
  92. OBJS = $(OBJS) gzlib.obj gzread.obj gzwrite.obj
  93. !endif
  94. !if "$(WITH_ACLE)" != ""
  95. WFLAGS = $(WFLAGS) -DARM_ACLE
  96. OBJS = $(OBJS) crc32_acle.obj
  97. !endif
  98. !if "$(WITH_VFPV3)" != ""
  99. NEON_ARCH = /arch:VFPv3
  100. !endif
  101. !if "$(WITH_NEON)" != ""
  102. CFLAGS = $(CFLAGS) $(NEON_ARCH)
  103. WFLAGS = $(WFLAGS) \
  104. -D__ARM_NEON__=1 \
  105. -DARM_NEON \
  106. -DARM_NOCHECK_NEON \
  107. #
  108. OBJS = $(OBJS) adler32_neon.obj chunkset_neon.obj compare256_neon.obj slide_hash_neon.obj
  109. !endif
  110. !if "$(WITH_ARMV6)" != ""
  111. WFLAGS = $(WFLAGS) \
  112. -DARM_SIMD \
  113. -DARM_NOCHECK_SIMD \
  114. #
  115. OBJS = $(OBJS) slide_hash_armv6.obj
  116. !endif
  117. # targets
  118. all: $(STATICLIB) $(SHAREDLIB) $(IMPLIB) \
  119. example.exe minigzip.exe example_d.exe minigzip_d.exe
  120. !if "$(SYMBOL_PREFIX)" != ""
  121. zlib_name_mangling$(SUFFIX).h: zlib_name_mangling$(SUFFIX).h.in
  122. cscript $(TOP)\win32\replace.vbs $(TOP)\zlib_name_mangling$(SUFFIX).h.in zlib_name_mangling$(SUFFIX).h "@ZLIB_SYMBOL_PREFIX@" "$(SYMBOL_PREFIX)"
  123. !else
  124. zlib_name_mangling$(SUFFIX).h: zlib_name_mangling.h.empty
  125. $(CP) $(TOP)\zlib_name_mangling.h.empty zlib_name_mangling$(SUFFIX).h
  126. !endif
  127. zlib$(SUFFIX).h: zlib$(SUFFIX).h.in
  128. cscript $(TOP)\win32\replace.vbs $(TOP)\zlib$(SUFFIX).h.in zlib$(SUFFIX).h "@ZLIB_SYMBOL_PREFIX@" "$(SYMBOL_PREFIX)"
  129. gzread.c: gzread.c.in
  130. cscript $(TOP)\win32\replace.vbs $(TOP)\gzread.c.in gzread.c "@ZLIB_SYMBOL_PREFIX@" "$(SYMBOL_PREFIX)"
  131. zconf: $(TOP)/zconf$(SUFFIX).h.in $(TOP)/zlib$(SUFFIX).h $(TOP)/zlib_name_mangling$(SUFFIX).h
  132. $(CP) $(TOP)\zconf$(SUFFIX).h.in $(TOP)\zconf$(SUFFIX).h
  133. $(TOP)/win32/$(DEFFILE): $(TOP)/win32/$(DEFFILE).in
  134. cscript $(TOP)\win32\replace.vbs $(TOP)/win32/$(DEFFILE).in $(TOP)/win32/$(DEFFILE) "@ZLIB_SYMBOL_PREFIX@" "$(SYMBOL_PREFIX)"
  135. $(STATICLIB): zconf $(OBJS)
  136. $(AR) $(ARFLAGS) -out:$@ $(OBJS)
  137. $(IMPLIB): $(SHAREDLIB)
  138. $(SHAREDLIB): zconf $(TOP)/win32/$(DEFFILE) $(OBJS) $(RESFILE)
  139. $(LD) $(LDFLAGS) -def:$(TOP)/win32/$(DEFFILE) -dll -implib:$(IMPLIB) \
  140. -out:$@ -base:0x5A4C0000 $(OBJS) $(RESFILE)
  141. if exist $@.manifest \
  142. mt -nologo -manifest $@.manifest -outputresource:$@;2
  143. example.exe: example.obj gzlib2.obj gzread2.obj gzwrite2.obj $(STATICLIB)
  144. $(LD) $(LDFLAGS) example.obj gzlib2.obj gzread2.obj gzwrite2.obj $(STATICLIB)
  145. if exist $@.manifest \
  146. mt -nologo -manifest $@.manifest -outputresource:$@;1
  147. minigzip.exe: minigzip.obj gzlib2.obj gzread2.obj gzwrite2.obj $(STATICLIB)
  148. $(LD) $(LDFLAGS) minigzip.obj gzlib2.obj gzread2.obj gzwrite2.obj $(STATICLIB)
  149. if exist $@.manifest \
  150. mt -nologo -manifest $@.manifest -outputresource:$@;1
  151. example_d.exe: example.obj gzlib2.obj gzread2.obj gzwrite2.obj $(IMPLIB)
  152. $(LD) $(LDFLAGS) -out:$@ example.obj gzlib2.obj gzread2.obj gzwrite2.obj $(IMPLIB)
  153. if exist $@.manifest \
  154. mt -nologo -manifest $@.manifest -outputresource:$@;1
  155. minigzip_d.exe: minigzip.obj gzlib2.obj gzread2.obj gzwrite2.obj $(IMPLIB)
  156. $(LD) $(LDFLAGS) -out:$@ minigzip.obj gzlib2.obj gzread2.obj gzwrite2.obj $(IMPLIB)
  157. if exist $@.manifest \
  158. mt -nologo -manifest $@.manifest -outputresource:$@;1
  159. {$(TOP)}.c.obj:
  160. $(CC) -c $(WFLAGS) $(CFLAGS) $<
  161. gzlib2.obj: gzlib.c $(TOP)/zbuild.h $(TOP)/gzguts.h $(TOP)/zutil_p.h
  162. $(CC) -c $(WFLAGS) $(CFLAGS) -DWITH_GZFILEOP -Fogzlib2.obj gzlib.c
  163. gzread2.obj: gzread.c $(TOP)/zbuild.h $(TOP)/gzguts.h $(TOP)/zutil_p.h
  164. $(CC) -c $(WFLAGS) $(CFLAGS) -DWITH_GZFILEOP -Fogzread2.obj gzread.c
  165. gzwrite2.obj: gzwrite.c $(TOP)/zbuild.h $(TOP)/gzguts.h $(TOP)/zutil_p.h
  166. $(CC) -c $(WFLAGS) $(CFLAGS) -DWITH_GZFILEOP -Fogzwrite2.obj gzwrite.c
  167. {$(TOP)/arch/arm}.c.obj:
  168. $(CC) -c -I$(TOP) $(WFLAGS) $(CFLAGS) $<
  169. {$(TOP)/arch/generic}.c.obj:
  170. $(CC) -c -I$(TOP) $(WFLAGS) $(CFLAGS) $<
  171. {$(TOP)/test}.c.obj:
  172. $(CC) -c -I$(TOP) $(WFLAGS) $(CFLAGS) -DWITH_GZFILEOP $<
  173. $(TOP)/zconf$(SUFFIX).h: zconf
  174. adler32.obj: $(TOP)/adler32.c $(TOP)/zbuild.h $(TOP)/functable.h $(TOP)/adler32_p.h
  175. adler32_c.obj: $(TOP)/arch/generic/adler32_c.c $(TOP)/zbuild.h $(TOP)/functable.h $(TOP)/adler32_p.h
  176. adler32_fold_c.obj: $(TOP)/arch/generic/adler32_fold_c.c $(TOP)/zbuild.h $(TOP)/functable.h
  177. chunkset_c.obj: $(TOP)/arch/generic/chunkset_c.c $(TOP)/zbuild.h $(TOP)/chunkset_tpl.h $(TOP)/inffast_tpl.h
  178. compare256_c.obj: $(TOP)/arch/generic/compare256_c.c $(TOP)/zbuild.h $(TOP)/zutil_p.h $(TOP)/deflate.h $(TOP)/fallback_builtins.h $(TOP)/match_tpl.h
  179. compress.obj: $(TOP)/compress.c $(TOP)/zbuild.h $(TOP)/zutil.h
  180. cpu_features.obj: $(TOP)/cpu_features.c $(TOP)/cpu_features.h $(TOP)/zbuild.h
  181. crc32.obj: $(TOP)/crc32.c $(TOP)/zbuild.h $(TOP)/functable.h $(TOP)/crc32_braid_tbl.h
  182. crc32_braid_c.obj: $(TOP)/arch/generic/crc32_braid_c.c $(TOP)/zbuild.h $(TOP)/crc32_braid_p.h $(TOP)/crc32_braid_tbl.h
  183. crc32_braid_comb.obj: $(TOP)/crc32_braid_comb.c $(TOP)/zutil.h $(TOP)/crc32_braid_p.h $(TOP)/crc32_braid_tbl.h $(TOP)/crc32_braid_comb_p.h
  184. crc32_fold_c.obj: $(TOP)/arch/generic/crc32_fold_c.c $(TOP)/zbuild.h $(TOP)/crc32.h $(TOP)/functable.h $(TOP)/zutil.h
  185. deflate.obj: $(TOP)/deflate.c $(TOP)/zbuild.h $(TOP)/deflate.h $(TOP)/deflate_p.h $(TOP)/functable.h
  186. deflate_fast.obj: $(TOP)/deflate_fast.c $(TOP)/zbuild.h $(TOP)/deflate.h $(TOP)/deflate_p.h $(TOP)/functable.h
  187. deflate_huff.obj: $(TOP)/deflate_huff.c $(TOP)/zbuild.h $(TOP)/deflate.h $(TOP)/deflate_p.h $(TOP)/functable.h
  188. deflate_medium.obj: $(TOP)/deflate_medium.c $(TOP)/zbuild.h $(TOP)/deflate.h $(TOP)/deflate_p.h $(TOP)/functable.h
  189. deflate_quick.obj: $(TOP)/deflate_quick.c $(TOP)/zbuild.h $(TOP)/deflate.h $(TOP)/deflate_p.h $(TOP)/functable.h $(TOP)/trees_emit.h $(TOP)/zutil_p.h
  190. deflate_rle.obj: $(TOP)/deflate_rle.c $(TOP)/zbuild.h $(TOP)/deflate.h $(TOP)/deflate_p.h $(TOP)/functable.h $(TOP)/compare256_rle.h
  191. deflate_slow.obj: $(TOP)/deflate_slow.c $(TOP)/zbuild.h $(TOP)/deflate.h $(TOP)/deflate_p.h $(TOP)/functable.h
  192. deflate_stored.obj: $(TOP)/deflate_stored.c $(TOP)/zbuild.h $(TOP)/deflate.h $(TOP)/deflate_p.h $(TOP)/functable.h
  193. functable.obj: $(TOP)/functable.c $(TOP)/zbuild.h $(TOP)/functable.h $(TOP)/cpu_features.h $(TOP)/arch/arm/arm_features.h $(TOP)/arch_functions.h
  194. gzlib.obj: $(TOP)/gzlib.c $(TOP)/zbuild.h $(TOP)/gzguts.h $(TOP)/zutil_p.h
  195. gzread.obj: $(TOP)/gzread.c $(TOP)/zbuild.h $(TOP)/gzguts.h $(TOP)/zutil_p.h
  196. gzwrite.obj: $(TOP)/gzwrite.c $(TOP)/zbuild.h $(TOP)/gzguts.h $(TOP)/zutil_p.h
  197. infback.obj: $(TOP)/infback.c $(TOP)/zbuild.h $(TOP)/zutil.h $(TOP)/inftrees.h $(TOP)/inflate.h $(TOP)/inflate_p.h $(TOP)/functable.h
  198. inflate.obj: $(TOP)/inflate.c $(TOP)/zbuild.h $(TOP)/zutil.h $(TOP)/inftrees.h $(TOP)/inflate.h $(TOP)/inflate_p.h $(TOP)/functable.h $(TOP)/inffixed_tbl.h
  199. inftrees.obj: $(TOP)/inftrees.c $(TOP)/zbuild.h $(TOP)/zutil.h $(TOP)/inftrees.h
  200. insert_string.obj: $(TOP)/insert_string.c $(TOP)/zbuild.h $(TOP)/deflate.h $(TOP)/insert_string_tpl.h
  201. insert_string_roll.obj: $(TOP)/insert_string_roll.c $(TOP)/zbuild.h $(TOP)/deflate.h $(TOP)/insert_string_tpl.h
  202. slide_hash_c.obj: $(TOP)/arch/generic/slide_hash_c.c $(TOP)/zbuild.h $(TOP)/deflate.h
  203. trees.obj: $(TOP)/trees.c $(TOP)/trees.h $(TOP)/trees_emit.h $(TOP)/zbuild.h $(TOP)/deflate.h $(TOP)/trees_tbl.h
  204. uncompr.obj: $(TOP)/uncompr.c $(TOP)/zbuild.h $(TOP)/zutil.h
  205. zutil.obj: $(TOP)/zutil.c $(TOP)/zbuild.h $(TOP)/zutil.h $(TOP)/zutil_p.h
  206. $(RESFILE): $(TOP)/win32/$(RCFILE)
  207. $(RC) $(RCFLAGS) /fo$@ $(TOP)/win32/$(RCFILE)
  208. # testing
  209. test: example.exe minigzip.exe
  210. example
  211. echo hello world | minigzip | minigzip -d
  212. testdll: example_d.exe minigzip_d.exe
  213. example_d
  214. echo hello world | minigzip_d | minigzip_d -d
  215. example.obj: $(TOP)/test/example.c $(TOP)/zbuild.h $(TOP)/zlib$(SUFFIX).h $(TOP)/deflate.h $(TOP)/test/test_shared_ng.h
  216. minigzip.obj: $(TOP)/test/minigzip.c $(TOP)/zbuild.h $(TOP)/zlib$(SUFFIX).h
  217. # cleanup
  218. clean:
  219. -del $(STATICLIB)
  220. -del $(SHAREDLIB)
  221. -del $(IMPLIB)
  222. -del *.obj
  223. -del *.res
  224. -del *.exp
  225. -del *.exe
  226. -del *.pdb
  227. -del *.manifest
  228. distclean: clean
  229. -del zconf$(SUFFIX).h
  230. -del zlib$(SUFFIX).h
  231. -del zlib_name_mangling$(SUFFIX).h
  232. -del $(TOP)\win32\zlib.def
  233. -del $(TOP)\win32\zlibcompat.def
  234. -del $(TOP)\win32\zlib-ng.def
  235. -del gzread.c