TargetSelect.h revision affc150dc44fab1911775a49636d0ce85333b634
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 MCLD_TARGET_SELECT_H 10#define MCLD_TARGET_SELECT_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 36 // Declare all of the available target-specific diagnostic line infomation 37#define LLVM_LINKER(TargetName) void LLVMInitialize##TargetName##DiagnosticLineInfo(); 38#include "mcld/Config/Linkers.def" 39 40} // extern "C" 41 42namespace mcld 43{ 44 /// InitializeAllTargetInfos - The main program should call this function if 45 /// it wants access to all available targets that LLVM is configured to 46 /// support, to make them available via the TargetRegistry. 47 /// 48 /// It is legal for a client to make multiple calls to this function. 49 inline void InitializeAllTargetInfos() { 50#define LLVM_TARGET(TargetName) LLVMInitialize##TargetName##LDTargetInfo(); 51#include "mcld/Config/Targets.def" 52 } 53 54 /// InitializeAllTargets - The main program should call this function if it 55 /// wants access to all available target machines that LLVM is configured to 56 /// support, to make them available via the TargetRegistry. 57 /// 58 /// It is legal for a client to make multiple calls to this function. 59 inline void InitializeAllTargets() { 60 mcld::InitializeAllTargetInfos(); 61 62#define LLVM_TARGET(TargetName) LLVMInitialize##TargetName##LDTarget(); 63#include "mcld/Config/Targets.def" 64 65#define LLVM_TARGET(TargetName) LLVMInitialize##TargetName##LDBackend(); 66#include "mcld/Config/Targets.def" 67 } 68 69 /// InitializeAllLinkers - The main program should call this function if it 70 /// wants all linkers that LLVM is configured to support, to make them 71 /// available via the TargetRegistry. 72 /// 73 /// It is legal for a client to make multiple calls to this function. 74 inline void InitializeAllLinkers() { 75#define LLVM_LINKER(TargetName) LLVMInitialize##TargetName##SectLinker(); 76#include "mcld/Config/Linkers.def" 77 } 78 79 /// InitializeMsgHandler - The main program should call this function if it 80 /// wants to print linker-specific messages. To make them available via the 81 /// TargetRegistry. 82 inline void InitializeAllDiagnostics() { 83#define LLVM_LINKER(TargetName) LLVMInitialize##TargetName##DiagnosticLineInfo(); 84#include "mcld/Config/Linkers.def" 85 } 86 87} // namespace of mcld 88 89#endif 90 91