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 12mcld::TargetRegistry::TargetListTy mcld::TargetRegistry::s_TargetList; 13 14void mcld::TargetRegistry::RegisterTarget(mcld::Target &T) 15{ 16 s_TargetList.push_back(&T); 17} 18 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 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