mirror of
https://github.com/servo/servo.git
synced 2025-06-13 10:54:29 +00:00
Support for Android armv7 and aarch64 target triples
This commit is contained in:
parent
f6bd158fd4
commit
01228282cd
9 changed files with 145 additions and 34 deletions
|
@ -221,11 +221,14 @@ class MachCommands(CommandBase):
|
|||
opts += ["-j", jobs]
|
||||
if verbose:
|
||||
opts += ["-v"]
|
||||
|
||||
if android:
|
||||
target = self.config["android"]["target"]
|
||||
|
||||
if target:
|
||||
opts += ["--target", target]
|
||||
if not android:
|
||||
android = self.handle_android_target(target)
|
||||
|
||||
self.ensure_bootstrapped(target=target)
|
||||
|
||||
|
@ -277,10 +280,15 @@ class MachCommands(CommandBase):
|
|||
elif cpu_type in ["x86_64", "x86-64", "x64", "amd64"]:
|
||||
host_suffix = "x86_64"
|
||||
host = os_type + "-" + host_suffix
|
||||
|
||||
android_platform = self.config["android"]["platform"]
|
||||
android_toolchain = self.config["android"]["toolchain_name"]
|
||||
android_arch = "arch-" + self.config["android"]["arch"]
|
||||
|
||||
env['PATH'] = path.join(
|
||||
env['ANDROID_NDK'], "toolchains", "arm-linux-androideabi-4.9", "prebuilt", host, "bin"
|
||||
env['ANDROID_NDK'], "toolchains", android_toolchain, "prebuilt", host, "bin"
|
||||
) + ':' + env['PATH']
|
||||
env['ANDROID_SYSROOT'] = path.join(env['ANDROID_NDK'], "platforms", "android-18", "arch-arm")
|
||||
env['ANDROID_SYSROOT'] = path.join(env['ANDROID_NDK'], "platforms", android_platform, android_arch)
|
||||
support_include = path.join(env['ANDROID_NDK'], "sources", "android", "support", "include")
|
||||
cxx_include = path.join(
|
||||
env['ANDROID_NDK'], "sources", "cxx-stl", "llvm-libc++", "libcxx", "include")
|
||||
|
@ -294,6 +302,7 @@ class MachCommands(CommandBase):
|
|||
"-I" + support_include,
|
||||
"-I" + cxx_include,
|
||||
"-I" + cxxabi_include])
|
||||
env["NDK_ANDROID_VERSION"] = android_platform.replace("android-", "")
|
||||
|
||||
cargo_binary = "cargo" + BIN_SUFFIX
|
||||
|
||||
|
|
|
@ -277,8 +277,7 @@ class CommandBase(object):
|
|||
self.config["android"].setdefault("sdk", "")
|
||||
self.config["android"].setdefault("ndk", "")
|
||||
self.config["android"].setdefault("toolchain", "")
|
||||
self.config["android"].setdefault("platform", "android-18")
|
||||
self.config["android"].setdefault("target", "arm-linux-androideabi")
|
||||
self.handle_android_target("arm-linux-androideabi")
|
||||
|
||||
self.set_cargo_root()
|
||||
self.set_use_stable_rust(False)
|
||||
|
@ -538,7 +537,31 @@ class CommandBase(object):
|
|||
return path.join(self.context.topdir, "support", "android")
|
||||
|
||||
def android_build_dir(self, dev):
|
||||
return path.join(self.get_target_dir(), "arm-linux-androideabi", "debug" if dev else "release")
|
||||
return path.join(self.get_target_dir(), self.config["android"]["target"], "debug" if dev else "release")
|
||||
|
||||
def handle_android_target(self, target):
|
||||
if target == "arm-linux-androideabi":
|
||||
self.config["android"]["platform"] = "android-18"
|
||||
self.config["android"]["target"] = target
|
||||
self.config["android"]["arch"] = "arm"
|
||||
self.config["android"]["lib"] = "armeabi"
|
||||
self.config["android"]["toolchain_name"] = target + "-4.9"
|
||||
return True
|
||||
elif target == "armv7-linux-androideabi":
|
||||
self.config["android"]["platform"] = "android-18"
|
||||
self.config["android"]["target"] = target
|
||||
self.config["android"]["arch"] = "arm"
|
||||
self.config["android"]["lib"] = "armeabi-v7a"
|
||||
self.config["android"]["toolchain_name"] = "arm-linux-androideabi-4.9"
|
||||
return True
|
||||
elif target == "aarch64-linux-android":
|
||||
self.config["android"]["platform"] = "android-21"
|
||||
self.config["android"]["target"] = target
|
||||
self.config["android"]["arch"] = "arm64"
|
||||
self.config["android"]["lib"] = "arm64-v8a"
|
||||
self.config["android"]["toolchain_name"] = target + "-4.9"
|
||||
return True
|
||||
return False
|
||||
|
||||
def ensure_bootstrapped(self, target=None):
|
||||
if self.context.bootstrapped:
|
||||
|
|
|
@ -141,10 +141,20 @@ class PackageCommands(CommandBase):
|
|||
dir_to_root = self.get_top_dir()
|
||||
target_dir = path.dirname(binary_path)
|
||||
if android:
|
||||
if dev:
|
||||
task_name = "assembleArmDebug"
|
||||
android_target = self.config["android"]["target"]
|
||||
if "aarch64" in android_target:
|
||||
build_type = "Arm64"
|
||||
elif "armv7" in android_target:
|
||||
build_type = "Armv7"
|
||||
else:
|
||||
task_name = "assembleArmRelease"
|
||||
build_type = "Arm"
|
||||
|
||||
if dev:
|
||||
build_mode = "Debug"
|
||||
else:
|
||||
build_mode = "Release"
|
||||
|
||||
task_name = "assemble" + build_type + build_mode
|
||||
try:
|
||||
with cd(path.join("support", "android", "apk")):
|
||||
subprocess.check_call(["./gradlew", "--no-daemon", task_name], env=env)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue