Add the rest of the build system logic for optional target disassemblers

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89841 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Daniel Dunbar
2009-11-25 04:46:58 +00:00
parent 4fc760ecb9
commit f87ea4dd9a
5 changed files with 32 additions and 3 deletions

View File

@@ -155,9 +155,11 @@ install-libs: install
FilesToConfig := \ FilesToConfig := \
include/llvm/Config/config.h \ include/llvm/Config/config.h \
include/llvm/Config/Targets.def \ 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 \ include/llvm/System/DataTypes.h \
tools/llvmc/plugins/Base/Base.td tools/llvmc/plugins/Base/Base.td
FilesToConfigPATH := $(addprefix $(LLVM_OBJ_ROOT)/,$(FilesToConfig)) FilesToConfigPATH := $(addprefix $(LLVM_OBJ_ROOT)/,$(FilesToConfig))
all-local:: $(FilesToConfigPATH) all-local:: $(FilesToConfigPATH)

View File

@@ -1565,6 +1565,11 @@ $(ObjDir)/%GenDAGISel.inc.tmp : %.td $(ObjDir)/.dir
$(Echo) "Building $(<F) DAG instruction selector implementation with tblgen" $(Echo) "Building $(<F) DAG instruction selector implementation with tblgen"
$(Verb) $(TableGen) -gen-dag-isel -o $(call SYSPATH, $@) $< $(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): \ $(TARGET:%=$(ObjDir)/%GenFastISel.inc.tmp): \
$(ObjDir)/%GenFastISel.inc.tmp : %.td $(ObjDir)/.dir $(ObjDir)/%GenFastISel.inc.tmp : %.td $(ObjDir)/.dir
$(Echo) "Building $(<F) \"fast\" instruction selector implementation with tblgen" $(Echo) "Building $(<F) \"fast\" instruction selector implementation with tblgen"

View File

@@ -32,7 +32,7 @@ endfunction(explicit_llvm_config)
function(explicit_map_components_to_libraries out_libs) function(explicit_map_components_to_libraries out_libs)
set( link_components ${ARGN} ) set( link_components ${ARGN} )
foreach(c ${link_components}) foreach(c ${link_components})
# add codegen, asmprinter, asmparser # add codegen, asmprinter, asmparser, disassembler
list(FIND LLVM_TARGETS_TO_BUILD ${c} idx) list(FIND LLVM_TARGETS_TO_BUILD ${c} idx)
if( NOT idx LESS 0 ) if( NOT idx LESS 0 )
list(FIND llvm_libs "LLVM${c}CodeGen" idx) 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 ) if( NOT asmidx LESS 0 )
list(APPEND expanded_components "LLVM${c}Info") list(APPEND expanded_components "LLVM${c}Info")
endif() 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" ) elseif( c STREQUAL "native" )
list(APPEND expanded_components "LLVM${LLVM_NATIVE_ARCH}CodeGen") list(APPEND expanded_components "LLVM${LLVM_NATIVE_ARCH}CodeGen")
elseif( c STREQUAL "nativecodegen" ) elseif( c STREQUAL "nativecodegen" )

View File

@@ -33,6 +33,10 @@ extern "C" {
// Declare all of the available assembly parser initialization functions. // Declare all of the available assembly parser initialization functions.
#define LLVM_ASM_PARSER(TargetName) void LLVMInitialize##TargetName##AsmParser(); #define LLVM_ASM_PARSER(TargetName) void LLVMInitialize##TargetName##AsmParser();
#include "llvm/Config/AsmParsers.def" #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 { namespace llvm {
@@ -79,6 +83,16 @@ namespace llvm {
#include "llvm/Config/AsmParsers.def" #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 /// InitializeNativeTarget - The main program should call this function to
/// initialize the native target corresponding to the host. This is useful /// initialize the native target corresponding to the host. This is useful
/// for JIT applications to ensure that the target gets linked in correctly. /// for JIT applications to ensure that the target gets linked in correctly.

View File

@@ -333,6 +333,10 @@ sub build_name_map {
if (defined $NAME_MAP{$target.'asmparser'}) { if (defined $NAME_MAP{$target.'asmparser'}) {
push @{$NAME_MAP{$target}},$target.'asmparser' push @{$NAME_MAP{$target}},$target.'asmparser'
} }
if (defined $NAME_MAP{$target.'disassembler'}) {
push @{$NAME_MAP{$target}},$target.'disassembler'
}
} }
# Add virtual entries. # Add virtual entries.