From 136cdeb302fdfe28e5cd5c6a1693b05c3d1bfb58 Mon Sep 17 00:00:00 2001 From: sewn Date: Sat, 7 Dec 2024 09:59:01 +0300 Subject: [PATCH] add meson --- .gitignore | 1 + meson.build | 93 ++++++++++++++++++++++++++++++++++++++++ subprojects/wlroots.wrap | 5 +++ 3 files changed, 99 insertions(+) create mode 100644 meson.build create mode 100644 subprojects/wlroots.wrap diff --git a/.gitignore b/.gitignore index 0dde90e..9246a31 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ dwl *-protocol.h .ccls-cache config.h +subprojects/wlroots diff --git a/meson.build b/meson.build new file mode 100644 index 0000000..e2219ec --- /dev/null +++ b/meson.build @@ -0,0 +1,93 @@ +project( + 'dwl', + 'c', + version: run_command('git', 'describe', '--tags', '--dirty', check: false).stdout().strip(), + license: [ 'GPL-3.0-only', 'CC0-1.0', 'MIT' ], + meson_version: '>=1.3', + default_options: [ + 'c_std=c99', + 'warning_level=2', + ], +) + +configure_file( + input: 'config.def.h', + output: 'config.h', + copy: true, + install_dir: '.', +) + +cc = meson.get_compiler('c') + +add_project_arguments([ + '-DWLR_USE_UNSTABLE', + '-D_POSIX_C_SOURCE=200809L', + '-DVERSION="@0@"'.format(meson.project_version()), + + '-Wno-unused-parameter', +], language: 'c') + +wlroots = subproject('wlroots', + default_options: [ + 'backends=drm,libinput,auto', + 'default_library=static', + 'examples=false', + 'session=enabled', + ], +) +wlroots_has_xwlr = wlroots.get_variable('features').get('xwayland') + +libinput = dependency('libinput') +math = cc.find_library('m') +wayland_server = dependency('wayland-server') +xcb = dependency('xcb', required: wlroots_has_xwlr) +xcb_icccm = dependency('xcb-icccm', required: wlroots_has_xwlr) +xkbcommon = dependency('xkbcommon') + +dwl_deps = [ + libinput, + math, + wayland_server, + wlroots.get_variable('wlroots'), + xkbcommon, +] + +if wlroots_has_xwlr + add_project_arguments('-DXWAYLAND', language: 'c') + dwl_deps += [ xcb, xcb_icccm ] +endif + +wayland_protos = dependency('wayland-protocols') +wayland_scanner = dependency('wayland-scanner') +wayland_protocol_dir = wayland_protos.get_variable('pkgdatadir') +wayland_scanner_prog = find_program( + wayland_scanner.get_variable('wayland_scanner'), + native: true, +) + +protocols = [ + wayland_protocol_dir / 'staging/cursor-shape/cursor-shape-v1.xml', + wayland_protocol_dir / 'unstable/pointer-constraints/pointer-constraints-unstable-v1.xml', + 'protocols/wlr-layer-shell-unstable-v1.xml', + 'protocols/wlr-output-power-management-unstable-v1.xml', + wayland_protocol_dir / 'stable/xdg-shell/xdg-shell.xml', +] +protocols_src = [] + +wayland_scanner_server = generator( + wayland_scanner_prog, + output: '@BASENAME@-protocol.h', + arguments: ['server-header', '@INPUT@', '@OUTPUT@'], +) + +foreach xml : protocols + protocols_src += wayland_scanner_server.process(xml) +endforeach + +executable( + 'dwl', + [ 'dwl.c', 'util.c', protocols_src ], + include_directories: [include_directories('.')], + dependencies: dwl_deps, + install: true, +) diff --git a/subprojects/wlroots.wrap b/subprojects/wlroots.wrap new file mode 100644 index 0000000..3d9cbfa --- /dev/null +++ b/subprojects/wlroots.wrap @@ -0,0 +1,5 @@ +[wrap-git] +url = https://gitlab.freedesktop.org/wlroots/wlroots.git +revision = master +depth = 1 +clone-recursive = true -- 2.47.1