kiwix-build/kiwixbuild/dependencies/ios_fat_lib.py

51 lines
1.8 KiB
Python

import os
from kiwixbuild.configs import ConfigInfo
from kiwixbuild.utils import copy_tree, run_command
from kiwixbuild._global import option
from .base import Dependency, NoopSource, Builder as BaseBuilder
class IOSFatLib(Dependency):
name = "_ios_fat_lib"
Source = NoopSource
class Builder(BaseBuilder):
@classmethod
def get_dependencies(self, platfomInfo, alldeps):
base_target = option("target")
return [("iOS_{}".format(arch), base_target) for arch in option("ios_arch")]
def _copy_headers(self, context):
plt = ConfigInfo.get_config("iOS_{}".format(option("ios_arch")[0]))
include_src = plt.buildEnv.install_dir / "include"
include_dst = self.buildEnv.install_dir / "include"
copy_tree(include_src, include_dst)
def _merge_libs(self, context):
lib_dirs = []
for arch in option("ios_arch"):
plt = ConfigInfo.get_config("iOS_{}".format(arch))
lib_dirs.append(plt.buildEnv.install_dir / "lib")
libs = []
for f in lib_dirs[0].iterdir():
if f.is_symlink():
continue
if f.suffix in (".a", ".dylib"):
libs.append(f)
(self.buildEnv.install_dir / "lib").mkdir(parents=True, exist_ok=True)
for l in libs:
command = [
"lipo",
"-create",
*[d / l for d in lib_dirs],
"-output",
self.buildEnv.install_dir / "lib" / l,
]
run_command(command, self.buildEnv.install_dir, context)
def build(self):
self.command("copy_headers", self._copy_headers)
self.command("merge_libs", self._merge_libs)