Make the platform responsible to add the targets.
This commit is contained in:
parent
c8c0192675
commit
3eae47240b
|
@ -17,37 +17,23 @@ class Builder:
|
||||||
self._targets = {}
|
self._targets = {}
|
||||||
PlatformInfo.get_platform('neutral', self._targets)
|
PlatformInfo.get_platform('neutral', self._targets)
|
||||||
|
|
||||||
self.targetDef = (option('target_platform'), option('targets'))
|
platform = PlatformInfo.get_platform(option('target_platform'), self._targets)
|
||||||
self.add_targets(self.targetDef, self._targets)
|
platform.add_targets(option('targets'), self._targets)
|
||||||
|
|
||||||
def finalize_target_steps(self):
|
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))
|
dependencies = list(remove_duplicates(dependencies))
|
||||||
|
|
||||||
if option('build_nodeps'):
|
if option('build_nodeps'):
|
||||||
add_target_step(self.targetDef, self._targets[self.targetDef])
|
add_target_step(targetDef, self._targets[targetDef])
|
||||||
else:
|
else:
|
||||||
for dep in dependencies:
|
for dep in dependencies:
|
||||||
if option('build_deps_only') and dep == self.targetDef:
|
if option('build_deps_only') and dep == targetDef:
|
||||||
continue
|
continue
|
||||||
add_target_step(dep, self._targets[dep])
|
add_target_step(dep, self._targets[dep])
|
||||||
self.instanciate_steps()
|
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):
|
def order_steps(self, targetDef):
|
||||||
for pltName in PlatformInfo.all_running_platforms:
|
for pltName in PlatformInfo.all_running_platforms:
|
||||||
plt = PlatformInfo.all_platforms[pltName]
|
plt = PlatformInfo.all_platforms[pltName]
|
||||||
|
|
|
@ -56,6 +56,20 @@ class PlatformInfo(metaclass=_MetaPlatform):
|
||||||
plt_name = 'neutral' if ToolchainClass.neutral else self.name
|
plt_name = 'neutral' if ToolchainClass.neutral else self.name
|
||||||
targets[(plt_name, tlc_name)] = ToolchainClass.Builder
|
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):
|
def get_cross_config(self):
|
||||||
return {}
|
return {}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue