xmake.lua 4.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. package("libpng")
  2. set_homepage("https://www.libpng.org/pub/png/libpng.html")
  3. set_description("The official PNG reference library")
  4. set_license("libpng-2.0")
  5. add_urls("https://github.com/glennrp/libpng/archive/refs/tags/$(version).tar.gz",
  6. "https://github.com/glennrp/libpng.git")
  7. add_versions("v1.6.51", "b1872484c1c5c70acc79cbb15fb366df954fa8d5dacbe7f729d858902d17933c")
  8. add_versions("v1.6.50", "71158e53cfdf2877bc99bcab33641d78df3f48e6e0daad030afe9cb8c031aa46")
  9. add_versions("v1.6.49", "e425762fdfb9bb30a5d2da29c0067570e96b5d41d79c659cf0dad861e9df738e")
  10. add_versions("v1.6.48", "b17e99026055727e8cba99160c3a9a7f9af788e9f786daeadded5a42243f1dd0")
  11. add_versions("v1.6.47", "631a4c58ea6c10c81f160c4b21fa8495b715d251698ebc2552077e8450f30454")
  12. add_versions("v1.6.46", "767b01936f9620d4ab4cdf6ec348f6526f861f825648b610b1d604167dc738d2")
  13. add_versions("v1.6.44", "0ef5b633d0c65f780c4fced27ff832998e71478c13b45dfb6e94f23a82f64f7c")
  14. add_versions("v1.6.43", "fecc95b46cf05e8e3fc8a414750e0ba5aad00d89e9fdf175e94ff041caf1a03a")
  15. add_versions("v1.6.42", "fe89de292e223829859d21990d9c4d6b7e30e295a268f6a53a022611aa98bd67")
  16. add_versions("v1.6.40", "62d25af25e636454b005c93cae51ddcd5383c40fa14aa3dae8f6576feb5692c2")
  17. add_versions("v1.6.37", "ca74a0dace179a8422187671aee97dd3892b53e168627145271cad5b5ac81307")
  18. add_versions("v1.6.36", "5bef5a850a9255365a2dc344671b7e9ef810de491bd479c2506ac3c337e2d84f")
  19. add_versions("v1.6.35", "6d59d6a154ccbb772ec11772cb8f8beb0d382b61e7ccc62435bf7311c9f4b210")
  20. add_versions("v1.6.34", "e45ce5f68b1d80e2cb9a2b601605b374bdf51e1798ef1c2c2bd62131dfcf9eef")
  21. add_versions("v1.2.56", "dadb07d7d96c20f2b53b923b582b078821423f356c0bd52d9a7c14e5e2eafb87")
  22. add_deps("zlib")
  23. if is_plat("linux") then
  24. add_syslinks("m")
  25. end
  26. if is_plat("mingw") and is_subhost("msys") then
  27. add_extsources("pacman::libpng")
  28. elseif is_plat("linux") then
  29. add_extsources("pacman::libpng", "apt::libpng-dev")
  30. elseif is_plat("macosx") then
  31. add_extsources("brew::libpng")
  32. end
  33. on_install(function (package)
  34. local src_include
  35. if package:version() and package:version():le("v1.2.56") then
  36. src_include = [[
  37. add_defines("LIBPNG_NO_MMX")
  38. add_defines("PNG_NO_MMX_CODE")
  39. if is_plat("windows") then
  40. add_defines("PNG_NO_MODULEDEF")
  41. add_defines("_CRT_SECURE_NO_DEPRECATE")
  42. end
  43. ]]
  44. else
  45. src_include = [[
  46. if is_arch("x86", "x64", "i386", "x86_64") then
  47. add_files("intel/*.c")
  48. add_defines("PNG_INTEL_SSE_OPT=1")
  49. add_vectorexts("sse", "sse2")
  50. elseif is_arch("arm.*") then
  51. add_files("arm/*.c")
  52. if is_plat("windows") then
  53. add_defines("PNG_ARM_NEON_OPT=1")
  54. add_defines("PNG_ARM_NEON_IMPLEMENTATION=1")
  55. else
  56. add_files("arm/*.S")
  57. add_defines("PNG_ARM_NEON_OPT=2")
  58. end
  59. elseif is_arch("mips.*") then
  60. add_files("mips/*.c")
  61. add_defines("PNG_MIPS_MSA_OPT=2")
  62. elseif is_arch("ppc.*") then
  63. add_files("powerpc/*.c")
  64. add_defines("PNG_POWERPC_VSX_OPT=2")
  65. end
  66. ]]
  67. if package:is_plat("android") and package:is_arch("armeabi-v7a") then
  68. io.replace("arm/filter_neon.S", ".func", ".hidden", {plain = true})
  69. io.replace("arm/filter_neon.S", ".endfunc", "", {plain = true})
  70. end
  71. os.cp("scripts/pnglibconf.h.prebuilt", "pnglibconf.h")
  72. end
  73. io.writefile("xmake.lua", format([[
  74. add_rules("mode.debug", "mode.release")
  75. add_requires("zlib")
  76. target("png")
  77. set_kind("$(kind)")
  78. add_files("*.c|example.c|pngtest.c")
  79. %s
  80. add_headerfiles("*.h")
  81. add_packages("zlib")
  82. if is_kind("shared") and is_plat("windows") then
  83. add_defines("PNG_BUILD_DLL")
  84. end
  85. ]], src_include))
  86. import("package.tools.xmake").install(package)
  87. end)
  88. on_test(function (package)
  89. assert(package:has_cfuncs("png_create_read_struct", {includes = "png.h"}))
  90. end)