1533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines//===- OutputFormatOptions.h ----------------------------------------------===//
2533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines//
3533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines//                     The MCLinker Project
4533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines//
5533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines// This file is distributed under the University of Illinois Open Source
6533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines// License. See LICENSE.TXT for details.
7533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines//
8533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines//===----------------------------------------------------------------------===//
9533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines#ifndef MCLD_LDLITE_OUTPUT_FORMAT_OPTIONS_H
10533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines#define MCLD_LDLITE_OUTPUT_FORMAT_OPTIONS_H
11533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines#include <llvm/Support/CommandLine.h>
12533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines#include <mcld/Support/CommandLine.h>
13533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines#include <mcld/LinkerConfig.h>
14533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines#include <mcld/GeneralOptions.h>
15533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines#include <mcld/Support/Path.h>
16533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines#include <mcld/MC/Input.h>
17533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines#include <string>
18533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines
19533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hinesnamespace mcld {
20533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines
21533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hinesclass Module;
22533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines
23533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hinesclass OutputFormatOptions
24533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines{
25533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hinespublic:
26533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines  OutputFormatOptions();
27533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines
28533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines  bool parse(Module& pModule, LinkerConfig& pConfig);
29533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines
30533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines  bool parseOutput(Module& pModule, LinkerConfig& pConfig);
31533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines
32533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hinesprivate:
33533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines  llvm::cl::opt<mcld::sys::fs::Path,
34533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines                false,
35533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines                llvm::cl::parser<mcld::sys::fs::Path> >& m_OutputFilename;
36533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines  llvm::cl::opt<mcld::LinkerConfig::CodeGenType>& m_FileType;
37533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines  llvm::cl::opt<mcld::LinkerConfig::CodeGenType>& m_OFormat;
38533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines  llvm::cl::opt<bool>& m_Shared;
39533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines  llvm::cl::opt<bool>& m_PIE;
40533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines  llvm::cl::opt<bool>& m_Relocatable;
41533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines  llvm::cl::opt<mcld::Input::Type>& m_Format;
42533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines  llvm::cl::opt<bool>& m_StripDebug;
43533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines  llvm::cl::opt<bool>& m_StripAll;
44533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines  llvm::cl::opt<bool>& m_DiscardAll;
45533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines  llvm::cl::opt<bool>& m_DiscardLocals;
46533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines  llvm::cl::opt<bool>& m_EhFrameHdr;
47533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines  llvm::cl::opt<bool>& m_NMagic;
48533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines  llvm::cl::opt<bool>& m_OMagic;
49533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines  llvm::cl::opt<mcld::GeneralOptions::HashStyle>& m_HashStyle;
50533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines
51533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines  llvm::cl::opt<bool>& m_ExportDynamic;
52533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines  llvm::cl::opt<std::string>& m_BuildID;
53533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines  llvm::cl::list<std::string>& m_ExcludeLIBS;
54533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines
55533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines  llvm::cl::opt<bool>& m_NoWarnMismatch;
56533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines};
57533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines
58533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines} // namespace of mcld
59533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines
60533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines#endif
61533eae20118036f425f27bf0536ef0ccbb090b65Stephen Hines
62