mirror of
https://gitlab.freedesktop.org/wayland/wayland.git
synced 2025-12-20 04:40:05 +01:00
This version will be required in the next commit. Bumps the CI image to get the required version from the debian package instead of from pip. Removes the bindir builtin directory from pkgconfig.generate() which is deprecated since 0.62.0. It will be automatically included when referenced. Use `meson setup` everywhere instead of relying on deprecated automatic detection of the setup command. Signed-off-by: Sebastian Wick <sebastian.wick@redhat.com>
143 lines
3.7 KiB
Meson
143 lines
3.7 KiB
Meson
project(
|
|
'wayland', 'c',
|
|
version: '1.24.90',
|
|
license: 'MIT',
|
|
meson_version: '>= 0.64.0',
|
|
default_options: [
|
|
'warning_level=2',
|
|
'buildtype=debugoptimized',
|
|
'c_std=c99',
|
|
]
|
|
)
|
|
wayland_version = meson.project_version().split('.')
|
|
|
|
config_h = configuration_data()
|
|
config_h.set_quoted('PACKAGE', meson.project_name())
|
|
config_h.set_quoted('PACKAGE_VERSION', meson.project_version())
|
|
|
|
cc_args = []
|
|
if host_machine.system() not in ['freebsd', 'openbsd']
|
|
cc_args += ['-D_POSIX_C_SOURCE=200809L']
|
|
endif
|
|
add_project_arguments(cc_args, language: 'c')
|
|
|
|
compiler_flags = [
|
|
'-Wno-unused-parameter',
|
|
'-Wstrict-prototypes',
|
|
'-Wmissing-prototypes',
|
|
'-fvisibility=hidden',
|
|
]
|
|
|
|
cc = meson.get_compiler('c')
|
|
add_project_arguments(
|
|
cc.get_supported_arguments(compiler_flags),
|
|
language: 'c'
|
|
)
|
|
|
|
foreach h: [ 'sys/prctl.h', 'sys/procctl.h', 'sys/ucred.h' ]
|
|
config_h.set('HAVE_' + h.underscorify().to_upper(), cc.has_header(h))
|
|
endforeach
|
|
|
|
have_funcs = [
|
|
'accept4',
|
|
'mkostemp',
|
|
'posix_fallocate',
|
|
'prctl',
|
|
'memfd_create',
|
|
'mremap',
|
|
'strndup',
|
|
'gettid',
|
|
]
|
|
foreach f: have_funcs
|
|
config_h.set('HAVE_' + f.underscorify().to_upper(), cc.has_function(f))
|
|
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'
|
|
have_broken_msg_cmsg_cloexec = not cc.compiles('''
|
|
#include <sys/param.h> /* To get __FreeBSD_version. */
|
|
#if __FreeBSD_version < 1300502 || \
|
|
(__FreeBSD_version >= 1400000 && __FreeBSD_version < 1400006)
|
|
/*
|
|
* FreeBSD had a broken implementation of MSG_CMSG_CLOEXEC between 2015 and
|
|
* 2021. Check if we are compiling against a version that includes the fix
|
|
* (https://cgit.freebsd.org/src/commit/?id=6ceacebdf52211).
|
|
*/
|
|
#error "Broken MSG_CMSG_CLOEXEC"
|
|
#endif
|
|
''', name : 'MSG_CMSG_CLOEXEC works correctly')
|
|
endif
|
|
config_h.set10('HAVE_BROKEN_MSG_CMSG_CLOEXEC', have_broken_msg_cmsg_cloexec)
|
|
|
|
if get_option('libraries')
|
|
if host_machine.system() in ['freebsd', 'openbsd']
|
|
# 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 = [
|
|
{ 'header': 'sys/signalfd.h', 'symbol': 'SFD_CLOEXEC' },
|
|
{ 'header': 'sys/timerfd.h', 'symbol': 'TFD_CLOEXEC' },
|
|
{ 'header': 'time.h', 'symbol': 'CLOCK_MONOTONIC' },
|
|
]
|
|
|
|
foreach d: decls
|
|
if not cc.has_header_symbol(d['header'], d['symbol'], dependencies: epoll_dep, args: cc_args)
|
|
error('@0@ is needed to compile Wayland libraries'.format(d['symbol']))
|
|
endif
|
|
endforeach
|
|
|
|
rt_dep = []
|
|
if not cc.has_function('clock_gettime', prefix: '#include <time.h>')
|
|
rt_dep = cc.find_library('rt')
|
|
if not cc.has_function('clock_gettime', prefix: '#include <time.h>', dependencies: rt_dep, args: cc_args)
|
|
error('clock_gettime not found')
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
configure_file(
|
|
output: 'config.h',
|
|
configuration: config_h,
|
|
)
|
|
|
|
pkgconfig = import('pkgconfig')
|
|
|
|
wayland_protocol_xml = files('protocol/wayland.xml')
|
|
|
|
root_inc = include_directories('.')
|
|
protocol_inc = include_directories('protocol')
|
|
src_inc = include_directories('src')
|
|
|
|
subdir('src')
|
|
|
|
if get_option('libraries')
|
|
subdir('cursor')
|
|
subdir('egl')
|
|
endif
|
|
if get_option('tests')
|
|
subdir('tests')
|
|
endif
|
|
if get_option('documentation')
|
|
subdir('doc')
|
|
endif
|
|
|
|
if get_option('scanner')
|
|
install_data([
|
|
'wayland-scanner.mk',
|
|
'protocol/wayland.xml',
|
|
'protocol/wayland.dtd',
|
|
],
|
|
install_dir: join_paths(get_option('prefix'), get_option('datadir'), 'wayland'),
|
|
)
|
|
|
|
install_data(
|
|
[ 'wayland-scanner.m4' ],
|
|
install_dir: join_paths(get_option('prefix'), get_option('datadir'), 'aclocal'),
|
|
)
|
|
endif
|