1 //===- TargetRegistry.cpp -------------------------------------------------===// 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 #include <mcld/Support/TargetRegistry.h> 10 11 12 mcld::TargetRegistry::TargetListTy mcld::TargetRegistry::s_TargetList; 13 RegisterTarget(mcld::Target & T)14void mcld::TargetRegistry::RegisterTarget(mcld::Target &T) 15 { 16 s_TargetList.push_back(&T); 17 } 18 lookupTarget(const llvm::Target & pTarget)19const mcld::Target* mcld::TargetRegistry::lookupTarget(const llvm::Target &pTarget) 20 { 21 mcld::Target *result = 0; 22 TargetListTy::const_iterator TIter, TEnd = s_TargetList.end(); 23 for (TIter=s_TargetList.begin(); TIter!=TEnd; ++TIter) { 24 if ((*TIter)->get()==&pTarget) { 25 result = (*TIter); 26 break; 27 } 28 } 29 return result; 30 } 31 lookupTarget(const std::string & pTriple,std::string & pError)32const mcld::Target *mcld::TargetRegistry::lookupTarget(const std::string &pTriple, 33 std::string &pError) 34 { 35 const llvm::Target* target = llvm::TargetRegistry::lookupTarget(pTriple, pError); 36 if (!target) 37 return 0; 38 return lookupTarget( *target ); 39 } 40 41