Add the rest of the build system logic for optional target disassemblers
authorDaniel Dunbar <daniel@zuster.org>
Wed, 25 Nov 2009 04:46:58 +0000 (04:46 +0000)
committerDaniel Dunbar <daniel@zuster.org>
Wed, 25 Nov 2009 04:46:58 +0000 (04:46 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89841 91177308-0d34-0410-b5e6-96231b3b80d8

Makefile
Makefile.rules
cmake/modules/LLVMConfig.cmake
include/llvm/Target/TargetSelect.h
tools/llvm-config/llvm-config.in.in

index 31c1b6961a3bde87fad01d7554b7f45ad09aae28..1ef89e4ede09d7a9333345874ffb7569e9744e15 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -155,9 +155,11 @@ install-libs: install
 FilesToConfig := \
   include/llvm/Config/config.h \
   include/llvm/Config/Targets.def \
-       include/llvm/Config/AsmPrinters.def \
+  include/llvm/Config/AsmPrinters.def \
+  include/llvm/Config/AsmParsers.def \
+  include/llvm/Config/Disassemblers.def \
   include/llvm/System/DataTypes.h \
-       tools/llvmc/plugins/Base/Base.td
+  tools/llvmc/plugins/Base/Base.td
 FilesToConfigPATH  := $(addprefix $(LLVM_OBJ_ROOT)/,$(FilesToConfig))
 
 all-local:: $(FilesToConfigPATH)
index d9b210841e6be1678f37ddde85f052899b26ade7..49ecb1e2d866588e5c345864cc3259ad3f9abb9e 100644 (file)
@@ -1565,6 +1565,11 @@ $(ObjDir)/%GenDAGISel.inc.tmp : %.td $(ObjDir)/.dir
        $(Echo) "Building $(<F) DAG instruction selector implementation with tblgen"
        $(Verb) $(TableGen) -gen-dag-isel -o $(call SYSPATH, $@) $<
 
+$(TARGET:%=$(ObjDir)/%GenDisassemblerTables.inc.tmp): \
+$(ObjDir)/%GenDisassemblerTables.inc.tmp : %.td $(ObjDir)/.dir
+       $(Echo) "Building $(<F) disassembly tables with tblgen"
+       $(Verb) $(TableGen) -gen-disassembler -o $(call SYSPATH, $@) $<
+
 $(TARGET:%=$(ObjDir)/%GenFastISel.inc.tmp): \
 $(ObjDir)/%GenFastISel.inc.tmp : %.td $(ObjDir)/.dir
        $(Echo) "Building $(<F) \"fast\" instruction selector implementation with tblgen"
index a7536748a3702bb1ea11e147cd4515af41494a34..0744b50d648f078bb8c36de15035bb6c2cb2fdab 100755 (executable)
@@ -32,7 +32,7 @@ endfunction(explicit_llvm_config)
 function(explicit_map_components_to_libraries out_libs)
   set( link_components ${ARGN} )
   foreach(c ${link_components})
-    # add codegen, asmprinter, asmparser
+    # add codegen, asmprinter, asmparser, disassembler
     list(FIND LLVM_TARGETS_TO_BUILD ${c} idx)
     if( NOT idx LESS 0 )
       list(FIND llvm_libs "LLVM${c}CodeGen" idx)
@@ -58,6 +58,10 @@ function(explicit_map_components_to_libraries out_libs)
       if( NOT asmidx LESS 0 )
         list(APPEND expanded_components "LLVM${c}Info")
       endif()
+      list(FIND llvm_libs "LLVM${c}Disassembler" asmidx)
+      if( NOT asmidx LESS 0 )
+        list(APPEND expanded_components "LLVM${c}Disassembler")
+      endif()
     elseif( c STREQUAL "native" )
       list(APPEND expanded_components "LLVM${LLVM_NATIVE_ARCH}CodeGen")
     elseif( c STREQUAL "nativecodegen" )
index e79f651e5da5fed1940a2ee0047b7f79b4caa6fe..951e7fa86b5d0fa1bd922dec5202f48ef5618b07 100644 (file)
@@ -33,6 +33,10 @@ extern "C" {
   // Declare all of the available assembly parser initialization functions.
 #define LLVM_ASM_PARSER(TargetName) void LLVMInitialize##TargetName##AsmParser();
 #include "llvm/Config/AsmParsers.def"
+
+  // Declare all of the available disassembler initialization functions.
+#define LLVM_DISASSEMBLER(TargetName) void LLVMInitialize##TargetName##Disassembler();
+#include "llvm/Config/Disassemblers.def"
 }
 
 namespace llvm {
@@ -79,6 +83,16 @@ namespace llvm {
 #include "llvm/Config/AsmParsers.def"
   }
   
+  /// InitializeAllDisassemblers - The main program should call this function if
+  /// it wants all disassemblers that LLVM is configured to support, to make
+  /// them available via the TargetRegistry.
+  ///
+  /// It is legal for a client to make multiple calls to this function.
+  inline void InitializeAllDisassemblers() {
+#define LLVM_DISASSEMBLER(TargetName) LLVMInitialize##TargetName##Disassembler();
+#include "llvm/Config/Disassemblers.def"
+  }
+  
   /// InitializeNativeTarget - The main program should call this function to
   /// initialize the native target corresponding to the host.  This is useful 
   /// for JIT applications to ensure that the target gets linked in correctly.
index 7f93f168dfd8d73f2aebc9b895b01f91f065876a..d0edda0ef55cf7a1d33684a7654af4dda295dfa4 100644 (file)
@@ -333,6 +333,10 @@ sub build_name_map {
         if (defined $NAME_MAP{$target.'asmparser'}) {
             push @{$NAME_MAP{$target}},$target.'asmparser'
         }
+
+        if (defined $NAME_MAP{$target.'disassembler'}) {
+            push @{$NAME_MAP{$target}},$target.'disassembler'
+        }
     }
 
     # Add virtual entries.