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