From 52e18706d4c89046efb55361b62340615645b556 Mon Sep 17 00:00:00 2001 From: LLVM Packaging Team Date: Mon, 11 Sep 2023 14:40:42 +0100 Subject: [PATCH] fix-clang-path-and-build =================================================================== Gbp-Pq: Name fix-clang-path-and-build.diff --- clang/lib/Driver/ToolChains/Linux.cpp | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/clang/lib/Driver/ToolChains/Linux.cpp b/clang/lib/Driver/ToolChains/Linux.cpp index c6fb290ffd..c9a066e092 100644 --- a/clang/lib/Driver/ToolChains/Linux.cpp +++ b/clang/lib/Driver/ToolChains/Linux.cpp @@ -13,6 +13,7 @@ #include "Arch/PPC.h" #include "Arch/RISCV.h" #include "CommonArgs.h" +#include "clang/Basic/Version.h" #include "clang/Config/config.h" #include "clang/Driver/Distro.h" #include "clang/Driver/Driver.h" @@ -591,8 +592,18 @@ void Linux::AddClangSystemIncludeArgs(const ArgList &DriverArgs, SmallString<128> ResourceDirInclude(D.ResourceDir); llvm::sys::path::append(ResourceDirInclude, "include"); if (!DriverArgs.hasArg(options::OPT_nobuiltininc) && - (!getTriple().isMusl() || DriverArgs.hasArg(options::OPT_nostdlibinc))) - addSystemInclude(DriverArgs, CC1Args, ResourceDirInclude); + (!getTriple().isMusl() || DriverArgs.hasArg(options::OPT_nostdlibinc))) { + if (llvm::sys::fs::exists(ResourceDirInclude)) { + /* Include the build include directory only + * Otherwise, it fails with stage2 when clang headers are available on the system + * they usually fail because of the include_next. Two llvm/clang headers are found + * while we are waiting for the lib C++ (std or not) + */ + addSystemInclude(DriverArgs, CC1Args, ResourceDirInclude); + } else { + addSystemInclude(DriverArgs, CC1Args, "/usr/include/clang/" + std::string(CLANG_VERSION_STRING) + "/include/"); + } + } if (DriverArgs.hasArg(options::OPT_nostdlibinc)) return; -- 2.30.2