diff options
author | Daniel Dunbar <daniel@zuster.org> | 2011-11-03 17:56:12 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2011-11-03 17:56:12 +0000 |
commit | 1cf14aff1bd7aa9343262f26f39c7f10fae68c0e (patch) | |
tree | 29ef1ca5d0f54ac296b14ecae2c9ce8abec21842 /utils/llvm-build/llvmbuild/componentinfo.py | |
parent | 9da6b1244191319b39779307d60d7729811d3d5c (diff) |
llvm-build: Validate information on the loaded components and form the topological ordering among them (as well as validating that there are no cycles).
- Currently we require that all references between components (except the parent relation) fit into a DAG -- this could be relaxed later if it ever proves to be useful.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143623 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'utils/llvm-build/llvmbuild/componentinfo.py')
-rw-r--r-- | utils/llvm-build/llvmbuild/componentinfo.py | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/utils/llvm-build/llvmbuild/componentinfo.py b/utils/llvm-build/llvmbuild/componentinfo.py index e15dbda756..22ce0b4fde 100644 --- a/utils/llvm-build/llvmbuild/componentinfo.py +++ b/utils/llvm-build/llvmbuild/componentinfo.py @@ -37,6 +37,17 @@ class ComponentInfo(object): # under. self.parent = parent + def get_component_references(self): + """get_component_references() -> iter + + Return an iterator over the named references to other components from + this object. Items are of the form (reference-type, component-name). + """ + + # Parent references are handled specially. + for r in self.dependencies: + yield ('dependency', r) + class GroupComponentInfo(ComponentInfo): """ Group components have no semantics as far as the build system are concerned, @@ -81,6 +92,14 @@ class LibraryComponentInfo(ComponentInfo): # considered part of. self.add_to_library_groups = list(add_to_library_groups) + def get_component_references(self): + for r in ComponentInfo.get_component_references(self): + yield r + for r in self.required_libraries: + yield ('required library', r) + for r in self.add_to_library_groups: + yield ('library group', r) + class LibraryGroupComponentInfo(ComponentInfo): type_name = 'LibraryGroup' @@ -104,6 +123,14 @@ class LibraryGroupComponentInfo(ComponentInfo): # considered part of. self.add_to_library_groups = list(add_to_library_groups) + def get_component_references(self): + for r in ComponentInfo.get_component_references(self): + yield r + for r in self.required_libraries: + yield ('required library', r) + for r in self.add_to_library_groups: + yield ('library group', r) + class ToolComponentInfo(ComponentInfo): type_name = 'Tool' @@ -121,6 +148,12 @@ class ToolComponentInfo(ComponentInfo): # tool. self.required_libraries = list(required_libraries) + def get_component_references(self): + for r in ComponentInfo.get_component_references(self): + yield r + for r in self.required_libraries: + yield ('required library', r) + class BuildToolComponentInfo(ToolComponentInfo): type_name = 'BuildTool' |