From acdcde640f89df691cbaee89b71682e295de030b Mon Sep 17 00:00:00 2001 From: ruki Date: Wed, 6 Sep 2017 10:14:39 +0800 Subject: add required packages and deps to targets --- xmake/actions/require/package.lua | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) (limited to 'xmake/actions/require/package.lua') 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 -- cgit v1.3.1