LinkerConfig.h revision affc150dc44fab1911775a49636d0ce85333b634
1affc150dc44fab1911775a49636d0ce85333b634Zonr Chang//===- Linker.h -----------------------------------------------------------===// 2affc150dc44fab1911775a49636d0ce85333b634Zonr Chang// 3affc150dc44fab1911775a49636d0ce85333b634Zonr Chang// The MCLinker Project 4affc150dc44fab1911775a49636d0ce85333b634Zonr Chang// 5affc150dc44fab1911775a49636d0ce85333b634Zonr Chang// This file is distributed under the University of Illinois Open Source 6affc150dc44fab1911775a49636d0ce85333b634Zonr Chang// License. See LICENSE.TXT for details. 7affc150dc44fab1911775a49636d0ce85333b634Zonr Chang// 8affc150dc44fab1911775a49636d0ce85333b634Zonr Chang//===----------------------------------------------------------------------===// 9affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#ifndef ALONE_SUPPORT_LINKER_CONFIG_H 10affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#define ALONE_SUPPORT_LINKER_CONFIG_H 11affc150dc44fab1911775a49636d0ce85333b634Zonr Chang 12affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#include <string> 13affc150dc44fab1911775a49636d0ce85333b634Zonr Chang 14affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#include <mcld/MC/MCLDInfo.h> 15affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#include <mcld/MC/MCLDFile.h> 16affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#include <mcld/Support/TargetRegistry.h> 17affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#include <mcld/LD/DiagnosticLineInfo.h> 18affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#include <mcld/LD/DiagnosticPrinter.h> 19affc150dc44fab1911775a49636d0ce85333b634Zonr Chang 20affc150dc44fab1911775a49636d0ce85333b634Zonr Changnamespace alone { 21affc150dc44fab1911775a49636d0ce85333b634Zonr Chang 22affc150dc44fab1911775a49636d0ce85333b634Zonr Changclass LinkerConfig { 23affc150dc44fab1911775a49636d0ce85333b634Zonr Changprivate: 24affc150dc44fab1911775a49636d0ce85333b634Zonr Chang //===----------------------------------------------------------------------===// 25affc150dc44fab1911775a49636d0ce85333b634Zonr Chang // Available Configurations 26affc150dc44fab1911775a49636d0ce85333b634Zonr Chang //===----------------------------------------------------------------------===// 27affc150dc44fab1911775a49636d0ce85333b634Zonr Chang std::string mTriple; 28affc150dc44fab1911775a49636d0ce85333b634Zonr Chang 29affc150dc44fab1911775a49636d0ce85333b634Zonr Changprivate: 30affc150dc44fab1911775a49636d0ce85333b634Zonr Chang //===----------------------------------------------------------------------===// 31affc150dc44fab1911775a49636d0ce85333b634Zonr Chang // These are generated by LinkerConfig during initialize(). 32affc150dc44fab1911775a49636d0ce85333b634Zonr Chang //===----------------------------------------------------------------------===// 33affc150dc44fab1911775a49636d0ce85333b634Zonr Chang const mcld::Target *mTarget; 34affc150dc44fab1911775a49636d0ce85333b634Zonr Chang bool initializeTarget(); 35affc150dc44fab1911775a49636d0ce85333b634Zonr Chang 36affc150dc44fab1911775a49636d0ce85333b634Zonr Chang mcld::MCLDInfo *mLDInfo; 37affc150dc44fab1911775a49636d0ce85333b634Zonr Chang bool initializeLDInfo(); 38affc150dc44fab1911775a49636d0ce85333b634Zonr Chang 39affc150dc44fab1911775a49636d0ce85333b634Zonr Chang mcld::DiagnosticLineInfo *mDiagLineInfo; 40affc150dc44fab1911775a49636d0ce85333b634Zonr Chang mcld::DiagnosticPrinter *mDiagPrinter; 41affc150dc44fab1911775a49636d0ce85333b634Zonr Chang bool initializeDiagnostic(); 42affc150dc44fab1911775a49636d0ce85333b634Zonr Changpublic: 43affc150dc44fab1911775a49636d0ce85333b634Zonr Chang //===----------------------------------------------------------------------===// 44affc150dc44fab1911775a49636d0ce85333b634Zonr Chang // Getters 45affc150dc44fab1911775a49636d0ce85333b634Zonr Chang //===----------------------------------------------------------------------===// 46affc150dc44fab1911775a49636d0ce85333b634Zonr Chang inline const std::string &getTriple() const 47affc150dc44fab1911775a49636d0ce85333b634Zonr Chang { return mTriple; } 48affc150dc44fab1911775a49636d0ce85333b634Zonr Chang 49affc150dc44fab1911775a49636d0ce85333b634Zonr Chang inline const mcld::Target *getTarget() const 50affc150dc44fab1911775a49636d0ce85333b634Zonr Chang { return mTarget; } 51affc150dc44fab1911775a49636d0ce85333b634Zonr Chang 52affc150dc44fab1911775a49636d0ce85333b634Zonr Chang inline mcld::MCLDInfo* getLDInfo() 53affc150dc44fab1911775a49636d0ce85333b634Zonr Chang { return mLDInfo; } 54affc150dc44fab1911775a49636d0ce85333b634Zonr Chang 55affc150dc44fab1911775a49636d0ce85333b634Zonr Chang inline const mcld::MCLDInfo* getLDInfo() const 56affc150dc44fab1911775a49636d0ce85333b634Zonr Chang { return mLDInfo; } 57affc150dc44fab1911775a49636d0ce85333b634Zonr Chang 58affc150dc44fab1911775a49636d0ce85333b634Zonr Chang inline void setSOName(const std::string &pSOName) 59affc150dc44fab1911775a49636d0ce85333b634Zonr Chang { mLDInfo->output().setSOName(pSOName); } 60affc150dc44fab1911775a49636d0ce85333b634Zonr Chang 61affc150dc44fab1911775a49636d0ce85333b634Zonr Chang inline void setDyld(const std::string &pDyld) 62affc150dc44fab1911775a49636d0ce85333b634Zonr Chang { mLDInfo->options().setDyld(pDyld); } 63affc150dc44fab1911775a49636d0ce85333b634Zonr Chang 64affc150dc44fab1911775a49636d0ce85333b634Zonr Chang void setSysRoot(const std::string &pSysRoot); 65affc150dc44fab1911775a49636d0ce85333b634Zonr Chang 66affc150dc44fab1911775a49636d0ce85333b634Zonr Chang void addWrap(const std::string &pWrapSymbol); 67affc150dc44fab1911775a49636d0ce85333b634Zonr Chang 68affc150dc44fab1911775a49636d0ce85333b634Zonr Chang void addSearchDir(const std::string &pDir); 69affc150dc44fab1911775a49636d0ce85333b634Zonr Chang 70affc150dc44fab1911775a49636d0ce85333b634Zonr Changpublic: 71affc150dc44fab1911775a49636d0ce85333b634Zonr Chang LinkerConfig(const std::string& pTriple); 72affc150dc44fab1911775a49636d0ce85333b634Zonr Chang 73affc150dc44fab1911775a49636d0ce85333b634Zonr Chang virtual ~LinkerConfig(); 74affc150dc44fab1911775a49636d0ce85333b634Zonr Chang}; 75affc150dc44fab1911775a49636d0ce85333b634Zonr Chang 76affc150dc44fab1911775a49636d0ce85333b634Zonr Chang} // end namespace alone 77affc150dc44fab1911775a49636d0ce85333b634Zonr Chang 78affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#endif // ALONE_SUPPORT_LINKER_CONFIG_H 79