15460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//===- CommandLine.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_COMMANDLINE_H
105460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#define MCLD_COMMANDLINE_H
115460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#ifdef ENABLE_UNITTEST
125460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#include <gtest.h>
135460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#endif
145460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#include <llvm/ADT/StringRef.h>
155460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#include <llvm/Support/CommandLine.h>
16affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#include <mcld/Support/FileSystem.h>
17affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#include <mcld/MC/MCLDDirectory.h>
18affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#include <mcld/MC/ZOption.h>
195460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
205460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//--------------------------------------------------
215460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// parser<mcld::sys::fs::Path>
225460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//
235460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaonamespace llvm {
245460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaonamespace cl {
255460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
265460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaotemplate<>
275460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaoclass parser<mcld::sys::fs::Path> : public basic_parser<mcld::sys::fs::Path>
285460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{
295460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaopublic:
305460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  bool parse(Option &O,
315460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao             StringRef ArgName,
325460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao             StringRef Arg,
335460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao             mcld::sys::fs::Path &Val);
345460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
355460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  virtual const char *getValueName() const { return "path"; }
365460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  void printOptionDiff(const Option &O,
375460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao                       const mcld::sys::fs::Path &V,
385460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao                       OptVal Default,
395460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao                       size_t GlobalWidth) const;
405460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  virtual void anchor();
415460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao};
425460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
435460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//--------------------------------------------------
445460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// parser<mcld::MCLDDirectory>
455460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//
465460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaotemplate<>
475460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaoclass parser<mcld::MCLDDirectory> : public llvm::cl::basic_parser<mcld::MCLDDirectory>
485460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{
495460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaopublic:
505460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  bool parse(Option &O, StringRef ArgName, StringRef Arg, mcld::MCLDDirectory &Val);
515460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
525460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  virtual const char *getValueName() const { return "directory"; }
535460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  void printOptionDiff(const Option &O,
545460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao                       const mcld::MCLDDirectory &V,
555460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao                       OptVal Default,
565460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao                       size_t GlobalWidth) const;
575460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  virtual void anchor();
585460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao};
595460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
60affc150dc44fab1911775a49636d0ce85333b634Zonr Chang//--------------------------------------------------
61affc150dc44fab1911775a49636d0ce85333b634Zonr Chang// parser<mcld::ZOption>
62affc150dc44fab1911775a49636d0ce85333b634Zonr Chang//
63affc150dc44fab1911775a49636d0ce85333b634Zonr Changtemplate<>
64affc150dc44fab1911775a49636d0ce85333b634Zonr Changclass parser<mcld::ZOption> : public llvm::cl::basic_parser<mcld::ZOption>
65affc150dc44fab1911775a49636d0ce85333b634Zonr Chang{
66affc150dc44fab1911775a49636d0ce85333b634Zonr Changpublic:
67affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  bool parse(Option &O, StringRef ArgName, StringRef Arg, mcld::ZOption &Val);
68affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
69affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  virtual const char *getValueName() const { return "z-option"; }
70affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  void printOptionDiff(const Option &O,
71affc150dc44fab1911775a49636d0ce85333b634Zonr Chang                       const mcld::ZOption &V,
72affc150dc44fab1911775a49636d0ce85333b634Zonr Chang                       OptVal Default,
73affc150dc44fab1911775a49636d0ce85333b634Zonr Chang                       size_t GlobalWidth) const;
74affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  virtual void anchor();
75affc150dc44fab1911775a49636d0ce85333b634Zonr Chang};
76affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
775460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} // namespace of cl
785460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} // namespace of llvm
795460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
805460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#endif
815460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
82