15460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//===- MCLDDirectory.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//===----------------------------------------------------------------------===//
937b74a387bb3993387029859c2d9d051c41c724eStephen Hines#ifndef MCLD_MC_MCLDDIRECTORY_H_
1037b74a387bb3993387029859c2d9d051c41c724eStephen Hines#define MCLD_MC_MCLDDIRECTORY_H_
115460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#include "mcld/Support/Directory.h"
125460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#include "mcld/Support/FileSystem.h"
1337b74a387bb3993387029859c2d9d051c41c724eStephen Hines
145460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#include <llvm/ADT/StringRef.h>
1537b74a387bb3993387029859c2d9d051c41c724eStephen Hines
165460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#include <string>
175460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
1837b74a387bb3993387029859c2d9d051c41c724eStephen Hinesnamespace mcld {
195460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
205460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao/** \class MCLDDirectory
215460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao *  \brief MCLDDirectory is an directory entry for library search.
225460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao *
235460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao */
2437b74a387bb3993387029859c2d9d051c41c724eStephen Hinesclass MCLDDirectory : public sys::fs::Directory {
2537b74a387bb3993387029859c2d9d051c41c724eStephen Hines public:
265460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  MCLDDirectory();
2737b74a387bb3993387029859c2d9d051c41c724eStephen Hines  explicit MCLDDirectory(const char* pName);
2837b74a387bb3993387029859c2d9d051c41c724eStephen Hines  explicit MCLDDirectory(const std::string& pName);
2937b74a387bb3993387029859c2d9d051c41c724eStephen Hines  explicit MCLDDirectory(llvm::StringRef pName);
305460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  virtual ~MCLDDirectory();
315460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
3237b74a387bb3993387029859c2d9d051c41c724eStephen Hines public:
3337b74a387bb3993387029859c2d9d051c41c724eStephen Hines  MCLDDirectory& assign(llvm::StringRef pName);
345460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  bool isInSysroot() const;
355460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
365460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  /// setSysroot - if MCLDDirectory is in sysroot, modify the path.
375460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  void setSysroot(const sys::fs::Path& pPath);
385460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
3937b74a387bb3993387029859c2d9d051c41c724eStephen Hines  const std::string& name() const { return m_Name; }
405460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
4137b74a387bb3993387029859c2d9d051c41c724eStephen Hines private:
425460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  std::string m_Name;
435460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  bool m_bInSysroot;
445460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao};
455460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
4637b74a387bb3993387029859c2d9d051c41c724eStephen Hines}  // namespace mcld
475460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
4837b74a387bb3993387029859c2d9d051c41c724eStephen Hines#endif  // MCLD_MC_MCLDDIRECTORY_H_
49