Merge pull request #88520 from LinuxUserGD/execinfo

Disable the crash handler if `execinfo=no` scons option is set
This commit is contained in:
Rémi Verschelde 2024-03-05 16:54:37 +01:00
commit 2ecf0eba95
No known key found for this signature in database
GPG key ID: C3336907360768E1
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),
]
@ -488,14 +488,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.
print("Note: Using `execinfo=yes` for the crash handler as required on platforms where glibc is missing.")
env["execinfo"] = True
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"])
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"])