Simplify cross-compilation

Now we can make reference to build step in another target platform, we can
simplify cross-compilation fo libmagic and icu4c.
This commit is contained in:
Matthieu Gautier
2018-05-29 17:42:42 +02:00
parent a87ba06bf3
commit c8c0192675
6 changed files with 33 additions and 81 deletions

View File

@ -6,10 +6,10 @@ from .base import (
MakeBuilder,
)
from kiwixbuild.utils import Remotefile, pj, Defaultdict, SkipCommand
from kiwixbuild.utils import Remotefile, pj, Defaultdict, SkipCommand, run_command
from kiwixbuild._global import get_target_step
class LibMagicBase(Dependency):
class LibMagic(Dependency):
name = "libmagic"
class Source(ReleaseDownload):
@ -19,37 +19,24 @@ class LibMagicBase(Dependency):
'1c52c8c3d271cd898d5511c36a68059cda94036111ab293f01f83c3525b737c6',
'https://fossies.org/linux/misc/file-5.33.tar.gz')
Builder = MakeBuilder
class Builder(MakeBuilder):
class LibMagic_native(LibMagicBase):
name = "libmagic_native"
force_native_build = True
class Builder(LibMagicBase.Builder):
static_configure_option = dynamic_configure_option = "--disable-shared --enable-static"
@property
def build_path(self):
return super().build_path+"_native"
def _install(self, context):
raise SkipCommand()
class LibMagic_cross_compile(LibMagicBase):
name = "libmagic_cross-compile"
class Builder(LibMagicBase.Builder):
dependencies = ['libmagic_native']
@classmethod
def get_dependencies(cls, platformInfo):
if platformInfo.build != 'native':
return [('native_static', 'libmagic')]
return []
def _compile(self, context):
platformInfo = self.buildEnv.platformInfo
if platformInfo.build == 'native':
return super()._compile(context)
context.try_skip(self.build_path)
command = "make -j4 {make_target} {make_option}".format(
make_target=self.make_target,
make_option=self.make_option
)
libmagic_native_builder = get_target_step('libmagic_native', self.buildEnv.platformInfo.name)
libmagic_native_builder = get_target_step('libmagic', 'native_static')
env = Defaultdict(str, os.environ)
env['PATH'] = ':'.join([pj(libmagic_native_builder.build_path, 'src'), env['PATH']])
self.buildEnv.run_command(command, self.build_path, context, env=env)
run_command(command, self.build_path, context, buildEnv=self.buildEnv, env=env)