diff --git a/.github/workflows/build_netbsd.yml b/.github/workflows/build_netbsd.yml index feea8dc6d..ed830be30 100644 --- a/.github/workflows/build_netbsd.yml +++ b/.github/workflows/build_netbsd.yml @@ -35,7 +35,7 @@ jobs: id: compile shell: bash env: - COMMON_FLAGS: "-O1 -s -fno-stack-protector -fno-math-errno -Qn -Werror" + COMMON_FLAGS: "-O1 -s -fno-stack-protector -fno-math-errno -Qn -Werror -Wl,-R/usr/X11R7/lib" PLAT64_FLAGS: "-fno-pie -fvisibility=hidden -fcf-protection=none -rdynamic -I netbsd64/include -L netbsd64/lib -Wl,--unresolved-symbols=ignore-in-shared-libs" run: | LATEST_FLAG=-DCC_COMMIT_SHA=\"${GITHUB_SHA::9}\" diff --git a/Makefile b/Makefile index 63fd8c760..3d31ae1da 100644 --- a/Makefile +++ b/Makefile @@ -116,7 +116,7 @@ endif ifeq ($(PLAT),netbsd) CFLAGS += -I /usr/X11R7/include -I /usr/pkg/include - LDFLAGS = -L /usr/X11R7/lib -L /usr/pkg/lib -rdynamic + LDFLAGS = -L /usr/X11R7/lib -L /usr/pkg/lib -rdynamic -Wl,-R/usr/X11R7/lib LIBS = -lexecinfo -lGL -lX11 -lXi -lpthread BUILD_DIR = build/netbsd BEARSSL = 1 diff --git a/doc/portability.md b/doc/portability.md index 5254c3131..17125797d 100644 --- a/doc/portability.md +++ b/doc/portability.md @@ -2,6 +2,8 @@ Although most of the code is platform-independent, some per-platform functionali By default `Core.h` tries to automatically define appropriate backends for your system. Define ```CC_BUILD_MANUAL``` to disable this. +Note: Updating doesn't work properly in Windows 95 or Windows 98 + ## Before you start * IEEE floating-point support is required. (Can be emulated in software, but will affect performance) * The `int` data type must be 32-bits. @@ -12,39 +14,6 @@ By default `Core.h` tries to automatically define appropriate backends for your In summary, the codebase can theroetically be ported to any modern-ish hardware, but not stuff like a UNIVAC machine, the SuperFX chip on the SNES, or an 8-bit microcontroller. -## Supported platforms - -#### Tier 1 support -These platforms are regularly tested on and have executables automatically compiled for. - -|Platform|Testing|Support| -|--------|-------|-----| -|Windows x86/x64 | Mostly tested on 7+ | Should work in all Windows versions -|macOS x86/x64 | Mostly tested on 10.12 | Should work in all macOS versions since 10.3 -|Linux x86/x64 | Mostly tested on Linux Mint | Should work in most Linux distributions -|Web client | Mostly tested in Chrome | Should work in all browsers with WebGL (including IE) - -Note: Updating doesn't work properly in Windows 95 or Windows 98 - -#### Tier 2 support -The game has been compiled and run on these platforms before. It may or may not still compile for them. - -I don't really test these platforms at all, only when I suspect some changes to the code might impact them. - -|Platform|Machine|Notes| -|--------|-------|-----| -|macOS x86 | macOS 10.4 | -|FreeBSD x86 | FreeBSD | x64 should work too | -|NetBSD x86 | NetBSD | x64 should work too | -|OpenBSD x86 | OpenBSD | x64 should work too | -|Solaris x86 | OpenIndiana | x64 should work too | -|macOS PPC | macOS 10.3 | PPC64 completely untested | -|Linux PPC | Debian | Issues with colour channels incorrectly swapped? | -|Linux ARM | Raspberry pi | ARM64 should work too | -|Linux SPARC | Debian | Didn't really work due to lack of 24-bit colours | -|Linux Alpha | Debian | -|HaikuOS | Nightly | - ## Porting Listed below are the requirements for implementing each platform-dependent file.
@@ -116,3 +85,9 @@ Define: - ```DEFAULT_NET_BACKEND CC_NET_BACKEND_LIBCURL``` - use libcurl for HTTP Supporting connection reuse is highly recommended. (but not required) + +### SSL +SSL and TLS support, plus basic certificate validation + +Define: +- ```DEFAULT_SSL_BACKEND CC_SSL_BACKEND_BEARSSL``` - use BearSSL for SSL/TLS diff --git a/readme.md b/readme.md index a42e8cb4b..7a9af1d66 100644 --- a/readme.md +++ b/readme.md @@ -323,31 +323,31 @@ Run `make saturn`. You'll need [libyaul](https://github.com/yaul-org/libyaul) #### FreeBSD -1. Install `libxi`, `libexecinfo`, `curl` and `openal-soft` packages if needed +1. Install `gmake`, `libxi`, `libexecinfo`, `openssl` and `openal-soft` packages if needed 2. Run either: - * `make freebsd` - produces a simple non-optimised executable, easier to debug - * `make freebsd RELEASE=1` - produces an optimised executable, harder to debug + * `gmake freebsd` - produces a simple non-optimised executable, easier to debug + * `gmake freebsd RELEASE=1` - produces an optimised executable, harder to debug #### OpenBSD -1. Install `libexecinfo`, `curl` and `openal` packages if needed +1. Install `gmake`, `libexecinfo`, `openssl` and `openal` packages if needed 2. Run either: - * `make openbsd` - produces a simple non-optimised executable, easier to debug - * `make openbsd RELEASE=1` - produces an optimised executable, harder to debug + * `gmake openbsd` - produces a simple non-optimised executable, easier to debug + * `gmake openbsd RELEASE=1` - produces an optimised executable, harder to debug #### NetBSD -1. Install `libexecinfo`, `curl` and `openal-soft` packages if needed +1. Install `gmake`, `libexecinfo`, `openssl` and `openal-soft` packages if needed 2. Run either: - * `make netbsd` - produces a simple non-optimised executable, easier to debug - * `make netbsd RELEASE=1` - produces an optimised executable, harder to debug + * `gmake netbsd` - produces a simple non-optimised executable, easier to debug + * `gmake netbsd RELEASE=1` - produces an optimised executable, harder to debug #### DragonflyBSD -1. Install `libxi`, `libexecinfo`, `curl` and `openal-soft` packages if needed +1. Install `gmake`, `libxi`, `libexecinfo`, `openssl` and `openal-soft` packages if needed 2. Run either: - * `make dragonfly` - produces a simple non-optimised executable, easier to debug - * `make dragonfly RELEASE=1` - produces an optimised executable, harder to debug + * `gmake dragonfly` - produces a simple non-optimised executable, easier to debug + * `gmake dragonfly RELEASE=1` - produces an optimised executable, harder to debug #### Solaris diff --git a/src/Logger.c b/src/Logger.c index e1d3a24d3..c1ffd251a 100644 --- a/src/Logger.c +++ b/src/Logger.c @@ -1249,7 +1249,7 @@ void Logger_FailToStart(const char* raw_msg) { #include static _Unwind_Reason_Code UnwindFrame(struct _Unwind_Context* ctx, void* arg) { - cc_uintptr addr = _Unwind_GetIP(ctx); + cc_uintptr addr = (cc_uintptr)_Unwind_GetIP(ctx); if (!addr) return _URC_END_OF_STACK; DumpFrame((cc_string*)arg, (void*)addr);