diff options
| author | ruki <[email protected]> | 2024-08-19 18:00:35 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2024-08-19 18:00:35 +0800 |
| commit | 44e39614b275ecab708f5e6a1127efae6aadf452 (patch) | |
| tree | 56c6da15fcc118e598aef6a6451aa6299c777ef7 | |
| parent | cbefe04267b1c7793d8d851dcbe25a7eb1edf73a (diff) | |
| parent | 248cf58f94a08d45ec6262b84038d1661ec37729 (diff) | |
Merge pull request #5484 from xmake-io/cmake
fix packagedeps
| -rw-r--r-- | xmake/modules/lib/detect/find_package.lua | 2 | ||||
| -rw-r--r-- | xmake/modules/package/tools/autoconf.lua | 49 | ||||
| -rw-r--r-- | xmake/modules/package/tools/cmake.lua | 49 | ||||
| -rw-r--r-- | xmake/modules/package/tools/meson.lua | 48 |
4 files changed, 121 insertions, 27 deletions
diff --git a/xmake/modules/lib/detect/find_package.lua b/xmake/modules/lib/detect/find_package.lua index 3fdaf56c7..ac1f78ae1 100644 --- a/xmake/modules/lib/detect/find_package.lua +++ b/xmake/modules/lib/detect/find_package.lua @@ -35,7 +35,7 @@ function _concat_packages(a, b) result[k] = v end for k, v in pairs(result) do - if k == "links" then + if k == "links" or k == "syslinks" or k == "frameworks" or k == "ldflags" or k == "shflags" then if type(v) == "table" and #v > 1 then -- we need to ensure link orders when removing repeat values v = table.reverse_unique(v) diff --git a/xmake/modules/package/tools/autoconf.lua b/xmake/modules/package/tools/autoconf.lua index 0b1512d52..8600d7334 100644 --- a/xmake/modules/package/tools/autoconf.lua +++ b/xmake/modules/package/tools/autoconf.lua @@ -181,36 +181,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, _translate_paths(_map_compflags(package, "cxx", "includedir", fetchinfo.includedirs))) - table.join2(result, _translate_paths(_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, _translate_paths(_map_compflags(package, "cxx", "includedir", values.includedirs))) + end + if values.sysincludedirs then + table.join2(result, _translate_paths(_map_compflags(package, "cxx", "sysincludedir", values.sysincludedirs))) + end + end return 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, _translate_paths(_map_linkflags(package, "binary", {"cxx"}, "linkdir", fetchinfo.linkdirs))) - table.join2(result, _map_linkflags(package, "binary", {"cxx"}, "link", fetchinfo.links)) - table.join2(result, _translate_paths(_map_linkflags(package, "binary", {"cxx"}, "syslink", fetchinfo.syslinks))) - table.join2(result, _map_linkflags(package, "binary", {"cxx"}, "framework", fetchinfo.frameworks)) + 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, _translate_paths(_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, _translate_paths(_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 result end diff --git a/xmake/modules/package/tools/cmake.lua b/xmake/modules/package/tools/cmake.lua index 3d8701297..7f7dea51d 100644 --- a/xmake/modules/package/tools/cmake.lua +++ b/xmake/modules/package/tools/cmake.lua @@ -100,36 +100,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, _translate_paths(_map_compflags(package, "cxx", "includedir", fetchinfo.includedirs))) - table.join2(result, _translate_paths(_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, _translate_paths(_map_compflags(package, "cxx", "includedir", values.includedirs))) + end + if values.sysincludedirs then + table.join2(result, _translate_paths(_map_compflags(package, "cxx", "sysincludedir", values.sysincludedirs))) + end + end return 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, _translate_paths(_map_linkflags(package, "binary", {"cxx"}, "linkdir", fetchinfo.linkdirs))) - table.join2(result, _map_linkflags(package, "binary", {"cxx"}, "link", fetchinfo.links)) - table.join2(result, _translate_paths(_map_linkflags(package, "binary", {"cxx"}, "syslink", fetchinfo.syslinks))) - table.join2(result, _map_linkflags(package, "binary", {"cxx"}, "framework", fetchinfo.frameworks)) + 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, _translate_paths(_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, _translate_paths(_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 result end 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 |
