forked from OSchip/llvm-project
Add AllTargetsBindings sublibrary instead of having static inlines in the llvm-c headers.
This new library will be linked in when using the "all-targets" component and contains the LLVMInitializeAll* functions. This means that those functions will exist as real symbols in the shared library, and can therefore can be called from bindings that are using ffi the shared library. llvm-svn: 192690
This commit is contained in:
parent
14b9924c7b
commit
1d9cb434b3
|
@ -71,62 +71,37 @@ typedef struct LLVMStructLayout *LLVMStructLayoutRef;
|
||||||
void LLVMInitialize##TargetName##Disassembler(void);
|
void LLVMInitialize##TargetName##Disassembler(void);
|
||||||
#include "llvm/Config/Disassemblers.def"
|
#include "llvm/Config/Disassemblers.def"
|
||||||
#undef LLVM_DISASSEMBLER /* Explicit undef to make SWIG happier */
|
#undef LLVM_DISASSEMBLER /* Explicit undef to make SWIG happier */
|
||||||
|
|
||||||
/** LLVMInitializeAllTargetInfos - The main program should call this function if
|
/** LLVMInitializeAllTargetInfos - The main program should call this function if
|
||||||
it wants access to all available targets that LLVM is configured to
|
it wants access to all available targets that LLVM is configured to
|
||||||
support. */
|
support. */
|
||||||
static inline void LLVMInitializeAllTargetInfos(void) {
|
void LLVMInitializeAllTargetInfos(void);
|
||||||
#define LLVM_TARGET(TargetName) LLVMInitialize##TargetName##TargetInfo();
|
|
||||||
#include "llvm/Config/Targets.def"
|
|
||||||
#undef LLVM_TARGET /* Explicit undef to make SWIG happier */
|
|
||||||
}
|
|
||||||
|
|
||||||
/** LLVMInitializeAllTargets - The main program should call this function if it
|
/** LLVMInitializeAllTargets - The main program should call this function if it
|
||||||
wants to link in all available targets that LLVM is configured to
|
wants to link in all available targets that LLVM is configured to
|
||||||
support. */
|
support. */
|
||||||
static inline void LLVMInitializeAllTargets(void) {
|
void LLVMInitializeAllTargets(void);
|
||||||
#define LLVM_TARGET(TargetName) LLVMInitialize##TargetName##Target();
|
|
||||||
#include "llvm/Config/Targets.def"
|
|
||||||
#undef LLVM_TARGET /* Explicit undef to make SWIG happier */
|
|
||||||
}
|
|
||||||
|
|
||||||
/** LLVMInitializeAllTargetMCs - The main program should call this function if
|
/** LLVMInitializeAllTargetMCs - The main program should call this function if
|
||||||
it wants access to all available target MC that LLVM is configured to
|
it wants access to all available target MC that LLVM is configured to
|
||||||
support. */
|
support. */
|
||||||
static inline void LLVMInitializeAllTargetMCs(void) {
|
void LLVMInitializeAllTargetMCs(void);
|
||||||
#define LLVM_TARGET(TargetName) LLVMInitialize##TargetName##TargetMC();
|
|
||||||
#include "llvm/Config/Targets.def"
|
|
||||||
#undef LLVM_TARGET /* Explicit undef to make SWIG happier */
|
|
||||||
}
|
|
||||||
|
|
||||||
/** LLVMInitializeAllAsmPrinters - The main program should call this function if
|
/** LLVMInitializeAllAsmPrinters - The main program should call this function if
|
||||||
it wants all asm printers that LLVM is configured to support, to make them
|
it wants all asm printers that LLVM is configured to support, to make them
|
||||||
available via the TargetRegistry. */
|
available via the TargetRegistry. */
|
||||||
static inline void LLVMInitializeAllAsmPrinters(void) {
|
void LLVMInitializeAllAsmPrinters(void);
|
||||||
#define LLVM_ASM_PRINTER(TargetName) LLVMInitialize##TargetName##AsmPrinter();
|
|
||||||
#include "llvm/Config/AsmPrinters.def"
|
|
||||||
#undef LLVM_ASM_PRINTER /* Explicit undef to make SWIG happier */
|
|
||||||
}
|
|
||||||
|
|
||||||
/** LLVMInitializeAllAsmParsers - The main program should call this function if
|
/** LLVMInitializeAllAsmParsers - The main program should call this function if
|
||||||
it wants all asm parsers that LLVM is configured to support, to make them
|
it wants all asm parsers that LLVM is configured to support, to make them
|
||||||
available via the TargetRegistry. */
|
available via the TargetRegistry. */
|
||||||
static inline void LLVMInitializeAllAsmParsers(void) {
|
void LLVMInitializeAllAsmParsers(void);
|
||||||
#define LLVM_ASM_PARSER(TargetName) LLVMInitialize##TargetName##AsmParser();
|
|
||||||
#include "llvm/Config/AsmParsers.def"
|
|
||||||
#undef LLVM_ASM_PARSER /* Explicit undef to make SWIG happier */
|
|
||||||
}
|
|
||||||
|
|
||||||
/** LLVMInitializeAllDisassemblers - The main program should call this function
|
/** LLVMInitializeAllDisassemblers - The main program should call this function
|
||||||
if it wants all disassemblers that LLVM is configured to support, to make
|
if it wants all disassemblers that LLVM is configured to support, to make
|
||||||
them available via the TargetRegistry. */
|
them available via the TargetRegistry. */
|
||||||
static inline void LLVMInitializeAllDisassemblers(void) {
|
void LLVMInitializeAllDisassemblers(void);
|
||||||
#define LLVM_DISASSEMBLER(TargetName) \
|
|
||||||
LLVMInitialize##TargetName##Disassembler();
|
|
||||||
#include "llvm/Config/Disassemblers.def"
|
|
||||||
#undef LLVM_DISASSEMBLER /* Explicit undef to make SWIG happier */
|
|
||||||
}
|
|
||||||
|
|
||||||
/** LLVMInitializeNativeTarget - The main program should call this function to
|
/** LLVMInitializeNativeTarget - 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. */
|
||||||
|
|
|
@ -0,0 +1,42 @@
|
||||||
|
//===-- AllTargetsBindings.cpp --------------------------------------------===//
|
||||||
|
//
|
||||||
|
// The LLVM Compiler Infrastructure
|
||||||
|
//
|
||||||
|
// This file is distributed under the University of Illinois Open Source
|
||||||
|
// License. See LICENSE.TXT for details.
|
||||||
|
//
|
||||||
|
//===----------------------------------------------------------------------===//
|
||||||
|
//
|
||||||
|
// This file implements the llvm-c functions for initialization of
|
||||||
|
// different aspects of all configured targets.
|
||||||
|
//
|
||||||
|
//===----------------------------------------------------------------------===//
|
||||||
|
|
||||||
|
#include "llvm-c/Target.h"
|
||||||
|
#include "llvm/Support/TargetSelect.h"
|
||||||
|
|
||||||
|
using namespace llvm;
|
||||||
|
|
||||||
|
void LLVMInitializeAllTargetInfos(void) {
|
||||||
|
InitializeAllTargetInfos();
|
||||||
|
}
|
||||||
|
|
||||||
|
void LLVMInitializeAllTargets(void) {
|
||||||
|
InitializeAllTargets();
|
||||||
|
}
|
||||||
|
|
||||||
|
void LLVMInitializeAllTargetMCs(void) {
|
||||||
|
InitializeAllTargetMCs();
|
||||||
|
}
|
||||||
|
|
||||||
|
void LLVMInitializeAllAsmPrinters(void) {
|
||||||
|
InitializeAllAsmPrinters();
|
||||||
|
}
|
||||||
|
|
||||||
|
void LLVMInitializeAllAsmParsers(void) {
|
||||||
|
InitializeAllAsmParsers();
|
||||||
|
}
|
||||||
|
|
||||||
|
void LLVMInitializeAllDisassemblers(void) {
|
||||||
|
InitializeAllDisassemblers();
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
add_llvm_library(LLVMAllTargetsBindings
|
||||||
|
AllTargetsBindings.cpp
|
||||||
|
)
|
|
@ -0,0 +1,32 @@
|
||||||
|
;===- ./lib/Target/LLVMBuild.txt -------------------------------*- Conf -*--===;
|
||||||
|
;
|
||||||
|
; The LLVM Compiler Infrastructure
|
||||||
|
;
|
||||||
|
; This file is distributed under the University of Illinois Open Source
|
||||||
|
; License. See LICENSE.TXT for details.
|
||||||
|
;
|
||||||
|
;===------------------------------------------------------------------------===;
|
||||||
|
;
|
||||||
|
; This is an LLVMBuild description file for the components in this subdirectory.
|
||||||
|
;
|
||||||
|
; For more information on the LLVMBuild system, please see:
|
||||||
|
;
|
||||||
|
; http://llvm.org/docs/LLVMBuild.html
|
||||||
|
;
|
||||||
|
;===------------------------------------------------------------------------===;
|
||||||
|
|
||||||
|
; This is a special group whose required libraries are extended (by llvm-build)
|
||||||
|
; with every built target, which makes it easy for tools to include every
|
||||||
|
; target.
|
||||||
|
[component_0]
|
||||||
|
type = LibraryGroup
|
||||||
|
name = all-targets
|
||||||
|
parent = Libraries
|
||||||
|
|
||||||
|
; This is the actual library built in this directory.
|
||||||
|
; It just contains the llvm-c bindings LLVMInitializeAllTarget* functions
|
||||||
|
[component_1]
|
||||||
|
type = Library
|
||||||
|
name = AllTargetsBindings
|
||||||
|
parent = Libraries
|
||||||
|
add_to_library_groups = all-targets
|
|
@ -0,0 +1,14 @@
|
||||||
|
#===- lib/Target/AllTargetsBindings/Makefile ---------------*- Makefile -*-===##
|
||||||
|
#
|
||||||
|
# The LLVM Compiler Infrastructure
|
||||||
|
#
|
||||||
|
# This file is distributed under the University of Illinois Open Source
|
||||||
|
# License. See LICENSE.TXT for details.
|
||||||
|
#
|
||||||
|
##===----------------------------------------------------------------------===##
|
||||||
|
|
||||||
|
LEVEL = ../../..
|
||||||
|
LIBRARYNAME = LLVMAllTargetsBindings
|
||||||
|
BUILD_ARCHIVE = 1
|
||||||
|
|
||||||
|
include $(LEVEL)/Makefile.common
|
|
@ -14,3 +14,5 @@ foreach(t ${LLVM_TARGETS_TO_BUILD})
|
||||||
message(STATUS "Targeting ${t}")
|
message(STATUS "Targeting ${t}")
|
||||||
add_subdirectory(${t})
|
add_subdirectory(${t})
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
|
add_subdirectory("AllTargetsBindings")
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
;===------------------------------------------------------------------------===;
|
;===------------------------------------------------------------------------===;
|
||||||
|
|
||||||
[common]
|
[common]
|
||||||
subdirectories = AArch64 ARM CppBackend Hexagon MSP430 NVPTX Mips PowerPC R600 Sparc SystemZ X86 XCore
|
subdirectories = AArch64 ARM CppBackend Hexagon MSP430 NVPTX Mips PowerPC R600 Sparc SystemZ X86 XCore AllTargetsBindings
|
||||||
|
|
||||||
; This is a special group whose required libraries are extended (by llvm-build)
|
; This is a special group whose required libraries are extended (by llvm-build)
|
||||||
; with the best execution engine (the native JIT, if available, or the
|
; with the best execution engine (the native JIT, if available, or the
|
||||||
|
@ -47,10 +47,3 @@ name = Target
|
||||||
parent = Libraries
|
parent = Libraries
|
||||||
required_libraries = Core MC Support
|
required_libraries = Core MC Support
|
||||||
|
|
||||||
; This is a special group whose required libraries are extended (by llvm-build)
|
|
||||||
; with every built target, which makes it easy for tools to include every
|
|
||||||
; target.
|
|
||||||
[component_4]
|
|
||||||
type = LibraryGroup
|
|
||||||
name = all-targets
|
|
||||||
parent = Libraries
|
|
||||||
|
|
|
@ -15,6 +15,6 @@ BUILD_ARCHIVE = 1
|
||||||
# value for PARALLEL_DIRS which must be set before Makefile.rules is included
|
# value for PARALLEL_DIRS which must be set before Makefile.rules is included
|
||||||
include $(LEVEL)/Makefile.config
|
include $(LEVEL)/Makefile.config
|
||||||
|
|
||||||
PARALLEL_DIRS := $(TARGETS_TO_BUILD)
|
PARALLEL_DIRS := $(TARGETS_TO_BUILD) AllTargetsBindings
|
||||||
|
|
||||||
include $(LLVM_SRC_ROOT)/Makefile.rules
|
include $(LLVM_SRC_ROOT)/Makefile.rules
|
||||||
|
|
Loading…
Reference in New Issue