summaryrefslogtreecommitdiff
path: root/xmake/actions/require/package.lua
diff options
context:
space:
mode:
authorruki <[email protected]>2017-09-06 10:14:39 +0800
committerruki <[email protected]>2017-09-06 10:14:54 +0800
commitacdcde640f89df691cbaee89b71682e295de030b (patch)
tree43c5bcb084e91b424fd3659987758f672a6f12c5 /xmake/actions/require/package.lua
parentfa7b871c4880fd8947e872a8fcef815de36ea358 (diff)
add required packages and deps to targets
Diffstat (limited to 'xmake/actions/require/package.lua')
-rw-r--r--xmake/actions/require/package.lua24
1 files changed, 20 insertions, 4 deletions
diff --git a/xmake/actions/require/package.lua b/xmake/actions/require/package.lua
index 3b872d800..f9d7f52ae 100644
--- a/xmake/actions/require/package.lua
+++ b/xmake/actions/require/package.lua
@@ -201,6 +201,16 @@ function _load_package(packagename, requireinfo)
return instance
end
+-- sort package deps
+function _sort_packagedeps(package)
+ local orderdeps = {}
+ for _, dep in pairs(package:deps()) do
+ table.join2(orderdeps, _sort_packagedeps(dep))
+ table.insert(orderdeps, dep)
+ end
+ return orderdeps
+end
+
-- load all required packages
function _load_packages(requires)
@@ -216,10 +226,16 @@ function _load_packages(requires)
-- load package instance
local package = _load_package(packagename, requireinfo)
- -- load required packages and save them first of this package
- requires = package:get("requires")
- if requires then
- table.join2(packages, _load_packages(requires))
+ -- load dependent packages and save them first of this package
+ local deps = package:get("deps")
+ if deps then
+ local packagedeps = {}
+ for _, dep in ipairs(_load_packages(deps)) do
+ table.insert(packages, dep)
+ packagedeps[dep:name()] = dep
+ end
+ package._DEPS = packagedeps
+ package._ORDERDEPS = table.unique(_sort_packagedeps(package))
end
-- save this package instance