Files
banan-os/ports/llvm/patches/0001-add-banan_os-support.patch
Bananymous 7348511ed3 ports/llvm: Add support for pthread_setname_np and cpu count
Also package the llvm into the format mesa expects. This was kinda
tedious to always do manually
2026-07-07 10:30:07 +03:00

157 lines
5.9 KiB
Diff

diff -ruN llvm-22.1.8/llvm/include/llvm/ADT/bit.h llvm-22.1.8-banan_os/llvm/include/llvm/ADT/bit.h
--- llvm-22.1.8/llvm/include/llvm/ADT/bit.h 2026-06-16 01:33:53.000000000 +0300
+++ llvm-22.1.8-banan_os/llvm/include/llvm/ADT/bit.h 2026-07-07 10:03:36.848199127 +0300
@@ -30,7 +30,8 @@
#if defined(__linux__) || defined(__GNU__) || defined(__HAIKU__) || \
defined(__Fuchsia__) || defined(__EMSCRIPTEN__) || defined(__NetBSD__) || \
- defined(__OpenBSD__) || defined(__DragonFly__) || defined(__managarm__)
+ defined(__OpenBSD__) || defined(__DragonFly__) || defined(__managarm__) || \
+ defined(__banan_os__)
#include <endian.h>
#elif defined(_AIX)
#include <sys/machine.h>
diff -ruN llvm-22.1.8/llvm/include/llvm/Support/ExitCodes.h llvm-22.1.8-banan_os/llvm/include/llvm/Support/ExitCodes.h
--- llvm-22.1.8/llvm/include/llvm/Support/ExitCodes.h 2026-06-16 01:33:53.000000000 +0300
+++ llvm-22.1.8-banan_os/llvm/include/llvm/Support/ExitCodes.h 2026-07-07 10:03:36.965344890 +0300
@@ -20,7 +20,7 @@
#if HAVE_SYSEXITS_H
#include <sysexits.h>
-#elif __MVS__ || defined(_WIN32)
+#elif __MVS__ || defined(_WIN32) || defined(__banan_os__)
// <sysexits.h> does not exist on z/OS and Windows. The only value used in LLVM
// is EX_IOERR, which is used to signal a special error condition (broken pipe).
// Define the macro with its usual value from BSD systems, which is chosen to
diff -ruN llvm-22.1.8/llvm/lib/Support/Unix/Path.inc llvm-22.1.8-banan_os/llvm/lib/Support/Unix/Path.inc
--- llvm-22.1.8/llvm/lib/Support/Unix/Path.inc 2026-06-16 01:33:53.000000000 +0300
+++ llvm-22.1.8-banan_os/llvm/lib/Support/Unix/Path.inc 2026-07-07 10:03:36.987545022 +0300
@@ -111,7 +111,7 @@
#endif
#if defined(__NetBSD__) || defined(__DragonFly__) || defined(__GNU__) || \
- defined(__MVS__)
+ defined(__MVS__) || defined(__banan_os__)
#define STATVFS_F_FLAG(vfs) (vfs).f_flag
#else
#define STATVFS_F_FLAG(vfs) (vfs).f_flags
@@ -254,7 +254,7 @@
if (getprogpath(exe_path, argv0) != NULL)
return exe_path;
#elif defined(__linux__) || defined(__CYGWIN__) || defined(__gnu_hurd__) || \
- defined(__managarm__)
+ defined(__managarm__) || defined(__banan_os__)
char exe_path[PATH_MAX];
const char *aPath = "/proc/self/exe";
if (sys::fs::exists(aPath)) {
@@ -284,9 +284,11 @@
return std::string(real_path);
#endif
}
+#if !defined(__banan_os__)
// Fall back to the classical detection.
if (getprogpath(exe_path, argv0))
return exe_path;
+#endif
#elif defined(__OpenBSD__) || defined(__HAIKU__)
char exe_path[PATH_MAX];
// argv[0] only
@@ -520,6 +522,9 @@
#elif defined(__HAIKU__)
// Haiku doesn't expose this information.
return false;
+#elif defined(__banan_os__)
+ // banan-os doesn't expose this information.
+ return false;
#elif defined(__sun)
// statvfs::f_basetype contains a null-terminated FSType name of the mounted
// target
diff -ruN llvm-22.1.8/llvm/lib/Support/Unix/Process.inc llvm-22.1.8-banan_os/llvm/lib/Support/Unix/Process.inc
--- llvm-22.1.8/llvm/lib/Support/Unix/Process.inc 2026-06-16 01:33:53.000000000 +0300
+++ llvm-22.1.8-banan_os/llvm/lib/Support/Unix/Process.inc 2026-07-07 10:03:37.017664239 +0300
@@ -37,6 +37,9 @@
#ifdef HAVE_SYS_IOCTL_H
#include <sys/ioctl.h>
#endif
+#ifdef __banan_os__
+#include <termios.h>
+#endif
//===----------------------------------------------------------------------===//
//=== WARNING: Implementation here must contain only generic UNIX code that
diff -ruN llvm-22.1.8/llvm/lib/Support/Unix/Program.inc llvm-22.1.8-banan_os/llvm/lib/Support/Unix/Program.inc
--- llvm-22.1.8/llvm/lib/Support/Unix/Program.inc 2026-06-16 01:33:53.000000000 +0300
+++ llvm-22.1.8-banan_os/llvm/lib/Support/Unix/Program.inc 2026-07-07 10:03:37.031901635 +0300
@@ -334,7 +334,7 @@
namespace llvm {
namespace sys {
-#if defined(_AIX)
+#if defined(_AIX) || defined(__banan_os__)
static pid_t(wait4)(pid_t pid, int *status, int options, struct rusage *usage);
#elif !defined(__Fuchsia__)
using ::wait4;
@@ -375,6 +375,12 @@
// would cause the call here to fail with ECHILD).
return ::wait4(pid, status, options & ~WNOHANG, usage);
}
+#elif defined(__banan_os__)
+pid_t(llvm::sys::wait4)(pid_t pid, int *status, int options,
+ struct rusage *usage) {
+ memset(usage, 0, sizeof(struct rusage));
+ return ::waitpid(pid, status, options);
+}
#endif
ProcessInfo llvm::sys::Wait(const ProcessInfo &PI,
diff -ruN llvm-22.1.8/llvm/lib/Support/Unix/Threading.inc llvm-22.1.8-banan_os/llvm/lib/Support/Unix/Threading.inc
--- llvm-22.1.8/llvm/lib/Support/Unix/Threading.inc 2026-06-16 01:33:53.000000000 +0300
+++ llvm-22.1.8-banan_os/llvm/lib/Support/Unix/Threading.inc 2026-07-07 10:03:37.256828558 +0300
@@ -70,6 +70,10 @@
#include <OS.h> // For B_OS_NAME_LENGTH
#endif
+#if defined(__banan_os__)
+#include <unistd.h> // For sysconf()
+#endif
+
namespace llvm {
pthread_t
llvm_execute_on_thread_impl(void *(*ThreadFunc)(void *), void *Arg,
@@ -121,7 +125,7 @@
pthread_t llvm_thread_get_id_impl(pthread_t Thread) { return Thread; }
-pthread_t llvm_thread_get_current_id_impl() { return ::pthread_self(); }
+pthread_t llvm_thread_get_current_id_impl() { return pthread_self(); }
} // namespace llvm
@@ -148,6 +152,8 @@
return uint64_t(syscall(__NR_gettid));
#elif defined(_AIX)
return uint64_t(thread_self());
+#elif defined(__banan_os__)
+ return uint64_t(pthread_self()->id);
#else
return uint64_t(pthread_self());
#endif
@@ -171,6 +177,8 @@
return 24;
#elif defined(__CYGWIN__)
return 16;
+#elif defined(__banan_os__)
+ return sizeof(uthread::name);
#else
return 0;
#endif
@@ -393,7 +401,7 @@
}
return CPU_COUNT(&Enabled);
}
-#elif (defined(__linux__) && defined(__s390x__)) || defined(_AIX)
+#elif (defined(__linux__) && defined(__s390x__)) || defined(_AIX) || defined(__banan_os__)
static int computeHostNumPhysicalCores() {
return sysconf(_SC_NPROCESSORS_ONLN);
}