summaryrefslogtreecommitdiff
path: root/xmake
diff options
context:
space:
mode:
authorruki <[email protected]>2021-02-02 00:28:05 +0800
committerruki <[email protected]>2021-02-02 08:56:47 +0800
commite0b610d9bd2e87828ac4fc5435aca1ff191fbb85 (patch)
tree9241626d3b8c8a5be8c6fdc00186349eadc10d1d /xmake
parent3fd3d534399ba5610434f947859587b4636591b1 (diff)
improve llvm toolchain
Diffstat (limited to 'xmake')
-rw-r--r--xmake/actions/require/install.lua6
-rw-r--r--xmake/core/project/requireinfo.lua5
-rw-r--r--xmake/toolchains/llvm/check.lua14
3 files changed, 24 insertions, 1 deletions
diff --git a/xmake/actions/require/install.lua b/xmake/actions/require/install.lua
index 90366b1b6..888f64978 100644
--- a/xmake/actions/require/install.lua
+++ b/xmake/actions/require/install.lua
@@ -73,6 +73,11 @@ function _register_required_package_libs(instance, requireinfo, is_deps)
end
end
+-- register the base info of required package
+function _register_required_package_base(instance, requireinfo)
+ requireinfo:set("__installdir", instance:installdir())
+end
+
-- register the required local package
function _register_required_package(instance, requireinfo)
@@ -85,6 +90,7 @@ function _register_required_package(instance, requireinfo)
-- add packages info with all dependencies
local envs = {}
+ _register_required_package_base(instance, requireinfo)
_register_required_package_libs(instance, requireinfo)
_register_required_package_envs(instance, envs)
local orderdeps = instance:orderdeps()
diff --git a/xmake/core/project/requireinfo.lua b/xmake/core/project/requireinfo.lua
index 0c90e6fb5..218f346ff 100644
--- a/xmake/core/project/requireinfo.lua
+++ b/xmake/core/project/requireinfo.lua
@@ -108,6 +108,11 @@ function requireinfo:requirestr()
return self:get("__requirestr")
end
+-- get the install directory
+function requireinfo:installdir()
+ return self:get("__installdir")
+end
+
-- get the extra info from the given name
function requireinfo:extra(name)
local extrainfo = self:extrainfo()
diff --git a/xmake/toolchains/llvm/check.lua b/xmake/toolchains/llvm/check.lua
index eaebf8eaa..f22d65f5e 100644
--- a/xmake/toolchains/llvm/check.lua
+++ b/xmake/toolchains/llvm/check.lua
@@ -62,8 +62,20 @@ function main(toolchain)
end
end
- -- find cross toolchain
+ -- find cross toolchain from external envirnoment
local cross_toolchain = find_cross_toolchain(sdkdir, {bindir = bindir})
+ if not cross_toolchain then
+ -- find it from packages
+ for _, package in ipairs(toolchain:packages()) do
+ local installdir = package:installdir()
+ if installdir and os.isdir(installdir) then
+ cross_toolchain = find_cross_toolchain(installdir)
+ if cross_toolchain then
+ break
+ end
+ end
+ end
+ end
if cross_toolchain then
config.set("cross", cross_toolchain.cross, {readonly = true, force = true})
config.set("bin", cross_toolchain.bindir, {readonly = true, force = true})