[llvm-commits] [llvm] r144250 - in /llvm/trunk: docs/LLVMBuild.html lib/Target/ARM/LLVMBuild.txt lib/Target/CBackend/LLVMBuild.txt lib/Target/CellSPU/LLVMBuild.txt lib/Target/CppBackend/LLVMBuild.txt lib/Target/MBlaze/LLVMBuild.txt lib/Target/MSP430/LLVMBuild.txt lib/Target/Mips/LLVMBuild.txt lib/Target/PTX/LLVMBuild.txt lib/Target/PowerPC/LLVMBuild.txt lib/Target/Sparc/LLVMBuild.txt lib/Target/X86/LLVMBuild.txt lib/Target/XCore/LLVMBuild.txt utils/llvm-build/llvmbuild/componentinfo.py utils/llvm-build/llvmbuild/main.py

Daniel Dunbar daniel at zuster.org
Wed Nov 9 16:49:52 PST 2011


Author: ddunbar
Date: Wed Nov  9 18:49:51 2011
New Revision: 144250

URL: http://llvm.org/viewvc/llvm-project?rev=144250&view=rev
Log:
llvm-build: Add an explicit component type to represent targets.
 - Gives us a place to hang target specific metadata (like whether the target has a JIT).

Modified:
    llvm/trunk/docs/LLVMBuild.html
    llvm/trunk/lib/Target/ARM/LLVMBuild.txt
    llvm/trunk/lib/Target/CBackend/LLVMBuild.txt
    llvm/trunk/lib/Target/CellSPU/LLVMBuild.txt
    llvm/trunk/lib/Target/CppBackend/LLVMBuild.txt
    llvm/trunk/lib/Target/MBlaze/LLVMBuild.txt
    llvm/trunk/lib/Target/MSP430/LLVMBuild.txt
    llvm/trunk/lib/Target/Mips/LLVMBuild.txt
    llvm/trunk/lib/Target/PTX/LLVMBuild.txt
    llvm/trunk/lib/Target/PowerPC/LLVMBuild.txt
    llvm/trunk/lib/Target/Sparc/LLVMBuild.txt
    llvm/trunk/lib/Target/X86/LLVMBuild.txt
    llvm/trunk/lib/Target/XCore/LLVMBuild.txt
    llvm/trunk/utils/llvm-build/llvmbuild/componentinfo.py
    llvm/trunk/utils/llvm-build/llvmbuild/main.py

Modified: llvm/trunk/docs/LLVMBuild.html
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/LLVMBuild.html?rev=144250&r1=144249&r2=144250&view=diff
==============================================================================
--- llvm/trunk/docs/LLVMBuild.html (original)
+++ llvm/trunk/docs/LLVMBuild.html Wed Nov  9 18:49:51 2011
@@ -134,7 +134,7 @@
 </div>
 
 <!-- *********************************************************************** -->
-<h2><a name="formatref">LLVMBuild Format Reference</a></h2>
+<h2><a name="formatreference">LLVMBuild Format Reference</a></h2>
 <!-- *********************************************************************** -->
 
 <div>
@@ -151,11 +151,12 @@
 
 <i>; Properties are declared using '=' and are contained in the previous section.
 ;
-; We support simple scalar values and list values, where items are separated by
-; spaces. There is no support for quoting, and so property values may not contain
-; spaces.</i>
+; We support simple string and boolean scalar values and list values, where
+; items are separated by spaces. There is no support for quoting, and so
+; property values may not contain spaces.</i>
 property_name = property_value
 list_property_name = value_1 value_2 <em>...</em> value_n
+boolean_property_name = 1 <em>(or 0)</em>
 </pre>
   </div>
 
@@ -281,6 +282,21 @@
       </ul>
     </li>
 
+    <li><i>type = TargetGroup</i>
+      <p>TargetGroup components are an extension of LibraryGroups, specifically
+      for defining LLVM targets (which are handled specially in a few
+      places).</p>
+
+      <p>The name of the component should always be the name of the target.</p>
+
+      <p>Components with this type use the LibraryGroup properties in addition
+      to:</p>
+      <ul>
+        <li><i>has_jit</i> <b>[optional]</b> <b>[boolean]</b>
+          <p>Whether this target supports JIT compilation.</p></li>
+      </ul>
+    </li>
+
     <li><i>type = Tool</i>
       <p>Tool components define standalone command line tools which should be
       built from the source code in the component directory and linked.</p>

