summaryrefslogtreecommitdiff
path: root/meson.build
diff options
context:
space:
mode:
Diffstat (limited to 'meson.build')
-rw-r--r--meson.build95
1 files changed, 95 insertions, 0 deletions
diff --git a/meson.build b/meson.build
new file mode 100644
index 0000000..31a32e1
--- /dev/null
+++ b/meson.build
@@ -0,0 +1,95 @@
+project(
+ 'wlclock',
+ 'c',
+ version: '0.1.0',
+ license: 'GPLv3',
+ default_options: [
+ 'c_std=c11',
+ 'warning_level=3',
+ 'werror=true',
+ ]
+)
+
+cc = meson.get_compiler('c')
+
+add_project_arguments(cc.get_supported_arguments([
+ '-D_POSIX_C_SOURCE=200809L',
+ '-DVERSION="0.1.0"',
+ '-fsigned-char',
+ '-Wno-unused-parameter',
+ '-Wpointer-arith',
+ '-Wformat-security',
+ '-Wunreachable-code',
+ '-Wformat',
+]), language: 'c')
+
+if get_option('handle-signals').enabled()
+ add_project_arguments(cc.get_supported_arguments([ '-DHANDLE_SIGNALS' ]), language: 'c')
+endif
+
+wayland_protocols = dependency('wayland-protocols')
+wayland_client = dependency('wayland-client', include_type: 'system')
+wayland_cursor = dependency('wayland-cursor', include_type: 'system')
+cairo = dependency('cairo')
+realtime = cc.find_library('rt')
+
+if ['dragonfly', 'freebsd', 'netbsd', 'openbsd'].contains(host_machine.system())
+ libepoll = dependency('epoll-shim', required: get_option('handle-signals'))
+else
+ libepoll = []
+endif
+
+subdir('protocol')
+
+executable(
+ 'wlclock',
+ files(
+ 'src/buffer.c',
+ 'src/misc.c',
+ 'src/output.c',
+ 'src/surface.c',
+ 'src/wlclock.c',
+ ),
+ dependencies: [
+ wayland_client,
+ wayland_protocols,
+ wayland_cursor,
+ cairo,
+ wl_protocols,
+ realtime,
+ libepoll,
+ ],
+ include_directories: include_directories('src'),
+ install: true,
+)
+
+scdoc = dependency(
+ 'scdoc',
+ version: '>=1.9.2',
+ native: true,
+ required: get_option('man-pages'),
+)
+if scdoc.found()
+ scdoc_prog = find_program(scdoc.get_pkgconfig_variable('scdoc'), native: true)
+ sh = find_program('sh', native: true)
+ mandir = get_option('mandir')
+ man_files = [
+ 'doc/wlclock.1.scd'
+ ]
+ foreach filename : man_files
+ topic = filename.split('.')[-3].split('/')[-1]
+ section = filename.split('.')[-2]
+ output = '@0@.@1@'.format(topic, section)
+
+ custom_target(
+ output,
+ input: filename,
+ output: output,
+ command: [
+ sh, '-c', '@0@ < @INPUT@ > @1@'.format(scdoc_prog.path(), output)
+ ],
+ install: true,
+ install_dir: '@0@/man@1@'.format(mandir, section)
+ )
+ endforeach
+endif