You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
112 lines
2.3 KiB
112 lines
2.3 KiB
4 months ago
|
project(
|
||
|
'wayland', 'c', 'cpp',
|
||
|
version: '1.19.0',
|
||
|
license: 'MIT',
|
||
|
meson_version: '>= 0.52.1',
|
||
|
default_options: [
|
||
|
'warning_level=2',
|
||
|
'buildtype=debugoptimized'
|
||
|
]
|
||
|
)
|
||
|
|
||
|
config_h = configuration_data()
|
||
|
config_h.set_quoted('PACKAGE', meson.project_name())
|
||
|
config_h.set_quoted('PACKAGE_VERSION', meson.project_version())
|
||
|
|
||
|
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' ]
|
||
|
config_h.set('HAVE_' + h.underscorify().to_upper(), cc.has_header(h))
|
||
|
endforeach
|
||
|
|
||
|
have_funcs = [
|
||
|
'accept4',
|
||
|
'mkostemp',
|
||
|
'posix_fallocate',
|
||
|
'prctl',
|
||
|
'memfd_create',
|
||
|
'strndup',
|
||
|
]
|
||
|
foreach f: have_funcs
|
||
|
config_h.set('HAVE_' + f.underscorify().to_upper(), cc.has_function(f))
|
||
|
endforeach
|
||
|
|
||
|
if get_option('libraries')
|
||
|
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'])
|
||
|
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)
|
||
|
error('clock_gettime not found')
|
||
|
endif
|
||
|
endif
|
||
|
endif
|
||
|
|
||
|
scanner_deps = [ dependency('expat') ]
|
||
|
|
||
|
if get_option('dtd_validation')
|
||
|
scanner_deps += dependency('libxml-2.0')
|
||
|
config_h.set('HAVE_LIBXML', 1)
|
||
|
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')
|
||
|
subdir('tests')
|
||
|
if get_option('documentation')
|
||
|
subdir('doc')
|
||
|
endif
|
||
|
endif
|
||
|
|
||
|
if get_option('scanner')
|
||
|
install_data([
|
||
|
'wayland-scanner.mk',
|
||
|
'protocol/wayland.xml',
|
||
|
'protocol/wayland.dtd',
|
||
|
])
|
||
|
|
||
|
install_data(
|
||
|
[ 'wayland-scanner.m4' ],
|
||
|
install_dir: join_paths(get_option('prefix'), get_option('datadir'), 'aclocal'),
|
||
|
)
|
||
|
endif
|