mirror of
https://gitlab.freedesktop.org/wayland/wayland.git
synced 2026-03-24 09:06:21 -04:00
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
3 changed files with 15 additions and 4 deletions
10
meson.build
10
meson.build
|
|
@ -43,6 +43,14 @@ foreach f: have_funcs
|
||||||
endforeach
|
endforeach
|
||||||
|
|
||||||
if get_option('libraries')
|
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')
|
ffi_dep = dependency('libffi')
|
||||||
|
|
||||||
decls = [
|
decls = [
|
||||||
|
|
@ -52,7 +60,7 @@ if get_option('libraries')
|
||||||
]
|
]
|
||||||
|
|
||||||
foreach d: decls
|
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']))
|
error('@0@ is needed to compile Wayland libraries'.format(d['symbol']))
|
||||||
endif
|
endif
|
||||||
endforeach
|
endforeach
|
||||||
|
|
|
||||||
|
|
@ -89,7 +89,7 @@ if get_option('libraries')
|
||||||
'connection.c',
|
'connection.c',
|
||||||
'wayland-os.c'
|
'wayland-os.c'
|
||||||
],
|
],
|
||||||
dependencies: [ ffi_dep, rt_dep ]
|
dependencies: [ epoll_dep, ffi_dep, rt_dep ]
|
||||||
)
|
)
|
||||||
|
|
||||||
wayland_private_dep = declare_dependency(
|
wayland_private_dep = declare_dependency(
|
||||||
|
|
@ -163,6 +163,7 @@ if get_option('libraries')
|
||||||
],
|
],
|
||||||
version: '0.1.0',
|
version: '0.1.0',
|
||||||
dependencies: [
|
dependencies: [
|
||||||
|
epoll_dep,
|
||||||
ffi_dep,
|
ffi_dep,
|
||||||
wayland_private_dep,
|
wayland_private_dep,
|
||||||
wayland_util_dep,
|
wayland_util_dep,
|
||||||
|
|
@ -177,7 +178,7 @@ if get_option('libraries')
|
||||||
wayland_server_dep = declare_dependency(
|
wayland_server_dep = declare_dependency(
|
||||||
link_with: wayland_server,
|
link_with: wayland_server,
|
||||||
include_directories: [ root_inc, include_directories('.') ],
|
include_directories: [ root_inc, include_directories('.') ],
|
||||||
dependencies: [ ffi_dep, mathlib_dep, threads_dep ],
|
dependencies: [ epoll_dep, ffi_dep, mathlib_dep, threads_dep ],
|
||||||
sources: [
|
sources: [
|
||||||
wayland_server_protocol_core_h,
|
wayland_server_protocol_core_h,
|
||||||
wayland_server_protocol_h
|
wayland_server_protocol_h
|
||||||
|
|
@ -206,6 +207,7 @@ if get_option('libraries')
|
||||||
],
|
],
|
||||||
version: '0.3.0',
|
version: '0.3.0',
|
||||||
dependencies: [
|
dependencies: [
|
||||||
|
epoll_dep,
|
||||||
ffi_dep,
|
ffi_dep,
|
||||||
wayland_private_dep,
|
wayland_private_dep,
|
||||||
wayland_util_dep,
|
wayland_util_dep,
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ test_runner = static_library(
|
||||||
dependencies: [
|
dependencies: [
|
||||||
cc.find_library('dl', required: false),
|
cc.find_library('dl', required: false),
|
||||||
dependency('threads'),
|
dependency('threads'),
|
||||||
|
epoll_dep,
|
||||||
ffi_dep,
|
ffi_dep,
|
||||||
wayland_util_dep,
|
wayland_util_dep,
|
||||||
wayland_private_dep,
|
wayland_private_dep,
|
||||||
|
|
@ -154,7 +155,7 @@ tests = {
|
||||||
|
|
||||||
foreach test_name, test_extra_sources: tests
|
foreach test_name, test_extra_sources: tests
|
||||||
test_sources = [ test_name + '.c' ] + test_extra_sources
|
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)
|
bin = executable(test_name, test_sources, dependencies: test_deps)
|
||||||
test(
|
test(
|
||||||
test_name,
|
test_name,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue