TargetSelect.h revision 5460a1f25d9ddecb5c70667267d66d51af177a99
1//===- TargetSelect.h -----------------------------------------------------===// 2// 3// The MCLinker Project 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9#ifndef TARGETSELECT_H 10#define TARGETSELECT_H 11#ifdef ENABLE_UNITTEST 12#include <gtest.h> 13#endif 14 15extern "C" { 16 // Declare all of the target-initialization functions that are available. 17#define LLVM_TARGET(TargetName) void LLVMInitialize##TargetName##LDTargetInfo(); 18#include "mcld/Config/Targets.def" 19 20 // Declare all of the target-dependent functions that are available. 21#define LLVM_TARGET(TargetName) void LLVMInitialize##TargetName##LDTarget(); 22#include "mcld/Config/Targets.def" 23 24 // Declare all of the target-depedent linker information 25#define LLVM_LINKER(TargetName) void LLVMInitialize##TargetName##LDInfo(); 26#include "mcld/Config/Linkers.def" 27 28 // Declare all of the available linker environment. 29#define LLVM_LINKER(TargetName) void LLVMInitialize##TargetName##SectLinker(); 30#include "mcld/Config/Linkers.def" 31 32 // Declare all of the available target-specific linker 33#define LLVM_LINKER(TargetName) void LLVMInitialize##TargetName##LDBackend(); 34#include "mcld/Config/Linkers.def" 35} // extern "C" 36 37namespace mcld 38{ 39 /// InitializeAllTargetInfos - The main program should call this function if 40 /// it wants access to all available targets that LLVM is configured to 41 /// support, to make them available via the TargetRegistry. 42 /// 43 /// It is legal for a client to make multiple calls to this function. 44 inline void InitializeAllTargetInfos() { 45#define LLVM_TARGET(TargetName) LLVMInitialize##TargetName##LDTargetInfo(); 46#include "mcld/Config/Targets.def" 47 } 48 49 /// InitializeAllTargets - The main program should call this function if it 50 /// wants access to all available target machines that LLVM is configured to 51 /// support, to make them available via the TargetRegistry. 52 /// 53 /// It is legal for a client to make multiple calls to this function. 54 inline void InitializeAllTargets() { 55 mcld::InitializeAllTargetInfos(); 56 57#define LLVM_TARGET(TargetName) LLVMInitialize##TargetName##LDTarget(); 58#include "mcld/Config/Targets.def" 59 } 60 61 /// InitializeAllLinkers - The main program should call this function if it 62 /// wants all linkers that LLVM is configured to support, to make them 63 /// available via the TargetRegistry. 64 /// 65 /// It is legal for a client to make multiple calls to this function. 66 inline void InitializeAllLinkers() { 67#define LLVM_LINKER(TargetName) LLVMInitialize##TargetName##SectLinker(); 68#include "mcld/Config/Linkers.def" 69 70#define LLVM_LINKER(TargetName) LLVMInitialize##TargetName##LDBackend(); 71#include "mcld/Config/Linkers.def" 72 } 73 74} // namespace of mcld 75 76#endif 77 78