summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--xmake/rules/rust/xmake.lua12
-rw-r--r--xmake/templates/rust/shared/project/xmake.lua8
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}