• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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)14 void mcld::TargetRegistry::RegisterTarget(mcld::Target &T)
15 {
16   s_TargetList.push_back(&T);
17 }
18 
lookupTarget(const llvm::Target & pTarget)19 const 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)32 const 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