Modified: llvm/trunk/lib/Target/ARM/LLVMBuild.txt
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/LLVMBuild.txt?rev=144250&r1=144249&r2=144250&view=diff
==============================================================================
--- llvm/trunk/lib/Target/ARM/LLVMBuild.txt (original)
+++ llvm/trunk/lib/Target/ARM/LLVMBuild.txt Wed Nov  9 18:49:51 2011
@@ -16,10 +16,11 @@
 ;===------------------------------------------------------------------------===;
 
 [component_0]
-type = LibraryGroup
+type = TargetGroup
 name = ARM
 parent = Target
 add_to_library_groups = all-targets
+has_jit = 1
 
 [component_1]
 type = Library

Modified: llvm/trunk/lib/Target/CBackend/LLVMBuild.txt
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/CBackend/LLVMBuild.txt?rev=144250&r1=144249&r2=144250&view=diff
==============================================================================
--- llvm/trunk/lib/Target/CBackend/LLVMBuild.txt (original)
+++ llvm/trunk/lib/Target/CBackend/LLVMBuild.txt Wed Nov  9 18:49:51 2011
@@ -16,7 +16,7 @@
 ;===------------------------------------------------------------------------===;
 
 [component_0]
-type = LibraryGroup
+type = TargetGroup
 name = CBackend
 parent = Target
 add_to_library_groups = all-targets

Modified: llvm/trunk/lib/Target/CellSPU/LLVMBuild.txt
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/CellSPU/LLVMBuild.txt?rev=144250&r1=144249&r2=144250&view=diff
==============================================================================
--- llvm/trunk/lib/Target/CellSPU/LLVMBuild.txt (original)
+++ llvm/trunk/lib/Target/CellSPU/LLVMBuild.txt Wed Nov  9 18:49:51 2011
@@ -16,7 +16,7 @@
 ;===------------------------------------------------------------------------===;
 
 [component_0]
-type = LibraryGroup
+type = TargetGroup
 name = CellSPU
 parent = Target
 add_to_library_groups = all-targets

Modified: llvm/trunk/lib/Target/CppBackend/LLVMBuild.txt
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/CppBackend/LLVMBuild.txt?rev=144250&r1=144249&r2=144250&view=diff
==============================================================================
--- llvm/trunk/lib/Target/CppBackend/LLVMBuild.txt (original)
+++ llvm/trunk/lib/Target/CppBackend/LLVMBuild.txt Wed Nov  9 18:49:51 2011
@@ -16,7 +16,7 @@
 ;===------------------------------------------------------------------------===;
 
 [component_0]
-type = LibraryGroup
+type = TargetGroup
 name = CppBackend
 parent = Target
 add_to_library_groups = all-targets

Modified: llvm/trunk/lib/Target/MBlaze/LLVMBuild.txt
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/MBlaze/LLVMBuild.txt?rev=144250&r1=144249&r2=144250&view=diff
==============================================================================
--- llvm/trunk/lib/Target/MBlaze/LLVMBuild.txt (original)
+++ llvm/trunk/lib/Target/MBlaze/LLVMBuild.txt Wed Nov  9 18:49:51 2011
@@ -16,7 +16,7 @@
 ;===------------------------------------------------------------------------===;
 
 [component_0]
-type = LibraryGroup
+type = TargetGroup
 name = MBlaze
 parent = Target
 add_to_library_groups = all-targets

Modified: llvm/trunk/lib/Target/MSP430/LLVMBuild.txt
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/MSP430/LLVMBuild.txt?rev=144250&r1=144249&r2=144250&view=diff
==============================================================================
--- llvm/trunk/lib/Target/MSP430/LLVMBuild.txt (original)
+++ llvm/trunk/lib/Target/MSP430/LLVMBuild.txt Wed Nov  9 18:49:51 2011
@@ -16,7 +16,7 @@
 ;===------------------------------------------------------------------------===;
 
 [component_0]
-type = LibraryGroup
+type = TargetGroup
 name = MSP430
 parent = Target
 add_to_library_groups = all-targets

