weston/meson.build

197 lines
5.8 KiB
Meson
Raw Normal View History

project('weston',
'c',
version: '12.0.90',
default_options: [
'warning_level=3',
'c_std=gnu99',
'b_lundef=true',
],
meson_version: '>= 0.63.0',
license: 'MIT/Expat',
)
libweston_major = 13
# libweston_revision is manufactured to follow the autotools build's
# library file naming, thanks to libtool
version_weston = meson.project_version()
version_weston_arr = version_weston.split('.')
if libweston_major > version_weston_arr[0].to_int()
if libweston_major > version_weston_arr[0].to_int() + 1
error('Bad versions in meson.build: libweston_major is too high')
endif
libweston_revision = 0
elif libweston_major == version_weston_arr[0].to_int()
libweston_revision = version_weston_arr[2].to_int()
else
error('Bad versions in meson.build: libweston_major is too low')
endif
if not (get_option('deprecated-launcher-logind') or get_option('launcher-libseat'))
error('At least one launcher must be enabled')
endif
dir_prefix = get_option('prefix')
dir_bin = dir_prefix / get_option('bindir')
dir_data = dir_prefix / get_option('datadir')
dir_include_libweston = 'libweston-@0@'.format(libweston_major)
dir_include_libweston_install = dir_include_libweston / 'libweston'
dir_lib = dir_prefix /get_option('libdir')
dir_libexec = dir_prefix / get_option('libexecdir')
dir_module_weston = dir_lib / 'weston'
dir_module_libweston = dir_lib / 'libweston-@0@'.format(libweston_major)
dir_data_pc = dir_data / 'pkgconfig'
dir_lib_pc = dir_lib / 'pkgconfig'
dir_man = dir_prefix / get_option('mandir')
dir_protocol_libweston = 'libweston-@0@'.format(libweston_major) / 'protocols'
dir_sysconf = dir_prefix / get_option('sysconfdir')
dir_gitlab_ci = meson.project_source_root() / '.gitlab-ci'
public_inc = include_directories('include')
common_inc = [ include_directories('.'), public_inc ]
pkgconfig = import('pkgconfig')
git_version_h = vcs_tag(
input: 'libweston/git-version.h.meson',
output: 'git-version.h',
fallback: version_weston
)
config_h = configuration_data()
cc = meson.get_compiler('c')
global_args = cc.get_supported_arguments(
'-Wmissing-prototypes',
'-Wno-unused-parameter',
'-Wno-shift-negative-value', # required due to Pixman
'-Wno-missing-field-initializers',
'-Wno-pedantic',
'-Wundef',
'-fvisibility=hidden',
)
add_project_arguments(global_args, language: 'c')
if cc.has_header_symbol('sys/sysmacros.h', 'major')
config_h.set('MAJOR_IN_SYSMACROS', 1)
elif cc.has_header_symbol('sys/mkdev.h', 'major')
config_h.set('MAJOR_IN_MKDEV', 1)
endif
optional_libc_funcs = [
'mkostemp', 'strchrnul', 'initgroups', 'posix_fallocate',
'memfd_create', 'unreachable',
]
foreach func : optional_libc_funcs
if cc.has_function(func)
config_h.set('HAVE_' + func.to_upper(), 1)
endif
endforeach
optional_system_headers = [
'linux/sync_file.h'
]
foreach hdr : optional_system_headers
if cc.has_header(hdr)
config_h.set('HAVE_' + hdr.underscorify().to_upper(), 1)
endif
endforeach
env_modmap = ''
config_h.set('_GNU_SOURCE', '1')
config_h.set('_ALL_SOURCE', '1')
config_h.set('EGL_NO_X11', '1')
config_h.set('MESA_EGL_NO_X11_HEADERS', '1')
config_h.set('EGL_NO_PLATFORM_SPECIFIC_TYPES', '1')
config_h.set_quoted('PACKAGE_STRING', 'weston @0@'.format(version_weston))
config_h.set_quoted('PACKAGE_VERSION', version_weston)
config_h.set_quoted('VERSION', version_weston)
config_h.set_quoted('PACKAGE_URL', 'https://wayland.freedesktop.org')
config_h.set_quoted('PACKAGE_BUGREPORT', 'https://gitlab.freedesktop.org/wayland/weston/issues/')
config_h.set_quoted('BINDIR', dir_bin)
config_h.set_quoted('DATADIR', dir_data)
config_h.set_quoted('LIBEXECDIR', dir_libexec)
config_h.set_quoted('MODULEDIR', dir_module_weston)
config_h.set_quoted('LIBWESTON_MODULEDIR', dir_module_libweston)
backend_default = get_option('backend-default')
if backend_default == 'auto'
foreach b : [ 'headless', 'x11', 'wayland', 'drm' ]
if get_option('backend-' + b)
backend_default = b
endif
endforeach
endif
config_h.set_quoted('WESTON_NATIVE_BACKEND', backend_default)
message('The default backend is ' + backend_default)
if not get_option('backend-' + backend_default)
error('Backend @0@ was chosen as native but is not being built.'.format(backend_default))
endif
dep_xkbcommon = dependency('xkbcommon', version: '>= 0.3.0')
if dep_xkbcommon.version().version_compare('>= 0.5.0')
config_h.set('HAVE_XKBCOMMON_COMPOSE', '1')
endif
dep_wayland_server = dependency('wayland-server', version: '>= 1.22.0')
dep_wayland_client = dependency('wayland-client', version: '>= 1.22.0')
dep_pixman = dependency('pixman-1', version: '>= 0.25.2')
dep_libinput = dependency('libinput', version: '>= 1.2.0')
dep_libevdev = dependency('libevdev')
dep_libm = cc.find_library('m')
dep_libdl = cc.find_library('dl')
dep_libdrm = dependency('libdrm', version: '>= 2.4.108')
dep_libdrm_headers = dep_libdrm.partial_dependency(compile_args: true)
dep_threads = dependency('threads')
dep_lcms2 = dependency('lcms2', version: '>= 2.9', required: false)
prog_python = import('python').find_installation('python3')
files_xxd_py = files('tools/xxd.py')
cmd_xxd = [ prog_python, files_xxd_py, '@INPUT@', '@OUTPUT@' ]
libweston,shared/meson:build Add xkbcommon missing depends This is because e619a65b091, 'libweston: move gl-borders code into helper lib' and 6293ab1f90fdaf, 'libweston, shared: Move out weston_shell_get_binding_modifier' moved things out of libweston, and libweston implicitly depends on xkbcommon. Rather than just depending on dep_xkbcommon use the deps_for_libweston_users which includes some other dependencies as well. Had to move it out of libweston/meson.build and include it in the main meson.build as libweston/meson.build would have a circular dependency on libweston/meson.build file. This fixes the following build issue: [ 5s] FAILED: libweston/libgl-borders.a.p/gl-borders.c.o [ 5s] cc -Ilibweston/libgl-borders.a.p -Ilibweston -I../libweston -I. -I.. -Iinclude -I../include -I/usr/include/wayland -I/usr/include/pixman-1 -I/usr/include/cairo -I/usr/include/libpng16 -I/usr/include/freetype2 -I/usr/include/webp -fdiagnostics-color=always -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -Wpedantic -std=gnu99 -Wmissing-prototypes -Wno-unused-parameter -Wno-shift-negative-value -Wno-missing-field-initializers -Wno-pedantic -Wundef -fvisibility=hidden -O2 -Wall -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=3 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -Werror=return-type -flto=auto -g -fPIC -MD -MQ libweston/libgl-borders.a.p/gl-borders.c.o -MF libweston/libgl-borders.a.p/gl-borders.c.o.d -o libweston/libgl-borders.a.p/gl-borders.c.o -c ../libweston/gl-borders.c [ 5s] In file included from ../libweston/renderer-gl/gl-renderer.h:32, [ 5s] from ../libweston/gl-borders.h:28, [ 5s] from ../libweston/gl-borders.c:31: [ 5s] ../include/libweston/libweston.h:39:10: fatal error: xkbcommon/xkbcommon.h: No such file or directory [ 4s] FAILED: shared/libshared.a.p/config-parser.c.o [ 4s] cc -Ishared/libshared.a.p -Ishared -I../shared -I. -I.. -Iinclude -I../include -I/usr/include/wayland -I/usr/include/pixman-1 -fdiagnostics-color=always -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -Wpedantic -std=gnu99 -Wmissing-prototypes -Wno-unused-parameter -Wno-shift-negative-value -Wno-missing-field-initializers -Wno-pedantic -Wundef -fvisibility=hidden -O2 -Wall -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=3 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -Werror=return-type -flto=auto -g -fPIC -MD -MQ shared/libshared.a.p/config-parser.c.o -MF shared/libshared.a.p/config-parser.c.o.d -o shared/libshared.a.p/config-parser.c.o -c ../shared/config-parser.c [ 4s] In file included from ../shared/config-parser.c:44: [ 4s] ../include/libweston/libweston.h:39:10: fatal error: xkbcommon/xkbcommon.h: No such file or directory Reported-by: Jan Engelhardt <jengelh@inai.de> Signed-off-by: Jan Engelhardt <jengelh@inai.de> Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
2023-05-18 07:17:17 +00:00
deps_for_libweston_users = [
dep_wayland_server,
dep_pixman,
dep_xkbcommon,
]
subdir('include')
subdir('protocol')
subdir('shared')
subdir('libweston')
subdir('xwayland')
subdir('compositor')
subdir('desktop-shell')
subdir('fullscreen-shell')
subdir('ivi-shell')
subdir('kiosk-shell')
subdir('remoting')
subdir('pipewire')
subdir('clients')
subdir('wcap')
subdir('tests')
subdir('data')
subdir('man')
subdir('pam')
if meson.version().version_compare('>= 0.58.0')
devenv = environment()
devenv.set('WESTON_MODULE_MAP', env_modmap)
devenv.set('WESTON_DATA_DIR', meson.current_source_dir() / 'data')
meson.add_devenv(devenv)
endif
configure_file(output: 'config.h', configuration: config_h)
if get_option('doc')
subdir('doc/sphinx')
else
message('Documentation will not be built. Use -Ddoc to build it.')
endif