summaryrefslogtreecommitdiff
path: root/xmake/modules
diff options
context:
space:
mode:
authorruki <[email protected]>2021-08-06 00:50:23 +0800
committerruki <[email protected]>2021-08-06 00:50:23 +0800
commitd467cd6844b9736418e1f447d8c01307044e0e8d (patch)
treeacf126c4bf09de794f36487f3b9e1393087dd2f3 /xmake/modules
parenta959af20d2a34038efb13053c112ef1d55084081 (diff)
improve find_package
Diffstat (limited to 'xmake/modules')
-rw-r--r--xmake/modules/package/manager/xmake/find_package.lua34
1 files changed, 14 insertions, 20 deletions
diff --git a/xmake/modules/package/manager/xmake/find_package.lua b/xmake/modules/package/manager/xmake/find_package.lua
index dab32de33..9f565c2b1 100644
--- a/xmake/modules/package/manager/xmake/find_package.lua
+++ b/xmake/modules/package/manager/xmake/find_package.lua
@@ -73,38 +73,32 @@ function _find_package_from_repo(name, opt)
local links = {}
local linkdirs = {}
local libfiles = {}
- for _, linkdir in ipairs(vars.linkdirs) do
- table.insert(linkdirs, path.join(installdir, linkdir))
- end
if vars.links then
table.join2(links, vars.links)
- end
- if not vars.linkdirs or not vars.links then
+ else
+ -- we scan links automatically
local found = false
- for _, file in ipairs(os.files(path.join(installdir, "lib", "*"))) do
- if file:endswith(".lib") or file:endswith(".a") then
- found = true
- if not vars.linkdirs then
- table.insert(linkdirs, path.directory(file))
- end
- if not vars.links then
+ for _, libdir in ipairs(vars.linkdirs or "lib") do
+ for _, file in ipairs(os.files(path.join(installdir, libdir, "*"))) do
+ if file:endswith(".lib") or file:endswith(".a") then
+ found = true
table.insert(links, target.linkname(path.filename(file)))
end
end
- end
- if not found then
- for _, file in ipairs(os.files(path.join(installdir, "lib", "*"))) do
- if file:endswith(".so") or file:endswith(".dylib") then
- if not vars.linkdirs then
- table.insert(linkdirs, path.directory(file))
- end
- if not vars.links then
+ if not found then
+ for _, file in ipairs(os.files(path.join(installdir, "lib", "*"))) do
+ if file:endswith(".so") or file:endswith(".dylib") then
table.insert(links, target.linkname(path.filename(file)))
end
end
end
end
end
+ if #links > 0 then
+ for _, libdir in ipairs(vars.linkdirs or "lib") do
+ table.insert(linkdirs, path.join(installdir, libdir))
+ end
+ end
if opt.plat == "windows" then
for _, file in ipairs(os.files(path.join(installdir, "lib", "*.dll"))) do
result.shared = true