diff --git a/packages/r/randx/xmake.lua b/packages/r/randx/xmake.lua new file mode 100644 index 00000000000..0ef205e03ae --- /dev/null +++ b/packages/r/randx/xmake.lua @@ -0,0 +1,39 @@ +package("randx") + set_kind("library", {headeronly = true}) + set_homepage("https://github.com/lidaixingchen/RandX") + set_description("Modern, fast, with header-only C++ pseudo-random number generator and distribution library (C++17/C++23).") + set_license("MIT") + + add_urls("https://github.com/lidaixingchen/RandX/archive/refs/tags/v$(version).tar.gz") + + add_versions("1.4.3", "2227db348490f72e0aa8aaff923b24b773dec268656ef60bec3fe997e2fbac61") + add_versions("1.4.2", "25badb73e98b2e83456bea63bb60b1f335091576ec1d1c06ec2649ed92fc84bf") + add_versions("1.4.0", "ecf611c6f340986df2abf3191def2222a3287f5e20ec4280c88996770a95eec7") + + if is_plat("windows", "mingw") then + add_syslinks("bcrypt") + elseif is_plat("macosx", "iphoneos") then + add_frameworks("Security") + end + + on_install(function (package) + io.replace("RandX_Cpp17.hpp", [[# pragma once]], [[# pragma once +#if defined(__ANDROID__) && __ANDROID_API__ < 28 +# include +# include +# define getrandom(buf, buflen, flags) syscall(SYS_getrandom, buf, buflen, flags) +#endif]], {plain = true}) + os.cp("RandX.hpp", package:installdir("include")) + os.cp("RandX_Cpp17.hpp", package:installdir("include")) + end) + + on_test(function (package) + assert(package:check_cxxsnippets({test = [[ + #include + #include + static void test() { + std::uint64_t v = RandX::RandInt(0, 1000); + (void)v; + } + ]]}, {configs = {languages = "c++17"}})) + end)