diff options
author | Dan Albert <danalbert@google.com> | 2018-05-02 19:38:37 +0000 |
---|---|---|
committer | Dan Albert <danalbert@google.com> | 2018-05-02 19:38:37 +0000 |
commit | 4d64306a92a93a8e4f20c0c83e164c223b26b848 (patch) | |
tree | c8d70d9e32bc543d7c219da9547477c9e839c797 /clang/lib/Driver/ToolChains/Linux.cpp | |
parent | f6f114936a55226ef6ed306d86867e328785d39c (diff) | |
download | bcm5719-llvm-4d64306a92a93a8e4f20c0c83e164c223b26b848.tar.gz bcm5719-llvm-4d64306a92a93a8e4f20c0c83e164c223b26b848.zip |
[Driver] Infer Android sysroot location.
Summary:
Android toolchains include their headers and libraries in a
self-contained directory within the toolchain.
Reviewers: srhines
Reviewed By: srhines
Subscribers: cfe-commits
Differential Revision: https://reviews.llvm.org/D45291
llvm-svn: 331390
Diffstat (limited to 'clang/lib/Driver/ToolChains/Linux.cpp')
-rw-r--r-- | clang/lib/Driver/ToolChains/Linux.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/clang/lib/Driver/ToolChains/Linux.cpp b/clang/lib/Driver/ToolChains/Linux.cpp index 5dca5ff15dc..8fb595e67e0 100644 --- a/clang/lib/Driver/ToolChains/Linux.cpp +++ b/clang/lib/Driver/ToolChains/Linux.cpp @@ -429,6 +429,15 @@ std::string Linux::computeSysRoot() const { if (!getDriver().SysRoot.empty()) return getDriver().SysRoot; + if (getTriple().isAndroid()) { + // Android toolchains typically include a sysroot at ../sysroot relative to + // the clang binary. + const StringRef ClangDir = getDriver().getInstalledDir(); + std::string AndroidSysRootPath = (ClangDir + "/../sysroot").str(); + if (getVFS().exists(AndroidSysRootPath)) + return AndroidSysRootPath; + } + if (!GCCInstallation.isValid() || !tools::isMipsArch(getTriple().getArch())) return std::string(); |