51 lines
1.8 KiB
Python
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)
|