summaryrefslogtreecommitdiff
path: root/utils/llvm-build/llvmbuild/componentinfo.py
diff options
context:
space:
mode:
Diffstat (limited to 'utils/llvm-build/llvmbuild/componentinfo.py')
-rw-r--r--utils/llvm-build/llvmbuild/componentinfo.py33
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'