mirror of
https://github.com/RGBCube/serenity
synced 2025-06-17 20:42:09 +00:00

This removes the patch series 1/N comments, git version at the bottom of the patch, and zeros out the original commit hash.
78 lines
2.9 KiB
Diff
78 lines
2.9 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Daniel Bertalan <dani@danielbertalan.dev>
|
|
Date: Thu, 14 Apr 2022 09:54:22 +0200
|
|
Subject: [PATCH] [Support] Add support for building LLVM on SerenityOS
|
|
|
|
Adds SerenityOS `#ifdef`s for platform-specific code.
|
|
|
|
We stub out wait4, as SerenityOS doesn't support querying a child
|
|
process's resource usage information.
|
|
---
|
|
llvm/include/llvm/Support/SwapByteOrder.h | 2 +-
|
|
llvm/lib/Support/Unix/Path.inc | 5 ++++-
|
|
llvm/lib/Support/Unix/Program.inc | 9 ++++++++-
|
|
3 files changed, 13 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/llvm/include/llvm/Support/SwapByteOrder.h b/llvm/include/llvm/Support/SwapByteOrder.h
|
|
index e8612ba66..f0109f4b3 100644
|
|
--- a/llvm/include/llvm/Support/SwapByteOrder.h
|
|
+++ b/llvm/include/llvm/Support/SwapByteOrder.h
|
|
@@ -22,7 +22,7 @@
|
|
#endif
|
|
|
|
#if defined(__linux__) || defined(__GNU__) || defined(__HAIKU__) || \
|
|
- defined(__Fuchsia__) || defined(__EMSCRIPTEN__)
|
|
+ defined(__Fuchsia__) || defined(__EMSCRIPTEN__) || defined(__serenity__)
|
|
#include <endian.h>
|
|
#elif defined(_AIX)
|
|
#include <sys/machine.h>
|
|
diff --git a/llvm/lib/Support/Unix/Path.inc b/llvm/lib/Support/Unix/Path.inc
|
|
index 788460d65..566628935 100644
|
|
--- a/llvm/lib/Support/Unix/Path.inc
|
|
+++ b/llvm/lib/Support/Unix/Path.inc
|
|
@@ -112,7 +112,7 @@ typedef uint_t uint;
|
|
#endif
|
|
|
|
#if defined(__NetBSD__) || defined(__DragonFly__) || defined(__GNU__) || \
|
|
- defined(__MVS__)
|
|
+ defined(__MVS__) || defined(__serenity__)
|
|
#define STATVFS_F_FLAG(vfs) (vfs).f_flag
|
|
#else
|
|
#define STATVFS_F_FLAG(vfs) (vfs).f_flags
|
|
@@ -512,6 +512,9 @@ static bool is_local_impl(struct STATVFS &Vfs) {
|
|
#elif defined(__HAIKU__)
|
|
// Haiku doesn't expose this information.
|
|
return false;
|
|
+#elif defined(__serenity__)
|
|
+ // Serenity doesn't yet support remote filesystem mounts.
|
|
+ return false;
|
|
#elif defined(__sun)
|
|
// statvfs::f_basetype contains a null-terminated FSType name of the mounted target
|
|
StringRef fstype(Vfs.f_basetype);
|
|
diff --git a/llvm/lib/Support/Unix/Program.inc b/llvm/lib/Support/Unix/Program.inc
|
|
index 089342030..3ffe064e5 100644
|
|
--- a/llvm/lib/Support/Unix/Program.inc
|
|
+++ b/llvm/lib/Support/Unix/Program.inc
|
|
@@ -336,7 +336,7 @@ static bool Execute(ProcessInfo &PI, StringRef Program,
|
|
namespace llvm {
|
|
namespace sys {
|
|
|
|
-#ifndef _AIX
|
|
+#if !defined(_AIX) && !defined(__serenity__)
|
|
using ::wait4;
|
|
#else
|
|
static pid_t (wait4)(pid_t pid, int *status, int options, struct rusage *usage);
|
|
@@ -379,6 +379,13 @@ pid_t (llvm::sys::wait4)(pid_t pid, int *status, int options,
|
|
}
|
|
#endif
|
|
|
|
+#ifdef __serenity__
|
|
+pid_t (llvm::sys::wait4)(pid_t pid, int *status, int options,
|
|
+ struct rusage*) {
|
|
+ return ::waitpid(pid, status, options);
|
|
+}
|
|
+#endif
|
|
+
|
|
ProcessInfo llvm::sys::Wait(const ProcessInfo &PI, unsigned SecondsToWait,
|
|
bool WaitUntilTerminates, std::string *ErrMsg,
|
|
Optional<ProcessStatistics> *ProcStat) {
|