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