libds_files = [ 'log.c', 'addon.c', 'buffer.c', 'allocator.c', 'swapchain.c', 'output.c', 'compositor.c', 'subcompositor.c', 'region.c', 'util/time.c', 'util/shm.c', 'surface/surface.c', 'surface/subsurface.c', 'client_buffer/shm_client_buffer.c', 'xdg_shell/xdg_shell.c', 'xdg_shell/xdg_surface.c', 'xdg_shell/xdg_toplevel.c', 'pixel_format.c', 'backend.c', 'input_device.c', 'pointer.c', 'keyboard.c', 'touch.c', 'seat/seat.c', 'seat/seat_pointer.c', 'seat/seat_keyboard.c', 'seat/seat_touch.c', 'shell.c', 'shell_surface.c', ] protocols = { 'xdg-shell': wl_protocol_dir / 'stable/xdg-shell/xdg-shell.xml', } protocols_code = {} protocols_server_header = {} foreach name, path : protocols code = custom_target( name.underscorify() + '_c', input: path, output: '@BASENAME@-protocol.c', command: [wayland_scanner, 'private-code', '@INPUT@', '@OUTPUT@'], ) libds_files += code server_header = custom_target( name.underscorify() + '_server_h', input: path, output: '@BASENAME@-server-protocol.h', command: [wayland_scanner, 'server-header', '@INPUT@', '@OUTPUT@'], build_by_default: false, ) libds_files += server_header endforeach math = meson.get_compiler('c').find_library('m') wayland_server = dependency('wayland-server', required: true) pixman = dependency('pixman-1', required: true) libdrm = dependency('libdrm', required: true) xkbcommon = dependency('xkbcommon', required: true) rt = meson.get_compiler('c').find_library('rt') if wayland_server.version().version_compare('>= 1.19') cdata.set('HAVE_WL_SEAT_ERROR_MISSING_CAPABILITY', '1') endif libds_deps = [ math, wayland_server, pixman, libdrm, xkbcommon, rt, ] subdir('backend') subdir('allocator') lib_libds = shared_library('ds', libds_files, dependencies: libds_deps, include_directories: [ common_inc, include_directories('.') ], version: meson.project_version(), install: true ) dep_libds = declare_dependency( link_with: lib_libds, dependencies: libds_deps, include_directories: [ common_inc, include_directories('.') ], ) pkgconfig = import('pkgconfig') pkgconfig.generate(lib_libds, version: meson.project_version(), filebase: meson.project_name(), name: meson.project_name(), description: 'Wayland compositor library', )