xmake.lua 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. package("zlib-ng")
  2. set_homepage("https://github.com/zlib-ng/zlib-ng")
  3. set_description("zlib replacement with optimizations for next generation systems.")
  4. set_license("zlib")
  5. add_urls("https://github.com/zlib-ng/zlib-ng/archive/refs/tags/$(version).tar.gz",
  6. "https://github.com/zlib-ng/zlib-ng.git")
  7. add_versions("2.2.1", "ec6a76169d4214e2e8b737e0850ba4acb806c69eeace6240ed4481b9f5c57cdf")
  8. add_versions("2.1.6", "a5d504c0d52e2e2721e7e7d86988dec2e290d723ced2307145dedd06aeb6fef2")
  9. add_versions("2.1.5", "3f6576971397b379d4205ae5451ff5a68edf6c103b2f03c4188ed7075fbb5f04")
  10. add_versions("2.0.6", "8258b75a72303b661a238047cb348203d88d9dddf85d480ed885f375916fcab6")
  11. add_versions("2.0.5", "eca3fe72aea7036c31d00ca120493923c4d5b99fe02e6d3322f7c88dbdcd0085")
  12. add_configs("zlib_compat", {description = "Compile with zlib compatible API", default = false, type = "boolean"})
  13. add_deps("cmake")
  14. if on_check then
  15. on_check("windows", "mingw", function (package)
  16. import("core.tool.toolchain")
  17. import("core.base.semver")
  18. if package:version():ge("2.1.5") and package:is_arch("arm.*") then
  19. local msvc = toolchain.load("msvc", {plat = package:plat(), arch = package:arch()})
  20. if msvc then
  21. local vs_sdkver = msvc:config("vs_sdkver")
  22. assert(vs_sdkver and semver.match(vs_sdkver):gt("10.0.19041"), "package(zlib-ng/arm >= 2.1.5): need vs_sdkver > 10.0.19041.0")
  23. end
  24. end
  25. if package:version():ge("2.1.6") and package:is_arch("i386") and package:is_cross() then
  26. assert(false, "package(zlib-ng/i386 >= 2.1.6): Unsupported cross compilation")
  27. end
  28. end)
  29. on_check("android", function (package)
  30. if package:version():ge("2.1.5") and package:is_arch("arm.*") then
  31. assert(false, "package(zlib-ng/android >= 2.1.5): Unsupported android and arm")
  32. end
  33. end)
  34. end
  35. on_install("windows", "macosx", "linux", "android", "mingw", function (package)
  36. local configs = {
  37. "-DZLIB_ENABLE_TESTS=OFF",
  38. "-DZLIBNG_ENABLE_TESTS=OFF",
  39. "-DWITH_GTEST=OFF",
  40. }
  41. table.insert(configs, "-DCMAKE_BUILD_TYPE=" .. (package:debug() and "Debug" or "Release"))
  42. table.insert(configs, "-DBUILD_SHARED_LIBS=" .. (package:config("shared") and "ON" or "OFF"))
  43. table.insert(configs, "-DINC_INSTALL_DIR=" .. package:installdir("include"))
  44. table.insert(configs, "-DLIB_INSTALL_DIR=" .. package:installdir("lib"))
  45. table.insert(configs, "-DZLIB_COMPAT=" .. (package:config("zlib_compat") and "ON" or "OFF"))
  46. import("package.tools.cmake").install(package, configs)
  47. end)
  48. on_test(function (package)
  49. if package:config("zlib_compat") then
  50. assert(package:has_cfuncs("inflate", {includes = "zlib.h"}))
  51. else
  52. assert(package:has_cfuncs("zng_inflate", {includes = "zlib-ng.h"}))
  53. end
  54. end)