1 //===- TargetSelect.h - Target Selection & Registration -------------------===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 // This file provides utilities to make sure that certain classes of targets are
11 // linked into the main application executable, and initialize them as
14 //===----------------------------------------------------------------------===//
16 #ifndef LLVM_TARGET_TARGETSELECT_H
17 #define LLVM_TARGET_TARGETSELECT_H
19 #include "llvm/Config/config.h"
22 // Declare all of the target-initialization functions that are available.
23 #define LLVM_TARGET(TargetName) void LLVMInitialize##TargetName##Target();
24 #include "llvm/Config/Targets.def"
26 // Declare all of the available asm-printer initialization functions.
27 #define LLVM_ASM_PRINTER(TargetName) void LLVMInitialize##TargetName##AsmPrinter();
28 #include "llvm/Config/AsmPrinters.def"
32 /// InitializeAllTargets - The main program should call this function if it
33 /// wants to link in all available targets that LLVM is configured to support.
34 inline void InitializeAllTargets() {
35 #define LLVM_TARGET(TargetName) LLVMInitialize##TargetName##Target();
36 #include "llvm/Config/Targets.def"
39 /// InitializeAllAsmPrinters - The main program should call this function if
40 /// it wants all asm printers that LLVM is configured to support. This will
41 /// cause them to be linked into its executable.
42 inline void InitializeAllAsmPrinters() {
43 #define LLVM_ASM_PRINTER(TargetName) LLVMInitialize##TargetName##AsmPrinter();
44 #include "llvm/Config/AsmPrinters.def"
47 /// InitializeNativeTarget - The main program should call this function to
48 /// initialize the native target corresponding to the host. This is useful
49 /// for JIT applications to ensure that the target gets linked in correctly.
50 inline bool InitializeNativeTarget() {
51 // If we have a native target, initialize it to ensure it is linked in.
52 #ifdef LLVM_NATIVE_ARCH
53 #define DoInit2(TARG) LLVMInitialize ## TARG ()
54 #define DoInit(T) DoInit2(T)
55 DoInit(LLVM_NATIVE_ARCH);