• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1if not get_option('backend-drm')
2	subdir_done()
3endif
4
5lib_backlight = static_library(
6	'backlight',
7	'libbacklight.c',
8	dependencies: [
9		dep_libdrm_headers,
10		dependency('libudev')
11	],
12	include_directories: common_inc,
13	install: false
14)
15dep_backlight = declare_dependency(
16	link_with: lib_backlight,
17	include_directories: include_directories('.')
18)
19
20config_h.set('BUILD_DRM_COMPOSITOR', '1')
21
22srcs_drm = [
23	'drm.c',
24	'fb.c',
25	'modes.c',
26	'kms.c',
27	'state-helpers.c',
28	'state-propose.c',
29	linux_dmabuf_unstable_v1_protocol_c,
30	linux_dmabuf_unstable_v1_server_protocol_h,
31	presentation_time_server_protocol_h,
32]
33
34deps_drm = [
35	dep_libdl,
36	dep_libweston_private,
37	dep_session_helper,
38	dep_libdrm,
39	dep_libinput_backend,
40	dependency('libudev', version: '>= 136'),
41	dep_backlight
42]
43
44if get_option('renderer-gl')
45	dep_gbm = dependency('gbm', required: false)
46	if not dep_gbm.found()
47		error('drm-backend with GL renderer requires gbm which was not found. Or, you can use \'-Drenderer-gl=false\'.')
48	endif
49	if dep_gbm.version().version_compare('>= 17.1')
50		config_h.set('HAVE_GBM_MODIFIERS', '1')
51	endif
52	if dep_gbm.version().version_compare('>= 17.2')
53		config_h.set('HAVE_GBM_FD_IMPORT', '1')
54	endif
55	deps_drm += dep_gbm
56	srcs_drm += 'drm-gbm.c'
57	config_h.set('BUILD_DRM_GBM', '1')
58endif
59
60if get_option('backend-drm-screencast-vaapi')
61	foreach name : [ 'libva', 'libva-drm' ]
62		d = dependency(name, version: '>= 0.34.0', required: false)
63		if not d.found()
64			error('VA-API recorder requires @0@ >= 0.34.0 which was not found. Or, you can use \'-Dbackend-drm-screencast-vaapi=false\'.'.format(name))
65		endif
66		deps_drm += d
67	endforeach
68
69	srcs_drm += 'vaapi-recorder.c'
70	deps_drm += dependency('threads')
71	config_h.set('BUILD_VAAPI_RECORDER', '1')
72endif
73
74if get_option('remoting') or get_option('pipewire')
75	if not get_option('renderer-gl')
76		error('DRM virtual requires renderer-gl.')
77	endif
78	srcs_drm += 'drm-virtual.c'
79	config_h.set('BUILD_DRM_VIRTUAL', '1')
80endif
81
82plugin_drm = shared_library(
83	'drm-backend',
84	srcs_drm,
85	include_directories: common_inc,
86	dependencies: deps_drm,
87	name_prefix: '',
88	install: true,
89	install_dir: dir_module_libweston
90)
91env_modmap += 'drm-backend.so=@0@;'.format(plugin_drm.full_path())
92
93install_headers(backend_drm_h, subdir: dir_include_libweston_install)
94