diff options
Diffstat (limited to 'clang/lib/Frontend/DependencyFile.cpp')
-rw-r--r-- | clang/lib/Frontend/DependencyFile.cpp | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/clang/lib/Frontend/DependencyFile.cpp b/clang/lib/Frontend/DependencyFile.cpp index fe8ab7197400..288827374106 100644 --- a/clang/lib/Frontend/DependencyFile.cpp +++ b/clang/lib/Frontend/DependencyFile.cpp @@ -141,7 +141,18 @@ void DependencyCollector::maybeAddDependency(StringRef Filename, } bool DependencyCollector::addDependency(StringRef Filename) { - if (Seen.insert(Filename).second) { + StringRef SearchPath; +#ifdef _WIN32 + // Make the search insensitive to case and separators. + llvm::SmallString<256> TmpPath = Filename; + llvm::sys::path::native(TmpPath); + std::transform(TmpPath.begin(), TmpPath.end(), TmpPath.begin(), ::tolower); + SearchPath = TmpPath.str(); +#else + SearchPath = Filename; +#endif + + if (Seen.insert(SearchPath).second) { Dependencies.push_back(std::string(Filename)); return true; } @@ -182,7 +193,7 @@ DependencyFileGenerator::DependencyFileGenerator( IncludeModuleFiles(Opts.IncludeModuleFiles), OutputFormat(Opts.OutputFormat), InputFileIndex(0) { for (const auto &ExtraDep : Opts.ExtraDeps) { - if (addDependency(ExtraDep)) + if (addDependency(ExtraDep.first)) ++InputFileIndex; } } @@ -307,7 +318,7 @@ void DependencyFileGenerator::outputDependencyFile(DiagnosticsEngine &Diags) { } std::error_code EC; - llvm::raw_fd_ostream OS(OutputFile, EC, llvm::sys::fs::OF_Text); + llvm::raw_fd_ostream OS(OutputFile, EC, llvm::sys::fs::OF_TextWithCRLF); if (EC) { Diags.Report(diag::err_fe_error_opening) << OutputFile << EC.message(); return; |