On FreeBSD, add dependency on epoll-shim library.

FreeBSD doesn't provide timerfd and eventfd functions. These are implemented in
3rd party library called epoll-shim. Link targets requiring these functions to
this library.
This commit is contained in:
Gleb Popov 2019-11-09 23:03:38 +04:00 committed by Wim Taymans
parent 68e94a2e7e
commit fd937fa378
12 changed files with 26 additions and 17 deletions

View file

@ -207,8 +207,12 @@ if get_option('gstreamer')
dependency('gstreamer-allocators-1.0'),] dependency('gstreamer-allocators-1.0'),]
endif endif
subdir('spa') # On FreeBSD, epoll-shim library is required for eventfd() and timerfd()
epoll_shim_dep = (build_machine.system() == 'freebsd'
? dependency('epoll-shim', required: true)
: dependency('', required: false))
subdir('spa')
subdir('src') subdir('src')
if get_option('pipewire-jack') if get_option('pipewire-jack')

View file

@ -7,5 +7,5 @@ endif
executable('example-control', 'example-control.c', executable('example-control', 'example-control.c',
include_directories : [spa_inc ], include_directories : [spa_inc ],
dependencies : [dl_lib, pthread_lib, mathlib], dependencies : [dl_lib, pthread_lib, mathlib, epoll_shim_dep],
install : false) install : false)

View file

@ -10,6 +10,6 @@ spa_alsa_sources = ['alsa.c',
spa_alsa = shared_library('spa-alsa', spa_alsa = shared_library('spa-alsa',
spa_alsa_sources, spa_alsa_sources,
include_directories : [spa_inc], include_directories : [spa_inc],
dependencies : [ alsa_dep, libudev_dep, mathlib ], dependencies : [ alsa_dep, libudev_dep, mathlib, epoll_shim_dep ],
install : true, install : true,
install_dir : '@0@/spa/alsa'.format(get_option('libdir'))) install_dir : '@0@/spa/alsa'.format(get_option('libdir')))

View file

@ -3,6 +3,6 @@ audiotestsrc_sources = ['audiotestsrc.c', 'plugin.c']
audiotestsrclib = shared_library('spa-audiotestsrc', audiotestsrclib = shared_library('spa-audiotestsrc',
audiotestsrc_sources, audiotestsrc_sources,
include_directories : [spa_inc], include_directories : [spa_inc],
dependencies : mathlib, dependencies : [mathlib, epoll_shim_dep],
install : true, install : true,
install_dir : '@0@/spa/audiotestsrc'.format(get_option('libdir'))) install_dir : '@0@/spa/audiotestsrc'.format(get_option('libdir')))

View file

@ -8,7 +8,7 @@ spa_support_lib = shared_library('spa-support',
spa_support_sources, spa_support_sources,
c_args : [ '-D_GNU_SOURCE' ], c_args : [ '-D_GNU_SOURCE' ],
include_directories : [ spa_inc ], include_directories : [ spa_inc ],
dependencies : [ pthread_lib ], dependencies : [ pthread_lib, epoll_shim_dep ],
install : true, install : true,
install_dir : '@0@/spa/support'.format(get_option('libdir'))) install_dir : '@0@/spa/support'.format(get_option('libdir')))
@ -35,6 +35,6 @@ spa_dbus_sources = ['dbus.c']
spa_dbus_lib = shared_library('spa-dbus', spa_dbus_lib = shared_library('spa-dbus',
spa_dbus_sources, spa_dbus_sources,
include_directories : [ spa_inc], include_directories : [ spa_inc],
dependencies : dbus_dep, dependencies : [dbus_dep, epoll_shim_dep],
install : true, install : true,
install_dir : '@0@/spa/support'.format(get_option('libdir'))) install_dir : '@0@/spa/support'.format(get_option('libdir')))

View file

@ -3,6 +3,6 @@ test_sources = ['fakesrc.c', 'fakesink.c', 'plugin.c']
testlib = shared_library('spa-test', testlib = shared_library('spa-test',
test_sources, test_sources,
include_directories : [ spa_inc], include_directories : [ spa_inc],
dependencies : pthread_lib, dependencies : [pthread_lib, epoll_shim_dep],
install : true, install : true,
install_dir : '@0@/spa/test'.format(get_option('libdir'))) install_dir : '@0@/spa/test'.format(get_option('libdir')))

View file

