1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-29 00:47:45 +00:00

Ports: Add a cmake port

Yes, you build this *inside* serenity.
This commit is contained in:
AnotherTest 2021-02-11 22:37:29 +03:30 committed by Andreas Kling
parent bb777459a0
commit 80d6f46d4e
32 changed files with 9490 additions and 0 deletions

View file

@ -0,0 +1,244 @@
# Patches for CMake (and submodules) on SerenityOS
## `0000-no_wide_string.patch`
We don't support wide strings, and our libstdc++ doesn't have `std::wstring`.
This patch is a big hack to wipe wide strings out of the codebase; naturally, it very likely breaks unicode.
### Status
- [ ] Local?
- [ ] Should be merged to upstream?
- [X] Resolves issue(s) with our side of things
- [X] Hack
## `0002-stoi-atoi.patch` and `0003-stoi-atoi-2.patch`
For some reason, our libstdc++ does not define `std::stoi`, these two patches change different overloads of this function to the equivalent C functions.
### Status
- [X] Local?
- [ ] Should be merged to upstream?
- [X] Resolves issue(s) with our side of things
- [ ] Hack
## `0004-snprintf.patch`
Our libstdc++ does not define `std::printf` and `std::snprintf`, this patch simply removes the `std` namespace.
### Status
- [X] Local?
- [ ] Should be merged to upstream?
- [X] Resolves issue(s) with our side of things
- [ ] Hack
## `0005-stod.patch` and `0006-stoll.patch`
Our libstdc++ does not define `std::stod` and `std::stoll`, this patch swaps them with the equivalent C functions.
### Status
- [X] Local?
- [ ] Should be merged to upstream?
- [X] Resolves issue(s) with our side of things
- [ ] Hack
## `0007-utimes-utime.patch`
`utimes` is a deprecated POSIX API, and we do not support it, this patch uses the equivalent `utime` function instead.
### Status
- [ ] Local?
- [X] Should be merged to upstream? (Once cleaned up)
- [ ] Resolves issue(s) with our side of things
- [ ] Hack
## `0008-unix-stuff.patch`
This patch removes the use of `{get,set}priority()` as we do not support it.
it also removes two functions with the correct conditions (the same conditions as their dependents are removed with).
### Status
- [X] Local?
- [X] Should be merged to upstream? Partially.
- [X] Resolves issue(s) with our side of things
- [X] Hack
## `0009-purge-non-serenity-syscalls.patch`
This patch removes syscalls and options not defined in serenity.
### Status
- [X] Local?
- [ ] Should be merged to upstream?
- [X] Resolves issue(s) with our side of things
- [X] Hack
## `0010-don-t-use-siginfo.patch`
We don't support SIGINFO. This patch removes uses of SIGINFO.
### Status
- [X] Local?
- [ ] Should be merged to upstream?
- [X] Resolves issue(s) with our side of things
- [ ] Hack
## `0011-Fixed-your-code-rot-cmake.patch`
This purely fixes code issues with cmake. very funny patch.
### Status
- [ ] Local?
- [X] Should be merged to upstream?
- [ ] Resolves issue(s) with our side of things
- [ ] Hack
## `0012-bin-bash.patch`
This patch swaps out `/bin/sh` for `/bin/bash` in two scripts that need it.
### Status
- [X] Local?
- [ ] Should be merged to upstream?
- [ ] Resolves issue(s) with our side of things
- [ ] Hack
## `0013-platform-serenityos.patch`
This patch adds the SerenityOS platform config file to CMake.
### Status
- [ ] Local?
- [X] Should be merged to upstream? If we want to have cmake support serenity out of the box.
- [ ] Resolves issue(s) with our side of things
- [ ] Hack
## `0014-cmcurl-include-unistd.patch`
Everyone gets this wrong. most platforms are very lax with these includes, but we're not one of them.
### Status
- [X] Local?
- [ ] Should be merged to upstream?
- [ ] Resolves issue(s) with our side of things
- [ ] Hack
## `0015-atoll.patch`
Our libstdc++ does not define `std::atoll`, this patch uses the equivalent C function instead.
### Status
- [ ] Local?
- [ ] Should be merged to upstream?
- [X] Resolves issue(s) with our side of things
- [ ] Hack
## `0016-conflicting-0.patch` and `0017-conflicting-1.patch`
These two defines make GCC very sad. reasons are unknown at this time.
### Status
- [ ] Local?
- [ ] Should be merged to upstream?
- [X] Resolves issue(s) with our side of things
- [X] Hack
## `0018-isfinite.patch`
Our `math.h` already defines `isfinite`.
### Status
- [ ] Local?
- [X] Should be merged to upstream? If we want to have cmake support serenity out of the box.
- [ ] Resolves issue(s) with our side of things
- [ ] Hack
## `0019-libuv-so_linger.patch`
We don't have `SO_LINGER` or its associated struct. This patch removes them.
### Status
- [X] Local?
- [ ] Should be merged to upstream?
- [X] Resolves issue(s) with our side of things
- [X] Hack
## `0020-libuv-ipv6.patch`
cmlibuv assumes the platform has definitions for (and supports) IPv6; this patch removes IPv6-specific things from libuv.
### Status
- [X] Local?
- [ ] Should be merged to upstream?
- [X] Resolves issue(s) with our side of things
- [ ] Hack
## `0021-libcurl-no-ipv6.patch`
libcurl has a IPV6 switch, but uses `AF_INET6` unconditionally in one place. this patch disables IPV6 and makes that one use conditional.
### Status
- [X] Local? Partially.
- [X] Should be merged to upstream? Partially.
- [X] Resolves issue(s) with our side of things
- [ ] Hack
## `0022-remove-mutex.patch` and `0024-shared-mutex.patch`
We don't have mutexes, and out libstdc++ does not define `std::mutex`.
This patch removes all uses of `std::mutex`, `std::condition_variable`, and anything that depends on them; and replaces them with single-threaded equivalents.
This will break horribly with smp.
### Status
- [X] Local?
- [ ] Should be merged to upstream?
- [X] Resolves issue(s) with our side of things
- [X] Hack
## `0023-lround.patch`
Our libstdc++ (and stdlib) does not have `lround`, this patch replaces that with somewhat equivalent C stdlib functions.
### Status
- [X] Local?
- [ ] Should be merged to upstream?
- [X] Resolves issue(s) with our side of things
- [X] Hack
## `0025-uv-platform.patch`
This patch adds the definitions necessary to compile libuv on Serenity.
### Status
- [ ] Local?
- [X] Should be merged to upstream? If we want to have cmake support serenity out of the box.
- [ ] Resolves issue(s) with our side of things
- [ ] Hack
## `0026-curl-struct-stat.patch`
For unknown reasons, `curl_setup_once.h` does not include `sys/stat.h`. this patch includes `sys/stat.h`.
### Status
- [ ] Local?
- [ ] Should be merged to upstream?
- [X] Resolves issue(s) with our side of things
- [X] Hack
## `0027-libuv-platform-serenity.patch`
This patch adds a platform-specific conditional include to `uv/unix.h`.
### Status
- [ ] Local?
- [X] Should be merged to upstream?
- [ ] Resolves issue(s) with our side of things
- [ ] Hack
## `0028-cmake-disable-tests.patch`
We don't care about building tests for now, and it makes the compilation much faster.
### Status
- [ ] Local?
- [ ] Should be merged to upstream?
- [ ] Resolves issue(s) with our side of things
- [ ] Hack