aboutsummaryrefslogtreecommitdiffstats
path: root/python
diff options
context:
space:
mode:
authorMukilan Thiyagarajan <mukilan@igalia.com>2024-03-18 15:14:10 +0530
committerGitHub <noreply@github.com>2024-03-18 09:44:10 +0000
commit4bca55e27ad38685067986c8f478bae1b214b43c (patch)
tree2b1b40ee523ad455db8d366b087b4dcfb241e3ec /python
parentb2f2ae61dbf2fdf443efd7c55f07bedeed782d0e (diff)
downloadservo-4bca55e27ad38685067986c8f478bae1b214b43c.tar.gz
servo-4bca55e27ad38685067986c8f478bae1b214b43c.zip
android: add support for x86_64 images (#31725)
Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
Diffstat (limited to 'python')
-rw-r--r--python/servo/command_base.py21
-rw-r--r--python/servo/package_commands.py2
2 files changed, 23 insertions, 0 deletions
diff --git a/python/servo/command_base.py b/python/servo/command_base.py
index 63b61b07bf0..74de8850164 100644
--- a/python/servo/command_base.py
+++ b/python/servo/command_base.py
@@ -588,6 +588,19 @@ class CommandBase(object):
def to_ndk_bin(prog):
return path.join(llvm_toolchain, "bin", prog)
+ # This workaround is due to an issue in the x86_64 Android NDK that introduces
+ # an undefined reference to the symbol '__extendsftf2'.
+ # See https://github.com/termux/termux-packages/issues/8029#issuecomment-1369150244
+ if "x86_64" in self.cross_compile_target:
+ libclangrt_filename = subprocess.run(
+ [to_ndk_bin(f"x86_64-linux-android{android_api}-clang"), "--print-libgcc-file-name"],
+ check=True,
+ capture_output=True,
+ encoding="utf8"
+ ).stdout
+ env['RUSTFLAGS'] = env.get('RUSTFLAGS', "")
+ env["RUSTFLAGS"] += f"-C link-arg={libclangrt_filename}"
+
env["RUST_TARGET"] = self.cross_compile_target
env['HOST_CC'] = host_cc
env['HOST_CXX'] = host_cxx
@@ -912,6 +925,14 @@ class CommandBase(object):
self.config["android"]["lib"] = "x86"
self.config["android"]["toolchain_name"] = "i686-linux-android30"
return True
+ elif target == "x86_64-linux-android":
+ self.config["android"]["platform"] = "android-30"
+ self.config["android"]["target"] = target
+ self.config["android"]["toolchain_prefix"] = target
+ self.config["android"]["arch"] = "x86_64"
+ self.config["android"]["lib"] = "x86_64"
+ self.config["android"]["toolchain_name"] = "x86_64-linux-android30"
+ return True
return False
def ensure_bootstrapped(self):
diff --git a/python/servo/package_commands.py b/python/servo/package_commands.py
index 54afdd6a9e4..dca00cc8ae7 100644
--- a/python/servo/package_commands.py
+++ b/python/servo/package_commands.py
@@ -146,6 +146,8 @@ class PackageCommands(CommandBase):
arch_string = "Armv7"
elif "i686" in android_target:
arch_string = "x86"
+ elif "x86_64" in android_target:
+ arch_string = "x64"
else:
arch_string = "Arm"