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
|
project('libdecor', 'c',
version: '0.2.0',
meson_version: '>= 0.47.0',
license: 'MIT',
default_options: [
'c_std=c99',
],
)
version_array = meson.project_version().split('.')
libdecor_major_version = version_array[0].to_int()
libdecor_minor_version = version_array[1].to_int()
libdecor_micro_version = version_array[2].to_int()
libdecor_api_version_string = '@0@'.format(libdecor_major_version)
libdecor_interface_age = libdecor_micro_version
libdecor_binary_age = 100 * libdecor_minor_version + libdecor_micro_version
# Maintain compatibility with libtool versioning
libdecor_soversion = 0
current = libdecor_binary_age - libdecor_interface_age
revision = libdecor_interface_age
libdecor_libversion = '@0@.@1@.@2@'.format(libdecor_soversion, current, revision)
plugin_api_version = 1
plugin_api_version_string = '@0@'.format(plugin_api_version)
libdecor_name = 'decor-' + libdecor_api_version_string
libdecor_full_name = 'libdecor-' + libdecor_api_version_string
cc = meson.get_compiler('c')
add_project_arguments('-D_GNU_SOURCE', language: 'c')
add_project_arguments(cc.get_supported_arguments([
'-Wno-unused-parameter',
'-Wno-missing-field-initializers',
]), language: 'c')
wayland_client_req = '>= 1.18'
wayland_protocols_req = '>= 1.15'
dbus_req = '>= 1.0'
wayland_client_dep = dependency('wayland-client', version: wayland_client_req)
wayland_protocols_dep = dependency('wayland-protocols', version: wayland_protocols_req)
dl_dep = cc.find_library('dl', required: true)
dbus_dep = dependency('dbus-1', version: dbus_req, required: get_option('dbus'))
# list of (function, prefix)
required_functions = [
['asprintf', '#define _GNU_SOURCE\n#include <stdio.h>'],
]
foreach function : required_functions
if not cc.has_function(function[0], prefix: function[1])
error('Required function ' + function[0] + ' missing')
endif
endforeach
prefix = get_option('prefix')
libdir = join_paths(prefix, get_option('libdir'))
devenv = environment()
pkgname = meson.project_name()
pkglibdir = join_paths(libdir, pkgname)
plugindir = join_paths(pkglibdir, 'plugins-@0@'.format(plugin_api_version_string))
libdecor_c_args = [
'-fvisibility=hidden',
]
cdata = configuration_data()
cdata.set_quoted('VERSION', meson.project_version())
cdata.set_quoted('LIBDECOR_PLUGIN_DIR', plugindir)
cdata.set('LIBDECOR_PLUGIN_API_VERSION', plugin_api_version)
if dbus_dep.found()
cdata.set('HAS_DBUS', true)
endif
if cc.has_function('mkostemp', prefix: '#include <stdlib.h>')
cdata.set('HAVE_MKOSTEMP', true)
endif
if cc.has_function('posix_fallocate', prefix: '#define _GNU_SOURCE\n#include <fcntl.h>')
cdata.set('HAVE_POSIX_FALLOCATE', true)
endif
if cc.has_function('memfd_create', prefix: '#define _GNU_SOURCE\n#include <sys/mman.h>')
cdata.set('HAVE_MEMFD_CREATE', true)
endif
if wayland_protocols_dep.version().version_compare('>=1.32')
cdata.set('HAVE_XDG_SHELL_V6', true)
endif
config_h = configure_file(
input: 'config.h.meson',
output: 'config.h',
configuration: cdata
)
top_includepath = include_directories('.')
subdir('src')
if get_option('demo')
subdir('demo')
endif
if meson.version().version_compare('>=0.58.0')
meson.add_devenv(devenv)
endif
|