1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
|
From 136cdeb302fdfe28e5cd5c6a1693b05c3d1bfb58 Mon Sep 17 00:00:00 2001
From: sewn <sewn@disroot.org>
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
|