File 0005-Fix-libclang-usage.patch of Package rstudio

From eea335f76f5d79bb2d3b24f5ee9c0c4819b11850 Mon Sep 17 00:00:00 2001
From: haem <mixosaurus+obs@pm.me>
Date: Fri, 12 Sep 2025 17:16:52 +0200
Subject: [PATCH 05/12] Fix libclang usage

Make sure we find the right libclang.so and builtin headers, make compatible with newer versions.
---
 src/cpp/core/include/core/libclang/LibClang.hpp |  1 +
 src/cpp/core/libclang/LibClang.cpp              | 17 +++++++----------
 2 files changed, 8 insertions(+), 10 deletions(-)

diff --git a/src/cpp/core/include/core/libclang/LibClang.hpp b/src/cpp/core/include/core/libclang/LibClang.hpp
index c7936ebb..d717f611 100644
--- a/src/cpp/core/include/core/libclang/LibClang.hpp
+++ b/src/cpp/core/include/core/libclang/LibClang.hpp
@@ -36,6 +36,7 @@
 
 #include "clang-c/Index.h"
 #include "clang-c/CXCompilationDatabase.h"
+#include "clang-c/Documentation.h"
 
 namespace rstudio {
 namespace core {
diff --git a/src/cpp/core/libclang/LibClang.cpp b/src/cpp/core/libclang/LibClang.cpp
index f166a43b..eed7f94b 100644
--- a/src/cpp/core/libclang/LibClang.cpp
+++ b/src/cpp/core/libclang/LibClang.cpp
@@ -62,12 +62,12 @@ std::vector<std::string> defaultCompileArgs(LibraryVersion version)
 
    // we need to add in the associated libclang headers as
    // they are not discovered / used by default during compilation
-   FilePath llvmPath = s_libraryPath.getParent().getParent();
-   boost::format fmt("%1%/lib/clang/%2%/include");
-   fmt % llvmPath.getAbsolutePath() % version.asString();
+   FilePath llvmPath = s_libraryPath.getParent();
+   boost::format fmt("%1%/clang/%2%/include");
+   const std::string& versionStr = version.asString();
+   fmt % llvmPath.getAbsolutePath() % versionStr.substr(0, versionStr.find('.'));
    std::string includePath = fmt.str();
-   if (FilePath(includePath).exists())
-     compileArgs.push_back(std::string("-I") + includePath);
+   compileArgs.push_back(std::string("-I") + includePath);
 
    return compileArgs;
 }
@@ -89,12 +89,9 @@ std::vector<std::string> systemClangVersions()
 #elif defined(__unix__)
    // default set of versions
    clangVersions = {
-      "/usr/lib/libclang.so",
-      "/usr/lib/llvm/libclang.so",
-      "/usr/lib64/libclang.so",
-      "/usr/lib64/llvm/libclang.so",
+      "LIBCLANG_PLACEHOLDER",
    };
-   
+#elif 0
    // iterate through the set of available 'llvm' directories
    for (const char* prefix : {"/usr/lib", "/usr/lib64"})
    {
-- 
2.51.0

openSUSE Build Service is sponsored by