summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2021-05-21 00:46:51 +0800
committerruki <[email protected]>2021-05-21 00:46:51 +0800
commit062d5d27e2a410d978397a07db7dd1748cb11a3a (patch)
tree328f0fac4fc0e0210f271def2a8cf90bda7491d7
parente65399c1d6d2a3ecd4f13f82cfe18c70e41182f3 (diff)
improve portage find_package
-rw-r--r--xmake/modules/package/manager/pacman/find_package.lua2
-rw-r--r--xmake/modules/package/manager/portage/find_package.lua23
-rw-r--r--xmake/modules/package/manager/vcpkg/find_package.lua2
3 files changed, 18 insertions, 9 deletions
diff --git a/xmake/modules/package/manager/pacman/find_package.lua b/xmake/modules/package/manager/pacman/find_package.lua
index 8b1b01abe..4b2be0403 100644
--- a/xmake/modules/package/manager/pacman/find_package.lua
+++ b/xmake/modules/package/manager/pacman/find_package.lua
@@ -56,7 +56,7 @@ function main(name, opt)
local pkgconfig_files = {}
for _, line in ipairs(list:split('\n', {plain = true})) do
line = line:trim():split('%s+')[2]
- if not pkgconfig_dir and line:find("/pkgconfig/", 1, true) and line:endswith(".pc") then
+ if line:find("/pkgconfig/", 1, true) and line:endswith(".pc") then
pkgconfig_files[path.basename(line)] = line
end
if line:endswith(".so") or line:endswith(".a") or line:endswith(".lib") then
diff --git a/xmake/modules/package/manager/portage/find_package.lua b/xmake/modules/package/manager/portage/find_package.lua
index cb4e94931..9b2c21340 100644
--- a/xmake/modules/package/manager/portage/find_package.lua
+++ b/xmake/modules/package/manager/portage/find_package.lua
@@ -57,15 +57,13 @@ function main(name, opt)
end
-- parse package files list
- local pkgconfig_dir
- local pkgconfig_name
local linkdirs = {}
local has_includes = false
+ local pkgconfig_files = {}
for _, line in ipairs(list) do
line = line:trim():split('%s+')[1]
- if not pkgconfig_dir and line:find("/pkgconfig/", 1, true) and line:endswith(".pc") then
- pkgconfig_dir = path.directory(line)
- pkgconfig_name = path.basename(line)
+ if line:find("/pkgconfig/", 1, true) and line:endswith(".pc") then
+ pkgconfig_files[path.basename(line)] = line
end
if line:endswith(".so") or line:endswith(".a") or line:endswith(".lib") then
table.insert(linkdirs, path.directory(line))
@@ -74,12 +72,23 @@ function main(name, opt)
end
end
+ -- get pkgconfig file
+ local pkgconfig_file = pkgconfig_files[name]
+ if not pkgconfig_file then
+ for _, file in pairs(pkgconfig_files) do
+ pkgconfig_file = file
+ break
+ end
+ end
+
-- find package
local result = nil
- if pkgconfig_dir then
+ if pkgconfig_file then
+ local pkgconfig_dir = path.directory(pkgconfig_file)
+ local pkgconfig_name = path.basename(pkgconfig_file)
linkdirs = table.unique(linkdirs)
includedirs = table.unique(includedirs)
- result = find_package_from_pkgconfig(pkgconfig_name or name, {configdirs = pkgconfig_dir, linkdirs = linkdirs})
+ result = find_package_from_pkgconfig(pkgconfig_name, {configdirs = pkgconfig_dir, linkdirs = linkdirs})
if not result and has_includes then
-- header only and hidden /usr/include? we need only return empty {}
result = {}
diff --git a/xmake/modules/package/manager/vcpkg/find_package.lua b/xmake/modules/package/manager/vcpkg/find_package.lua
index 34df916af..601b36f48 100644
--- a/xmake/modules/package/manager/vcpkg/find_package.lua
+++ b/xmake/modules/package/manager/vcpkg/find_package.lua
@@ -79,7 +79,7 @@ function main(name, opt)
local arch = opt.arch
local plat = opt.plat
local mode = opt.mode
-
+
-- mapping plat
if plat == "macosx" then
plat = "osx"