summaryrefslogtreecommitdiff
path: root/xmake/modules/package/tools/cmake.lua
diff options
context:
space:
mode:
Diffstat (limited to 'xmake/modules/package/tools/cmake.lua')
-rw-r--r--xmake/modules/package/tools/cmake.lua28
1 files changed, 24 insertions, 4 deletions
diff --git a/xmake/modules/package/tools/cmake.lua b/xmake/modules/package/tools/cmake.lua
index 93929c764..882f029cf 100644
--- a/xmake/modules/package/tools/cmake.lua
+++ b/xmake/modules/package/tools/cmake.lua
@@ -34,14 +34,15 @@ function _translate_windows_bin_path(bin_path)
end
end
--- get includedirs
-function _get_cxflags_from_includedirs(package, opt)
+-- get cflags from package deps
+function _get_cflags_from_packagedeps(package, opt)
local result = {}
for _, depname in ipairs(opt.packagedeps) do
local dep = package:dep(depname)
if dep then
local fetchinfo = dep:fetch()
if fetchinfo then
+ table.join2(result, compiler.map_flags("cxx", "define", fetchinfo.includedirs))
table.join2(result, compiler.map_flags("cxx", "includedir", fetchinfo.includedirs))
table.join2(result, compiler.map_flags("cxx", "sysincludedir", fetchinfo.sysincludedirs))
end
@@ -50,6 +51,23 @@ function _get_cxflags_from_includedirs(package, opt)
return result
end
+-- get ldflags from package deps
+function _get_ldflags_from_packagedeps(package, opt)
+ local result = {}
+ for _, depname in ipairs(opt.packagedeps) do
+ local dep = package:dep(depname)
+ if dep then
+ local fetchinfo = dep:fetch()
+ if fetchinfo then
+ table.join2(result, linker.map_flags("binary", {"cxx"}, "linkdir", fetchinfo.linkdirs))
+ table.join2(result, linker.map_flags("binary", {"cxx"}, "link", fetchinfo.links))
+ table.join2(result, linker.map_flags("binary", {"cxx"}, "syslink", fetchinfo.syslinks))
+ end
+ end
+ end
+ return result
+end
+
-- get cflags
function _get_cflags(package, opt)
opt = opt or {}
@@ -60,7 +78,7 @@ function _get_cflags(package, opt)
end
table.join2(result, package:config("cflags"))
table.join2(result, package:config("cxflags"))
- table.join2(result, _get_cxflags_from_includedirs(package, opt))
+ table.join2(result, _get_cflags_from_packagedeps(package, opt))
if #result > 0 then
return table.concat(result, ' ')
end
@@ -76,7 +94,7 @@ function _get_cxxflags(package, opt)
end
table.join2(result, package:config("cxxflags"))
table.join2(result, package:config("cxflags"))
- table.join2(result, _get_cxflags_from_includedirs(package, opt))
+ table.join2(result, _get_cflags_from_packagedeps(package, opt))
if #result > 0 then
return table.concat(result, ' ')
end
@@ -102,6 +120,7 @@ function _get_ldflags(package, opt)
if opt.cross then
table.join2(result, package:build_getenv("ldflags"))
end
+ table.join2(result, _get_ldflags_from_packagedeps(package, opt))
if #result > 0 then
return table.concat(result, ' ')
end
@@ -114,6 +133,7 @@ function _get_shflags(package, opt)
if opt.cross then
table.join2(result, package:build_getenv("shflags"))
end
+ table.join2(result, _get_ldflags_from_packagedeps(package, opt))
if #result > 0 then
return table.concat(result, ' ')
end