summaryrefslogtreecommitdiff
path: root/xmake/modules/package/manager/cargo/find_package.lua
diff options
context:
space:
mode:
authorw568w <[email protected]>2023-08-09 11:06:06 +0800
committerw568w <[email protected]>2023-08-09 11:06:06 +0800
commitb156158b59dd2ed5cd825d6ac98b5222c75d19fd (patch)
tree78d004dde19d9fa937f6e2219bf50db88dc6d1fa /xmake/modules/package/manager/cargo/find_package.lua
parent0b82a790bad9538e09102afc31fc29c1e9bac826 (diff)
fix local function style and extract the target check function
Diffstat (limited to 'xmake/modules/package/manager/cargo/find_package.lua')
-rw-r--r--xmake/modules/package/manager/cargo/find_package.lua22
1 files changed, 12 insertions, 10 deletions
diff --git a/xmake/modules/package/manager/cargo/find_package.lua b/xmake/modules/package/manager/cargo/find_package.lua
index b01ce53f2..0dcb835bb 100644
--- a/xmake/modules/package/manager/cargo/find_package.lua
+++ b/xmake/modules/package/manager/cargo/find_package.lua
@@ -27,6 +27,7 @@ import("core.project.config")
import("core.project.target")
import("lib.detect.find_tool")
import("lib.detect.find_file")
+import("private.tools.rust.check_target")
-- get cargo registry directory
function _get_cargo_registrydir()
@@ -82,13 +83,22 @@ function _get_libname(name)
return "lib" .. name:gsub("-", "_")
end
+function _get_package_from_deps(name, deps)
+ for _, dep in ipairs(deps) do
+ if dep.name == name then
+ return dep
+ end
+ end
+ return nil
+end
+
-- get the name set of libraries
function _get_names_of_libraries(name, opt, configs)
local names = hashset.new()
if configs.cargo_toml then
local cargo = assert(find_tool("cargo"), "cargo not found! Please ensure Rust has been installed")
local cargo_args = {"metadata", "--format-version", "1", "--manifest-path", configs.cargo_toml, "--color", "never"}
- if opt.arch then
+ if check_target(opt.arch, true) then
table.insert(cargo_args, "--filter-platform")
table.insert(cargo_args, opt.arch)
end
@@ -111,16 +121,8 @@ function _get_names_of_libraries(name, opt, configs)
local direct_deps = metadata_no_deps.packages[1].dependencies
-- get the intersection of the direct dependencies and all dependencies for the target platform
- local function _get_deps(name, deps)
- for _, dep in ipairs(deps) do
- if dep.name == name then
- return dep
- end
- end
- return nil
- end
for _, dep in ipairs(direct_deps) do
- local dep_metadata = _get_deps(dep.name, metadata.packages)
+ local dep_metadata = _get_package_from_deps(dep.name, metadata.packages)
if dep_metadata then
names:insert(_get_libname(dep.name))
end