meson.build
143 lines
| 3.8 KiB
| text/x-meson
|
MesonLexer
| project( | ||||
| 'swindle', | ||||
| 'c', | ||||
| version: '0.1', | ||||
| default_options: [ | ||||
| 'c_std=c11', | ||||
| 'buildtype=debugoptimized', | ||||
| ], | ||||
| ) | ||||
| cc = meson.get_compiler('c') | ||||
| add_project_arguments( | ||||
| '-DWLR_USE_UNSTABLE', | ||||
| '-D_POSIX_C_SOURCE=200809L', | ||||
| '-DVERSION="0.1"', | ||||
| '-Wall', | ||||
| '-Wextra', | ||||
| '-Wno-unused-parameter', | ||||
| '-Wno-stringop-truncation', | ||||
| language: 'c', | ||||
| ) | ||||
| xwayland_opt = get_option('xwayland') | ||||
| wayland_server = dependency('wayland-server') | ||||
| wayland_client = dependency('wayland-client') | ||||
| wayland_protocols = dependency('wayland-protocols') | ||||
| wayland_scanner_dep = dependency('wayland-scanner', native: true) | ||||
| wlroots = dependency('wlroots-0.20') | ||||
| xkbcommon = dependency('xkbcommon') | ||||
| libinput = dependency('libinput') | ||||
| lua = dependency('lua5.4') | ||||
| m_dep = cc.find_library('m', required: false) | ||||
| swindle_deps = [ | ||||
| wayland_server, | ||||
| wlroots, | ||||
| xkbcommon, | ||||
| libinput, | ||||
| lua, | ||||
| m_dep, | ||||
| ] | ||||
| if xwayland_opt | ||||
| swindle_deps += dependency('xcb') | ||||
| swindle_deps += dependency('xcb-icccm') | ||||
| add_project_arguments('-DXWAYLAND', language: 'c') | ||||
| endif | ||||
| wayland_scanner = find_program( | ||||
| wayland_scanner_dep.get_variable('wayland_scanner'), | ||||
| native: true, | ||||
| ) | ||||
| wl_protocol_dir = wayland_protocols.get_variable('pkgdatadir') | ||||
| wayland_scanner_server = generator( | ||||
| wayland_scanner, | ||||
| output: '@[email protected]', | ||||
| arguments: ['server-header', '@INPUT@', '@OUTPUT@'], | ||||
| ) | ||||
| wayland_scanner_private = generator( | ||||
| wayland_scanner, | ||||
| output: '@[email protected]', | ||||
| arguments: ['private-code', '@INPUT@', '@OUTPUT@'], | ||||
| ) | ||||
| wayland_scanner_enum = generator( | ||||
| wayland_scanner, | ||||
| output: '@[email protected]', | ||||
| arguments: ['enum-header', '@INPUT@', '@OUTPUT@'], | ||||
| ) | ||||
| cursor_shape_xml = wl_protocol_dir / 'staging/cursor-shape/cursor-shape-v1.xml' | ||||
| pointer_constraints_xml = wl_protocol_dir / 'unstable/pointer-constraints/pointer-constraints-unstable-v1.xml' | ||||
| xdg_shell_xml = wl_protocol_dir / 'stable/xdg-shell/xdg-shell.xml' | ||||
| layer_shell_xml = 'protocols/wlr-layer-shell-unstable-v1.xml' | ||||
| output_power_xml = 'protocols/wlr-output-power-management-unstable-v1.xml' | ||||
| dwl_ipc_xml = 'protocols/dwl-ipc-unstable-v2.xml' | ||||
| ext_workspace_xml = 'protocols/ext-workspace-v1.xml' | ||||
| cursor_shape_h = wayland_scanner_enum.process(cursor_shape_xml) | ||||
| pointer_constraints_h = wayland_scanner_enum.process(pointer_constraints_xml) | ||||
| layer_shell_h = wayland_scanner_enum.process(layer_shell_xml) | ||||
| output_power_h = wayland_scanner_server.process(output_power_xml) | ||||
| xdg_shell_h = wayland_scanner_server.process(xdg_shell_xml) | ||||
| dwl_ipc_h = wayland_scanner_server.process(dwl_ipc_xml) | ||||
| dwl_ipc_c = wayland_scanner_private.process(dwl_ipc_xml) | ||||
| ext_workspace_h = wayland_scanner_server.process(ext_workspace_xml) | ||||
| ext_workspace_c = wayland_scanner_private.process(ext_workspace_xml) | ||||
| protocol_headers = [ | ||||
| cursor_shape_h, | ||||
| pointer_constraints_h, | ||||
| layer_shell_h, | ||||
| output_power_h, | ||||
| xdg_shell_h, | ||||
| ] | ||||
| swindle_sources = [ | ||||
| 'src/swindle.c', | ||||
| 'src/util.c', | ||||
| 'src/wlr_ext_workspace_v1.c', | ||||
| 'parser/parser.c', | ||||
| dwl_ipc_c, | ||||
| dwl_ipc_h, | ||||
| ext_workspace_c, | ||||
| ext_workspace_h, | ||||
| ] | ||||
| executable( | ||||
| 'swindle', | ||||
| swindle_sources + protocol_headers, | ||||
| include_directories: include_directories('.', 'include', 'src', 'parser'), | ||||
| dependencies: swindle_deps, | ||||
| install: true, | ||||
| ) | ||||
| smsg_dwl_ipc_h = custom_target( | ||||
| 'smsg-dwl-ipc-unstable-v2-protocol-h', | ||||
| input: dwl_ipc_xml, | ||||
| output: 'dwl-ipc-unstable-v2-protocol.h', | ||||
| command: [wayland_scanner, 'client-header', '@INPUT@', '@OUTPUT@'], | ||||
| ) | ||||
| smsg_dwl_ipc_c = custom_target( | ||||
| 'smsg-dwl-ipc-unstable-v2-protocol-c', | ||||
| input: dwl_ipc_xml, | ||||
| output: 'dwl-ipc-unstable-v2-protocol.c', | ||||
| command: [wayland_scanner, 'private-code', '@INPUT@', '@OUTPUT@'], | ||||
| ) | ||||
| executable( | ||||
| 'smsg', | ||||
| ['smsg/smsg.c', smsg_dwl_ipc_c, smsg_dwl_ipc_h], | ||||
| dependencies: [wayland_client], | ||||
| install: true, | ||||
| ) | ||||
| install_subdir('example', install_dir: get_option('sysconfdir') / 'swindle', strip_directory: true) | ||||
