diff options
author | Daniel Dunbar <daniel@zuster.org> | 2009-11-07 04:20:50 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2009-11-07 04:20:50 +0000 |
commit | 63c8b77334f90472260d2f48df2742ed5067261e (patch) | |
tree | 5db87fbec28e7710ad9ac80d3bcd1b48d67b61cb /lib/Frontend/InitHeaderSearch.cpp | |
parent | e166582f8f36f4db8f4ea157538fab7fe6bf2658 (diff) |
Add HeaderSearchOptions class, for packaging the information needed to
initialize HeaderSearch. Not used yet.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86338 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Frontend/InitHeaderSearch.cpp')
-rw-r--r-- | lib/Frontend/InitHeaderSearch.cpp | 32 |
1 files changed, 31 insertions, 1 deletions
diff --git a/lib/Frontend/InitHeaderSearch.cpp b/lib/Frontend/InitHeaderSearch.cpp index 0ca6e0b830..989829895d 100644 --- a/lib/Frontend/InitHeaderSearch.cpp +++ b/lib/Frontend/InitHeaderSearch.cpp @@ -12,9 +12,10 @@ //===----------------------------------------------------------------------===// #include "clang/Frontend/InitHeaderSearch.h" -#include "clang/Lex/HeaderSearch.h" #include "clang/Basic/FileManager.h" #include "clang/Basic/LangOptions.h" +#include "clang/Frontend/HeaderSearchOptions.h" +#include "clang/Lex/HeaderSearch.h" #include "llvm/ADT/SmallString.h" #include "llvm/ADT/SmallPtrSet.h" #include "llvm/Support/raw_ostream.h" @@ -580,3 +581,32 @@ void InitHeaderSearch::Realize() { fprintf(stderr, "End of search list.\n"); } } + +void clang::ApplyHeaderSearchOptions(const HeaderSearchOptions &HSOpts, + HeaderSearch &HS, const LangOptions &Lang, + const llvm::Triple &Triple) { + InitHeaderSearch Init(HS, HSOpts.Verbose, HSOpts.Sysroot); + + // Add the user defined entries. + for (unsigned i = 0, e = HSOpts.UserEntries.size(); i != e; ++i) { + const HeaderSearchOptions::Entry &E = HSOpts.UserEntries[i]; + Init.AddPath(E.Path, E.Group, E.IsCXXAware, E.IsUserSupplied, E.IsFramework, + E.IgnoreSysRoot); + } + + // Add entries from CPATH and friends. + Init.AddDelimitedPaths(HSOpts.EnvIncPath.c_str()); + Init.AddDelimitedPaths(HSOpts.LangEnvIncPath.c_str()); + + if (!HSOpts.BuiltinIncludePath.empty()) { + // Ignore the sys root, we *always* look for clang headers relative to + // supplied path. + Init.AddPath(HSOpts.BuiltinIncludePath, InitHeaderSearch::System, + false, false, false, /*IgnoreSysRoot=*/ true); + } + + if (!HSOpts.UseStandardIncludes) + Init.AddDefaultSystemIncludePaths(Lang, Triple); + + Init.Realize(); +} |