From e1e24cf53777bc8921cc1a88ad081f9d55a50f9a Mon Sep 17 00:00:00 2001
From: Hanicef <gustaf@hanicef.me>
Date: Mon, 25 Dec 2023 14:31:44 +0100
Subject: [PATCH] Make execinfo.h optional (fixes musl libc build)

---
 src/Makefile.d/features.mk | 2 +-
 src/sdl/i_system.c         | 8 ++++++++
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/src/Makefile.d/features.mk b/src/Makefile.d/features.mk
index 8b713718cd..29587302f5 100644
--- a/src/Makefile.d/features.mk
+++ b/src/Makefile.d/features.mk
@@ -5,7 +5,7 @@
 passthru_opts+=\
 	NO_IPV6 NOHW NOMD5 NOPOSTPROCESSING\
 	MOBJCONSISTANCY PACKETDROP ZDEBUG\
-	HAVE_MINIUPNPC\
+	HAVE_MINIUPNPC NOEXECINFO\
 
 # build with debugging information
 ifdef DEBUGMODE
diff --git a/src/sdl/i_system.c b/src/sdl/i_system.c
index 450237149b..b1bde5226e 100644
--- a/src/sdl/i_system.c
+++ b/src/sdl/i_system.c
@@ -138,7 +138,9 @@ typedef LPVOID (WINAPI *p_MapViewOfFile) (HANDLE, DWORD, DWORD, DWORD, SIZE_T);
 #endif
 
 #if defined (__unix__) || defined(__APPLE__) || defined (UNIXCOMMON)
+#ifndef NOEXECINFO
 #include <execinfo.h>
+#endif
 #include <time.h>
 #define UNIXBACKTRACE
 #endif
@@ -269,13 +271,17 @@ UINT8 keyboard_started = false;
 static void write_backtrace(INT32 signal)
 {
 	int fd = -1;
+#ifndef NOEXECINFO
 	size_t size;
+#endif
 	time_t rawtime;
 	struct tm timeinfo;
 	ssize_t junk;
 
 	enum { BT_SIZE = 1024, STR_SIZE = 32 };
+#ifndef NOEXECINFO
 	void *array[BT_SIZE];
+#endif
 	char timestr[STR_SIZE];
 
 	const char *error = "An error occurred within SRB2! Send this stack trace to someone who can help!\n";
@@ -308,12 +314,14 @@ static void write_backtrace(INT32 signal)
 	CRASHLOG_WRITE(strsignal(signal));
 	CRASHLOG_WRITE("\n"); // Newline for the signal name
 
+#ifndef NOEXECINFO
 	CRASHLOG_STDERR_WRITE("\nBacktrace:\n");
 
 	// Flood the output and log with the backtrace
 	size = backtrace(array, BT_SIZE);
 	backtrace_symbols_fd(array, size, fd);
 	backtrace_symbols_fd(array, size, STDERR_FILENO);
+#endif
 
 	CRASHLOG_WRITE("\n"); // Write another newline to the log so it looks nice :)
 	(void)junk;
-- 
GitLab