|
Lines 326-332
Link Here
|
| 326 |
|
326 |
|
| 327 |
// Simplified from Generic_GCC::GCCInstallationDetector::ScanLibDirForGCCTriple. |
327 |
// Simplified from Generic_GCC::GCCInstallationDetector::ScanLibDirForGCCTriple. |
| 328 |
static bool findGccVersion(StringRef LibDir, std::string &GccLibDir, |
328 |
static bool findGccVersion(StringRef LibDir, std::string &GccLibDir, |
| 329 |
std::string &Ver) { |
329 |
std::string &Ver, |
|
|
330 |
toolchains::Generic_GCC::GCCVersion &GccVer) { |
| 330 |
auto Version = toolchains::Generic_GCC::GCCVersion::Parse("0.0.0"); |
331 |
auto Version = toolchains::Generic_GCC::GCCVersion::Parse("0.0.0"); |
| 331 |
std::error_code EC; |
332 |
std::error_code EC; |
| 332 |
for (llvm::sys::fs::directory_iterator LI(LibDir, EC), LE; !EC && LI != LE; |
333 |
for (llvm::sys::fs::directory_iterator LI(LibDir, EC), LE; !EC && LI != LE; |
|
Lines 338-343
Link Here
|
| 338 |
continue; |
339 |
continue; |
| 339 |
if (CandidateVersion <= Version) |
340 |
if (CandidateVersion <= Version) |
| 340 |
continue; |
341 |
continue; |
|
|
342 |
GccVer = CandidateVersion; |
| 341 |
Ver = std::string(VersionText); |
343 |
Ver = std::string(VersionText); |
| 342 |
GccLibDir = LI->path(); |
344 |
GccLibDir = LI->path(); |
| 343 |
} |
345 |
} |
|
Lines 357-363
Link Here
|
| 357 |
for (StringRef CandidateArch : Archs) { |
359 |
for (StringRef CandidateArch : Archs) { |
| 358 |
llvm::SmallString<1024> LibDir(Base); |
360 |
llvm::SmallString<1024> LibDir(Base); |
| 359 |
llvm::sys::path::append(LibDir, CandidateLib, "gcc", CandidateArch); |
361 |
llvm::sys::path::append(LibDir, CandidateLib, "gcc", CandidateArch); |
| 360 |
if (findGccVersion(LibDir, GccLibDir, Ver)) { |
362 |
if (findGccVersion(LibDir, GccLibDir, Ver, GccVer)) { |
| 361 |
Arch = std::string(CandidateArch); |
363 |
Arch = std::string(CandidateArch); |
| 362 |
return; |
364 |
return; |
| 363 |
} |
365 |
} |
|
Lines 420-425
Link Here
|
| 420 |
getFilePaths().push_back(GccLibDir); |
422 |
getFilePaths().push_back(GccLibDir); |
| 421 |
getFilePaths().push_back( |
423 |
getFilePaths().push_back( |
| 422 |
(Base + Arch + llvm::sys::path::get_separator() + "lib").str()); |
424 |
(Base + Arch + llvm::sys::path::get_separator() + "lib").str()); |
|
|
425 |
|
| 426 |
// Gentoo |
| 427 |
getFilePaths().push_back( |
| 428 |
(Base + Arch + llvm::sys::path::get_separator() + "mingw/lib").str()); |
| 429 |
|
| 423 |
getFilePaths().push_back(Base + "lib"); |
430 |
getFilePaths().push_back(Base + "lib"); |
| 424 |
// openSUSE |
431 |
// openSUSE |
| 425 |
getFilePaths().push_back(Base + Arch + "/sys-root/mingw/lib"); |
432 |
getFilePaths().push_back(Base + Arch + "/sys-root/mingw/lib"); |
|
Lines 572-577
Link Here
|
| 572 |
|
579 |
|
| 573 |
addSystemInclude(DriverArgs, CC1Args, |
580 |
addSystemInclude(DriverArgs, CC1Args, |
| 574 |
Base + Arch + llvm::sys::path::get_separator() + "include"); |
581 |
Base + Arch + llvm::sys::path::get_separator() + "include"); |
|
|
582 |
|
| 583 |
// Gentoo |
| 584 |
addSystemInclude(DriverArgs, CC1Args, |
| 585 |
Base + Arch + llvm::sys::path::get_separator() + "usr/include"); |
| 586 |
|
| 575 |
addSystemInclude(DriverArgs, CC1Args, Base + "include"); |
587 |
addSystemInclude(DriverArgs, CC1Args, Base + "include"); |
| 576 |
} |
588 |
} |
| 577 |
|
589 |
|
|
Lines 592-598
Link Here
|
| 592 |
break; |
604 |
break; |
| 593 |
|
605 |
|
| 594 |
case ToolChain::CST_Libstdcxx: |
606 |
case ToolChain::CST_Libstdcxx: |
| 595 |
llvm::SmallVector<llvm::SmallString<1024>, 4> CppIncludeBases; |
607 |
llvm::SmallVector<llvm::SmallString<1024>, 7> CppIncludeBases; |
| 596 |
CppIncludeBases.emplace_back(Base); |
608 |
CppIncludeBases.emplace_back(Base); |
| 597 |
llvm::sys::path::append(CppIncludeBases[0], Arch, "include", "c++"); |
609 |
llvm::sys::path::append(CppIncludeBases[0], Arch, "include", "c++"); |
| 598 |
CppIncludeBases.emplace_back(Base); |
610 |
CppIncludeBases.emplace_back(Base); |
|
Lines 601-606
Link Here
|
| 601 |
llvm::sys::path::append(CppIncludeBases[2], "include", "c++", Ver); |
613 |
llvm::sys::path::append(CppIncludeBases[2], "include", "c++", Ver); |
| 602 |
CppIncludeBases.emplace_back(GccLibDir); |
614 |
CppIncludeBases.emplace_back(GccLibDir); |
| 603 |
llvm::sys::path::append(CppIncludeBases[3], "include", "c++"); |
615 |
llvm::sys::path::append(CppIncludeBases[3], "include", "c++"); |
|
|
616 |
CppIncludeBases.emplace_back(GccLibDir); |
| 617 |
llvm::sys::path::append(CppIncludeBases[4], "include", |
| 618 |
"g++-v" + GccVer.Text); |
| 619 |
CppIncludeBases.emplace_back(GccLibDir); |
| 620 |
llvm::sys::path::append(CppIncludeBases[5], "include", |
| 621 |
"g++-v" + GccVer.MajorStr + "." + GccVer.MinorStr); |
| 622 |
CppIncludeBases.emplace_back(GccLibDir); |
| 623 |
llvm::sys::path::append(CppIncludeBases[6], "include", |
| 624 |
"g++-v" + GccVer.MajorStr); |
| 604 |
for (auto &CppIncludeBase : CppIncludeBases) { |
625 |
for (auto &CppIncludeBase : CppIncludeBases) { |
| 605 |
addSystemInclude(DriverArgs, CC1Args, CppIncludeBase); |
626 |
addSystemInclude(DriverArgs, CC1Args, CppIncludeBase); |
| 606 |
CppIncludeBase += Slash; |
627 |
CppIncludeBase += Slash; |