15460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//===- PositionDependentOption.h ------------------------------------------===// 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//===----------------------------------------------------------------------===// 95460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#ifndef MCLD_POSITIONDEPENDENTOPTION_H 105460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#define MCLD_POSITIONDEPENDENTOPTION_H 115460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#ifdef ENABLE_UNITTEST 125460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#include <gtest.h> 135460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#endif 145460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 155460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#include <vector> 165460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 175460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaonamespace mcld 185460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 195460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 205460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao /** \class PositionDependentOption 215460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao * \brief PositionDependentOptions converts LLVM options into MCLDInfo 225460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao */ 235460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao class PositionDependentOption 245460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao { 255460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao public: 265460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao enum Type { 275460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao BITCODE, 285460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao NAMESPEC, 295460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao INPUT_FILE, 305460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao START_GROUP, 315460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao END_GROUP, 325460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao WHOLE_ARCHIVE, 335460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao NO_WHOLE_ARCHIVE, 345460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao AS_NEEDED, 355460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao NO_AS_NEEDED, 365460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ADD_NEEDED, 375460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao NO_ADD_NEEDED, 385460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao BDYNAMIC, 395460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao BSTATIC 405460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao }; 415460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 425460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao protected: 43affc150dc44fab1911775a49636d0ce85333b634Zonr Chang PositionDependentOption(unsigned int pPosition, Type pType) 445460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao : m_Type(pType), 455460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao m_Position(pPosition) {} 465460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 475460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao public: 48affc150dc44fab1911775a49636d0ce85333b634Zonr Chang Type type() 495460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao { return m_Type; } 505460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 51affc150dc44fab1911775a49636d0ce85333b634Zonr Chang Type type() const 52affc150dc44fab1911775a49636d0ce85333b634Zonr Chang { return m_Type; } 53affc150dc44fab1911775a49636d0ce85333b634Zonr Chang 54affc150dc44fab1911775a49636d0ce85333b634Zonr Chang unsigned int position() 55affc150dc44fab1911775a49636d0ce85333b634Zonr Chang { return m_Position; } 56affc150dc44fab1911775a49636d0ce85333b634Zonr Chang 57affc150dc44fab1911775a49636d0ce85333b634Zonr Chang unsigned int position() const 585460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao { return m_Position; } 595460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 605460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao private: 615460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao Type m_Type; 62affc150dc44fab1911775a49636d0ce85333b634Zonr Chang unsigned int m_Position; 635460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao }; 645460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 655460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao typedef std::vector<PositionDependentOption*> PositionDependentOptions; 665460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} // namespace of mcld 675460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 685460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#endif 695460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 70