diff options
Diffstat (limited to 'python/servo')
-rw-r--r-- | python/servo/build_commands.py | 13 | ||||
-rw-r--r-- | python/servo/command_base.py | 29 | ||||
-rw-r--r-- | python/servo/package_commands.py | 14 |
3 files changed, 49 insertions, 7 deletions
diff --git a/python/servo/build_commands.py b/python/servo/build_commands.py index 73c5bd9572d..546fcfdf911 100644 --- a/python/servo/build_commands.py +++ b/python/servo/build_commands.py @@ -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) self.ensure_clobbered() @@ -278,10 +281,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") @@ -295,6 +303,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 diff --git a/python/servo/command_base.py b/python/servo/command_base.py index 7ab5191b41a..8f04fde27e4 100644 --- a/python/servo/command_base.py +++ b/python/servo/command_base.py @@ -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: diff --git a/python/servo/package_commands.py b/python/servo/package_commands.py index 63921037c25..ad842c9258a 100644 --- a/python/servo/package_commands.py +++ b/python/servo/package_commands.py @@ -141,10 +141,20 @@ class PackageCommands(CommandBase): dir_to_root = self.get_top_dir() target_dir = path.dirname(binary_path) if android: + android_target = self.config["android"]["target"] + if "aarch64" in android_target: + build_type = "Arm64" + elif "armv7" in android_target: + build_type = "Armv7" + else: + build_type = "Arm" + if dev: - task_name = "assembleArmDebug" + build_mode = "Debug" else: - task_name = "assembleArmRelease" + 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) |