Make libankihelper a universal library

We were shipping a single arch library in a purelib, leading to
breakages when running on a different platform.
This commit is contained in:
Damien Elmes 2025-06-13 16:14:10 +07:00
parent c7e9cb2d88
commit b3a75fe298

View file

@ -11,10 +11,14 @@ out_dylib, *src_files = sys.argv[1:]
out_dir = Path(out_dylib).parent.resolve() out_dir = Path(out_dylib).parent.resolve()
src_dir = Path(src_files[0]).parent.resolve() src_dir = Path(src_files[0]).parent.resolve()
if platform.machine() == "arm64" and not os.environ.get("MAC_X86"): # Build for both architectures
target = "arm64-apple-macos11" architectures = ["arm64", "x86_64"]
else: temp_files = []
target = "x86_64-apple-macos10.14"
for arch in architectures:
target = f"{arch}-apple-macos11"
temp_out = out_dir / f"temp_{arch}.dylib"
temp_files.append(temp_out)
args = [ args = [
"swiftc", "swiftc",
@ -26,4 +30,13 @@ args = [
"-O", "-O",
] ]
args.extend(src_dir / Path(file).name for file in src_files) args.extend(src_dir / Path(file).name for file in src_files)
args.extend(["-o", str(temp_out)])
subprocess.run(args, check=True, cwd=out_dir) subprocess.run(args, check=True, cwd=out_dir)
# Create universal binary
lipo_args = ["lipo", "-create", "-output", out_dylib] + [str(f) for f in temp_files]
subprocess.run(lipo_args, check=True)
# Clean up temporary files
for temp_file in temp_files:
temp_file.unlink()