ide: Fixed libclang detection issue in fedora

This commit is contained in:
Mirek Fidler 2024-05-23 14:41:57 +02:00
parent 873a620f55
commit 371e90cd82
3 changed files with 12 additions and 7 deletions

View file

@ -30,7 +30,7 @@ void PutAssist(const char *s);
#include "libclang.h"
bool LoadLibClang(const char *dir);
bool LoadLibClang(const String& dir);
bool LoadLibClangAutomatically();
inline bool HasLibClang()

View file

@ -10,9 +10,8 @@
bool hasLibClang = false;
String LibClangPath;
bool LoadLibClang0(const char *dir, const char *file)
bool LoadLibClang0(const char *path)
{
String path = AppendFileName(dir, file);
hasLibClang = LibClang(path);
if(hasLibClang) {
LibClangPath = path;
@ -21,16 +20,20 @@ bool LoadLibClang0(const char *dir, const char *file)
return hasLibClang;
}
bool LoadLibClang(const char *dir)
bool LoadLibClang(const String& dir)
{
#ifdef PLATFORM_MACOS // it does not seem to work for some reason, block it for now
if(LoadLibClang0(dir, "libclang.dylib"))
return true;
#endif
if(LoadLibClang0(dir, "libclang.so"))
if(LoadLibClang0(dir + "/libclang.so"))
return true;
for(int i = 0; i < 20; i++)
if(LoadLibClang0(dir, "libclang.so." + AsString(i)))
Vector<String> ps;
for(FindFile ff(dir + "/libclang.so*"); ff; ff.Next())
ps << ff.GetPath();
Sort(ps, StdGreater<String>());
for(String p : ps)
if(LoadLibClang0(p))
return true;
return false;
}

View file

@ -149,6 +149,8 @@ bool TryLoadLibClang()
}
if(LoadLibClang(libdir))
return true;
if(LoadLibClang("/usr/lib64"))
return true;
if(LoadLibClang("/usr/lib"))
return true;
for(int i = 200; i >= 10; i--)