From 0c7cadfb07b8e4e863503f661d2fc54262963dba Mon Sep 17 00:00:00 2001 From: LLVM Packaging Team Date: Sun, 1 Jan 2023 14:46:39 +0000 Subject: [PATCH] wasm-sysroot-usr Gbp-Pq: Topic wasm Gbp-Pq: Name wasm-sysroot-usr.diff --- clang/lib/Driver/ToolChains/WebAssembly.cpp | 20 ++++++++++++++++---- clang/lib/Driver/ToolChains/WebAssembly.h | 2 ++ 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/clang/lib/Driver/ToolChains/WebAssembly.cpp b/clang/lib/Driver/ToolChains/WebAssembly.cpp index 00b0d20456..dcd1b9baa6 100644 --- a/clang/lib/Driver/ToolChains/WebAssembly.cpp +++ b/clang/lib/Driver/ToolChains/WebAssembly.cpp @@ -174,7 +174,7 @@ WebAssembly::WebAssembly(const Driver &D, const llvm::Triple &Triple, getProgramPaths().push_back(getDriver().getInstalledDir()); - auto SysRoot = getDriver().SysRoot; + std::string SysRoot = computeSysRoot(); if (getTriple().getOS() == llvm::Triple::UnknownOS) { // Theoretically an "unknown" OS should mean no standard libraries, however // it could also mean that a custom set of libraries is in use, so just add @@ -402,6 +402,7 @@ void WebAssembly::AddClangSystemIncludeArgs(const ArgList &DriverArgs, return; const Driver &D = getDriver(); + std::string SysRoot = computeSysRoot(); if (!DriverArgs.hasArg(options::OPT_nobuiltininc)) { SmallString<128> P(D.ResourceDir); @@ -427,10 +428,10 @@ void WebAssembly::AddClangSystemIncludeArgs(const ArgList &DriverArgs, if (getTriple().getOS() != llvm::Triple::UnknownOS) { const std::string MultiarchTriple = - getMultiarchTriple(D, getTriple(), D.SysRoot); - addSystemInclude(DriverArgs, CC1Args, D.SysRoot + "/include/" + MultiarchTriple); + getMultiarchTriple(D, getTriple(), SysRoot); + addSystemInclude(DriverArgs, CC1Args, SysRoot + "/include/" + MultiarchTriple); } - addSystemInclude(DriverArgs, CC1Args, D.SysRoot + "/include"); + addSystemInclude(DriverArgs, CC1Args, SysRoot + "/include"); } void WebAssembly::AddClangCXXStdlibIncludeArgs(const ArgList &DriverArgs, @@ -478,6 +479,17 @@ Tool *WebAssembly::buildLinker() const { return new tools::wasm::Linker(*this); } +std::string WebAssembly::computeSysRoot() const { + if (!getDriver().SysRoot.empty()) + return getDriver().SysRoot; + + std::string Path = "/usr"; + if (getVFS().exists(Path)) + return Path; + + return std::string(); +} + void WebAssembly::addLibCxxIncludePaths( const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args) const { diff --git a/clang/lib/Driver/ToolChains/WebAssembly.h b/clang/lib/Driver/ToolChains/WebAssembly.h index 4461f06f8a..1de4d0ea66 100644 --- a/clang/lib/Driver/ToolChains/WebAssembly.h +++ b/clang/lib/Driver/ToolChains/WebAssembly.h @@ -89,6 +89,8 @@ private: llvm::opt::ArgStringList &CC1Args) const; void addLibStdCXXIncludePaths(const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args) const; + + std::string computeSysRoot() const override; }; } // end namespace toolchains -- 2.30.2