xmake.lua 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. package("outcome")
  2. set_kind("library", {headeronly = true})
  3. set_homepage("https://github.com/ned14/outcome")
  4. set_description("Provides very lightweight outcome<T> and result<T> (non-Boost edition)")
  5. set_license("Apache-2.0")
  6. local versions = {
  7. ["v2.2.4"] = "4a36ba9c23b1fd5f001a3eea733a595d7e0eb9fe82ea0af12c103b2246f9421b"
  8. }
  9. local hashes = {
  10. ["v2.2.4"] = "90032f99503b4620f21d8160dc3af06fa343541f"
  11. }
  12. add_urls("https://github.com/ned14/outcome/releases/download/$(version)", {version = function (version)
  13. return format("%s/outcome-v2-all-sources-%s.tar.xz", version, hashes[tostring(version)])
  14. end})
  15. add_urls("https://github.com/ned14/outcome.git")
  16. for version, commit in pairs(versions) do
  17. add_versions(version, commit)
  18. end
  19. add_deps("quickcpplib")
  20. on_install(function (package)
  21. io.writefile("xmake.lua", [[
  22. add_requires("quickcpplib")
  23. target("outcome")
  24. set_kind("headeronly")
  25. add_packages("quickcpplib")
  26. add_headerfiles("include/(outcome/**.hpp)")
  27. add_headerfiles("include/(outcome/**.ixx)")
  28. add_headerfiles("include/(outcome/**.ipp)")
  29. add_headerfiles("include/(outcome/**.h)")
  30. add_includedirs("include")
  31. ]])
  32. import("package.tools.xmake").install(package)
  33. end)
  34. on_test(function (package)
  35. local cxxflags = package:has_tool("cxx", "clang", "clangxx") and {"-fsized-deallocation"} or {}
  36. assert(package:check_cxxsnippets({test = [[
  37. #include <outcome/outcome.hpp>
  38. void test () {
  39. using namespace OUTCOME_V2_NAMESPACE;
  40. result<int> f(5);
  41. outcome<void> m(in_place_type<void>);
  42. (void) f;
  43. (void) m;
  44. }
  45. ]]}, {configs = {languages = "c++17", cxxflags = cxxflags}}))
  46. end)