From 3eae47240b97a53e236e8d9062024aeaecbfb3c7 Mon Sep 17 00:00:00 2001 From: Matthieu Gautier Date: Wed, 30 May 2018 11:33:36 +0200 Subject: [PATCH] Make the platform responsible to add the targets. --- kiwixbuild/builder.py | 26 ++++++-------------------- kiwixbuild/platforms/base.py | 14 ++++++++++++++ 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/kiwixbuild/builder.py b/kiwixbuild/builder.py index bd12604..8d784e6 100644 --- a/kiwixbuild/builder.py +++ b/kiwixbuild/builder.py @@ -17,37 +17,23 @@ class Builder: self._targets = {} PlatformInfo.get_platform('neutral', self._targets) - self.targetDef = (option('target_platform'), option('targets')) - self.add_targets(self.targetDef, self._targets) + platform = PlatformInfo.get_platform(option('target_platform'), self._targets) + platform.add_targets(option('targets'), self._targets) def finalize_target_steps(self): - dependencies = self.order_steps(self.targetDef) + targetDef = (option('target_platform'), option('targets')) + dependencies = self.order_steps(targetDef) dependencies = list(remove_duplicates(dependencies)) if option('build_nodeps'): - add_target_step(self.targetDef, self._targets[self.targetDef]) + add_target_step(targetDef, self._targets[targetDef]) else: for dep in dependencies: - if option('build_deps_only') and dep == self.targetDef: + if option('build_deps_only') and dep == targetDef: continue add_target_step(dep, self._targets[dep]) self.instanciate_steps() - def add_targets(self, targetDef, targets): - if targetDef in targets: - return - targetPlatformName, targetName = targetDef - targetPlatform = PlatformInfo.get_platform(targetPlatformName, targets) - targetClass = Dependency.all_deps[targetName] - targets[('source', targetName)] = targetClass.Source - targets[targetDef] = targetClass.Builder - for dep in targetClass.Builder.get_dependencies(targetPlatform): - try: - depPlatform, depName = dep - except ValueError: - depPlatform, depName = targetPlatformName, dep - self.add_targets((depPlatform, depName), targets) - def order_steps(self, targetDef): for pltName in PlatformInfo.all_running_platforms: plt = PlatformInfo.all_platforms[pltName] diff --git a/kiwixbuild/platforms/base.py b/kiwixbuild/platforms/base.py index 2d92c36..7f1e135 100644 --- a/kiwixbuild/platforms/base.py +++ b/kiwixbuild/platforms/base.py @@ -56,6 +56,20 @@ class PlatformInfo(metaclass=_MetaPlatform): plt_name = 'neutral' if ToolchainClass.neutral else self.name targets[(plt_name, tlc_name)] = ToolchainClass.Builder + def add_targets(self, targetName, targets): + if (self.name, targetName) in targets: + return + targetClass = Dependency.all_deps[targetName] + targets[('source', targetName)] = targetClass.Source + targets[(self.name, targetName)] = targetClass.Builder + for dep in targetClass.Builder.get_dependencies(self): + try: + depPlatformName, depName = dep + except ValueError: + depPlatformName, depName = self.name, dep + depPlatform = self.get_platform(depPlatformName, targets) + depPlatform.add_targets(depName, targets) + def get_cross_config(self): return {}