Disable the crash handler if execinfo=no scons option is set

This commit is contained in:
LinuxUserGD 2024-02-18 19:10:23 +01:00
parent 5f05e2b9b1
commit f1a677fb4c
No known key found for this signature in database
GPG key ID: 463F75EF26BBFC45
2 changed files with 14 additions and 8 deletions

View file

@ -36,8 +36,8 @@
#include "core/version.h"
#include "main/main.h"
#ifdef DEBUG_ENABLED
#define CRASH_HANDLER_ENABLED 1
#ifndef DEBUG_ENABLED
#undef CRASH_HANDLER_ENABLED
#endif
#ifdef CRASH_HANDLER_ENABLED

View file

@ -50,7 +50,7 @@ def get_opts():
BoolVariable("wayland", "Enable Wayland display", True),
BoolVariable("libdecor", "Enable libdecor support", True),
BoolVariable("touch", "Enable touch events", True),
BoolVariable("execinfo", "Use libexecinfo on systems where glibc is not available", False),
BoolVariable("execinfo", "Use libexecinfo on systems where glibc is not available", None),
]
@ -487,14 +487,20 @@ def configure(env: "SConsEnvironment"):
if platform.system() == "Linux":
env.Append(LIBS=["dl"])
if not env["execinfo"] and platform.libc_ver()[0] != "glibc":
if platform.libc_ver()[0] != "glibc":
# The default crash handler depends on glibc, so if the host uses
# a different libc (BSD libc, musl), fall back to libexecinfo.
if not "execinfo" in env:
print("Note: Using `execinfo=yes` for the crash handler as required on platforms where glibc is missing.")
env["execinfo"] = True
if env["execinfo"]:
env.Append(LIBS=["execinfo"])
env.Append(CPPDEFINES=["CRASH_HANDLER_ENABLED"])
else:
print("Note: Using `execinfo=no` disables the crash handler on platforms where glibc is missing.")
else:
env.Append(CPPDEFINES=["CRASH_HANDLER_ENABLED"])
if platform.system() == "FreeBSD":
env.Append(LINKFLAGS=["-lkvm"])