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