@ -6,6 +6,6 @@ v4l2_sources = ['v4l2.c',
v4l2lib = shared_library('spa-v4l2', v4l2lib = shared_library('spa-v4l2',
v4l2_sources, v4l2_sources,
include_directories : [ spa_inc ], include_directories : [ spa_inc ],
dependencies : [ libudev_dep ], dependencies : [ libudev_dep, epoll_shim_dep ],
install : true, install : true,
install_dir : '@0@/spa/v4l2'.format(get_option('libdir'))) install_dir : '@0@/spa/v4l2'.format(get_option('libdir')))

View file

@ -3,6 +3,6 @@ videotestsrc_sources = ['videotestsrc.c', 'plugin.c']
videotestsrclib = shared_library('spa-videotestsrc', videotestsrclib = shared_library('spa-videotestsrc',
videotestsrc_sources, videotestsrc_sources,
include_directories : [ spa_inc], include_directories : [ spa_inc],
dependencies : pthread_lib, dependencies : [pthread_lib, epoll_shim_dep],
install : true, install : true,
install_dir : '@0@/spa/videotestsrc'.format(get_option('libdir'))) install_dir : '@0@/spa/videotestsrc'.format(get_option('libdir')))

View file

@ -20,7 +20,7 @@ endforeach
if have_cpp if have_cpp
test_cpp = executable('spa-test-cpp', 'test-cpp.cpp', test_cpp = executable('spa-test-cpp', 'test-cpp.cpp',
include_directories : [spa_inc ], include_directories : [spa_inc ],
dependencies : [], dependencies : [epoll_shim_dep],
install : false) install : false)
test('spa-test-cpp', test_cpp) test('spa-test-cpp', test_cpp)
endif endif

View file

@ -1,9 +1,9 @@
executable('spa-inspect', 'spa-inspect.c', executable('spa-inspect', 'spa-inspect.c',
include_directories : [spa_inc], include_directories : [spa_inc],
dependencies : [dl_lib], dependencies : [dl_lib, epoll_shim_dep],
install : true) install : true)
executable('spa-monitor', 'spa-monitor.c', executable('spa-monitor', 'spa-monitor.c',
include_directories : [spa_inc], include_directories : [spa_inc],
dependencies : [dl_lib], dependencies : [dl_lib, epoll_shim_dep],
install : true) install : true)

View file

@ -30,7 +30,7 @@ executable('pipewire',
install: true, install: true,
c_args : pipewire_c_args, c_args : pipewire_c_args,
include_directories : [configinc, spa_inc], include_directories : [configinc, spa_inc],
dependencies : [pipewire_dep], dependencies : [pipewire_dep, epoll_shim_dep],
) )
if get_option('systemd') and systemd.found() if get_option('systemd') and systemd.found()

View file

@ -75,10 +75,15 @@ install_headers(pipewire_headers, subdir : 'pipewire')
libpipewire_c_args = [ libpipewire_c_args = [
'-DHAVE_CONFIG_H', '-DHAVE_CONFIG_H',
'-D_GNU_SOURCE',
'-D_POSIX_C_SOURCE',
] ]
if build_machine.system() != 'freebsd'
libpipewire_c_args += [
'-D_GNU_SOURCE',
'-D_POSIX_C_SOURCE'
]
endif
libpipewire_name = 'pipewire-@0@'.format(apiversion) libpipewire_name = 'pipewire-@0@'.format(apiversion)
libpipewire = shared_library(libpipewire_name, pipewire_sources, libpipewire = shared_library(libpipewire_name, pipewire_sources,
version : libversion, version : libversion,
@ -86,12 +91,12 @@ libpipewire = shared_library(libpipewire_name, pipewire_sources,
c_args : libpipewire_c_args, c_args : libpipewire_c_args,
include_directories : [pipewire_inc, configinc, spa_inc], include_directories : [pipewire_inc, configinc, spa_inc],
install : true, install : true,
dependencies : [dl_lib, mathlib, pthread_lib], dependencies : [dl_lib, mathlib, pthread_lib, epoll_shim_dep],
) )
pipewire_dep = declare_dependency(link_with : libpipewire, pipewire_dep = declare_dependency(link_with : libpipewire,
include_directories : [pipewire_inc, configinc, spa_inc], include_directories : [pipewire_inc, configinc, spa_inc],
dependencies : [pthread_lib], dependencies : [pthread_lib, epoll_shim_dep],
) )
pkgconfig.generate(filebase : 'lib@0@'.format(libpipewire_name), pkgconfig.generate(filebase : 'lib@0@'.format(libpipewire_name),