mirror of
https://gitlab.freedesktop.org/wayland/wayland.git
synced 2026-03-21 05:34:00 -04:00
build: Fix build and tests on macOS
This commit addresses several compatibility issues that prevented Wayland from building and passing its test suite on macOS Core and Compatibility changes: - Emulate Linux behavior by explicitly setting O_NONBLOCK on connections (fixes blocking sendmsg issues on macOS). - Fix compilation on platforms missing SOCK_CLOEXEC and MSG_CMSG_CLOEXEC. - Implement wl_os_socket_peercred() using LOCAL_PEERPID for macOS. - Ensure availability of struct itimerspec (required for POSIX Timers API). Test suite fixes: - Add socketpair_cloexec() wrapper to handle platforms without atomic SOCK_CLOEXEC support. - Add implementation of memrchr() for platforms that do not provide it. - Implement is_debugger_attached() for macOS to handle test timeouts. - Fix tests to handle Mach-O binary format (instead of ELF). - Update egl-symbols-check to support macOS *.dylib Mach-O libraries. Build system: - Add meson option 'xml_catalog' to allow specifying custom catalog paths. Signed-off-by: Martin Lopatář <lopin@dataplex.cz>
This commit is contained in:
parent
5a45a89a83
commit
0f7f06bd4c
16 changed files with 180 additions and 23 deletions
|
|
@ -37,11 +37,17 @@ struct test {
|
|||
int must_fail;
|
||||
} __attribute__ ((aligned (16)));
|
||||
|
||||
#ifdef __APPLE__
|
||||
#define TEST_SECTION "__DATA,test_section"
|
||||
#else
|
||||
#define TEST_SECTION "test_section"
|
||||
#endif
|
||||
|
||||
#define TEST(name) \
|
||||
static void name(void); \
|
||||
\
|
||||
const struct test test##name \
|
||||
__attribute__ ((used, section ("test_section"))) = { \
|
||||
__attribute__ ((used, section (TEST_SECTION))) = { \
|
||||
#name, name, 0 \
|
||||
}; \
|
||||
\
|
||||
|
|
@ -51,7 +57,7 @@ struct test {
|
|||
static void name(void); \
|
||||
\
|
||||
const struct test test##name \
|
||||
__attribute__ ((used, section ("test_section"))) = { \
|
||||
__attribute__ ((used, section (TEST_SECTION))) = { \
|
||||
#name, name, 1 \
|
||||
}; \
|
||||
\
|
||||
|
|
@ -86,6 +92,9 @@ test_sleep(unsigned int);
|
|||
void
|
||||
test_disable_coredumps(void);
|
||||
|
||||
int
|
||||
socketpair_cloexec(int domain, int type, int protocol, int sv[2]);
|
||||
|
||||
#define DISABLE_LEAK_CHECKS \
|
||||
do { \
|
||||
extern int fd_leak_check_enabled; \
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue