From fe3a4b2a9fa7e75a5ba760401e19b312028d27ee Mon Sep 17 00:00:00 2001 From: IMXEren <96839938+IMXEren@users.noreply.github.com> Date: Sun, 6 Jul 2025 23:14:48 +0530 Subject: refactor: simplify rust shared lib template and use rule to add libstd in env --- xmake/rules/rust/xmake.lua | 12 ++++++++++++ xmake/templates/rust/shared/project/xmake.lua | 8 -------- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/xmake/rules/rust/xmake.lua b/xmake/rules/rust/xmake.lua index 56d54fb38..8f62392b9 100644 --- a/xmake/rules/rust/xmake.lua +++ b/xmake/rules/rust/xmake.lua @@ -97,6 +97,18 @@ rule("rust.build") end) on_build("build.target") + before_run(function (target) + import("lib.detect.find_tool") + + -- Make sure libstd shared library is available + local rc = find_tool("rustc") + assert(rc, "rustc not found. Failed to add libstd in env") + local outdata, errdata = os.iorunv(rc.program, {"--print=sysroot"}) + assert(not errdata or errdata == "", "failed to find rust sysroot:\n" .. errdata) + local libstd = path.join(outdata:trim(), "bin") + os.addenvs({PATH = libstd, LD_LIBRARY_PATH = libstd, DYLD_LIBRARY_PATH = libstd}) + end) + rule("rust") add_deps("rust.build") add_deps("utils.inherit.links") diff --git a/xmake/templates/rust/shared/project/xmake.lua b/xmake/templates/rust/shared/project/xmake.lua index 12b177466..d20b6f5d7 100644 --- a/xmake/templates/rust/shared/project/xmake.lua +++ b/xmake/templates/rust/shared/project/xmake.lua @@ -7,12 +7,4 @@ target("${TARGETNAME}_demo") add_deps("foo") add_files("src/main.rs") - --- Make sure libstd shared library is available - before_run(function (target) - local outdata, errdata = os.iorun("rustc --print=sysroot") - assert(not errdata or errdata == "", "failed to find rust sysroot:\n" .. errdata) - local libstd = path.join(outdata:trim(), "bin") - os.addenvs({PATH = libstd, LD_LIBRARY_PATH = libstd, DYLD_LIBRARY_PATH = libstd}) - end) - ${FAQ} -- cgit v1.3.1