xmake.lua 3.2 KB

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