Use epoll-shim to emulate epoll(7) on FreeBSD
FreeBSD does not provide epoll(7) and instead requires an external library, epoll-shim, that implements epoll() using kqueue(2) Co-authored-by: Jan Beich <jbeich@FreeBSD.org> Signed-off-by: Alex Richardson <Alexander.Richardson@cl.cam.ac.uk>
This commit is contained in:
parent
8ec25be6db
commit
c65f852fc8
10
meson.build
10
meson.build
|
@ -43,6 +43,14 @@ foreach f: have_funcs
|
|||
endforeach
|
||||
|
||||
if get_option('libraries')
|
||||
if host_machine.system() == 'freebsd'
|
||||
# When building for FreeBSD, epoll(7) is provided by a userspace
|
||||
# wrapper around kqueue(2).
|
||||
epoll_dep = dependency('epoll-shim')
|
||||
else
|
||||
# Otherwise, assume that epoll(7) is supported natively.
|
||||
epoll_dep = []
|
||||
endif
|
||||
ffi_dep = dependency('libffi')
|
||||
|
||||
decls = [
|
||||
|
@ -52,7 +60,7 @@ if get_option('libraries')
|
|||
]
|
||||
|
||||
foreach d: decls
|
||||
if not cc.has_header_symbol(d['header'], d['symbol'])
|
||||
if not cc.has_header_symbol(d['header'], d['symbol'], dependencies: epoll_dep)
|
||||
error('@0@ is needed to compile Wayland libraries'.format(d['symbol']))
|
||||
endif
|
||||
endforeach
|
||||
|
|
|
@ -89,7 +89,7 @@ if get_option('libraries')
|
|||
'connection.c',
|
||||
'wayland-os.c'
|
||||
],
|
||||
dependencies: [ ffi_dep, rt_dep ]
|
||||
dependencies: [ epoll_dep, ffi_dep, rt_dep ]
|
||||
)
|
||||
|
||||
wayland_private_dep = declare_dependency(
|
||||
|
@ -163,6 +163,7 @@ if get_option('libraries')
|
|||
],
|
||||
version: '0.1.0',
|
||||
dependencies: [
|
||||
epoll_dep,
|
||||
ffi_dep,
|
||||
wayland_private_dep,
|
||||
wayland_util_dep,
|
||||
|
@ -177,7 +178,7 @@ if get_option('libraries')
|
|||
wayland_server_dep = declare_dependency(
|
||||
link_with: wayland_server,
|
||||
include_directories: [ root_inc, include_directories('.') ],
|
||||
dependencies: [ ffi_dep, mathlib_dep, threads_dep ],
|
||||
dependencies: [ epoll_dep, ffi_dep, mathlib_dep, threads_dep ],
|
||||
sources: [
|
||||
wayland_server_protocol_core_h,
|
||||
wayland_server_protocol_h
|
||||
|
@ -206,6 +207,7 @@ if get_option('libraries')
|
|||
],
|
||||
version: '0.3.0',
|
||||
dependencies: [
|
||||
epoll_dep,
|
||||
ffi_dep,
|
||||
wayland_private_dep,
|
||||
wayland_util_dep,
|
||||
|
|
|
@ -9,6 +9,7 @@ test_runner = static_library(
|
|||
dependencies: [
|
||||
cc.find_library('dl', required: false),
|
||||
dependency('threads'),
|
||||
epoll_dep,
|
||||
ffi_dep,
|
||||
wayland_util_dep,
|
||||
wayland_private_dep,
|
||||
|
@ -154,7 +155,7 @@ tests = {
|
|||
|
||||
foreach test_name, test_extra_sources: tests
|
||||
test_sources = [ test_name + '.c' ] + test_extra_sources
|
||||
test_deps = [test_runner_dep]
|
||||
test_deps = [test_runner_dep, epoll_dep]
|
||||
bin = executable(test_name, test_sources, dependencies: test_deps)
|
||||
test(
|
||||
test_name,
|
||||
|
|
Loading…
Reference in New Issue
Block a user