From 9ef19e939c36b8f71c4fa335a3891eed3f3be846 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Thu, 19 Oct 2023 22:37:38 +0200 Subject: [PATCH] Try to fix the wasm path detection (Closes: #1052002) --- debian/changelog | 6 ++++ debian/patches/wasm/wasm-sysroot-usr.diff | 36 ++++++++++++++++------- 2 files changed, 32 insertions(+), 10 deletions(-) diff --git a/debian/changelog b/debian/changelog index 8a75203d..fa3574b0 100644 --- a/debian/changelog +++ b/debian/changelog @@ -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 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 diff --git a/debian/patches/wasm/wasm-sysroot-usr.diff b/debian/patches/wasm/wasm-sysroot-usr.diff index 6587c1bd..0df6ce9e 100644 --- a/debian/patches/wasm/wasm-sysroot-usr.diff +++ b/debian/patches/wasm/wasm-sysroot-usr.diff @@ -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,