| 
									
										
										
										
											2017-08-30 14:30:47 -04:00
										 |  |  | project(
 | 
					
						
							|  |  |  | 	'wlroots',
 | 
					
						
							|  |  |  | 	'c',
 | 
					
						
							| 
									
										
										
										
											2017-12-27 15:56:07 +01:00
										 |  |  | 	version: '0.0.1',
 | 
					
						
							| 
									
										
										
										
											2017-08-30 14:30:47 -04:00
										 |  |  | 	license: 'MIT',
 | 
					
						
							| 
									
										
										
										
											2017-11-22 12:05:44 +13:00
										 |  |  | 	meson_version: '>=0.43.0',
 | 
					
						
							| 
									
										
										
										
											2017-08-30 14:30:47 -04:00
										 |  |  | 	default_options: [
 | 
					
						
							|  |  |  | 		'c_std=c11',
 | 
					
						
							|  |  |  | 		'warning_level=2',
 | 
					
						
							|  |  |  | 		'werror=true',
 | 
					
						
							|  |  |  | 	],
 | 
					
						
							|  |  |  | )
 | 
					
						
							| 
									
										
										
										
											2017-07-17 20:38:28 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-12-27 17:06:52 +01:00
										 |  |  | # Format of so_version is CURRENT, REVISION, AGE.
 | 
					
						
							|  |  |  | # See: https://autotools.io/libtool/version.html
 | 
					
						
							|  |  |  | # for a reference about clean library versioning.
 | 
					
						
							|  |  |  | so_version = ['0', '0', '0']
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-20 22:19:47 +12:00
										 |  |  | add_project_arguments('-Wno-unused-parameter', language: 'c')
 | 
					
						
							| 
									
										
										
										
											2017-08-30 14:30:47 -04:00
										 |  |  | add_project_arguments(
 | 
					
						
							|  |  |  | 	'-DWLR_SRC_DIR="@0@"'.format(meson.source_root()),
 | 
					
						
							|  |  |  | 	language: 'c',
 | 
					
						
							|  |  |  | )
 | 
					
						
							| 
									
										
										
										
											2017-10-08 13:19:25 +13:00
										 |  |  | add_project_arguments(
 | 
					
						
							|  |  |  | 	'-I@0@'.format(meson.build_root()),
 | 
					
						
							|  |  |  | 	language: 'c',
 | 
					
						
							|  |  |  | )
 | 
					
						
							| 
									
										
										
										
											2017-08-30 14:30:47 -04:00
										 |  |  | add_project_link_arguments(
 | 
					
						
							|  |  |  | 	'-Wl,-rpath,@0@'.format(meson.build_root()),
 | 
					
						
							|  |  |  | 	language: 'c',
 | 
					
						
							|  |  |  | )
 | 
					
						
							| 
									
										
										
										
											2017-07-17 20:38:28 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-12-26 18:51:27 +01:00
										 |  |  | conf_data = configuration_data()
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-07-17 20:38:28 +02:00
										 |  |  | wlr_inc = include_directories('include')
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | cc = meson.get_compiler('c')
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-30 16:06:45 +01:00
										 |  |  | # Clang complains about some zeroed initializer lists (= {0}), even though they
 | 
					
						
							| 
									
										
										
										
											2017-08-30 14:30:47 -04:00
										 |  |  | # are valid
 | 
					
						
							| 
									
										
										
										
											2017-07-17 20:38:28 +02:00
										 |  |  | if cc.get_id() == 'clang'
 | 
					
						
							| 
									
										
										
										
											2017-08-30 14:30:47 -04:00
										 |  |  | 	add_project_arguments('-Wno-missing-field-initializers', language: 'c')
 | 
					
						
							|  |  |  | 	add_project_arguments('-Wno-missing-braces', language: 'c')
 | 
					
						
							| 
									
										
										
										
											2017-07-17 20:38:28 +02:00
										 |  |  | endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-10 01:23:43 +03:00
										 |  |  | # Avoid wl_buffer deprecation warnings
 | 
					
						
							|  |  |  | add_project_arguments('-DWL_HIDE_DEPRECATED', language: 'c')
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-11 09:37:09 -04:00
										 |  |  | wayland_server = dependency('wayland-server')
 | 
					
						
							|  |  |  | wayland_client = dependency('wayland-client')
 | 
					
						
							| 
									
										
										
										
											2017-08-20 22:19:47 +12:00
										 |  |  | wayland_egl    = dependency('wayland-egl')
 | 
					
						
							| 
									
										
										
										
											2018-02-14 19:02:45 +01:00
										 |  |  | wayland_protos = dependency('wayland-protocols', version: '>=1.12')
 | 
					
						
							| 
									
										
										
										
											2017-08-20 22:19:47 +12:00
										 |  |  | egl            = dependency('egl')
 | 
					
						
							|  |  |  | glesv2         = dependency('glesv2')
 | 
					
						
							|  |  |  | drm            = dependency('libdrm')
 | 
					
						
							| 
									
										
										
										
											2017-10-08 09:55:12 +09:00
										 |  |  | gbm            = dependency('gbm', version: '>=17.1.0')
 | 
					
						
							| 
									
										
										
										
											2017-10-24 02:05:36 +09:00
										 |  |  | libinput       = dependency('libinput', version: '>=1.7.0')
 | 
					
						
							| 
									
										
										
										
											2017-08-20 22:19:47 +12:00
										 |  |  | xkbcommon      = dependency('xkbcommon')
 | 
					
						
							|  |  |  | udev           = dependency('libudev')
 | 
					
						
							|  |  |  | pixman         = dependency('pixman-1')
 | 
					
						
							| 
									
										
										
										
											2017-08-19 21:25:26 +02:00
										 |  |  | xcb            = dependency('xcb')
 | 
					
						
							| 
									
										
										
										
											2017-08-20 07:47:38 +02:00
										 |  |  | xcb_composite  = dependency('xcb-composite')
 | 
					
						
							| 
									
										
										
										
											2017-10-15 14:50:21 -04:00
										 |  |  | xcb_xfixes     = dependency('xcb-xfixes')
 | 
					
						
							| 
									
										
										
										
											2017-11-02 00:03:55 +01:00
										 |  |  | xcb_image      = dependency('xcb-image')
 | 
					
						
							| 
									
										
										
										
											2017-11-02 15:52:02 +01:00
										 |  |  | xcb_render     = dependency('xcb-render')
 | 
					
						
							| 
									
										
										
										
											2017-10-05 12:32:12 +02:00
										 |  |  | xcb_icccm      = dependency('xcb-icccm', required: false)
 | 
					
						
							| 
									
										
										
										
											2018-03-03 11:37:02 +01:00
										 |  |  | xcb_errors     = dependency('xcb-errors', required: get_option('enable_xcb_errors') == 'true')
 | 
					
						
							| 
									
										
										
										
											2017-09-22 16:00:27 +12:00
										 |  |  | x11_xcb        = dependency('x11-xcb')
 | 
					
						
							| 
									
										
										
										
											2018-02-10 10:46:27 +01:00
										 |  |  | libcap         = dependency('libcap', required: get_option('enable_libcap') == 'true')
 | 
					
						
							|  |  |  | systemd        = dependency('libsystemd', required: get_option('enable_systemd') == 'true')
 | 
					
						
							|  |  |  | elogind        = dependency('libelogind', required: get_option('enable_elogind') == 'true')
 | 
					
						
							| 
									
										
										
										
											2017-08-20 22:19:47 +12:00
										 |  |  | math           = cc.find_library('m', required: false)
 | 
					
						
							| 
									
										
										
										
											2017-07-17 20:38:28 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-10 11:30:47 +01:00
										 |  |  | exclude_headers = []
 | 
					
						
							|  |  |  | wlr_parts = []
 | 
					
						
							|  |  |  | wlr_deps = []
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-05 12:32:12 +02:00
										 |  |  | if xcb_icccm.found()
 | 
					
						
							| 
									
										
										
										
											2017-12-26 18:51:27 +01:00
										 |  |  | 	conf_data.set('WLR_HAS_XCB_ICCCM', true)
 | 
					
						
							| 
									
										
										
										
											2017-10-05 12:32:12 +02:00
										 |  |  | endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-03 11:37:02 +01:00
										 |  |  | if xcb_errors.found() and get_option('enable_xcb_errors') != 'false'
 | 
					
						
							|  |  |  | 	conf_data.set('WLR_HAS_XCB_ERRORS', true)
 | 
					
						
							|  |  |  | endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-10 10:46:27 +01:00
										 |  |  | if libcap.found() and get_option('enable_libcap') != 'false'
 | 
					
						
							| 
									
										
										
										
											2017-12-26 18:51:27 +01:00
										 |  |  | 	conf_data.set('WLR_HAS_LIBCAP', true)
 | 
					
						
							| 
									
										
										
										
											2018-02-10 11:30:47 +01:00
										 |  |  | 	wlr_deps += libcap
 | 
					
						
							| 
									
										
										
										
											2017-07-17 20:38:28 +02:00
										 |  |  | endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-10 10:46:27 +01:00
										 |  |  | if systemd.found() and get_option('enable_systemd') != 'false'
 | 
					
						
							| 
									
										
										
										
											2017-12-26 18:51:27 +01:00
										 |  |  | 	conf_data.set('WLR_HAS_SYSTEMD', true)
 | 
					
						
							| 
									
										
										
										
											2018-02-10 11:30:47 +01:00
										 |  |  | 	wlr_deps += systemd
 | 
					
						
							| 
									
										
										
										
											2017-07-17 20:38:28 +02:00
										 |  |  | endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-10 10:46:27 +01:00
										 |  |  | if elogind.found() and get_option('enable_elogind') != 'false'
 | 
					
						
							| 
									
										
										
										
											2017-12-26 18:51:27 +01:00
										 |  |  | 	conf_data.set('WLR_HAS_ELOGIND', true)
 | 
					
						
							| 
									
										
										
										
											2017-09-22 12:02:55 -05:00
										 |  |  | endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-06 21:50:25 +00:00
										 |  |  | if get_option('enable_xwayland')
 | 
					
						
							|  |  |  | 	subdir('xwayland')
 | 
					
						
							|  |  |  | 	wlr_parts += [lib_wlr_xwayland]
 | 
					
						
							|  |  |  | 	conf_data.set('WLR_HAS_XWAYLAND', true)
 | 
					
						
							|  |  |  | else
 | 
					
						
							| 
									
										
										
										
											2017-12-27 15:56:07 +01:00
										 |  |  | 	exclude_headers += 'xwayland.h'
 | 
					
						
							| 
									
										
										
										
											2017-10-06 21:50:25 +00:00
										 |  |  | endif
 | 
					
						
							| 
									
										
										
										
											2017-12-27 15:56:07 +01:00
										 |  |  | exclude_headers += 'meson.build'
 | 
					
						
							| 
									
										
										
										
											2017-12-28 14:38:52 -05:00
										 |  |  | install_subdir('include/wlr', install_dir: 'include', exclude_files: exclude_headers)
 | 
					
						
							| 
									
										
										
										
											2017-10-06 21:50:25 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-12-27 14:37:55 +01:00
										 |  |  | subdir('include')
 | 
					
						
							| 
									
										
										
										
											2017-08-11 09:37:09 -04:00
										 |  |  | subdir('protocol')
 | 
					
						
							| 
									
										
										
										
											2017-07-17 20:38:28 +02:00
										 |  |  | subdir('render')
 | 
					
						
							| 
									
										
										
										
											2017-10-08 13:19:25 +13:00
										 |  |  | subdir('backend')
 | 
					
						
							| 
									
										
										
										
											2017-07-17 20:38:28 +02:00
										 |  |  | subdir('types')
 | 
					
						
							|  |  |  | subdir('util')
 | 
					
						
							| 
									
										
										
										
											2017-08-07 21:13:04 -04:00
										 |  |  | subdir('xcursor')
 | 
					
						
							| 
									
										
										
										
											2017-10-06 21:50:25 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | wlr_parts += [
 | 
					
						
							|  |  |  | 	lib_wl_protos,
 | 
					
						
							|  |  |  | 	lib_wlr_backend,
 | 
					
						
							|  |  |  | 	lib_wlr_render,
 | 
					
						
							|  |  |  | 	lib_wlr_types,
 | 
					
						
							|  |  |  | 	lib_wlr_util,
 | 
					
						
							|  |  |  | 	lib_wlr_xcursor,
 | 
					
						
							|  |  |  | ]
 | 
					
						
							| 
									
										
										
										
											2017-07-17 20:38:28 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-10 11:30:47 +01:00
										 |  |  | wlr_deps += [
 | 
					
						
							| 
									
										
										
										
											2017-08-30 14:30:47 -04:00
										 |  |  | 	wayland_server,
 | 
					
						
							|  |  |  | 	wayland_client,
 | 
					
						
							|  |  |  | 	wayland_egl,
 | 
					
						
							|  |  |  | 	wayland_protos,
 | 
					
						
							|  |  |  | 	egl,
 | 
					
						
							|  |  |  | 	glesv2,
 | 
					
						
							|  |  |  | 	drm,
 | 
					
						
							|  |  |  | 	gbm,
 | 
					
						
							|  |  |  | 	libinput,
 | 
					
						
							|  |  |  | 	xkbcommon,
 | 
					
						
							|  |  |  | 	udev,
 | 
					
						
							|  |  |  | 	pixman,
 | 
					
						
							|  |  |  | 	xcb,
 | 
					
						
							|  |  |  | 	xcb_composite,
 | 
					
						
							| 
									
										
										
										
											2017-09-22 16:00:27 +12:00
										 |  |  | 	x11_xcb,
 | 
					
						
							| 
									
										
										
										
											2017-08-30 14:30:47 -04:00
										 |  |  | 	math,
 | 
					
						
							| 
									
										
										
										
											2017-08-11 09:37:09 -04:00
										 |  |  | ]
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-20 08:06:51 +01:00
										 |  |  | symbols_file = 'wlroots.syms'
 | 
					
						
							|  |  |  | symbols_flag = '-Wl,--version-script,@0@/@1@'.format(meson.current_source_dir(), symbols_file)
 | 
					
						
							| 
									
										
										
										
											2017-08-30 14:30:47 -04:00
										 |  |  | lib_wlr = library(
 | 
					
						
							| 
									
										
										
										
											2017-12-27 17:06:52 +01:00
										 |  |  | 	meson.project_name(),
 | 
					
						
							|  |  |  | 	version: '.'.join(so_version),
 | 
					
						
							| 
									
										
										
										
											2017-10-06 21:50:25 +00:00
										 |  |  | 	link_whole: wlr_parts,
 | 
					
						
							| 
									
										
										
										
											2017-08-30 14:30:47 -04:00
										 |  |  | 	dependencies: wlr_deps,
 | 
					
						
							|  |  |  | 	include_directories: wlr_inc,
 | 
					
						
							| 
									
										
										
										
											2017-09-24 13:57:15 +13:00
										 |  |  | 	install: true,
 | 
					
						
							| 
									
										
										
										
											2018-02-20 08:06:51 +01:00
										 |  |  | 	link_args : symbols_flag,
 | 
					
						
							| 
									
										
										
										
											2017-08-30 14:30:47 -04:00
										 |  |  | )
 | 
					
						
							| 
									
										
										
										
											2017-08-11 09:37:09 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-30 14:30:47 -04:00
										 |  |  | wlroots = declare_dependency(
 | 
					
						
							|  |  |  | 	link_with: lib_wlr,
 | 
					
						
							|  |  |  | 	dependencies: wlr_deps,
 | 
					
						
							|  |  |  | 	include_directories: wlr_inc,
 | 
					
						
							|  |  |  | )
 | 
					
						
							| 
									
										
										
										
											2017-07-17 20:38:28 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-24 16:56:08 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | summary = [
 | 
					
						
							| 
									
										
										
										
											2018-02-12 21:29:23 +01:00
										 |  |  | 	'',
 | 
					
						
							|  |  |  | 	'----------------',
 | 
					
						
							|  |  |  | 	'wlroots @0@'.format(meson.project_version()),
 | 
					
						
							|  |  |  | 	'',
 | 
					
						
							| 
									
										
										
										
											2018-03-03 11:37:02 +01:00
										 |  |  | 	'     libcap: @0@'.format(conf_data.get('WLR_HAS_LIBCAP', false)),
 | 
					
						
							|  |  |  | 	'    systemd: @0@'.format(conf_data.get('WLR_HAS_SYSTEMD', false)),
 | 
					
						
							|  |  |  | 	'    elogind: @0@'.format(conf_data.get('WLR_HAS_ELOGIND', false)),
 | 
					
						
							|  |  |  | 	'   xwayland: @0@'.format(conf_data.get('WLR_HAS_XWAYLAND', false)),
 | 
					
						
							|  |  |  | 	'  xcb-icccm: @0@'.format(conf_data.get('WLR_HAS_XCB_ICCCM', false)),
 | 
					
						
							|  |  |  | 	' xcb-errors: @0@'.format(conf_data.get('WLR_HAS_XCB_ERRORS', false)),
 | 
					
						
							| 
									
										
										
										
											2018-02-12 21:29:23 +01:00
										 |  |  | 	'----------------',
 | 
					
						
							|  |  |  | 	''
 | 
					
						
							| 
									
										
										
										
											2018-01-24 16:56:08 +00:00
										 |  |  | ]
 | 
					
						
							|  |  |  | message('\n'.join(summary))
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-22 20:24:32 -04:00
										 |  |  | subdir('rootston')
 | 
					
						
							| 
									
										
										
										
											2017-07-17 20:38:28 +02:00
										 |  |  | subdir('examples')
 | 
					
						
							| 
									
										
										
										
											2017-09-24 13:57:15 +13:00
										 |  |  | 
 | 
					
						
							|  |  |  | pkgconfig = import('pkgconfig')
 | 
					
						
							|  |  |  | pkgconfig.generate(
 | 
					
						
							|  |  |  | 	libraries: lib_wlr,
 | 
					
						
							| 
									
										
										
										
											2017-12-27 15:56:07 +01:00
										 |  |  | 	version: meson.project_version(),
 | 
					
						
							|  |  |  | 	filebase: meson.project_name(),
 | 
					
						
							|  |  |  | 	name: meson.project_name(),
 | 
					
						
							| 
									
										
										
										
											2017-09-24 13:57:15 +13:00
										 |  |  | 	description: 'Wayland compositor library',
 | 
					
						
							|  |  |  | )
 | 
					
						
							| 
									
										
										
										
											2018-01-26 15:46:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | git = find_program('git', required: false)
 | 
					
						
							|  |  |  | if git.found()
 | 
					
						
							|  |  |  | 	all_files = run_command(
 | 
					
						
							|  |  |  | 		git,
 | 
					
						
							|  |  |  | 		['--git-dir=@0@/.git'.format(meson.source_root()),
 | 
					
						
							|  |  |  | 		 'ls-files',
 | 
					
						
							|  |  |  | 		 ':/*.[ch]'])
 | 
					
						
							|  |  |  | 	all_files = files(all_files.stdout().split())
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	etags = find_program('etags', required: false)
 | 
					
						
							|  |  |  | 	if etags.found() and all_files.length() > 0
 | 
					
						
							|  |  |  | 		custom_target('etags',
 | 
					
						
							| 
									
										
										
										
											2018-02-12 21:29:23 +01:00
										 |  |  | 			build_by_default: true,
 | 
					
						
							|  |  |  | 			input: all_files,
 | 
					
						
							|  |  |  | 			output: 'TAGS',
 | 
					
						
							|  |  |  | 			command: [etags.path(), '-o', 'TAGS'] + all_files)
 | 
					
						
							| 
									
										
										
										
											2018-01-26 15:46:29 +01:00
										 |  |  | 	endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	ctags = find_program('ctags', required: false)
 | 
					
						
							|  |  |  | 	if ctags.found() and all_files.length() > 0
 | 
					
						
							|  |  |  | 		custom_target('ctags',
 | 
					
						
							| 
									
										
										
										
											2018-02-12 21:29:23 +01:00
										 |  |  | 			build_by_default: true,
 | 
					
						
							|  |  |  | 			input: all_files,
 | 
					
						
							|  |  |  | 			output: 'tags',
 | 
					
						
							|  |  |  | 			command: [ctags.path(), '-o', 'tags'] + all_files)
 | 
					
						
							| 
									
										
										
										
											2018-01-26 15:46:29 +01:00
										 |  |  | 	endif
 | 
					
						
							|  |  |  | endif
 |