summaryrefslogtreecommitdiff
path: root/xmake/core/package/package.lua
diff options
context:
space:
mode:
authorruki <[email protected]>2021-03-20 00:50:56 +0800
committerruki <[email protected]>2021-03-20 00:50:56 +0800
commit7556e19a1193841aa49871ffab35bc3e56bd481e (patch)
tree2a72103ca495abb12797a6a4ee08a3fbaa81da64 /xmake/core/package/package.lua
parentc1261619d8e7330a1a99e50a73b5baddf2dd66f4 (diff)
pass extraconf to package
Diffstat (limited to 'xmake/core/package/package.lua')
-rw-r--r--xmake/core/package/package.lua30
1 files changed, 21 insertions, 9 deletions
diff --git a/xmake/core/package/package.lua b/xmake/core/package/package.lua
index f2c437924..a59ee7c5d 100644
--- a/xmake/core/package/package.lua
+++ b/xmake/core/package/package.lua
@@ -677,11 +677,14 @@ end
function _instance:toolchains()
local toolchains = self._TOOLCHAINS
if toolchains == nil then
+ local project = package._project()
for _, name in ipairs(table.wrap(self:config("toolchains"))) do
- local toolchain_opt = {plat = self:plat(), arch = self:arch()}
+ local toolchain_opt = project and project.extraconf("target.toolchains", name) or {}
+ toolchain_opt.plat = self:plat()
+ toolchain_opt.arch = self:arch()
local toolchain_inst, errors = toolchain.load(name, toolchain_opt)
- if not toolchain_inst and os.isfile(os.projectfile()) then
- toolchain_inst = require("base/project").toolchain(name, toolchain_opt)
+ if not toolchain_inst and project then
+ toolchain_inst = project.toolchain(name, toolchain_opt)
end
if not toolchain_inst then
os.raise(errors)
@@ -1550,13 +1553,23 @@ function package._memcache()
return memcache.cache("core.base.package")
end
+-- get project
+function package._project()
+ local project = package._PROJECT
+ if not project then
+ if os.isfile(os.projectfile()) then
+ project = require("project/project")
+ end
+ end
+ return project
+end
+
-- get global target platform of package
function package._target_plat()
local plat = package._memcache():get("target_plat")
if plat == nil then
- if not plat and os.isfile(os.projectfile()) then
- local project = require("project/project")
- local targetplat_root = project.get("target.plat")
+ if not plat and package._project() then
+ local targetplat_root = package._project().get("target.plat")
if targetplat_root then
plat = targetplat_root
end
@@ -1573,9 +1586,8 @@ end
function package._target_arch()
local arch = package._memcache():get("target_arch")
if arch == nil then
- if not arch and os.isfile(os.projectfile()) then
- local project = require("project/project")
- local targetarch_root = project.get("target.arch")
+ if not arch and package._project() then
+ local targetarch_root = package._project().get("target.arch")
if targetarch_root then
arch = targetarch_root
end