summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2021-03-10 00:30:11 +0800
committerruki <[email protected]>2021-03-10 00:30:11 +0800
commit870150547028b91b953ed2170f05827be13484c1 (patch)
treeac07ab4b5916b603a09907edc1d86ac224edfa0c
parentfb8bf856a446630dffa2e686fa35f428aad77670 (diff)
fix targe toolchains
-rw-r--r--xmake/core/project/target.lua25
1 files changed, 24 insertions, 1 deletions
diff --git a/xmake/core/project/target.lua b/xmake/core/project/target.lua
index 273601780..617141791 100644
--- a/xmake/core/project/target.lua
+++ b/xmake/core/project/target.lua
@@ -1786,7 +1786,29 @@ end
function _instance:toolchains()
local toolchains = self:_memcache():get("toolchains")
if toolchains == nil then
- toolchains = self:platform():toolchains()
+
+ -- load target toolchains
+ local target_toolchains = self:get("toolchains")
+ if target_toolchains then
+ toolchains = {}
+ for _, name in ipairs(table.wrap(target_toolchains)) do
+ local toolchain_opt = table.copy(self:extraconf("toolchains", name))
+ toolchain_opt.arch = self:arch()
+ toolchain_opt.plat = self:plat()
+ local toolchain_inst, errors = toolchain.load(name, toolchain_opt)
+ -- attempt to load toolchain from project
+ if not toolchain_inst and self._PROJECT then
+ toolchain_inst = self._PROJECT.toolchain(name, toolchain_opt)
+ end
+ if not toolchain_inst then
+ os.raise(errors)
+ end
+ table.insert(toolchains, toolchain_inst)
+ end
+ else
+ -- load platform toolchains
+ toolchains = self:platform():toolchains()
+ end
self:_memcache():set("toolchains", toolchains)
end
return toolchains
@@ -1977,3 +1999,4 @@ end
-- return module
return target
+