summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2024-09-26 16:50:09 +0800
committerGitHub <[email protected]>2024-09-26 16:50:09 +0800
commitf7124e1da63d632b795558cb7c5c40c4a47d15bc (patch)
tree5d088619d520bb0e64491354d42dafcf02832cef
parent74a69b0beab63ea29471bac920ad6d58fc2ca06d (diff)
parent4b3af02d37c3fc2f277dc396304587b64e1420c5 (diff)
Merge pull request #5666 from xmake-io/librarydep
use librarydep
-rw-r--r--xmake/core/package/package.lua14
-rw-r--r--xmake/modules/package/tools/autoconf.lua4
-rw-r--r--xmake/modules/package/tools/cmake.lua4
-rw-r--r--xmake/modules/package/tools/meson.lua4
4 files changed, 20 insertions, 6 deletions
diff --git a/xmake/core/package/package.lua b/xmake/core/package/package.lua
index 4a26e170a..ce8333c0f 100644
--- a/xmake/core/package/package.lua
+++ b/xmake/core/package/package.lua
@@ -433,6 +433,20 @@ function _instance:plaindeps()
return self._PLAINDEPS
end
+-- get library dep
+function _instance:librarydep(name, opt)
+ local key = "librarydeps_map_" .. ((opt and opt.private) and "private" or "")
+ local librarydeps_map = self:_memcache():get(key)
+ if not librarydeps_map then
+ librarydeps_map = {}
+ for _, dep in ipairs(self:librarydeps()) do
+ librarydeps_map[dep:name()] = dep
+ end
+ self:_memcache():set(key, librarydeps_map)
+ end
+ return librarydeps_map[name]
+end
+
-- get library deps with correct link order
function _instance:librarydeps(opt)
if opt and opt.private then
diff --git a/xmake/modules/package/tools/autoconf.lua b/xmake/modules/package/tools/autoconf.lua
index af50784fb..58ea2e4c2 100644
--- a/xmake/modules/package/tools/autoconf.lua
+++ b/xmake/modules/package/tools/autoconf.lua
@@ -176,7 +176,7 @@ end
function _get_cflags_from_packagedeps(package, opt)
local values
for _, depname in ipairs(opt.packagedeps) do
- local dep = type(depname) ~= "string" and depname or package:dep(depname)
+ local dep = type(depname) ~= "string" and depname or package:librarydep(depname)
if dep then
local fetchinfo = dep:fetch()
if fetchinfo then
@@ -208,7 +208,7 @@ end
function _get_ldflags_from_packagedeps(package, opt)
local values
for _, depname in ipairs(opt.packagedeps) do
- local dep = type(depname) ~= "string" and depname or package:dep(depname)
+ local dep = type(depname) ~= "string" and depname or package:librarydep(depname)
if dep then
local fetchinfo = dep:fetch()
if fetchinfo then
diff --git a/xmake/modules/package/tools/cmake.lua b/xmake/modules/package/tools/cmake.lua
index e0535bdac..d4eeabe56 100644
--- a/xmake/modules/package/tools/cmake.lua
+++ b/xmake/modules/package/tools/cmake.lua
@@ -119,7 +119,7 @@ end
function _get_cflags_from_packagedeps(package, opt)
local values
for _, depname in ipairs(opt.packagedeps) do
- local dep = type(depname) ~= "string" and depname or package:dep(depname)
+ local dep = type(depname) ~= "string" and depname or package:librarydep(depname)
if dep then
local fetchinfo = dep:fetch()
if fetchinfo then
@@ -151,7 +151,7 @@ end
function _get_ldflags_from_packagedeps(package, opt)
local values
for _, depname in ipairs(opt.packagedeps) do
- local dep = type(depname) ~= "string" and depname or package:dep(depname)
+ local dep = type(depname) ~= "string" and depname or package:librarydep(depname)
if dep then
local fetchinfo = dep:fetch()
if fetchinfo then
diff --git a/xmake/modules/package/tools/meson.lua b/xmake/modules/package/tools/meson.lua
index 21ab6faf1..1668d2bfe 100644
--- a/xmake/modules/package/tools/meson.lua
+++ b/xmake/modules/package/tools/meson.lua
@@ -396,7 +396,7 @@ end
function _get_cflags_from_packagedeps(package, opt)
local values
for _, depname in ipairs(opt.packagedeps) do
- local dep = type(depname) ~= "string" and depname or package:dep(depname)
+ local dep = type(depname) ~= "string" and depname or package:librarydep(depname)
if dep then
local fetchinfo = dep:fetch()
if fetchinfo then
@@ -428,7 +428,7 @@ end
function _get_ldflags_from_packagedeps(package, opt)
local values
for _, depname in ipairs(opt.packagedeps) do
- local dep = type(depname) ~= "string" and depname or package:dep(depname)
+ local dep = type(depname) ~= "string" and depname or package:librarydep(depname)
if dep then
local fetchinfo = dep:fetch()
if fetchinfo then