diff options
| author | ruki <[email protected]> | 2021-05-21 00:46:51 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2021-05-21 00:46:51 +0800 |
| commit | 062d5d27e2a410d978397a07db7dd1748cb11a3a (patch) | |
| tree | 328f0fac4fc0e0210f271def2a8cf90bda7491d7 | |
| parent | e65399c1d6d2a3ecd4f13f82cfe18c70e41182f3 (diff) | |
improve portage find_package
| -rw-r--r-- | xmake/modules/package/manager/pacman/find_package.lua | 2 | ||||
| -rw-r--r-- | xmake/modules/package/manager/portage/find_package.lua | 23 | ||||
| -rw-r--r-- | xmake/modules/package/manager/vcpkg/find_package.lua | 2 |
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" |
