Home | History | Annotate | Download | only in mcld
      1 //===- OutputFormatOptions.h ----------------------------------------------===//
      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 #ifndef MCLD_LDLITE_OUTPUT_FORMAT_OPTIONS_H
     10 #define MCLD_LDLITE_OUTPUT_FORMAT_OPTIONS_H
     11 #include <llvm/Support/CommandLine.h>
     12 #include <mcld/Support/CommandLine.h>
     13 #include <mcld/LinkerConfig.h>
     14 #include <mcld/GeneralOptions.h>
     15 #include <mcld/Support/Path.h>
     16 #include <mcld/MC/Input.h>
     17 #include <string>
     18 
     19 namespace mcld {
     20 
     21 class Module;
     22 
     23 class OutputFormatOptions
     24 {
     25 public:
     26   OutputFormatOptions();
     27 
     28   bool parse(Module& pModule, LinkerConfig& pConfig);
     29 
     30   bool parseOutput(Module& pModule, LinkerConfig& pConfig);
     31 
     32 private:
     33   llvm::cl::opt<mcld::sys::fs::Path,
     34                 false,
     35                 llvm::cl::parser<mcld::sys::fs::Path> >& m_OutputFilename;
     36   llvm::cl::opt<mcld::LinkerConfig::CodeGenType>& m_FileType;
     37   llvm::cl::opt<mcld::LinkerConfig::CodeGenType>& m_OFormat;
     38   llvm::cl::opt<bool>& m_Shared;
     39   llvm::cl::opt<bool>& m_PIE;
     40   llvm::cl::opt<bool>& m_Relocatable;
     41   llvm::cl::opt<mcld::Input::Type>& m_Format;
     42   llvm::cl::opt<bool>& m_StripDebug;
     43   llvm::cl::opt<bool>& m_StripAll;
     44   llvm::cl::opt<bool>& m_DiscardAll;
     45   llvm::cl::opt<bool>& m_DiscardLocals;
     46   llvm::cl::opt<bool>& m_EhFrameHdr;
     47   llvm::cl::opt<bool>& m_NMagic;
     48   llvm::cl::opt<bool>& m_OMagic;
     49   llvm::cl::opt<mcld::GeneralOptions::HashStyle>& m_HashStyle;
     50 
     51   llvm::cl::opt<bool>& m_ExportDynamic;
     52   llvm::cl::opt<std::string>& m_BuildID;
     53   llvm::cl::list<std::string>& m_ExcludeLIBS;
     54 
     55   llvm::cl::opt<bool>& m_NoWarnMismatch;
     56 };
     57 
     58 } // namespace of mcld
     59 
     60 #endif
     61 
     62