[serenity] Add SerenityOS port SerenityOS[0] is a moderately well-behaved hobbyist Unix-like operating system. This CL adds the required macros and gen.py changes to both cross-compile to Serenity and to build on-system. The only non-OS macro change is ensuring that exec_process.cpp includes sys/select.h in order to make the definition of select() available. In local testing, only one test from gn_unittests failed, related to futimes. [0] https://github.com/SerenityOS/serenity Change-Id: Id9840d06e86b31ce6e6010405dbd6ec79826006f Reviewed-on: https://gn-review.googlesource.com/c/gn/+/15660 Reviewed-by: Nico Weber <thakis@google.com> Reviewed-by: Nico Weber <thakis@chromium.org> Reviewed-by: Brett Wilson <brettw@google.com> Reviewed-by: Brett Wilson <brettw@chromium.org> Commit-Queue: Nico Weber <thakis@google.com>
diff --git a/build/gen.py b/build/gen.py index dbf6035..adb622a 100755 --- a/build/gen.py +++ b/build/gen.py
@@ -57,10 +57,12 @@ self._platform = 'solaris' elif self._platform.startswith('zos'): self._platform = 'zos' + elif self._platform.startswith('serenity'): + self._platform = 'serenity' @staticmethod def known_platforms(): - return ['linux', 'darwin', 'mingw', 'msys', 'msvc', 'aix', 'fuchsia', 'freebsd', 'netbsd', 'openbsd', 'haiku', 'solaris', 'zos'] + return ['linux', 'darwin', 'mingw', 'msys', 'msvc', 'aix', 'fuchsia', 'freebsd', 'netbsd', 'openbsd', 'haiku', 'solaris', 'zos', 'serenity'] def platform(self): return self._platform @@ -93,11 +95,14 @@ return self._platform == 'solaris' def is_posix(self): - return self._platform in ['linux', 'freebsd', 'darwin', 'aix', 'openbsd', 'haiku', 'solaris', 'msys', 'netbsd'] + return self._platform in ['linux', 'freebsd', 'darwin', 'aix', 'openbsd', 'haiku', 'solaris', 'msys', 'netbsd', 'serenity'] def is_zos(self): return self._platform == 'zos' + def is_serenity(self): + return self_.platform == 'serenity' + class ArgumentsList: """Helper class to accumulate ArgumentParser argument definitions and be able to regenerate a corresponding command-line to be @@ -288,6 +293,7 @@ 'solaris': 'build_linux.ninja.template', 'netbsd': 'build_linux.ninja.template', 'zos': 'build_zos.ninja.template', + 'serenity': 'build_linux.ninja.template', }[platform.platform()]) with open(template_filename) as f:
diff --git a/src/base/files/file.h b/src/base/files/file.h index 419ba87..82c4f9e 100644 --- a/src/base/files/file.h +++ b/src/base/files/file.h
@@ -23,7 +23,7 @@ #if defined(OS_BSD) || defined(OS_MACOSX) || defined(OS_NACL) || \ defined(OS_HAIKU) || defined(OS_MSYS) || defined(OS_ZOS) || \ - defined(OS_ANDROID) && __ANDROID_API__ < 21 + defined(OS_ANDROID) && __ANDROID_API__ < 21 || defined(OS_SERENITY) typedef struct stat stat_wrapper_t; #elif defined(OS_POSIX) || defined(OS_FUCHSIA) typedef struct stat64 stat_wrapper_t;
diff --git a/src/base/files/file_posix.cc b/src/base/files/file_posix.cc index a1d256c..e837b69 100644 --- a/src/base/files/file_posix.cc +++ b/src/base/files/file_posix.cc
@@ -26,7 +26,7 @@ #if defined(OS_BSD) || defined(OS_MACOSX) || defined(OS_NACL) || \ defined(OS_HAIKU) || defined(OS_MSYS) || defined(OS_ZOS) || \ - defined(OS_ANDROID) && __ANDROID_API__ < 21 + defined(OS_ANDROID) && __ANDROID_API__ < 21 || defined(OS_SERENITY) int CallFstat(int fd, stat_wrapper_t* sb) { return fstat(fd, sb); }
diff --git a/src/base/files/file_util_posix.cc b/src/base/files/file_util_posix.cc index b618151..08de845 100644 --- a/src/base/files/file_util_posix.cc +++ b/src/base/files/file_util_posix.cc
@@ -61,7 +61,7 @@ #if defined(OS_BSD) || defined(OS_MACOSX) || defined(OS_NACL) || \ defined(OS_HAIKU) || defined(OS_MSYS) || defined(OS_ZOS) || \ - defined(OS_ANDROID) && __ANDROID_API__ < 21 + defined(OS_ANDROID) && __ANDROID_API__ < 21 || defined(OS_SERENITY) int CallStat(const char* path, stat_wrapper_t* sb) { return stat(path, sb); }
diff --git a/src/gn/args.cc b/src/gn/args.cc index 5592d4a..6b5d25f 100644 --- a/src/gn/args.cc +++ b/src/gn/args.cc
@@ -330,6 +330,8 @@ os = "netbsd"; #elif defined(OS_ZOS) os = "zos"; +#elif defined(OS_SERENITY) + os = "serenity"; #else #error Unknown OS type. #endif
diff --git a/src/gn/exec_process.cc b/src/gn/exec_process.cc index e1e123f..26c24e9 100644 --- a/src/gn/exec_process.cc +++ b/src/gn/exec_process.cc
@@ -23,6 +23,7 @@ #include <errno.h> #include <fcntl.h> #include <signal.h> +#include <sys/select.h> #include <sys/time.h> #include <sys/wait.h> #include <unistd.h>
diff --git a/src/gn/function_write_file_unittest.cc b/src/gn/function_write_file_unittest.cc index 8a8ef9a..ac83b19 100644 --- a/src/gn/function_write_file_unittest.cc +++ b/src/gn/function_write_file_unittest.cc
@@ -13,7 +13,7 @@ #include "gn/test_with_scope.h" #include "util/test/test.h" -#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_HAIKU) || defined(OS_MSYS) +#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_HAIKU) || defined(OS_MSYS) || defined(OS_SERENITY) #include <sys/time.h> #elif defined(OS_ZOS) #include <utime.h>
diff --git a/src/util/build_config.h b/src/util/build_config.h index 63ca16e..668518b 100644 --- a/src/util/build_config.h +++ b/src/util/build_config.h
@@ -59,6 +59,8 @@ #elif defined(__MVS__) #include "zos-base.h" #define OS_ZOS 1 +#elif defined(__serenity__) +#define OS_SERENITY 1 #else #error Please add support for your platform in build_config.h #endif @@ -75,7 +77,7 @@ defined(OS_FREEBSD) || defined(OS_LINUX) || defined(OS_MACOSX) || \ defined(OS_NACL) || defined(OS_NETBSD) || defined(OS_OPENBSD) || \ defined(OS_QNX) || defined(OS_SOLARIS) || defined(OS_HAIKU) || \ - defined(OS_MSYS) || defined(OS_ZOS) + defined(OS_MSYS) || defined(OS_ZOS) || defined(OS_SERENITY) #define OS_POSIX 1 #endif