diff options
| author | ruki <[email protected]> | 2021-06-06 21:32:20 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2021-06-06 21:32:20 +0800 |
| commit | ffe1fe3d5d4853f5e2eac74e989edf71f1758e39 (patch) | |
| tree | 1acf4d1e03d2aac04711f18cc1d39cc7f76c4ad6 | |
| parent | 437e3d1fa25763ab0f1efe812d493fc9e4c52594 (diff) | |
load toolchain envs for xrepo env
| -rw-r--r-- | xmake/modules/private/xrepo/action/env.lua | 32 |
1 files changed, 24 insertions, 8 deletions
diff --git a/xmake/modules/private/xrepo/action/env.lua b/xmake/modules/private/xrepo/action/env.lua index fbce2a566..f9e4f702c 100644 --- a/xmake/modules/private/xrepo/action/env.lua +++ b/xmake/modules/private/xrepo/action/env.lua @@ -23,6 +23,8 @@ import("core.base.option") import("core.base.task") import("core.base.hashset") import("core.project.config") +import("core.project.project") +import("core.tool.toolchain") import("lib.detect.find_tool") import("private.action.require.impl.package") import("private.action.require.impl.utils.get_requires") @@ -155,7 +157,7 @@ function _enter_project() end -- add values to environment variable -function _package_addenv(envs, name, ...) +function _addenvs(envs, name, ...) local values = {...} if #values > 0 then local oldenv = envs[name] @@ -182,13 +184,13 @@ function _package_addenvs(envs, instance) if name == "PATH" or name == "LD_LIBRARY_PATH" or name == "DYLD_LIBRARY_PATH" then for _, value in ipairs(values) do if path.is_absolute(value) then - _package_addenv(envs, name, value) + _addenvs(envs, name, value) else - _package_addenv(envs, name, path.join(installdir, value)) + _addenvs(envs, name, path.join(installdir, value)) end end else - _package_addenv(envs, name, unpack(table.wrap(values))) + _addenvs(envs, name, unpack(table.wrap(values))) end end @@ -196,17 +198,30 @@ function _package_addenvs(envs, instance) if instance:is_library() then local pkgconfig = path.join(installdir, "lib", "pkgconfig") if os.isdir(pkgconfig) then - _package_addenv(envs, "PKG_CONFIG_PATH", pkgconfig) + _addenvs(envs, "PKG_CONFIG_PATH", pkgconfig) end pkgconfig = path.join(installdir, "share", "pkgconfig") if os.isdir(pkgconfig) then - _package_addenv(envs, "PKG_CONFIG_PATH", pkgconfig) + _addenvs(envs, "PKG_CONFIG_PATH", pkgconfig) end local aclocal = path.join(installdir, "share", "aclocal") if os.isdir(aclocal) then - _package_addenv(envs, "ACLOCAL_PATH", aclocal) + _addenvs(envs, "ACLOCAL_PATH", aclocal) + end + _addenvs(envs, "CMAKE_PREFIX_PATH", installdir) + end +end + +-- add toolcjhain environments +function _toolchain_addenvs(envs) + for _, name in ipairs(project.get("target.toolchains")) do + local toolchain_opt = project.extraconf("target.toolchains", name) + local toolchain_inst = toolchain.load(name, toolchain_opt) + if toolchain_inst then + for k, v in pairs(toolchain_inst:runenvs()) do + _addenvs(envs, k, v) + end end - _package_addenv(envs, "CMAKE_PREFIX_PATH", installdir) end end @@ -219,6 +234,7 @@ function _package_getenvs() for _, instance in ipairs(package.load_packages(requires, {requires_extra = requires_extra})) do _package_addenvs(envs, instance) end + _toolchain_addenvs(envs) else local packages = option.get("packages") or option.get("program") if packages then |