Modified: llvm/trunk/lib/Target/Mips/LLVMBuild.txt
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/LLVMBuild.txt?rev=144250&r1=144249&r2=144250&view=diff
==============================================================================
--- llvm/trunk/lib/Target/Mips/LLVMBuild.txt (original)
+++ llvm/trunk/lib/Target/Mips/LLVMBuild.txt Wed Nov  9 18:49:51 2011
@@ -16,10 +16,11 @@
 ;===------------------------------------------------------------------------===;
 
 [component_0]
-type = LibraryGroup
+type = TargetGroup
 name = Mips
 parent = Target
 add_to_library_groups = all-targets
+has_jit = 1
 
 [component_1]
 type = Library

Modified: llvm/trunk/lib/Target/PTX/LLVMBuild.txt
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PTX/LLVMBuild.txt?rev=144250&r1=144249&r2=144250&view=diff
==============================================================================
--- llvm/trunk/lib/Target/PTX/LLVMBuild.txt (original)
+++ llvm/trunk/lib/Target/PTX/LLVMBuild.txt Wed Nov  9 18:49:51 2011
@@ -16,7 +16,7 @@
 ;===------------------------------------------------------------------------===;
 
 [component_0]
-type = LibraryGroup
+type = TargetGroup
 name = PTX
 parent = Target
 add_to_library_groups = all-targets

Modified: llvm/trunk/lib/Target/PowerPC/LLVMBuild.txt
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PowerPC/LLVMBuild.txt?rev=144250&r1=144249&r2=144250&view=diff
==============================================================================
--- llvm/trunk/lib/Target/PowerPC/LLVMBuild.txt (original)
+++ llvm/trunk/lib/Target/PowerPC/LLVMBuild.txt Wed Nov  9 18:49:51 2011
@@ -16,10 +16,11 @@
 ;===------------------------------------------------------------------------===;
 
 [component_0]
-type = LibraryGroup
+type = TargetGroup
 name = PowerPC
 parent = Target
 add_to_library_groups = all-targets
+has_jit = 1
 
 [component_1]
 type = Library

Modified: llvm/trunk/lib/Target/Sparc/LLVMBuild.txt
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Sparc/LLVMBuild.txt?rev=144250&r1=144249&r2=144250&view=diff
==============================================================================
--- llvm/trunk/lib/Target/Sparc/LLVMBuild.txt (original)
+++ llvm/trunk/lib/Target/Sparc/LLVMBuild.txt Wed Nov  9 18:49:51 2011
@@ -16,7 +16,7 @@
 ;===------------------------------------------------------------------------===;
 
 [component_0]
-type = LibraryGroup
+type = TargetGroup
 name = Sparc
 parent = Target
 add_to_library_groups = all-targets

Modified: llvm/trunk/lib/Target/X86/LLVMBuild.txt
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/LLVMBuild.txt?rev=144250&r1=144249&r2=144250&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/LLVMBuild.txt (original)
+++ llvm/trunk/lib/Target/X86/LLVMBuild.txt Wed Nov  9 18:49:51 2011
@@ -16,10 +16,11 @@
 ;===------------------------------------------------------------------------===;
 
 [component_0]
-type = LibraryGroup
+type = TargetGroup
 name = X86
 parent = Target
 add_to_library_groups = all-targets
+has_jit = 1
 
 [component_1]
 type = Library

Modified: llvm/trunk/lib/Target/XCore/LLVMBuild.txt
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/XCore/LLVMBuild.txt?rev=144250&r1=144249&r2=144250&view=diff
==============================================================================
--- llvm/trunk/lib/Target/XCore/LLVMBuild.txt (original)
+++ llvm/trunk/lib/Target/XCore/LLVMBuild.txt Wed Nov  9 18:49:51 2011
@@ -16,7 +16,7 @@
 ;===------------------------------------------------------------------------===;
 
 [component_0]
-type = LibraryGroup
+type = TargetGroup
 name = XCore
 parent = Target
 add_to_library_groups = all-targets

Modified: llvm/trunk/utils/llvm-build/llvmbuild/componentinfo.py
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/llvm-build/llvmbuild/componentinfo.py?rev=144250&r1=144249&r2=144250&view=diff
==============================================================================
--- llvm/trunk/utils/llvm-build/llvmbuild/componentinfo.py (original)
+++ llvm/trunk/utils/llvm-build/llvmbuild/componentinfo.py Wed Nov  9 18:49:51 2011
@@ -188,6 +188,60 @@
     def get_llvmconfig_component_name(self):
         return self.name.lower()
 
