summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2019-04-18 23:13:52 +0800
committerruki <[email protected]>2019-04-18 13:23:17 +0800
commitcb61dab34920dc572730f595ded00476801e61e7 (patch)
tree2b286a92207469d83cb5b3dc886ae440abdfecf4
parent69b9445166ac215b6c40970895d6b8600a55846d (diff)
improve find_ndk for x86
-rw-r--r--xmake/modules/detect/sdks/find_ndk.lua32
1 files changed, 26 insertions, 6 deletions
diff --git a/xmake/modules/detect/sdks/find_ndk.lua b/xmake/modules/detect/sdks/find_ndk.lua
index d90780295..711af1e04 100644
--- a/xmake/modules/detect/sdks/find_ndk.lua
+++ b/xmake/modules/detect/sdks/find_ndk.lua
@@ -80,16 +80,36 @@ function _find_ndk(sdkdir, arch, ndk_sdkver, ndk_toolchains_ver)
return {}
end
- -- is arm64?
- local arm64 = arch and arch:startswith("arm64")
+ -- get cross
+ local crosses =
+ {
+ ["armv5te"] = "arm-linux-androideabi-"
+ , ["armv7-a"] = "arm-linux-androideabi-"
+ , ["arm64-v8a"] = "aarch64-linux-android-"
+ , i386 = "i686-linux-android-"
+ , x86_64 = "x86_64-linux-android-"
+ , mips = "mips-linux-android-"
+ , mips64 = "mips64-linux-android-"
+ }
+ local cross = crosses[arch]
- -- the cross
- local cross = arm64 and "aarch64-linux-android-" or "arm-linux-androideabi-"
+ -- get gcc toolchain sub-directory
+ local gcc_toolchain_subdirs =
+ {
+ ["armv5te"] = "arm-linux-androideabi-*"
+ , ["armv7-a"] = "arm-linux-androideabi-*"
+ , ["arm64-v8a"] = "aarch64-linux-android-*"
+ , i386 = "x86-*"
+ , x86_64 = "x86_64-*"
+ , mips = "mipsel-linux-android-*"
+ , mips64 = "mips64el-linux-android-*"
+ }
+ local gcc_toolchain_subdir = gcc_toolchain_subdirs[arch] or "arm-linux-androideabi-*"
-- find the binary directory
local bindir = find_directory("bin", path.join(sdkdir, "toolchains", "llvm", "prebuilt", "*")) -- larger than ndk r16
if not bindir then
- bindir = find_directory("bin", path.join(sdkdir, "toolchains", cross .. "*", "prebuilt", "*"))
+ bindir = find_directory("bin", path.join(sdkdir, "toolchains", gcc_toolchain_subdir, "prebuilt", "*"))
end
if not bindir then
return {}
@@ -102,7 +122,7 @@ function _find_ndk(sdkdir, arch, ndk_sdkver, ndk_toolchains_ver)
end
-- find the gcc toolchain
- local gcc_toolchain = find_directory("bin", path.join(sdkdir, "toolchains", cross .. "*", "prebuilt", "*"))
+ local gcc_toolchain = find_directory("bin", path.join(sdkdir, "toolchains", gcc_toolchain_subdir, "prebuilt", "*"))
if gcc_toolchain then
gcc_toolchain = path.directory(gcc_toolchain)
end