summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2024-08-19 23:47:28 +0800
committerruki <[email protected]>2024-08-19 23:47:28 +0800
commit248cf58f94a08d45ec6262b84038d1661ec37729 (patch)
tree56c6da15fcc118e598aef6a6451aa6299c777ef7
parente5c5bb03024be9595b18d1e25779f40278f1d812 (diff)
fix packagedeps for meson
-rw-r--r--xmake/modules/package/tools/meson.lua48
1 files changed, 40 insertions, 8 deletions
diff --git a/xmake/modules/package/tools/meson.lua b/xmake/modules/package/tools/meson.lua
index ddac3c5a4..fddf32999 100644
--- a/xmake/modules/package/tools/meson.lua
+++ b/xmake/modules/package/tools/meson.lua
@@ -410,35 +410,67 @@ end
-- get cflags from package deps
function _get_cflags_from_packagedeps(package, opt)
- local result = {}
+ local values
for _, depname in ipairs(opt.packagedeps) do
local dep = type(depname) ~= "string" and depname or package:dep(depname)
if dep then
local fetchinfo = dep:fetch()
if fetchinfo then
- table.join2(result, _map_compflags(package, "cxx", "define", fetchinfo.defines))
- table.join2(result, _map_compflags(package, "cxx", "includedir", fetchinfo.includedirs))
- table.join2(result, _map_compflags(package, "cxx", "sysincludedir", fetchinfo.sysincludedirs))
+ if values then
+ values = values .. fetchinfo
+ else
+ values = fetchinfo
+ end
end
end
end
+ -- @see https://github.com/xmake-io/xmake-repo/pull/4973#issuecomment-2295890196
+ local result = {}
+ if values then
+ if values.defines then
+ table.join2(result, _map_compflags(package, "cxx", "define", values.defines))
+ end
+ if values.includedirs then
+ table.join2(result, _map_compflags(package, "cxx", "includedir", values.includedirs))
+ end
+ if values.sysincludedirs then
+ table.join2(result, _map_compflags(package, "cxx", "sysincludedir", values.sysincludedirs))
+ end
+ end
return _translate_flags(package, result)
end
-- get ldflags from package deps
function _get_ldflags_from_packagedeps(package, opt)
- local result = {}
+ local values
for _, depname in ipairs(opt.packagedeps) do
local dep = type(depname) ~= "string" and depname or package:dep(depname)
if dep then
local fetchinfo = dep:fetch()
if fetchinfo then
- table.join2(result, _map_linkflags(package, "binary", {"cxx"}, "linkdir", fetchinfo.linkdirs))
- table.join2(result, _map_linkflags(package, "binary", {"cxx"}, "link", fetchinfo.links))
- table.join2(result, _map_linkflags(package, "binary", {"cxx"}, "syslink", fetchinfo.syslinks))
+ if values then
+ values = values .. fetchinfo
+ else
+ values = fetchinfo
+ end
end
end
end
+ local result = {}
+ if values then
+ if values.linkdirs then
+ table.join2(result, _map_linkflags(package, "binary", {"cxx"}, "linkdir", values.linkdirs))
+ end
+ if values.links then
+ table.join2(result, _map_linkflags(package, "binary", {"cxx"}, "link", values.links))
+ end
+ if values.syslinks then
+ table.join2(result, _map_linkflags(package, "binary", {"cxx"}, "syslink", values.syslinks))
+ end
+ if values.frameworks then
+ table.join2(result, _map_linkflags(package, "binary", {"cxx"}, "framework", values.frameworks))
+ end
+ end
return _translate_flags(package, result)
end