xmake.lua 4.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. package("zlib")
  2. set_homepage("http://www.zlib.net")
  3. set_description("A Massively Spiffy Yet Delicately Unobtrusive Compression Library")
  4. set_license("zlib")
  5. add_urls("https://github.com/madler/zlib/archive/refs/tags/$(version).tar.gz",
  6. "https://github.com/madler/zlib.git")
  7. add_versions("v1.2.10", "42cd7b2bdaf1c4570e0877e61f2fdc0bce8019492431d054d3d86925e5058dc5")
  8. add_versions("v1.2.11", "629380c90a77b964d896ed37163f5c3a34f6e6d897311f1df2a7016355c45eff")
  9. add_versions("v1.2.12", "d8688496ea40fb61787500e863cc63c9afcbc524468cedeb478068924eb54932")
  10. add_versions("v1.2.13", "1525952a0a567581792613a9723333d7f8cc20b87a81f920fb8bc7e3f2251428")
  11. add_versions("v1.3", "b5b06d60ce49c8ba700e0ba517fa07de80b5d4628a037f4be8ad16955be7a7c0")
  12. add_versions("v1.3.1", "17e88863f3600672ab49182f217281b6fc4d3c762bde361935e436a95214d05c")
  13. add_patches("v1.2.10", "patches/v1.2.10/fix-macosx-fdopen.patch", "382a129e1e604c0da6121e993cd2e7e70069fb287dcdf85a9aa9ff5bd7cb7872")
  14. add_patches("v1.2.11", "patches/v1.2.10/fix-macosx-fdopen.patch", "382a129e1e604c0da6121e993cd2e7e70069fb287dcdf85a9aa9ff5bd7cb7872")
  15. add_patches("v1.2.12", "patches/v1.2.12/fix-macosx-fdopen.patch", "9ccc43fbd2946fabb688ed687506710ed42bf6039d1034060183f8c5cb65a7ff")
  16. add_patches("v1.2.13", "patches/v1.2.13/fix-macosx-fdopen.patch", "4ed4e669e853b9490ec39df35739ba4bbf08dcb245c8f5e26659e736c3007685")
  17. add_configs("zutil", {description = "Export zutil.h api", default = false, type = "boolean"})
  18. if is_plat("mingw") and is_subhost("msys") then
  19. add_extsources("pacman::zlib")
  20. elseif is_plat("linux") then
  21. add_extsources("pacman::zlib", "apt::zlib1g-dev")
  22. elseif is_plat("macosx") then
  23. add_extsources("brew::zlib")
  24. end
  25. on_fetch(function (package, opt)
  26. if xmake.version():lt("2.8.7") then return end -- disable system find if the bug is present
  27. if opt.system then
  28. if not package:is_plat("windows", "mingw") then
  29. return package:find_package("system::z", {includes = "zlib.h"})
  30. end
  31. end
  32. end)
  33. on_install(function (package)
  34. io.writefile("xmake.lua", [[
  35. includes("@builtin/check")
  36. add_rules("mode.debug", "mode.release")
  37. target("zlib")
  38. set_kind("$(kind)")
  39. if not is_plat("windows") then
  40. set_basename("z")
  41. end
  42. add_files("adler32.c")
  43. add_files("compress.c")
  44. add_files("crc32.c")
  45. add_files("deflate.c")
  46. add_files("gzclose.c")
  47. add_files("gzlib.c")
  48. add_files("gzread.c")
  49. add_files("gzwrite.c")
  50. add_files("inflate.c")
  51. add_files("infback.c")
  52. add_files("inftrees.c")
  53. add_files("inffast.c")
  54. add_files("trees.c")
  55. add_files("uncompr.c")
  56. add_files("zutil.c")
  57. add_headerfiles("zlib.h", "zconf.h")
  58. check_cincludes("Z_HAVE_UNISTD_H", "unistd.h")
  59. check_cincludes("HAVE_SYS_TYPES_H", "sys/types.h")
  60. check_cincludes("HAVE_STDINT_H", "stdint.h")
  61. check_cincludes("HAVE_STDDEF_H", "stddef.h")
  62. if is_plat("windows") then
  63. add_defines("_CRT_SECURE_NO_DEPRECATE")
  64. add_defines("_CRT_NONSTDC_NO_DEPRECATE")
  65. if is_kind("shared") then
  66. add_files("win32/zlib1.rc")
  67. add_defines("ZLIB_DLL")
  68. end
  69. else
  70. add_defines("ZEXPORT=__attribute__((visibility(\"default\")))")
  71. add_defines("_LARGEFILE64_SOURCE=1")
  72. end
  73. ]])
  74. import("package.tools.xmake").install(package)
  75. if package:config("shared") and package:is_plat("windows") then
  76. package:add("defines", "ZLIB_DLL")
  77. end
  78. if package:config("zutil") then
  79. os.cp("zutil.h", package:installdir("include"))
  80. end
  81. end)
  82. on_test(function (package)
  83. assert(package:has_cfuncs("inflate", {includes = "zlib.h"}))
  84. end)