summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2021-08-06 19:59:26 +0800
committerGitHub <[email protected]>2021-08-06 19:59:26 +0800
commite81a667584eba128b74f754df45b65d3f7857594 (patch)
tree4d54265552cb0805e1a855a93bde6dacb63e3f15
parent776f5e79c7396497ad0bb2f45cf939f5d4f9ddca (diff)
parentd467cd6844b9736418e1f447d8c01307044e0e8d (diff)
Merge pull request #1551 from xmake-io/find
improve xmake::find_package
-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