xmake.lua 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. package("yas")
  2. set_kind("library", {headeronly = true})
  3. set_homepage("https://github.com/niXman/yas")
  4. set_description("Yet Another Serialization")
  5. add_urls("https://github.com/niXman/yas.git")
  6. add_versions("2023.09.13", "7c5ced1d940ddc6826cf537468e65ea1f592bfe4")
  7. on_install(function (package)
  8. io.replace("include/yas/detail/config/endian.hpp",
  9. "|| defined(__ARM_ARCH_7S__)",
  10. "|| defined(__ARM_ARCH_7S__) || defined(_M_ARM64)", {plain = true})
  11. os.cp("include", package:installdir())
  12. end)
  13. on_test(function (package)
  14. assert(package:check_cxxsnippets({test = [[
  15. #include <yas/serialize.hpp>
  16. #include <yas/std_types.hpp>
  17. void test() {
  18. int a = 3, aa{};
  19. short b = 4, bb{};
  20. float c = 3.14, cc{};
  21. constexpr std::size_t flags =
  22. yas::mem // IO type
  23. |yas::json; // IO format
  24. auto buf = yas::save<flags>(
  25. YAS_OBJECT("myobject", a, b, c)
  26. );
  27. yas::load<flags>(buf,
  28. YAS_OBJECT_NVP("myobject"
  29. ,("a", aa)
  30. ,("b", bb)
  31. ,("c", cc)
  32. )
  33. );
  34. }
  35. ]]}, {configs = {languages = "c++14"}}))
  36. end)