wayland: build libraries on darwin
This commit is contained in:
parent
1841f6d1b8
commit
dda92df9c0
2 changed files with 79 additions and 1 deletions
74
pkgs/development/libraries/wayland/darwin.patch
Normal file
74
pkgs/development/libraries/wayland/darwin.patch
Normal file
|
@ -0,0 +1,74 @@
|
|||
diff --git a/meson.build b/meson.build
|
||||
index 35c3b95..f27e472 100644
|
||||
--- a/meson.build
|
||||
+++ b/meson.build
|
||||
@@ -16,7 +16,7 @@ config_h.set_quoted('PACKAGE', meson.project_name())
|
||||
config_h.set_quoted('PACKAGE_VERSION', meson.project_version())
|
||||
|
||||
cc_args = []
|
||||
-if host_machine.system() != 'freebsd'
|
||||
+if host_machine.system() not in ['darwin', 'freebsd']
|
||||
cc_args += ['-D_POSIX_C_SOURCE=200809L']
|
||||
endif
|
||||
add_project_arguments(cc_args, language: 'c')
|
||||
@@ -52,7 +52,7 @@ foreach f: have_funcs
|
||||
endforeach
|
||||
config_h.set10('HAVE_XUCRED_CR_PID', cc.has_member('struct xucred', 'cr_pid', prefix : '#include <sys/ucred.h>'))
|
||||
have_broken_msg_cmsg_cloexec = false
|
||||
-if host_machine.system() == 'freebsd'
|
||||
+if host_machine.system() in ['darwin', 'freebsd']
|
||||
have_broken_msg_cmsg_cloexec = not cc.compiles('''
|
||||
#include <sys/param.h> /* To get __FreeBSD_version. */
|
||||
#if __FreeBSD_version < 1300502 || \
|
||||
@@ -69,7 +69,7 @@ endif
|
||||
config_h.set10('HAVE_BROKEN_MSG_CMSG_CLOEXEC', have_broken_msg_cmsg_cloexec)
|
||||
|
||||
if get_option('libraries')
|
||||
- if host_machine.system() == 'freebsd'
|
||||
+ if host_machine.system() in ['darwin', 'freebsd']
|
||||
# When building for FreeBSD, epoll(7) is provided by a userspace
|
||||
# wrapper around kqueue(2).
|
||||
epoll_dep = dependency('epoll-shim')
|
||||
diff --git a/src/event-loop.c b/src/event-loop.c
|
||||
index 37cf95d..49a38cb 100644
|
||||
--- a/src/event-loop.c
|
||||
+++ b/src/event-loop.c
|
||||
@@ -48,6 +48,13 @@
|
||||
|
||||
#define TIMER_REMOVED -2
|
||||
|
||||
+#ifdef __APPLE__
|
||||
+struct itimerspec {
|
||||
+ struct timespec it_interval;
|
||||
+ struct timespec it_value;
|
||||
+};
|
||||
+#endif
|
||||
+
|
||||
struct wl_event_loop;
|
||||
struct wl_event_source_interface;
|
||||
struct wl_event_source_timer;
|
||||
diff --git a/src/wayland-os.c b/src/wayland-os.c
|
||||
index a9066ca..483fe64 100644
|
||||
--- a/src/wayland-os.c
|
||||
+++ b/src/wayland-os.c
|
||||
@@ -69,17 +69,19 @@ wl_os_socket_cloexec(int domain, int type, int protocol)
|
||||
{
|
||||
int fd;
|
||||
|
||||
+#ifdef SOCK_CLOEXEC
|
||||
fd = socket(domain, type | SOCK_CLOEXEC, protocol);
|
||||
if (fd >= 0)
|
||||
return fd;
|
||||
if (errno != EINVAL)
|
||||
return -1;
|
||||
+#endif
|
||||
|
||||
fd = socket(domain, type, protocol);
|
||||
return set_cloexec_or_close(fd);
|
||||
}
|
||||
|
||||
-#if defined(__FreeBSD__)
|
||||
+#if defined(__APPLE__) || defined(__FreeBSD__)
|
||||
int
|
||||
wl_os_socket_peercred(int sockfd, uid_t *uid, gid_t *gid, pid_t *pid)
|
||||
{
|
|
@ -8,7 +8,7 @@
|
|||
, wayland-scanner
|
||||
, expat
|
||||
, libxml2
|
||||
, withLibraries ? stdenv.isLinux
|
||||
, withLibraries ? stdenv.isLinux || stdenv.isDarwin
|
||||
, withTests ? stdenv.isLinux
|
||||
, libffi
|
||||
, epoll-shim
|
||||
|
@ -41,6 +41,10 @@ stdenv.mkDerivation rec {
|
|||
sha256 = "1b0ixya9bfw5c9jx8mzlr7yqnlyvd3jv5z8wln9scdv8q5zlvikd";
|
||||
};
|
||||
|
||||
patches = [
|
||||
./darwin.patch
|
||||
];
|
||||
|
||||
postPatch = lib.optionalString withDocumentation ''
|
||||
patchShebangs doc/doxygen/gen-doxygen.py
|
||||
'' + lib.optionalString stdenv.hostPlatform.isStatic ''
|
||||
|
|
Loading…
Reference in a new issue