diff options
Diffstat (limited to 'include/clang/Frontend')
-rw-r--r-- | include/clang/Frontend/HeaderSearchOptions.h | 19 | ||||
-rw-r--r-- | include/clang/Frontend/InitHeaderSearch.h | 96 | ||||
-rw-r--r-- | include/clang/Frontend/Utils.h | 8 |
3 files changed, 22 insertions, 101 deletions
diff --git a/include/clang/Frontend/HeaderSearchOptions.h b/include/clang/Frontend/HeaderSearchOptions.h index c0bd1a98ac..ee8c60e8b0 100644 --- a/include/clang/Frontend/HeaderSearchOptions.h +++ b/include/clang/Frontend/HeaderSearchOptions.h @@ -10,25 +10,34 @@ #ifndef LLVM_CLANG_FRONTEND_HEADERSEARCHOPTIONS_H #define LLVM_CLANG_FRONTEND_HEADERSEARCHOPTIONS_H -// FIXME: Drop this dependency. -#include "clang/Frontend/InitHeaderSearch.h" #include "llvm/ADT/StringRef.h" namespace clang { +namespace frontend { + /// IncludeDirGroup - Identifiers the group a include entry belongs to, which + /// represents its relative positive in the search list. + enum IncludeDirGroup { + Quoted = 0, ///< `#include ""` paths. Thing `gcc -iquote`. + Angled, ///< Paths for both `#include ""` and `#include <>`. (`-I`) + System, ///< Like Angled, but marks system directories. + After ///< Like System, but searched after the system directories. + }; +} + /// HeaderSearchOptions - Helper class for storing options related to the /// initialization of the HeaderSearch object. class HeaderSearchOptions { public: struct Entry { std::string Path; - InitHeaderSearch::IncludeDirGroup Group; + frontend::IncludeDirGroup Group; unsigned IsCXXAware : 1; unsigned IsUserSupplied : 1; unsigned IsFramework : 1; unsigned IgnoreSysRoot : 1; - Entry(llvm::StringRef _Path, InitHeaderSearch::IncludeDirGroup _Group, + Entry(llvm::StringRef _Path, frontend::IncludeDirGroup _Group, bool _IsCXXAware, bool _IsUserSupplied, bool _IsFramework, bool _IgnoreSysRoot) : Path(_Path), Group(_Group), IsCXXAware(_IsCXXAware), @@ -70,7 +79,7 @@ public: : Sysroot(_Sysroot), UseStandardIncludes(true) {} /// AddPath - Add the \arg Path path to the specified \arg Group list. - void AddPath(llvm::StringRef Path, InitHeaderSearch::IncludeDirGroup Group, + void AddPath(llvm::StringRef Path, frontend::IncludeDirGroup Group, bool IsCXXAware, bool IsUserSupplied, bool IsFramework, bool IgnoreSysRoot = false) { UserEntries.push_back(Entry(Path, Group, IsCXXAware, IsUserSupplied, diff --git a/include/clang/Frontend/InitHeaderSearch.h b/include/clang/Frontend/InitHeaderSearch.h deleted file mode 100644 index 7900253d84..0000000000 --- a/include/clang/Frontend/InitHeaderSearch.h +++ /dev/null @@ -1,96 +0,0 @@ -//===--- InitHeaderSearch.h - Initialize header search paths ----*- C++ -*-===// -// -// The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// -// -// This file defines the InitHeaderSearch class. -// -//===----------------------------------------------------------------------===// - -#ifndef LLVM_CLANG_FRONTEND_INIT_HEADER_SEARCH_H_ -#define LLVM_CLANG_FRONTEND_INIT_HEADER_SEARCH_H_ - -#include "clang/Lex/DirectoryLookup.h" -#include "llvm/ADT/StringRef.h" -#include "llvm/ADT/Triple.h" -#include <string> -#include <vector> - -namespace clang { - -class HeaderSearch; -class HeaderSearchOptions; -class LangOptions; - -/// InitHeaderSearch - This class makes it easier to set the search paths of -/// a HeaderSearch object. InitHeaderSearch stores several search path lists -/// internally, which can be sent to a HeaderSearch object in one swoop. -class InitHeaderSearch { - std::vector<DirectoryLookup> IncludeGroup[4]; - HeaderSearch& Headers; - bool Verbose; - std::string isysroot; - -public: - /// IncludeDirGroup - Identifies the several search path - /// lists stored internally. - enum IncludeDirGroup { - Quoted = 0, ///< `#include ""` paths. Thing `gcc -iquote`. - Angled, ///< Paths for both `#include ""` and `#include <>`. (`-I`) - System, ///< Like Angled, but marks system directories. - After ///< Like System, but searched after the system directories. - }; - - InitHeaderSearch(HeaderSearch &HS, - bool verbose = false, const std::string &iSysroot = "") - : Headers(HS), Verbose(verbose), isysroot(iSysroot) {} - - /// AddPath - Add the specified path to the specified group list. - void AddPath(const llvm::StringRef &Path, IncludeDirGroup Group, - bool isCXXAware, bool isUserSupplied, - bool isFramework, bool IgnoreSysRoot = false); - - /// AddGnuCPlusPlusIncludePaths - Add the necessary paths to suport a gnu - /// libstdc++. - void AddGnuCPlusPlusIncludePaths(const std::string &Base, const char *Dir32, - const char *Dir64, - const llvm::Triple &triple); - - /// AddMinGWCPlusPlusIncludePaths - Add the necessary paths to suport a MinGW - /// libstdc++. - void AddMinGWCPlusPlusIncludePaths(const std::string &Base, - const char *Arch, - const char *Version); - - /// AddDelimitedPaths - Add a list of paths delimited by the system PATH - /// separator. The processing follows that of the CPATH variable for gcc. - void AddDelimitedPaths(const char *String); - - // AddDefaultCIncludePaths - Add paths that should always be searched. - void AddDefaultCIncludePaths(const llvm::Triple &triple); - - // AddDefaultCPlusPlusIncludePaths - Add paths that should be searched when - // compiling c++. - void AddDefaultCPlusPlusIncludePaths(const llvm::Triple &triple); - - /// AddDefaultSystemIncludePaths - Adds the default system include paths so - /// that e.g. stdio.h is found. - void AddDefaultSystemIncludePaths(const LangOptions &Lang, - const llvm::Triple &triple); - - /// Realize - Merges all search path lists into one list and send it to - /// HeaderSearch. - void Realize(); -}; - -void ApplyHeaderSearchOptions(const HeaderSearchOptions &HSOpts, - HeaderSearch &HS, const LangOptions &Lang, - const llvm::Triple &triple); - -} // end namespace clang - -#endif diff --git a/include/clang/Frontend/Utils.h b/include/clang/Frontend/Utils.h index 480e46ab72..f0d61c7ae2 100644 --- a/include/clang/Frontend/Utils.h +++ b/include/clang/Frontend/Utils.h @@ -18,6 +18,7 @@ #include <string> namespace llvm { +class Triple; class raw_ostream; class raw_fd_ostream; } @@ -26,6 +27,8 @@ namespace clang { class ASTConsumer; class Decl; class Diagnostic; +class HeaderSearch; +class HeaderSearchOptions; class IdentifierTable; class LangOptions; class MinimalAction; @@ -35,6 +38,11 @@ class SourceManager; class Stmt; class TargetInfo; +/// Apply the header search options to get given HeaderSearch object. +void ApplyHeaderSearchOptions(const HeaderSearchOptions &HSOpts, + HeaderSearch &HS, const LangOptions &Lang, + const llvm::Triple &triple); + /// InitializePreprocessor - Initialize the preprocessor getting it and the /// environment ready to process a single file. /// |