From 9ff3d5362c71dfa9b6aba1dd65a33bb6d8971164 Mon Sep 17 00:00:00 2001 From: Daniel Bertalan Date: Thu, 14 Apr 2022 09:54:22 +0200 Subject: [PATCH 1/9] [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 #elif defined(_AIX) #include 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 *ProcStat) { -- 2.35.3