From ecdb953daa77c74a7475c7486d8df6d96d0d0c4d Mon Sep 17 00:00:00 2001 From: ruki Date: Sun, 17 Mar 2019 22:46:36 +0800 Subject: bind package envs to run --- xmake/actions/require/install.lua | 52 +++++++++++++++++++++++++++------------ 1 file changed, 36 insertions(+), 16 deletions(-) (limited to 'xmake/actions/require/install.lua') diff --git a/xmake/actions/require/install.lua b/xmake/actions/require/install.lua index df327d2ab..5e692f5de 100644 --- a/xmake/actions/require/install.lua +++ b/xmake/actions/require/install.lua @@ -38,18 +38,40 @@ function _register_required_package(instance, requireinfo) if _g.optional_missing[instance:name()] then requireinfo:enable(false) else - -- add this package info + -- clear require info first requireinfo:clear() - requireinfo:add(instance:fetch()) - - -- add all dependent packages info - local orderdeps = instance:orderdeps() - if orderdeps then - local total = #orderdeps - for idx, _ in ipairs(orderdeps) do - local dep = orderdeps[total + 1 - idx] - if dep then - requireinfo:add((dep:fetch())) + + -- add this packages info + if instance:kind() == "binary" then + -- add path environments + local envs = {} + local installdir = instance:installdir() + for name, values in pairs(instance:envs()) do + if name == "PATH" then + for _, value in ipairs(values) do + envs[name] = envs[name] or {} + if path.is_absolute(value) then + table.insert(envs[name], value) + else + table.insert(envs[name], path.join(installdir, value)) + end + end + else + envs[name] = values + end + end + requireinfo:add({envs = envs}) + else + -- add include and links info + requireinfo:add(instance:fetch()) + local orderdeps = instance:orderdeps() + if orderdeps then + local total = #orderdeps + for idx, _ in ipairs(orderdeps) do + local dep = orderdeps[total + 1 - idx] + if dep then + requireinfo:add((dep:fetch())) + end end end end @@ -75,11 +97,9 @@ function _register_required_packages(packages) if not group or not registered_in_group[group] then -- do not register binary package - if instance:kind() ~= "binary" then - local requireinfo = project.require(instance:alias() or instance:name()) - if requireinfo then - _register_required_package(instance, requireinfo) - end + local requireinfo = project.require(instance:alias() or instance:name()) + if requireinfo then + _register_required_package(instance, requireinfo) end -- mark as registered in group -- cgit v1.3.1