xmake.lua 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. package("field3d")
  2. set_homepage("https://sites.google.com/site/field3d/")
  3. set_description("Field3D is an open source library for storing voxel data.")
  4. set_license("BSD-3-Clause")
  5. add_urls("https://github.com/imageworks/Field3D/archive/refs/tags/$(version).tar.gz")
  6. add_versions("v1.7.3", "b6168bc27abe0f5e9b8d01af7794b3268ae301ac72b753712df93125d51a0fd4")
  7. add_patches("v1.7.3", path.join(os.scriptdir(), "patches", "1.7.3", "msvc.patch"), "330d067c39f084218925667a420e24c38e13fcb1663623218b17ed616bb1ca0e")
  8. add_deps("boost", {configs = {regex = true, thread = true}})
  9. add_deps("hdf5", "openexr 2.x")
  10. if is_plat("windows") then
  11. add_defines("WIN32")
  12. add_syslinks("shlwapi")
  13. end
  14. on_load("windows", function (package)
  15. if not package:config("shared") then
  16. package:add("defines", "FIELD3D_STATIC")
  17. end
  18. end)
  19. on_install("windows", "macosx", "linux", function (package)
  20. if package:is_plat("windows") then
  21. local vs = import("core.tool.toolchain").load("msvc"):config("vs")
  22. if tonumber(vs) < 2019 then
  23. raise("Your compiler is too old to use this library.")
  24. end
  25. end
  26. io.writefile("xmake.lua", [[
  27. add_rules("mode.debug", "mode.release")
  28. set_languages("c++14")
  29. add_requires("boost", {configs = {regex = true, thread = true}})
  30. add_requires("hdf5", "openexr 2.x")
  31. target("Field3D")
  32. set_kind("$(kind)")
  33. add_files("src/*.cpp")
  34. add_packages("boost", "hdf5", "openexr")
  35. add_includedirs("export", "include")
  36. add_headerfiles("export/*.h", "include/*.h", {prefixdir = "Field3D"})
  37. add_defines("H5_USE_110_API")
  38. if is_plat("windows") then
  39. add_defines("WIN32")
  40. add_syslinks("shlwapi")
  41. if is_kind("static") then
  42. add_defines("FIELD3D_STATIC")
  43. else
  44. add_defines("FIELD3D_EXPORT")
  45. end
  46. end
  47. ]])
  48. import("package.tools.xmake").install(package)
  49. end)
  50. on_test(function (package)
  51. assert(package:check_cxxsnippets({test = [[
  52. void test() {
  53. Field3D::V3i res(100, 100, 100);
  54. Field3D::DenseFieldf::Ptr field(new Field3D::DenseFieldf);
  55. field->setSize(res);
  56. }
  57. ]]}, {configs = {languages = "c++14"}, includes = "Field3D/DenseField.h"}))
  58. end)