зеркало из https://github.com/microsoft/clang-1.git
correct the -isystem option to not add the -isysroot path. Only the weird
-iwithsysroot flag should do that. This fixes rdar://8345942 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111979 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
9325eaf08f
Коммит
23637beead
|
@ -35,11 +35,16 @@ public:
|
|||
frontend::IncludeDirGroup Group;
|
||||
unsigned IsUserSupplied : 1;
|
||||
unsigned IsFramework : 1;
|
||||
|
||||
/// IsSysRootRelative - This is true if an absolute path should be treated
|
||||
/// relative to the sysroot, or false if it should always be the absolute
|
||||
/// path.
|
||||
unsigned IsSysRootRelative : 1;
|
||||
|
||||
Entry(llvm::StringRef _Path, frontend::IncludeDirGroup _Group,
|
||||
bool _IsUserSupplied, bool _IsFramework)
|
||||
: Path(_Path), Group(_Group), IsUserSupplied(_IsUserSupplied),
|
||||
IsFramework(_IsFramework) {}
|
||||
Entry(llvm::StringRef path, frontend::IncludeDirGroup group,
|
||||
bool isUserSupplied, bool isFramework, bool isSysRootRelative)
|
||||
: Path(path), Group(group), IsUserSupplied(isUserSupplied),
|
||||
IsFramework(isFramework), IsSysRootRelative(isSysRootRelative) {}
|
||||
};
|
||||
|
||||
/// If non-empty, the directory to use as a "virtual system root" for include
|
||||
|
@ -85,8 +90,9 @@ public:
|
|||
|
||||
/// AddPath - Add the \arg Path path to the specified \arg Group list.
|
||||
void AddPath(llvm::StringRef Path, frontend::IncludeDirGroup Group,
|
||||
bool IsUserSupplied, bool IsFramework) {
|
||||
UserEntries.push_back(Entry(Path, Group, IsUserSupplied, IsFramework));
|
||||
bool IsUserSupplied, bool IsFramework, bool IsSysRootRelative) {
|
||||
UserEntries.push_back(Entry(Path, Group, IsUserSupplied, IsFramework,
|
||||
IsSysRootRelative));
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -1149,7 +1149,7 @@ static void ParseHeaderSearchArgs(HeaderSearchOptions &Opts, ArgList &Args) {
|
|||
for (arg_iterator it = Args.filtered_begin(OPT_I, OPT_F),
|
||||
ie = Args.filtered_end(); it != ie; ++it)
|
||||
Opts.AddPath((*it)->getValue(Args), frontend::Angled, true,
|
||||
/*IsFramework=*/ (*it)->getOption().matches(OPT_F));
|
||||
/*IsFramework=*/ (*it)->getOption().matches(OPT_F), true);
|
||||
|
||||
// Add -iprefix/-iwith-prefix/-iwithprefixbefore options.
|
||||
llvm::StringRef Prefix = ""; // FIXME: This isn't the correct default prefix.
|
||||
|
@ -1161,21 +1161,22 @@ static void ParseHeaderSearchArgs(HeaderSearchOptions &Opts, ArgList &Args) {
|
|||
Prefix = A->getValue(Args);
|
||||
else if (A->getOption().matches(OPT_iwithprefix))
|
||||
Opts.AddPath(Prefix.str() + A->getValue(Args),
|
||||
frontend::System, false, false);
|
||||
frontend::System, false, false, true);
|
||||
else
|
||||
Opts.AddPath(Prefix.str() + A->getValue(Args),
|
||||
frontend::Angled, false, false);
|
||||
frontend::Angled, false, false, true);
|
||||
}
|
||||
|
||||
for (arg_iterator it = Args.filtered_begin(OPT_idirafter),
|
||||
ie = Args.filtered_end(); it != ie; ++it)
|
||||
Opts.AddPath((*it)->getValue(Args), frontend::After, true, false);
|
||||
Opts.AddPath((*it)->getValue(Args), frontend::After, true, false, true);
|
||||
for (arg_iterator it = Args.filtered_begin(OPT_iquote),
|
||||
ie = Args.filtered_end(); it != ie; ++it)
|
||||
Opts.AddPath((*it)->getValue(Args), frontend::Quoted, true, false);
|
||||
Opts.AddPath((*it)->getValue(Args), frontend::Quoted, true, false, true);
|
||||
for (arg_iterator it = Args.filtered_begin(OPT_isystem, OPT_iwithsysroot),
|
||||
ie = Args.filtered_end(); it != ie; ++it)
|
||||
Opts.AddPath((*it)->getValue(Args), frontend::System, true, false);
|
||||
Opts.AddPath((*it)->getValue(Args), frontend::System, true, false,
|
||||
(*it)->getOption().matches(OPT_iwithsysroot));
|
||||
|
||||
// FIXME: Need options for the various environment variables!
|
||||
}
|
||||
|
|
|
@ -912,7 +912,7 @@ void clang::ApplyHeaderSearchOptions(HeaderSearch &HS,
|
|||
for (unsigned i = 0, e = HSOpts.UserEntries.size(); i != e; ++i) {
|
||||
const HeaderSearchOptions::Entry &E = HSOpts.UserEntries[i];
|
||||
Init.AddPath(E.Path, E.Group, false, E.IsUserSupplied, E.IsFramework,
|
||||
false);
|
||||
!E.IsSysRootRelative);
|
||||
}
|
||||
|
||||
// Add entries from CPATH and friends.
|
||||
|
|
Загрузка…
Ссылка в новой задаче