android: Pick toolchain based on current OS

This commit is contained in:
Colin Edwards 2023-12-13 11:48:22 -06:00
parent 4c90ad3704
commit c1a852d0e8

View File

@ -1,4 +1,5 @@
import os.path import os.path
import platform
import shutil import shutil
from typing import Union from typing import Union
@ -28,14 +29,22 @@ android_abis = {
}, },
} }
# https://developer.android.com/ndk/guides/other_build_systems
def build_arch() :
platforms = {
'Linux': 'linux-x86_64',
'Windows': 'windows-x86_64',
'Darwin': 'darwin-x86_64' # Despite the x86_64 tag in the Darwin name, those are fat binaries that include M1 support.
}
return platforms.get(platform.system())
class AndroidNdkToolchain: class AndroidNdkToolchain:
def __init__(self, top_path: str, lib_path: str, def __init__(self, top_path: str, lib_path: str,
tarball_path: str, src_path: str, tarball_path: str, src_path: str,
ndk_path: str, android_abi: str, ndk_path: str, android_abi: str,
use_cxx): use_cxx):
# build host configuration
build_arch = 'linux-x86_64'
# select the NDK target # select the NDK target
abi_info = android_abis[android_abi] abi_info = android_abis[android_abi]
host_triplet = abi_info['arch'] host_triplet = abi_info['arch']
@ -54,7 +63,7 @@ class AndroidNdkToolchain:
self.host_triplet = host_triplet self.host_triplet = host_triplet
self.install_prefix = install_prefix self.install_prefix = install_prefix
llvm_path = os.path.join(ndk_path, 'toolchains', 'llvm', 'prebuilt', build_arch) llvm_path = os.path.join(ndk_path, 'toolchains', 'llvm', 'prebuilt', build_arch())
llvm_triple = host_triplet + android_api_level llvm_triple = host_triplet + android_api_level
common_flags = '-Os -g' common_flags = '-Os -g'