15460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//===- TargetRegistry.cpp -------------------------------------------------===// 25460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// 35460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// The MCLinker Project 45460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// 55460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// This file is distributed under the University of Illinois Open Source 65460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// License. See LICENSE.TXT for details. 75460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// 85460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//===----------------------------------------------------------------------===// 9affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#include <mcld/Support/TargetRegistry.h> 105460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 115460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 125460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaomcld::TargetRegistry::TargetListTy mcld::TargetRegistry::s_TargetList; 135460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 145460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaovoid mcld::TargetRegistry::RegisterTarget(mcld::Target &T) 155460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 165460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao s_TargetList.push_back(&T); 175460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 185460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 19d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liaoconst mcld::Target* 20d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liaomcld::TargetRegistry::lookupTarget(const llvm::Target &pTarget) 215460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 225460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao mcld::Target *result = 0; 235460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao TargetListTy::const_iterator TIter, TEnd = s_TargetList.end(); 245460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao for (TIter=s_TargetList.begin(); TIter!=TEnd; ++TIter) { 255460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao if ((*TIter)->get()==&pTarget) { 265460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao result = (*TIter); 275460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao break; 285460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 295460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 305460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return result; 315460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 325460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 33d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liaoconst mcld::Target* 34d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liaomcld::TargetRegistry::lookupTarget(const std::string &pTriple, 35d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao std::string &pError) 365460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 37affc150dc44fab1911775a49636d0ce85333b634Zonr Chang const llvm::Target* target = llvm::TargetRegistry::lookupTarget(pTriple, pError); 385460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao if (!target) 39d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao return NULL; 40d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao 415460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return lookupTarget( *target ); 425460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 435460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 44