summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2024-10-29 22:31:14 +0800
committerruki <[email protected]>2024-10-29 22:31:14 +0800
commit796a3b9d5004d820e167b445c2f15a3d0c4fcc12 (patch)
tree03eb10cd7ec537659e06ac306ebd88c1f1747f4c
parentdab3f1080222305fa91dd8c6b9b213b224a0e051 (diff)
deduplicate rust libs
-rw-r--r--xmake/modules/package/manager/cargo/find_package.lua4
1 files changed, 3 insertions, 1 deletions
diff --git a/xmake/modules/package/manager/cargo/find_package.lua b/xmake/modules/package/manager/cargo/find_package.lua
index 1090f2049..cc66f63df 100644
--- a/xmake/modules/package/manager/cargo/find_package.lua
+++ b/xmake/modules/package/manager/cargo/find_package.lua
@@ -156,6 +156,7 @@ function main(name, opt)
else
libfiles_native_host = os.files(path.join(librarydir_host, "*.so"))
end
+ local libraries_set = {}
for _, libraryfile in ipairs(table.join(libfiles or {}, libfiles_native or {}, libfiles_native_host)) do
local filename = path.filename(libraryfile)
local libraryname = filename:split('-', {plain = true})[1]
@@ -163,11 +164,12 @@ function main(name, opt)
if not libraryname:startswith("lib") then
libraryname = "lib" .. libraryname
end
- if names:has(libraryname) then
+ if names:has(libraryname) and not libraries_set[libraryname] then
frameworkdirs = frameworkdirs or {}
frameworks = frameworks or {}
table.insert(frameworkdirs, path.directory(libraryfile))
table.insert(frameworks, libraryfile)
+ libraries_set[libraryname] = true
end
end
local result