diff options
| author | ruki <[email protected]> | 2019-03-17 22:46:36 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2019-03-17 22:46:36 +0800 |
| commit | ecdb953daa77c74a7475c7486d8df6d96d0d0c4d (patch) | |
| tree | 5720d5b5de715400591fc18a9417a9da2a189e28 /xmake/actions/require/install.lua | |
| parent | e35215c72fa78df798a88ca1cd9bed9bb36013d5 (diff) | |
bind package envs to run
Diffstat (limited to 'xmake/actions/require/install.lua')
| -rw-r--r-- | xmake/actions/require/install.lua | 50 |
1 files changed, 35 insertions, 15 deletions
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 |
