summaryrefslogtreecommitdiff
path: root/meson.build
diff options
context:
space:
mode:
Diffstat (limited to 'meson.build')
-rw-r--r--meson.build174
1 files changed, 174 insertions, 0 deletions
diff --git a/meson.build b/meson.build
new file mode 100644
index 00000000..a5dcb766
--- /dev/null
+++ b/meson.build
@@ -0,0 +1,174 @@
+project('weston',
+ 'c',
+ version: '5.0.90',
+ default_options: [
+ 'warning_level=2',
+ 'c_std=gnu99',
+ 'b_lundef=false',
+ ],
+ meson_version: '>= 0.47',
+ license: 'MIT/Expat',
+)
+
+libweston_major = 5
+
+# 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
+
+dir_prefix = get_option('prefix')
+dir_bin = join_paths(dir_prefix, get_option('bindir'))
+dir_data = join_paths(dir_prefix, get_option('datadir'))
+dir_include = join_paths(dir_prefix, get_option('includedir'))
+dir_include_libweston = 'libweston-@0@'.format(libweston_major)
+dir_lib = join_paths(dir_prefix, get_option('libdir'))
+dir_libexec = join_paths(dir_prefix, get_option('libexecdir'))
+dir_module_weston = join_paths(dir_lib, 'weston')
+dir_module_libweston = join_paths(dir_lib, 'libweston-@0@'.format(libweston_major))
+dir_data_pc = join_paths(dir_data, 'pkgconfig')
+dir_lib_pc = join_paths(dir_lib, 'pkgconfig')
+dir_man = join_paths(dir_prefix, get_option('mandir'))
+dir_protocol_libweston = 'weston/protocols' # XXX: this should be 'libweston'
+
+pkgconfig = import('pkgconfig')
+
+libweston_version_h = configuration_data()
+libweston_version_h.set('WESTON_VERSION_MAJOR', version_weston_arr[0])
+libweston_version_h.set('WESTON_VERSION_MINOR', version_weston_arr[1])
+libweston_version_h.set('WESTON_VERSION_MICRO', version_weston_arr[2])
+libweston_version_h.set('WESTON_VERSION', version_weston)
+version_h = configure_file(
+ input: 'libweston/version.h.in',
+ output: 'version.h',
+ configuration: libweston_version_h
+)
+install_headers(version_h, subdir: dir_include_libweston)
+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 = []
+global_args_maybe = [
+ '-Wno-unused-parameter',
+ '-Wno-shift-negative-value', # required due to Pixman
+ '-Wno-missing-field-initializers',
+ '-fvisibility=hidden',
+ '-DIN_WESTON',
+]
+foreach a : global_args_maybe
+ if cc.has_argument(a)
+ global_args += a
+ endif
+endforeach
+add_global_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'
+]
+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_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', 'fbdev', 'x11', 'wayland', 'drm' ]
+ if get_option('backend-' + b)
+ backend_default = b
+ endif
+ endforeach
+endif
+opt_backend_native = backend_default + '-backend.so'
+config_h.set_quoted('WESTON_NATIVE_BACKEND', opt_backend_native)
+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.12.0')
+dep_wayland_client = dependency('wayland-client', version: '>= 1.12.0')
+dep_pixman = dependency('pixman-1', version: '>= 0.25.2')
+dep_libinput = dependency('libinput', version: '>= 0.8.0')
+dep_libm = cc.find_library('m')
+dep_libdl = cc.find_library('dl')
+dep_libdrm = dependency('libdrm', version: '>= 2.4.68')
+dep_libdrm_headers = dep_libdrm.partial_dependency(compile_args: true)
+dep_egl = dependency('egl', required: false)
+dep_wl_egl = dependency('wayland-egl')
+dep_glesv2 = dependency('glesv2', required: false)
+dep_threads = dependency('threads')
+
+subdir('protocol')
+subdir('shared')
+subdir('libweston')
+subdir('libweston-desktop')
+subdir('xwayland')
+subdir('compositor')
+subdir('desktop-shell')
+subdir('fullscreen-shell')
+subdir('ivi-shell')
+subdir('remoting')
+subdir('clients')
+subdir('wcap')
+subdir('tests')
+subdir('data')
+subdir('man')
+
+configure_file(output: 'config.h', install: false, configuration: config_h)
+
+# TODO: process doc/doxygen/*.doxygen.in