• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1deps_libweston = [
2	dep_wayland_server,
3	dep_pixman,
4	dep_libm,
5	dep_libdl,
6	dep_libdrm_headers,
7	dep_xkbcommon,
8	dep_matrix_c
9]
10srcs_libweston = [
11	git_version_h,
12	'animation.c',
13	'bindings.c',
14	'clipboard.c',
15	'compositor.c',
16	'content-protection.c',
17	'data-device.c',
18	'input.c',
19	'linux-dmabuf.c',
20	'linux-explicit-synchronization.c',
21	'linux-sync-file.c',
22	'log.c',
23	'noop-renderer.c',
24	'pixel-formats.c',
25	'pixman-renderer.c',
26	'plugin-registry.c',
27	'screenshooter.c',
28	'timeline.c',
29	'touch-calibration.c',
30	'weston-log-wayland.c',
31	'weston-log-file.c',
32	'weston-log-flight-rec.c',
33	'weston-log.c',
34	'weston-direct-display.c',
35	'zoom.c',
36	linux_dmabuf_unstable_v1_protocol_c,
37	linux_dmabuf_unstable_v1_server_protocol_h,
38	linux_explicit_synchronization_unstable_v1_protocol_c,
39	linux_explicit_synchronization_unstable_v1_server_protocol_h,
40	input_method_unstable_v1_protocol_c,
41	input_method_unstable_v1_server_protocol_h,
42	input_timestamps_unstable_v1_protocol_c,
43	input_timestamps_unstable_v1_server_protocol_h,
44	presentation_time_protocol_c,
45	presentation_time_server_protocol_h,
46	pointer_constraints_unstable_v1_protocol_c,
47	pointer_constraints_unstable_v1_server_protocol_h,
48	relative_pointer_unstable_v1_protocol_c,
49	relative_pointer_unstable_v1_server_protocol_h,
50	weston_screenshooter_protocol_c,
51	weston_screenshooter_server_protocol_h,
52	text_cursor_position_protocol_c,
53	text_cursor_position_server_protocol_h,
54	text_input_unstable_v1_protocol_c,
55	text_input_unstable_v1_server_protocol_h,
56	weston_touch_calibration_protocol_c,
57	weston_touch_calibration_server_protocol_h,
58	weston_content_protection_protocol_c,
59	weston_content_protection_server_protocol_h,
60	viewporter_protocol_c,
61	viewporter_server_protocol_h,
62	xdg_output_unstable_v1_protocol_c,
63	xdg_output_unstable_v1_server_protocol_h,
64	weston_debug_protocol_c,
65	weston_debug_server_protocol_h,
66	weston_direct_display_protocol_c,
67	weston_direct_display_server_protocol_h,
68]
69
70if get_option('renderer-gl')
71	dep_egl = dependency('egl', required: false)
72	if not dep_egl.found()
73		error('libweston + gl-renderer requires egl which was not found. Or, you can use \'-Drenderer-gl=false\'.')
74	endif
75	deps_libweston += dep_egl
76endif
77
78lib_weston = shared_library(
79	'weston-@0@'.format(libweston_major),
80	srcs_libweston,
81	include_directories: common_inc,
82	install: true,
83	version: '0.0.@0@'.format(libweston_revision),
84	link_whole: lib_libshared,
85	dependencies: deps_libweston
86)
87
88deps_for_libweston_users = [
89	dep_wayland_server,
90	dep_pixman,
91	dep_xkbcommon,
92]
93
94# For external users, like Weston.
95dep_libweston_public = declare_dependency(
96	link_with: lib_weston,
97	include_directories: public_inc,
98	dependencies: deps_for_libweston_users
99)
100
101# For internal users, like the backends.
102dep_libweston_private = declare_dependency(
103	link_with: lib_weston,
104	include_directories: [ include_directories('.'), public_inc ],
105	dependencies: deps_for_libweston_users
106)
107
108# XXX: We should be able to use dep_libweston_private.partial_dependency() instead
109# of this, but a Meson bug makes it not work. It will be fixed with
110# https://github.com/mesonbuild/meson/pull/5167
111# in hopefully Meson 0.51.
112dep_libweston_private_h_deps = []
113foreach d : deps_for_libweston_users
114	dep_libweston_private_h_deps += d.partial_dependency(compile_args: true)
115endforeach
116dep_libweston_private_h = declare_dependency(
117	include_directories: [ include_directories('.'), public_inc ],
118	dependencies: dep_libweston_private_h_deps
119)
120
121pkgconfig.generate(
122	lib_weston,
123	filebase: 'libweston-@0@'.format(libweston_major),
124	name: 'libweston API',
125	version: version_weston,
126	description: 'Header files for libweston compositors development',
127	requires_private: deps_for_libweston_users,
128	subdirs: dir_include_libweston
129)
130
131pkgconfig.generate(
132	filebase: 'libweston-@0@-protocols'.format(libweston_major),
133	name: 'libWeston Protocols',
134	version: version_weston,
135	description: 'libWeston protocol files',
136	variables: [
137		'datarootdir=' + join_paths('${prefix}', get_option('datadir')),
138		'pkgdatadir=' + join_paths('${pc_sysrootdir}${datarootdir}', dir_protocol_libweston)
139	],
140	install_dir: dir_data_pc
141)
142
143srcs_session_helper = [
144	'launcher-direct.c',
145	'launcher-util.c',
146	'launcher-weston-launch.c',
147]
148deps_session_helper = [ dep_libweston_private_h ]
149
150if get_option('backend-drm')
151	deps_session_helper += dep_libdrm
152endif
153
154systemd_dep = dependency('', required: false)
155if get_option('launcher-logind')
156	systemd_dep = dependency('libsystemd', version: '>= 209', required: false)
157	if systemd_dep.found()
158		config_h.set('HAVE_SYSTEMD_LOGIN_209', '1')
159	else
160		systemd_dep = dependency('libsystemd-login', version: '>= 198', required: false)
161		if not systemd_dep.found()
162			error('logind support requires libsystemd or libsystemd-login but neither was found. Or, you can use \'-Dlauncher-logind=false\'')
163		endif
164	endif
165
166	dbus_dep = dependency('dbus-1', version: '>= 1.6', required: false)
167	if not dbus_dep.found()
168		error('logind support requires dbus-1 >= 1.6 which was not found. Or, you can use \'-Dlauncher-logind=false\'')
169	endif
170
171	config_h.set('HAVE_DBUS', '1')
172	config_h.set('HAVE_SYSTEMD_LOGIN', '1')
173
174	srcs_session_helper += [
175		'dbus.c',
176		'launcher-logind.c',
177	]
178	deps_session_helper += [
179		dbus_dep,
180		systemd_dep,
181	]
182endif
183
184lib_session_helper = static_library(
185	'session-helper',
186	srcs_session_helper,
187	include_directories: common_inc,
188	dependencies: deps_session_helper,
189	install: false
190)
191dep_session_helper = declare_dependency(link_with: lib_session_helper)
192
193
194lib_libinput_backend = static_library(
195	'libinput-backend',
196	[
197		'libinput-device.c',
198		'libinput-seat.c'
199	],
200	dependencies: [
201		dep_libweston_private,
202		dep_libinput,
203		dependency('libudev', version: '>= 136')
204	],
205	include_directories: common_inc,
206	install: false
207)
208dep_libinput_backend = declare_dependency(
209	link_with: lib_libinput_backend,
210	include_directories: include_directories('.')
211)
212
213dep_vertex_clipping = declare_dependency(
214	sources: 'vertex-clipping.c',
215	include_directories: include_directories('.')
216)
217
218if get_option('weston-launch')
219	dep_pam = cc.find_library('pam')
220
221	if not cc.has_function('pam_open_session', dependencies: dep_pam)
222		error('pam_open_session not found for weston-launch')
223	endif
224
225	executable(
226		'weston-launch',
227		'weston-launch.c',
228		dependencies: [dep_pam, systemd_dep, dep_libdrm],
229		include_directories: common_inc,
230		install: true
231	)
232
233	meson.add_install_script('echo', 'REMINDER: You are installing weston-launch, please make it setuid-root.')
234endif
235
236subdir('renderer-gl')
237subdir('backend-drm')
238subdir('backend-fbdev')
239subdir('backend-headless')
240subdir('backend-rdp')
241subdir('backend-wayland')
242subdir('backend-x11')
243