Try to fix the wasm path detection (Closes: #1052002)

This commit is contained in:
Sylvestre Ledru 2023-10-19 22:37:38 +02:00
parent 6241366525
commit 9ef19e939c
2 changed files with 32 additions and 10 deletions

6
debian/changelog vendored
View File

@ -1,3 +1,9 @@
llvm-toolchain-16 (1:16.0.6-17) unstable; urgency=medium
* Try to fix the wasm path detection (Closes: #1052002)
-- Sylvestre Ledru <sylvestre@debian.org> Thu, 19 Oct 2023 22:37:29 +0200
llvm-toolchain-16 (1:16.0.6-16) unstable; urgency=medium
* Bring back old version of spirv - necessary for apt.llvm.org

View File

@ -1,5 +1,7 @@
--- a/clang/lib/Driver/ToolChains/WebAssembly.cpp
+++ b/clang/lib/Driver/ToolChains/WebAssembly.cpp
Index: llvm-toolchain-16-16.0.6/clang/lib/Driver/ToolChains/WebAssembly.cpp
===================================================================
--- llvm-toolchain-16-16.0.6.orig/clang/lib/Driver/ToolChains/WebAssembly.cpp
+++ llvm-toolchain-16-16.0.6/clang/lib/Driver/ToolChains/WebAssembly.cpp
@@ -174,7 +174,7 @@ WebAssembly::WebAssembly(const Driver &D
getProgramPaths().push_back(getDriver().getInstalledDir());
@ -17,19 +19,31 @@
if (!DriverArgs.hasArg(options::OPT_nobuiltininc)) {
SmallString<128> P(D.ResourceDir);
@@ -427,10 +428,18 @@ void WebAssembly::AddClangSystemIncludeA
@@ -425,12 +426,29 @@ void WebAssembly::AddClangSystemIncludeA
return;
}
+ // add the multiarch path on e.g. wasm32-wasi
if (getTriple().getOS() != llvm::Triple::UnknownOS) {
const std::string MultiarchTriple =
- getMultiarchTriple(D, getTriple(), D.SysRoot);
- addSystemInclude(DriverArgs, CC1Args, D.SysRoot + "/include/" + MultiarchTriple);
- }
- addSystemInclude(DriverArgs, CC1Args, D.SysRoot + "/include");
+ getMultiarchTriple(D, getTriple(), SysRoot);
+ addSystemInclude(DriverArgs, CC1Args, SysRoot + "/local/include/" + MultiarchTriple);
+ addSystemInclude(DriverArgs, CC1Args, SysRoot + "/local/include");
+ addSystemInclude(DriverArgs, CC1Args, SysRoot + "/include/" + MultiarchTriple);
}
- addSystemInclude(DriverArgs, CC1Args, D.SysRoot + "/include");
+ std::string LibPath = SysRoot + "/include";
+ std::string Version = detectLibcxxVersion(LibPath);
+
+ if (!getDriver().SysRoot.empty()) {
+ // Second add the generic one.
+ addSystemInclude(DriverArgs, CC1Args, LibPath + "/c++/" + Version);
+ // Third the backward one.
+ addSystemInclude(DriverArgs, CC1Args, LibPath + "/c++/" + Version + "/backward");
+ }
+ }
+
+ // also add the non-multiarch path, only on a known OS (as above), or when
+ // a sysroot is given, for backwards compatibility with the original driver
@ -39,7 +53,7 @@
}
void WebAssembly::AddClangCXXStdlibIncludeArgs(const ArgList &DriverArgs,
@@ -478,6 +479,17 @@ Tool *WebAssembly::buildLinker() const {
@@ -478,6 +496,17 @@ Tool *WebAssembly::buildLinker() const {
return new tools::wasm::Linker(*this);
}
@ -57,7 +71,7 @@
void WebAssembly::addLibCxxIncludePaths(
const llvm::opt::ArgList &DriverArgs,
llvm::opt::ArgStringList &CC1Args) const {
@@ -499,7 +519,9 @@ void WebAssembly::addLibCxxIncludePaths(
@@ -499,7 +528,9 @@ void WebAssembly::addLibCxxIncludePaths(
}
// Second add the generic one.
@ -68,7 +82,7 @@
}
void WebAssembly::addLibStdCXXIncludePaths(
@@ -546,8 +568,11 @@ void WebAssembly::addLibStdCXXIncludePat
@@ -546,8 +577,11 @@ void WebAssembly::addLibStdCXXIncludePat
addSystemInclude(DriverArgs, CC1Args, TargetDir);
}
@ -84,8 +98,10 @@
+ addSystemInclude(DriverArgs, CC1Args, LibPath + "/c++/" + Version + "/backward");
+ }
}
--- a/clang/lib/Driver/ToolChains/WebAssembly.h
+++ b/clang/lib/Driver/ToolChains/WebAssembly.h
Index: llvm-toolchain-16-16.0.6/clang/lib/Driver/ToolChains/WebAssembly.h
===================================================================
--- llvm-toolchain-16-16.0.6.orig/clang/lib/Driver/ToolChains/WebAssembly.h
+++ llvm-toolchain-16-16.0.6/clang/lib/Driver/ToolChains/WebAssembly.h
@@ -89,6 +89,8 @@ private:
llvm::opt::ArgStringList &CC1Args) const;
void addLibStdCXXIncludePaths(const llvm::opt::ArgList &DriverArgs,