forked from OSchip/llvm-project
[AVR][clang] Improve search for avr-libc installation path
Search avr-libc path according to avr-gcc installation at first, then other possible installed pathes. Reviewed By: MaskRay Differential Revision: https://reviews.llvm.org/D107682
This commit is contained in:
parent
686607676f
commit
b31199bab4
|
@ -453,11 +453,21 @@ void AVR::Linker::ConstructJob(Compilation &C, const JobAction &JA,
|
|||
}
|
||||
|
||||
llvm::Optional<std::string> AVRToolChain::findAVRLibcInstallation() const {
|
||||
// Search avr-libc installation according to avr-gcc installation.
|
||||
std::string GCCParent(GCCInstallation.getParentLibPath());
|
||||
std::string Path(GCCParent + "/avr");
|
||||
if (llvm::sys::fs::is_directory(Path))
|
||||
return Path;
|
||||
Path = GCCParent + "/../avr";
|
||||
if (llvm::sys::fs::is_directory(Path))
|
||||
return Path;
|
||||
|
||||
// Search avr-libc installation from possible locations, and return the first
|
||||
// one that exists, if there is no avr-gcc installed.
|
||||
for (StringRef PossiblePath : PossibleAVRLibcLocations) {
|
||||
std::string Path = getDriver().SysRoot + PossiblePath.str();
|
||||
// Return the first avr-libc installation that exists.
|
||||
if (llvm::sys::fs::is_directory(Path))
|
||||
return Optional<std::string>(Path);
|
||||
return Path;
|
||||
}
|
||||
|
||||
return llvm::None;
|
||||
|
|
|
@ -6,12 +6,24 @@
|
|||
// CHECK1-SAME: "-resource-dir" "[[RESOURCE:[^"]+]]"
|
||||
// CHECK1-SAME: "-isysroot" "[[SYSROOT:[^"]+/basic_avr_tree]]"
|
||||
// CHECK1-SAME: "-internal-isystem"
|
||||
// CHECK1-SAME: {{^}} "[[SYSROOT]]/usr/lib/avr/include"
|
||||
// CHECK1-SAME: {{^}} "[[SYSROOT]]/usr/lib/gcc/avr/5.4.0/../../../avr/include"
|
||||
// CHECK1-NOT: "-L
|
||||
// CHECK1: avr-ld"
|
||||
// CHECK1-SAME: "-o" "a.out"
|
||||
// CHECK1-SAME: {{^}} "--gc-sections"
|
||||
|
||||
// RUN: %clang %s -### -target avr --sysroot %S/Inputs/basic_avr_tree_2/opt/local -S 2>&1 | FileCheck --check-prefix=CHECK2 %s
|
||||
// CHECK2: clang{{.*}} "-cc1" "-triple" "avr"
|
||||
// CHECK2-SAME: "-isysroot" "[[SYSROOT:[^"]+/basic_avr_tree_2/opt/local]]"
|
||||
// CHECK2-SAME: "-internal-isystem"
|
||||
// CHECK2-SAME: {{^}} "[[SYSROOT]]/lib/gcc/avr/10.3.0/../../../../avr/include"
|
||||
|
||||
// RUN: %clang %s -### -target avr --sysroot %S/Inputs/basic_avr_tree_2 -S 2>&1 | FileCheck --check-prefix=CHECK3 %s
|
||||
// CHECK3: clang{{.*}} "-cc1" "-triple" "avr"
|
||||
// CHECK3-SAME: "-isysroot" "[[SYSROOT:[^"]+/basic_avr_tree_2]]"
|
||||
// CHECK3-SAME: "-internal-isystem"
|
||||
// CHECK3-SAME: {{^}} "[[SYSROOT]]/usr/avr/include"
|
||||
|
||||
// RUN: %clang %s -### -target avr 2>&1 | FileCheck -check-prefix=CC1 %s
|
||||
// CC1: clang{{.*}} "-cc1" "-triple" "avr" {{.*}} "-fno-use-init-array"
|
||||
|
||||
|
|
Loading…
Reference in New Issue