xmake.lua 3.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. package("xtensor")
  2. set_kind("library", {headeronly = true})
  3. set_homepage("https://github.com/xtensor-stack/xtensor/")
  4. set_description("Multi-dimensional arrays with broadcasting and lazy computing")
  5. set_license("BSD-3-Clause")
  6. add_urls("https://github.com/xtensor-stack/xtensor/archive/refs/tags/$(version).tar.gz",
  7. "https://github.com/xtensor-stack/xtensor.git")
  8. add_versions("0.27.1", "117c192ae3b7c37c0156dedaa88038e0599a6b264666c3c6c2553154b500fe23")
  9. add_versions("0.27.0", "9ca1743048492edfcc841bbe01f58520ff9c595ec587c0e7dc2fc39deeef3e04")
  10. add_versions("0.26.0", "f5f42267d850f781d71097b50567a480a82cd6875a5ec3e6238555e0ef987dc6")
  11. add_versions("0.25.0", "32d5d9fd23998c57e746c375a544edf544b74f0a18ad6bc3c38cbba968d5e6c7")
  12. add_versions("0.24.7", "0fbbd524dde2199b731b6af99b16063780de6cf1d0d6cb1f3f4d4ceb318f3106")
  13. add_versions("0.24.3", "3acde856b9fb8cf4e2a7b66726da541275d40ab9b002e618ad985ab97f08ca4f")
  14. add_versions("0.24.1", "dd1bf4c4eba5fbcf386abba2627fcb4a947d14a806c33fde82d0cc1194807ee4")
  15. add_versions("0.24.0", "37738aa0865350b39f048e638735c05d78b5331073b6329693e8b8f0902df713")
  16. add_versions("0.23.10", "2e770a6d636962eedc868fef4930b919e26efe783cd5d8732c11e14cf72d871c")
  17. add_patches("0.25.0", "patches/0.25.0/clang19_build.patch", "b40ef789b39dad40d8f97b73793a5d0377e6165f99a49a8fddde45ff66ed87a2")
  18. add_configs("simd", {description = "Enable SIMD acceleration ", default = true, type = "boolean"})
  19. add_configs("tbb", {description = "Enable parallelization using intel TBB", default = false, type = "boolean"})
  20. add_configs("openmp", {description = "Enable parallelization using OpenMP", default = false, type = "boolean"})
  21. add_deps("cmake")
  22. on_load(function (package)
  23. local version = package:version()
  24. if version and version:ge("0.26.0") then
  25. package:add("deps", "xtl ^0.8.0")
  26. else
  27. package:add("deps", "xtl ^0.7.0")
  28. end
  29. if package:config("simd") then
  30. if version and version:ge("0.26.0") then
  31. package:add("deps", "xsimd ^13.2.0")
  32. else
  33. package:add("deps", "xsimd ^11.0.0")
  34. end
  35. end
  36. if package:config("tbb") then
  37. package:add("deps", "tbb")
  38. end
  39. if package:config("openmp") then
  40. package:add("deps", "openmp")
  41. end
  42. end)
  43. on_install("windows", "macosx", "linux", "mingw@windows", function (package)
  44. local configs = {}
  45. table.insert(configs, "-DXTENSOR_USE_XSIMD=" .. (package:config("simd") and "ON" or "OFF"))
  46. table.insert(configs, "-DXTENSOR_USE_TBB=" .. (package:config("tbb") and "ON" or "OFF"))
  47. table.insert(configs, "-DXTENSOR_USE_OPENMP=" .. (package:config("openmp") and "ON" or "OFF"))
  48. import("package.tools.cmake").install(package, configs, {packagedeps = "xsimd"})
  49. end)
  50. on_test(function (package)
  51. local version = package:version()
  52. local includes, languages
  53. if version and version:ge("0.26.0") then
  54. if version:ge("0.27.0") then
  55. languages = "c++20"
  56. else
  57. languages = "c++17"
  58. end
  59. includes = {"xtensor/containers/xarray.hpp", "xtensor/views/xview.hpp"}
  60. else
  61. languages = "c++14"
  62. includes = {"xtensor/xarray.hpp", "xtensor/xview.hpp"}
  63. end
  64. assert(package:check_cxxsnippets({test = [[
  65. void test() {
  66. xt::xarray<double> arr1{{1.0,2.0,3.0},{2.0,5.0,7.0},{2.0,5.0,7.0}};
  67. xt::xarray<double> arr2{5.0,6.0,7.0};
  68. xt::xarray<double> res = xt::view(arr1, 1) + arr2;
  69. }
  70. ]]}, {configs = {languages = languages}, includes = includes}))
  71. end)