xmake.lua 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. package("imagemagick")
  2. set_homepage("https://imagemagick.org/script/index.php")
  3. set_description("ImageMagick is a FOSS software suite for modifying images. This does NOT provide any of the utilities. It installs the C/C++ Libraries.")
  4. set_license("Apache-2.0")
  5. add_urls("https://download.imagemagick.org/ImageMagick/download/releases/ImageMagick-$(version).tar.gz")
  6. add_versions("7.0.11-13", "6c162d7cbd7b80968a6d083d39eb18d9c9bbd49f500f7f49c9a5dcc0fc36a03b")
  7. add_versions("7.1.0-4", "94a7a52f633891cc29eefc49da95408ed68c64c3690402dc401cd0478d2bd91f")
  8. add_configs("bzlib", {description = "Enable bzip2 support.", default = false, type = "boolean"})
  9. add_configs("exr", {description = "Enable exr support.", default = false, type = "boolean"})
  10. add_configs("fftw", {description = "Enable fftw support.", default = false, type = "boolean"})
  11. add_configs("fontconfig", {description = "Enable fontconfig support.", default = false, type = "boolean"})
  12. add_configs("freetype", {description = "Enable freetype support.", default = false, type = "boolean"})
  13. add_configs("jpeg", {description = "Enable jpeg support through libjpeg.", default = true, type = "boolean"})
  14. add_configs("lzma", {description = "Enable LZMA support.", default = false, type = "boolean"})
  15. add_configs("openjpeg", {description = "Enable jpeg support through openjpeg.", default = false, type = "boolean"})
  16. add_configs("png", {description = "Enable png support.", default = true, type = "boolean"})
  17. add_configs("raw", {description = "Enable raw image support.", default = false, type = "boolean"})
  18. add_configs("tiff", {description = "Enable tiff support.", default = false, type = "boolean"})
  19. add_configs("threads", {description = "Enable threading support.", default = false})
  20. add_configs("xml", {description = "Enable XML support.", default = false, type = "boolean"})
  21. add_configs("webp", {description = "Enable webp support.", default = false, type = "boolean"})
  22. add_includedirs("include/ImageMagick-7/")
  23. add_links("MagickWand-7.Q16", "MagickCore-7.Q16", "Magick++-7.Q16")
  24. on_load(function(package)
  25. local configdeps = {bzlib = "bzip2",
  26. exr = "openexr",
  27. ffmpeg = "ffmpeg",
  28. fontconfig = "fontconfig",
  29. freetype = "freetype",
  30. fftw = "fftw",
  31. jpeg = "libjpeg",
  32. lzma = "lzma",
  33. openjpeg = "openjpeg",
  34. png = "libpng",
  35. raw = "libraw",
  36. tiff = "libtiff",
  37. xml = "libxml2",
  38. webp = "libwebp"}
  39. for name, dep in pairs(configdeps) do
  40. if package:config(name) then
  41. package:add("deps", dep)
  42. if name == "tiff" then
  43. package:add("deps", "zlib")
  44. end
  45. end
  46. end
  47. if package:config("threads") and package:is_plat("linux") then
  48. package:add("syslinks", "pthread")
  49. end
  50. if package:is_plat("linux") then
  51. package:add("deps", "pkg-config")
  52. end
  53. if package:is_plat("bsd") then
  54. package:add("deps", "pkgconf")
  55. local pkgconf = package:find_tool("pkgconf")
  56. if pkgconf then
  57. package:addenv("PKG_CONFIG", pkgconf.program)
  58. end
  59. end
  60. end)
  61. on_install("linux", "macosx", "bsd", function(package)
  62. local configs = {"--without-utilities",
  63. "--without-x",
  64. "--without-djvu",
  65. "--without-jbig",
  66. "--disable-openmp",
  67. "--without-perl",
  68. "--without-lcms",
  69. "--disable-hdri",
  70. "--without-lqr"}
  71. for name, enabled in pairs(package:configs()) do
  72. if not package:extraconf("configs", name, "builtin") then
  73. if enabled then
  74. if name == "openjpeg" then
  75. table.insert(configs, "--with-" .. "openjp2")
  76. elseif name == "exr" then
  77. table.insert(configs, "--with-" .. "openexr")
  78. else
  79. table.insert(configs, "--with-" .. name)
  80. end
  81. else
  82. if name == "openjpeg" then
  83. table.insert(configs, "--without-" .. "openjp2")
  84. elseif name == "exr" then
  85. table.insert(configs, "--without-" .. "openexr")
  86. else
  87. table.insert(configs, "--without-" .. name)
  88. end
  89. end
  90. end
  91. end
  92. table.insert(configs, "--enable-shared=" .. (package:config("shared") and "yes" or "no"))
  93. table.insert(configs, "--enable-static=" .. (package:config("shared") and "no" or "yes"))
  94. if package:config("pic") ~= false then
  95. table.insert(configs, "--with-pic")
  96. end
  97. if not package:config("threads") then
  98. table.insert(configs, "--without-threads")
  99. end
  100. import("package.tools.autoconf").install(package, configs)
  101. end)
  102. on_test(function (package)
  103. assert(package:has_cfuncs("MagickWandGenesis", {includes = "MagickWand/MagickWand.h"}))
  104. end)