llvm-build: Don't emit library information for disabled targets.
authorDaniel Dunbar <daniel@zuster.org>
Tue, 15 May 2012 18:44:12 +0000 (18:44 +0000)
committerDaniel Dunbar <daniel@zuster.org>
Tue, 15 May 2012 18:44:12 +0000 (18:44 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156837 91177308-0d34-0410-b5e6-96231b3b80d8

utils/llvm-build/llvmbuild/componentinfo.py
utils/llvm-build/llvmbuild/main.py

index 737b857dfbbafd17ffcf5941b442906d6eed50a9..c32cc1aeb0663cd7616e9b24fdb861f44bde2fa1 100644 (file)
@@ -68,6 +68,21 @@ class ComponentInfo(object):
     def get_llvmbuild_fragment(self):
         abstract
 
+    def get_parent_target_group(self):
+        """get_parent_target_group() -> ComponentInfo or None
+
+        Return the nearest parent target group (if any), or None if the
+        component is not part of any target group.
+        """
+
+        # If this is a target group, return it.
+        if self.type_name == 'TargetGroup':
+            return self
+
+        # Otherwise recurse on the parent, if any.
+        if self.parent_instance:
+            return self.parent_instance.get_parent_target_group()
+
 class GroupComponentInfo(ComponentInfo):
     """
     Group components have no semantics as far as the build system are concerned,
index 2be9cd6b4465e6b703faf5987cb5db7b1b8a0932..48b59bdac38cf84a8f7de7822f9365dd744c8c1a 100644 (file)
@@ -319,11 +319,16 @@ subdirectories = %s
         # dependencies for added library groups.
         entries = {}
         for c in self.ordered_component_infos:
-            # Skip optional components which are not enabled
+            # Skip optional components which are not enabled.
             if c.type_name == 'OptionalLibrary' \
                 and c.name not in enabled_optional_components:
                 continue
 
+            # Skip target groups which are not enabled.
+            tg = c.get_parent_target_group()
+            if tg and not tg.enabled:
+                continue
+
             # Only certain components are in the table.
             if c.type_name not in ('Library', 'OptionalLibrary', \
                                    'LibraryGroup', 'TargetGroup'):