summaryrefslogtreecommitdiff
path: root/xmake/modules/detect
diff options
context:
space:
mode:
authorruki <[email protected]>2020-07-28 22:39:13 +0800
committerruki <[email protected]>2020-07-28 22:39:13 +0800
commit3480e577e689dd0374963eaadf08283d760d0a5b (patch)
tree22a920f3239d4f4ecf90425172487b342aa3d76e /xmake/modules/detect
parent08eb918cbbeeabaff7a50a306d8e46f6e6d4544b (diff)
improve cross-compilation
Diffstat (limited to 'xmake/modules/detect')
-rw-r--r--xmake/modules/detect/sdks/find_cross_toolchain.lua27
1 files changed, 18 insertions, 9 deletions
diff --git a/xmake/modules/detect/sdks/find_cross_toolchain.lua b/xmake/modules/detect/sdks/find_cross_toolchain.lua
index 9e4e851e0..7082d2625 100644
--- a/xmake/modules/detect/sdks/find_cross_toolchain.lua
+++ b/xmake/modules/detect/sdks/find_cross_toolchain.lua
@@ -78,17 +78,26 @@ function main(sdkdir, opt)
-- init arguments
opt = opt or {}
- -- get root directory
- if not sdkdir or not os.isdir(sdkdir) then
- return
+ -- get sdk directories
+ local sdkdirs = {}
+ if sdkdir then
+ table.insert(sdkdirs, sdkdir)
+ elseif opt.cross and not is_subhost("windows") then
+ -- we attempt to find cross toolchain from /usr, e.g. /usr/bin/aarch64-linux-gnu-gcc
+ table.insert(sdkdirs, "/usr/")
+ table.insert(sdkdirs, "/usr/local")
end
-- find bin directory and cross
- local bindir, cross = _find_bindir(sdkdir, opt)
- if not bindir then
- return
+ local result
+ for _, _sdkdir in ipairs(sdkdirs) do
+ if os.isdir(_sdkdir) then
+ local bindir, cross = _find_bindir(_sdkdir, opt)
+ if bindir then
+ result = {sdkdir = _sdkdir, bindir = bindir, cross = cross}
+ break
+ end
+ end
end
-
- -- found
- return {sdkdir = sdkdir, bindir = bindir, cross = cross}
+ return result
end