Makefile.a64 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252
  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.a64 (standard build)
  6. # nmake -f win32/Makefile.a64 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_ARM64_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 = /dARM64 /r
  34. DEFFILE = zlib.def
  35. RCFILE = zlib1.rc
  36. RESFILE = zlib1.res
  37. WITH_GZFILEOP = yes
  38. ZLIB_COMPAT =
  39. SUFFIX =
  40. OBJS = \
  41. adler32.obj \
  42. adler32_c.obj \
  43. adler32_fold_c.obj \
  44. arm_features.obj \
  45. chunkset_c.obj \
  46. compare256_c.obj \
  47. compress.obj \
  48. cpu_features.obj \
  49. crc32.obj \
  50. crc32_braid_c.obj \
  51. crc32_braid_comb.obj \
  52. crc32_fold_c.obj \
  53. deflate.obj \
  54. deflate_fast.obj \
  55. deflate_huff.obj \
  56. deflate_medium.obj \
  57. deflate_quick.obj \
  58. deflate_rle.obj \
  59. deflate_slow.obj \
  60. deflate_stored.obj \
  61. functable.obj \
  62. infback.obj \
  63. inflate.obj \
  64. inftrees.obj \
  65. insert_string.obj \
  66. insert_string_roll.obj \
  67. slide_hash_c.obj \
  68. trees.obj \
  69. uncompr.obj \
  70. zutil.obj \
  71. #
  72. !if "$(ZLIB_COMPAT)" != ""
  73. WITH_GZFILEOP = yes
  74. WFLAGS = $(WFLAGS) -DZLIB_COMPAT
  75. DEFFILE = zlibcompat.def
  76. !else
  77. STATICLIB = zlib-ng.lib
  78. SHAREDLIB = zlib-ng1.dll
  79. IMPLIB = zngdll.lib
  80. DEFFILE = zlib-ng.def
  81. RCFILE = zlib-ng1.rc
  82. RESFILE = zlib-ng1.res
  83. SUFFIX = -ng
  84. !endif
  85. !if "$(WITH_GZFILEOP)" != ""
  86. WFLAGS = $(WFLAGS) -DWITH_GZFILEOP
  87. OBJS = $(OBJS) gzlib.obj gzread.obj gzwrite.obj
  88. !endif
  89. WFLAGS = $(WFLAGS) \
  90. -DARM_ACLE \
  91. -D__ARM_NEON__=1 \
  92. -DARM_NEON \
  93. -DARM_NOCHECK_NEON \
  94. #
  95. OBJS = $(OBJS) crc32_acle.obj adler32_neon.obj chunkset_neon.obj compare256_neon.obj slide_hash_neon.obj
  96. # targets
  97. all: $(STATICLIB) $(SHAREDLIB) $(IMPLIB) \
  98. example.exe minigzip.exe example_d.exe minigzip_d.exe
  99. !if "$(SYMBOL_PREFIX)" != ""
  100. zlib_name_mangling$(SUFFIX).h: zlib_name_mangling$(SUFFIX).h.in
  101. cscript $(TOP)\win32\replace.vbs $(TOP)\zlib_name_mangling$(SUFFIX).h.in zlib_name_mangling$(SUFFIX).h "@ZLIB_SYMBOL_PREFIX@" "$(SYMBOL_PREFIX)"
  102. !else
  103. zlib_name_mangling$(SUFFIX).h: zlib_name_mangling.h.empty
  104. $(CP) $(TOP)\zlib_name_mangling.h.empty zlib_name_mangling$(SUFFIX).h
  105. !endif
  106. zlib$(SUFFIX).h: zlib$(SUFFIX).h.in
  107. cscript $(TOP)\win32\replace.vbs $(TOP)\zlib$(SUFFIX).h.in zlib$(SUFFIX).h "@ZLIB_SYMBOL_PREFIX@" "$(SYMBOL_PREFIX)"
  108. gzread.c: gzread.c.in
  109. cscript $(TOP)\win32\replace.vbs $(TOP)\gzread.c.in gzread.c "@ZLIB_SYMBOL_PREFIX@" "$(SYMBOL_PREFIX)"
  110. zconf: $(TOP)/zconf$(SUFFIX).h.in $(TOP)/zlib$(SUFFIX).h $(TOP)/zlib_name_mangling$(SUFFIX).h
  111. $(CP) $(TOP)\zconf$(SUFFIX).h.in $(TOP)\zconf$(SUFFIX).h
  112. $(TOP)/win32/$(DEFFILE): $(TOP)/win32/$(DEFFILE).in
  113. cscript $(TOP)\win32\replace.vbs $(TOP)/win32/$(DEFFILE).in $(TOP)/win32/$(DEFFILE) "@ZLIB_SYMBOL_PREFIX@" "$(SYMBOL_PREFIX)"
  114. $(STATICLIB): zconf $(OBJS)
  115. $(AR) $(ARFLAGS) -out:$@ $(OBJS)
  116. $(IMPLIB): $(SHAREDLIB)
  117. $(SHAREDLIB): zconf $(TOP)/win32/$(DEFFILE) $(OBJS) $(RESFILE)
  118. $(LD) $(LDFLAGS) -def:$(TOP)/win32/$(DEFFILE) -dll -implib:$(IMPLIB) \
  119. -out:$@ -base:0x55A4C0000 $(OBJS) $(RESFILE)
  120. if exist $@.manifest \
  121. mt -nologo -manifest $@.manifest -outputresource:$@;2
  122. example.exe: example.obj gzlib2.obj gzread2.obj gzwrite2.obj $(STATICLIB)
  123. $(LD) $(LDFLAGS) example.obj gzlib2.obj gzread2.obj gzwrite2.obj $(STATICLIB)
  124. if exist $@.manifest \
  125. mt -nologo -manifest $@.manifest -outputresource:$@;1
  126. minigzip.exe: minigzip.obj gzlib2.obj gzread2.obj gzwrite2.obj $(STATICLIB)
  127. $(LD) $(LDFLAGS) minigzip.obj gzlib2.obj gzread2.obj gzwrite2.obj $(STATICLIB)
  128. if exist $@.manifest \
  129. mt -nologo -manifest $@.manifest -outputresource:$@;1
  130. example_d.exe: example.obj gzlib2.obj gzread2.obj gzwrite2.obj $(IMPLIB)
  131. $(LD) $(LDFLAGS) -out:$@ example.obj gzlib2.obj gzread2.obj gzwrite2.obj $(IMPLIB)
  132. if exist $@.manifest \
  133. mt -nologo -manifest $@.manifest -outputresource:$@;1
  134. minigzip_d.exe: minigzip.obj gzlib2.obj gzread2.obj gzwrite2.obj $(IMPLIB)
  135. $(LD) $(LDFLAGS) -out:$@ minigzip.obj gzlib2.obj gzread2.obj gzwrite2.obj $(IMPLIB)
  136. if exist $@.manifest \
  137. mt -nologo -manifest $@.manifest -outputresource:$@;1
  138. {$(TOP)}.c.obj:
  139. $(CC) -c $(WFLAGS) $(CFLAGS) $<
  140. gzlib2.obj: gzlib.c $(TOP)/zbuild.h $(TOP)/gzguts.h $(TOP)/zutil_p.h
  141. $(CC) -c $(WFLAGS) $(CFLAGS) -DWITH_GZFILEOP -Fogzlib2.obj gzlib.c
  142. gzread2.obj: gzread.c $(TOP)/zbuild.h $(TOP)/gzguts.h $(TOP)/zutil_p.h
  143. $(CC) -c $(WFLAGS) $(CFLAGS) -DWITH_GZFILEOP -Fogzread2.obj gzread.c
  144. gzwrite2.obj: gzwrite.c $(TOP)/zbuild.h $(TOP)/gzguts.h $(TOP)/zutil_p.h
  145. $(CC) -c $(WFLAGS) $(CFLAGS) -DWITH_GZFILEOP -Fogzwrite2.obj gzwrite.c
  146. {$(TOP)/arch/arm}.c.obj:
  147. $(CC) -c -I$(TOP) $(WFLAGS) $(CFLAGS) $<
  148. {$(TOP)/arch/generic}.c.obj:
  149. $(CC) -c -I$(TOP) $(WFLAGS) $(CFLAGS) $<
  150. {$(TOP)/test}.c.obj:
  151. $(CC) -c -I$(TOP) $(WFLAGS) $(CFLAGS) -DWITH_GZFILEOP $<
  152. $(TOP)/zconf$(SUFFIX).h: zconf
  153. adler32.obj: $(TOP)/adler32.c $(TOP)/zbuild.h $(TOP)/functable.h $(TOP)/adler32_p.h
  154. adler32_c.obj: $(TOP)/arch/generic/adler32_c.c $(TOP)/zbuild.h $(TOP)/functable.h $(TOP)/adler32_p.h
  155. adler32_fold_c.obj: $(TOP)/arch/generic/adler32_fold_c.c $(TOP)/zbuild.h $(TOP)/functable.h
  156. chunkset_c.obj: $(TOP)/arch/generic/chunkset_c.c $(TOP)/zbuild.h $(TOP)/chunkset_tpl.h $(TOP)/inffast_tpl.h
  157. 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
  158. compress.obj: $(TOP)/compress.c $(TOP)/zbuild.h $(TOP)/zutil.h
  159. cpu_features.obj: $(TOP)/cpu_features.c $(TOP)/cpu_features.h $(TOP)/zbuild.h
  160. crc32.obj: $(TOP)/crc32.c $(TOP)/zbuild.h $(TOP)/functable.h $(TOP)/crc32_braid_tbl.h
  161. crc32_braid_c.obj: $(TOP)/arch/generic/crc32_braid_c.c $(TOP)/zbuild.h $(TOP)/crc32_braid_p.h $(TOP)/crc32_braid_tbl.h
  162. 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
  163. crc32_fold_c.obj: $(TOP)/arch/generic/crc32_fold_c.c $(TOP)/zbuild.h $(TOP)/crc32.h $(TOP)/functable.h $(TOP)/zutil.h
  164. deflate.obj: $(TOP)/deflate.c $(TOP)/zbuild.h $(TOP)/deflate.h $(TOP)/deflate_p.h $(TOP)/functable.h
  165. deflate_fast.obj: $(TOP)/deflate_fast.c $(TOP)/zbuild.h $(TOP)/deflate.h $(TOP)/deflate_p.h $(TOP)/functable.h
  166. deflate_huff.obj: $(TOP)/deflate_huff.c $(TOP)/zbuild.h $(TOP)/deflate.h $(TOP)/deflate_p.h $(TOP)/functable.h
  167. deflate_medium.obj: $(TOP)/deflate_medium.c $(TOP)/zbuild.h $(TOP)/deflate.h $(TOP)/deflate_p.h $(TOP)/functable.h
  168. 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
  169. deflate_rle.obj: $(TOP)/deflate_rle.c $(TOP)/zbuild.h $(TOP)/deflate.h $(TOP)/deflate_p.h $(TOP)/functable.h $(TOP)/compare256_rle.h
  170. deflate_slow.obj: $(TOP)/deflate_slow.c $(TOP)/zbuild.h $(TOP)/deflate.h $(TOP)/deflate_p.h $(TOP)/functable.h
  171. deflate_stored.obj: $(TOP)/deflate_stored.c $(TOP)/zbuild.h $(TOP)/deflate.h $(TOP)/deflate_p.h $(TOP)/functable.h
  172. 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
  173. gzlib.obj: $(TOP)/gzlib.c $(TOP)/zbuild.h $(TOP)/gzguts.h $(TOP)/zutil_p.h
  174. gzread.obj: $(TOP)/gzread.c $(TOP)/zbuild.h $(TOP)/gzguts.h $(TOP)/zutil_p.h
  175. gzwrite.obj: $(TOP)/gzwrite.c $(TOP)/zbuild.h $(TOP)/gzguts.h $(TOP)/zutil_p.h
  176. infback.obj: $(TOP)/infback.c $(TOP)/zbuild.h $(TOP)/zutil.h $(TOP)/inftrees.h $(TOP)/inflate.h $(TOP)/inflate_p.h $(TOP)/functable.h
  177. 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
  178. inftrees.obj: $(TOP)/inftrees.c $(TOP)/zbuild.h $(TOP)/zutil.h $(TOP)/inftrees.h
  179. insert_string.obj: $(TOP)/insert_string.c $(TOP)/zbuild.h $(TOP)/deflate.h $(TOP)/insert_string_tpl.h
  180. insert_string_roll.obj: $(TOP)/insert_string_roll.c $(TOP)/zbuild.h $(TOP)/deflate.h $(TOP)/insert_string_tpl.h
  181. slide_hash_c.obj: $(TOP)/arch/generic/slide_hash_c.c $(TOP)/zbuild.h $(TOP)/deflate.h
  182. slide_hash_neon.obj: $(TOP)/arch/arm/slide_hash_neon.c $(TOP)/arch/arm/neon_intrins.h $(TOP)/zbuild.h $(TOP)/deflate.h
  183. trees.obj: $(TOP)/trees.c $(TOP)/trees.h $(TOP)/trees_emit.h $(TOP)/zbuild.h $(TOP)/deflate.h $(TOP)/trees_tbl.h
  184. uncompr.obj: $(TOP)/uncompr.c $(TOP)/zbuild.h $(TOP)/zutil.h
  185. zutil.obj: $(TOP)/zutil.c $(TOP)/zbuild.h $(TOP)/zutil.h $(TOP)/zutil_p.h
  186. $(RESFILE): $(TOP)/win32/$(RCFILE)
  187. $(RC) $(RCFLAGS) /fo$@ $(TOP)/win32/$(RCFILE)
  188. # testing
  189. test: example.exe minigzip.exe
  190. example
  191. echo hello world | minigzip | minigzip -d
  192. testdll: example_d.exe minigzip_d.exe
  193. example_d
  194. echo hello world | minigzip_d | minigzip_d -d
  195. example.obj: $(TOP)/test/example.c $(TOP)/zbuild.h $(TOP)/zlib$(SUFFIX).h $(TOP)/deflate.h $(TOP)/test/test_shared_ng.h
  196. minigzip.obj: $(TOP)/test/minigzip.c $(TOP)/zbuild.h $(TOP)/zlib$(SUFFIX).h
  197. # cleanup
  198. clean:
  199. -del $(STATICLIB)
  200. -del $(SHAREDLIB)
  201. -del $(IMPLIB)
  202. -del *.obj
  203. -del *.res
  204. -del *.exp
  205. -del *.exe
  206. -del *.pdb
  207. -del *.manifest
  208. distclean: clean
  209. -del zconf$(SUFFIX).h
  210. -del zlib$(SUFFIX).h
  211. -del zlib_name_mangling$(SUFFIX).h
  212. -del $(TOP)\win32\zlib.def
  213. -del $(TOP)\win32\zlibcompat.def
  214. -del $(TOP)\win32\zlib-ng.def
  215. -del gzread.c