From 68e0108b1c09d84024a2f89577a0b49d15d83c83 Mon Sep 17 00:00:00 2001 From: Anonymous Maarten Date: Sat, 9 Aug 2025 04:39:12 +0200 Subject: [PATCH] release: build aarch64 libraries with 16kiB page size [ci skip] (cherry picked from commit 7017fbaa8e593ac00de518d662a233f4cfd5b7b0) --- build-scripts/build-release.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/build-scripts/build-release.py b/build-scripts/build-release.py index f3faa06c34..b256e4d54c 100755 --- a/build-scripts/build-release.py +++ b/build-scripts/build-release.py @@ -542,6 +542,9 @@ class AndroidApiVersion: def __repr__(self) -> str: return f"<{self.name} ({'.'.join(str(v) for v in self.ints)})>" +ANDROID_ABI_EXTRA_LINK_OPTIONS = { + "arm64-v8a": "-Wl,-z,max-page-size=16384 -Wl,-z,common-page-size=16384", +} class Releaser: def __init__(self, release_info: dict, commit: str, revision: str, root: Path, dist_path: Path, section_printer: SectionPrinter, executer: Executer, cmake_generator: str, deps_path: Path, overwrite: bool, github: bool, fast: bool): @@ -1013,6 +1016,7 @@ class Releaser: android_devel_file_tree = ArchiveFileTree() for android_abi in android_abis: + extra_link_options = ANDROID_ABI_EXTRA_LINK_OPTIONS.get(android_abi, "") with self.section_printer.group(f"Building for Android {android_api} {android_abi}"): build_dir = self.root / "build-android" / f"{android_abi}-build" install_dir = self.root / "install-android" / f"{android_abi}-install" @@ -1023,8 +1027,11 @@ class Releaser: "cmake", "-S", str(self.root), "-B", str(build_dir), - f'''-DCMAKE_C_FLAGS="-ffile-prefix-map={self.root}=/src/{self.project}"''', - f'''-DCMAKE_CXX_FLAGS="-ffile-prefix-map={self.root}=/src/{self.project}"''', + # NDK 21e does not support -ffile-prefix-map + # f'''-DCMAKE_C_FLAGS="-ffile-prefix-map={self.root}=/src/{self.project}"''', + # f'''-DCMAKE_CXX_FLAGS="-ffile-prefix-map={self.root}=/src/{self.project}"''', + f"-DCMAKE_EXE_LINKER_FLAGS={extra_link_options}", + f"-DCMAKE_SHARED_LINKER_FLAGS={extra_link_options}", f"-DCMAKE_TOOLCHAIN_FILE={cmake_toolchain_file}", f"-DCMAKE_PREFIX_PATH={str(android_deps_path)}", f"-DCMAKE_FIND_ROOT_PATH_MODE_PACKAGE=BOTH", @@ -1530,7 +1537,7 @@ def main(argv=None) -> int: parser.error("Invalid --android-api, and/or could not be detected") android_api_path = Path(args.android_home) / f"platforms/{args.android_api.name}" if not android_api_path.is_dir(): - parser.error(f"Android API directory does not exist ({android_api_path})") + logger.warning(f"Android API directory does not exist ({android_api_path})") with section_printer.group("Android arguments"): print(f"android_home = {args.android_home}") print(f"android_ndk_home = {args.android_ndk_home}")