xmake.lua 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. package("libpng")
  2. set_homepage("http://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. add_urls("https://github.com/glennrp/libpng.git")
  7. add_versions("v1.6.42", "fe89de292e223829859d21990d9c4d6b7e30e295a268f6a53a022611aa98bd67")
  8. add_versions("v1.6.40", "62d25af25e636454b005c93cae51ddcd5383c40fa14aa3dae8f6576feb5692c2")
  9. add_versions("v1.6.37", "ca74a0dace179a8422187671aee97dd3892b53e168627145271cad5b5ac81307")
  10. add_versions("v1.6.36", "5bef5a850a9255365a2dc344671b7e9ef810de491bd479c2506ac3c337e2d84f")
  11. add_versions("v1.6.35", "6d59d6a154ccbb772ec11772cb8f8beb0d382b61e7ccc62435bf7311c9f4b210")
  12. add_versions("v1.6.34", "e45ce5f68b1d80e2cb9a2b601605b374bdf51e1798ef1c2c2bd62131dfcf9eef")
  13. add_deps("zlib")
  14. if is_plat("linux") then
  15. add_syslinks("m")
  16. end
  17. if is_plat("mingw") and is_subhost("msys") then
  18. add_extsources("pacman::libpng")
  19. elseif is_plat("linux") then
  20. add_extsources("pacman::libpng", "apt::libpng-dev")
  21. elseif is_plat("macosx") then
  22. add_extsources("brew::libpng")
  23. end
  24. on_install(function (package)
  25. io.writefile("xmake.lua", [[
  26. add_rules("mode.debug", "mode.release")
  27. add_requires("zlib")
  28. target("png")
  29. set_kind("$(kind)")
  30. add_files("*.c|example.c|pngtest.c")
  31. if is_arch("x86", "x64", "i386", "x86_64") then
  32. add_files("intel/*.c")
  33. add_defines("PNG_INTEL_SSE_OPT=1")
  34. add_vectorexts("sse", "sse2")
  35. elseif is_arch("arm.*") then
  36. add_files("arm/*.c")
  37. if is_plat("windows") then
  38. add_defines("PNG_ARM_NEON_OPT=1")
  39. add_defines("PNG_ARM_NEON_IMPLEMENTATION=1")
  40. else
  41. add_files("arm/*.S")
  42. add_defines("PNG_ARM_NEON_OPT=2")
  43. end
  44. elseif is_arch("mips.*") then
  45. add_files("mips/*.c")
  46. add_defines("PNG_MIPS_MSA_OPT=2")
  47. elseif is_arch("ppc.*") then
  48. add_files("powerpc/*.c")
  49. add_defines("PNG_POWERPC_VSX_OPT=2")
  50. end
  51. add_headerfiles("*.h")
  52. add_packages("zlib")
  53. if is_kind("shared") and is_plat("windows") then
  54. add_defines("PNG_BUILD_DLL")
  55. end
  56. ]])
  57. local configs = {}
  58. if package:is_plat("android") and package:is_arch("armeabi-v7a") then
  59. io.replace("arm/filter_neon.S", ".func", ".hidden", {plain = true})
  60. io.replace("arm/filter_neon.S", ".endfunc", "", {plain = true})
  61. end
  62. os.cp("scripts/pnglibconf.h.prebuilt", "pnglibconf.h")
  63. import("package.tools.xmake").install(package, configs)
  64. end)
  65. on_test(function (package)
  66. assert(package:has_cfuncs("png_create_read_struct", {includes = "png.h"}))
  67. end)