package("outcome") set_kind("library", {headeronly = true}) set_homepage("https://github.com/ned14/outcome") set_description("Provides very lightweight outcome and result (non-Boost edition)") set_license("Apache-2.0") local versions = { ["v2.2.4"] = "4a36ba9c23b1fd5f001a3eea733a595d7e0eb9fe82ea0af12c103b2246f9421b" } local hashes = { ["v2.2.4"] = "90032f99503b4620f21d8160dc3af06fa343541f" } add_urls("https://github.com/ned14/outcome/releases/download/$(version)", {version = function (version) return format("%s/outcome-v2-all-sources-%s.tar.xz", version, hashes[tostring(version)]) end}) add_urls("https://github.com/ned14/outcome.git") for version, commit in pairs(versions) do add_versions(version, commit) end add_deps("quickcpplib") on_install(function (package) io.writefile("xmake.lua", [[ add_requires("quickcpplib") target("outcome") set_kind("headeronly") add_packages("quickcpplib") add_headerfiles("include/(outcome/**.hpp)") add_headerfiles("include/(outcome/**.ixx)") add_headerfiles("include/(outcome/**.ipp)") add_headerfiles("include/(outcome/**.h)") add_includedirs("include") ]]) import("package.tools.xmake").install(package) end) on_test(function (package) local cxxflags = package:has_tool("cxx", "clang", "clangxx") and {"-fsized-deallocation"} or {} assert(package:check_cxxsnippets({test = [[ #include void test () { using namespace OUTCOME_V2_NAMESPACE; result f(5); outcome m(in_place_type); (void) f; (void) m; } ]]}, {configs = {languages = "c++17", cxxflags = cxxflags}})) end)