+class TargetGroupComponentInfo(ComponentInfo):
+    type_name = 'TargetGroup'
+
+    @staticmethod
+    def parse(subpath, items):
+        kwargs = ComponentInfo.parse_items(items, has_dependencies = False)
+        kwargs['required_libraries'] = items.get_list('required_libraries')
+        kwargs['add_to_library_groups'] = items.get_list(
+            'add_to_library_groups')
+        kwargs['has_jit'] = items.get_optional_bool('has_jit', False)
+        return TargetGroupComponentInfo(subpath, **kwargs)
+
+    def __init__(self, subpath, name, parent, required_libraries = [],
+                 add_to_library_groups = [], has_jit = False):
+        ComponentInfo.__init__(self, subpath, name, [], parent)
+
+        # The names of the library components which are required when linking
+        # with this component.
+        self.required_libraries = list(required_libraries)
+
+        # The names of the library group components this component should be
+        # considered part of.
+        self.add_to_library_groups = list(add_to_library_groups)
+
+        # Whether or not this target supports the JIT.
+        self.has_jit = bool(has_jit)
+
+    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)
+
+    def get_llvmbuild_fragment(self):
+        result = StringIO.StringIO()
+        print >>result, 'type = %s' % self.type_name
+        print >>result, 'name = %s' % self.name
+        print >>result, 'parent = %s' % self.parent
+        if self.required_libraries:
+            print >>result, 'required_libraries = %s' % ' '.join(
+                self.required_libraries)
+        if self.add_to_library_groups:
+            print >>result, 'add_to_library_groups = %s' % ' '.join(
+                self.add_to_library_groups)
+        if self.has_jit:
+            print >>result, 'has_jit = %s' % ' '.join(
+                int(self.has_jit))
+        return result.getvalue()
+
+    def get_llvmconfig_component_name(self):
+        return self.name.lower()
+
 class ToolComponentInfo(ComponentInfo):
     type_name = 'Tool'
 
@@ -255,11 +309,27 @@
             raise ParseError("missing value for required string: %r" % key)
         return value
 
+    def get_optional_bool(self, key, default = None):
+        value = self.get_optional_string(key)
+        if not value:
+            return default
+        if value not in ('0', '1'):
+            raise ParseError("invalid value(%r) for boolean property: %r" % (
+                    value, key))
+        return bool(int(value))
+
+    def get_bool(self, key):
+        value = self.get_optional_bool(key)
+        if value is None:
+            raise ParseError("missing value for required boolean: %r" % key)
+        return value
+
 _component_type_map = dict(
     (t.type_name, t)
     for t in (GroupComponentInfo,
               LibraryComponentInfo, LibraryGroupComponentInfo,
-              ToolComponentInfo, BuildToolComponentInfo))
+              ToolComponentInfo, BuildToolComponentInfo,
+              TargetGroupComponentInfo))
 def load_from_path(path, subpath):
     # Load the LLVMBuild.txt file as an .ini format file.
     parser = ConfigParser.RawConfigParser()

Modified: llvm/trunk/utils/llvm-build/llvmbuild/main.py
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/llvm-build/llvmbuild/main.py?rev=144250&r1=144249&r2=144250&view=diff
==============================================================================
--- llvm/trunk/utils/llvm-build/llvmbuild/main.py (original)
+++ llvm/trunk/utils/llvm-build/llvmbuild/main.py Wed Nov  9 18:49:51 2011
@@ -242,8 +242,8 @@
         # dependencies for added library groups.
         entries = {}
         for c in self.ordered_component_infos:
-            # Only Library and LibraryGroup components are in the table.
-            if c.type_name not in ('Library', 'LibraryGroup'):
+            # Only certain components are in the table.
+            if c.type_name not in ('Library', 'LibraryGroup', 'TargetGroup'):
                 continue
 
             # Compute the llvm-config "component name". For historical reasons,
@@ -251,10 +251,10 @@
             llvmconfig_component_name = c.get_llvmconfig_component_name()
             
             # Get the library name, or None for LibraryGroups.
-            if c.type_name == 'LibraryGroup':
-                library_name = None
-            else:
+            if c.type_name == 'Library':
                 library_name = c.get_library_name()
+            else:
+                library_name = None
 
             # Get the component names of all the required libraries.
             required_llvmconfig_component_names = [





More information about the llvm-commits mailing list