144 lines
3.8 KiB
Meson
144 lines
3.8 KiB
Meson
|
|
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: '@BASENAME@-protocol.h',
|
||
|
|
arguments: ['server-header', '@INPUT@', '@OUTPUT@'],
|
||
|
|
)
|
||
|
|
|
||
|
|
wayland_scanner_private = generator(
|
||
|
|
wayland_scanner,
|
||
|
|
output: '@BASENAME@-protocol.c',
|
||
|
|
arguments: ['private-code', '@INPUT@', '@OUTPUT@'],
|
||
|
|
)
|
||
|
|
|
||
|
|
wayland_scanner_enum = generator(
|
||
|
|
wayland_scanner,
|
||
|
|
output: '@BASENAME@-protocol.h',
|
||
|
|
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)
|