xmake.lua 3.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. package("freeimage")
  2. set_homepage("https://sourceforge.net/projects/freeimage/")
  3. set_description("FreeImage is a library project for developers who would like to support popular graphics image formats (PNG, JPEG, TIFF, BMP and others).")
  4. set_license("FreeImage Public License")
  5. add_urls("https://sourceforge.net/projects/freeimage/files/Source%20Distribution/$(version).zip", {version = function (version)
  6. return version .. "/FreeImage" .. version:gsub("%.", "")
  7. end})
  8. add_versions("3.18.0", "f41379682f9ada94ea7b34fe86bf9ee00935a3147be41b6569c9605a53e438fd")
  9. add_patches("3.18.0", "patches/3.18.0/use_external_deps.patch", "0cb578f1cd5a0bb15f3f946b249ab7d537241e20d49c3c5825756eed2f6884ac")
  10. add_patches("3.18.0", "patches/3.18.0/pluginbmp.patch", "2029f95478c8ce77f83671fe8e1889c11caa04eef2584abf0cd0a9f6a7047db0")
  11. add_patches("3.18.0", "patches/3.18.0/pluginjpeg.patch", "e8662a3bcb26194c104de131e621835bdc2ba295a8f9f64cc0e6f1fb66594337")
  12. add_patches("3.18.0", "patches/3.18.0/plugintiff.patch", "0363ba3282a7c556965f530c5899b95db6d4861e3bf6ac7700d4309cd17decfe")
  13. add_patches("3.18.0", "patches/3.18.0/fix_typedef.patch", "1e1fd08ae6d00616c2631a9dddda84ba5725836e0369b88424184a9da3cfac11")
  14. add_configs("rgb", {description = "Use RGB instead of BGR.", default = false})
  15. add_deps("jxrlib", "libjpeg-turbo", "libpng", "libraw <0.20", "libtiff", "openexr <3.0", "openjpeg", "zlib")
  16. add_deps("libwebp", {configs = {libwebpmux = true}})
  17. on_check("windows|x86", function (package)
  18. local msvc = package:toolchain("msvc")
  19. local vs = msvc:config("vs")
  20. if vs and tonumber(vs) < 2019 then
  21. raise("package(freeimage): MSVC 2019 and earlier are not supported.")
  22. end
  23. end)
  24. on_load("windows", function (package)
  25. if not package:config("shared") then
  26. package:add("defines", "FREEIMAGE_LIB")
  27. end
  28. end)
  29. on_install("windows|!arm*", "macosx", "linux", function (package)
  30. io.writefile("xmake.lua", [[
  31. add_rules("mode.debug", "mode.release")
  32. includes("@builtin/check")
  33. add_requires("jxrlib", "libjpeg-turbo", "libpng", "libraw", "libtiff", "libwebp", "openexr", "openjpeg", "zlib")
  34. option("rgb", {default = false})
  35. target("freeimage")
  36. set_kind("$(kind)")
  37. set_languages("c++11")
  38. add_includedirs("Source", "Source/FreeImage", "Source/FreeImageToolkit", "Source/Metadata")
  39. add_headerfiles("Source/FreeImage.h", "Source/FreeImageIO.h")
  40. add_files("Source/FreeImage/*.cpp", "Source/FreeImage/*.c")
  41. add_files("Source/FreeImageToolkit/*.cpp", "Source/Metadata/*.cpp")
  42. check_cincludes("Z_HAVE_UNISTD_H", "unistd.h")
  43. add_packages("jxrlib", "libjpeg-turbo", "libpng", "libraw", "libtiff", "libwebp", "openexr", "openjpeg", "zlib")
  44. if has_config("rgb") then
  45. add_defines("FREEIMAGE_COLORORDER=1")
  46. end
  47. if is_plat("windows") then
  48. add_files("FreeImage.rc")
  49. add_defines("WIN32", "_CRT_SECURE_NO_DEPRECATE")
  50. add_defines(is_kind("static") and "FREEIMAGE_LIB" or "FREEIMAGE_EXPORTS")
  51. else
  52. add_defines("__ANSI__")
  53. end
  54. ]])
  55. import("package.tools.xmake").install(package, {rgb = package:config("rgb")})
  56. end)
  57. on_test(function (package)
  58. assert(package:has_cfuncs("FreeImage_Initialise", {includes = "FreeImage.h"}))
  59. end)