File: meson.build

package info (click to toggle)
libei 1.3.901-1
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 1,900 kB
  • sloc: ansic: 23,219; python: 2,686; xml: 1,264; sh: 142; makefile: 63; cpp: 12; lisp: 2
file content (131 lines) | stat: -rw-r--r-- 4,516 bytes parent folder | download
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
project('libei', 'c',
  version: '1.3.901',
  license: 'MIT',
  default_options: [ 'c_std=gnu11', 'warning_level=2' ],
  meson_version: '>= 0.57.0')

libei_version = meson.project_version().split('.')
libei_version_major = libei_version[0].to_int()
libei_version_minor = libei_version[1].to_int()
if libei_version.length() > 2
    libei_version_patchlevel = libei_version[2].to_int()
else
    libei_version_patchlevel = 0
endif

# Our headers are in libei-1.0 until we hit 2.0 etc. libei's API is
# backwards-compatible until the major version bump.
libei_api_version = '1.0'
libei_api_dir = 'libei-@0@'.format(libei_api_version)

# We use the same soname across all our libraries and they track the project
# version. If we have ABI incompatible changes, bump the project major version.
soname = meson.project_version()

pkgconfig = import('pkgconfig')
fs = import('fs')

cc = meson.get_compiler('c')
cflags =[
    '-Wno-unused-parameter',
    '-Wmissing-prototypes',
    '-Wno-missing-field-initializers',
    '-Wstrict-prototypes',
    '-Wstrict-prototypes',
    '-Wlogical-op',
    '-Wpointer-arith',
    '-Wuninitialized',
    '-Winit-self',
    '-Wstrict-prototypes',
    '-Wimplicit-fallthrough',
    '-Wredundant-decls',
    '-Wincompatible-pointer-types',
    '-Wformat=2',
    '-Wformat-overflow=2',
    '-Wformat-signedness',
    '-Wformat-truncation=2',
    '-Wmissing-declarations',
    '-Wshift-overflow=2',
    '-Wstrict-overflow=2',
    '-Wswitch',
]

if cc.get_id() == 'clang'
    cflags += [
        # clang doesn't think just using _unref_ is a use of the variable
        #       _unref_(foo) *bar = something_that_gives_a_ref
        # but we make heavy use of that in the test suite for convenience
        # of events we know must exist but we don't care about specifically
        '-Wno-unused-variable',
    ]
endif

add_project_arguments(cc.get_supported_arguments(cflags), language: 'c')

inc_builddir = include_directories('.')
inc_src = include_directories('src')

config_h = configuration_data()
config_h.set('_GNU_SOURCE', '1')
config_h.set_quoted('EI_VERSION', meson.project_version())
config_h.set_quoted('EIS_VERSION', meson.project_version())
if cc.has_function('memfd_create', prefix: '#define _GNU_SOURCE\n#include <sys/mman.h>')
  config_h.set10('HAVE_MEMFD_CREATE', true)
endif

dep_math = cc.find_library('m', required: false)
dep_epoll = dependency('epoll-shim', required: false)
dep_libxkbcommon = dependency('xkbcommon', required: false)
config_h.set10('HAVE_LIBXKBCOMMON', dep_libxkbcommon.found())
dep_libevdev = dependency('libevdev', required: false)
config_h.set10('HAVE_LIBEVDEV', dep_libevdev.found())

if not get_option('liboeffis').disabled()
    sd_bus_provider = get_option('sd-bus-provider')
    if sd_bus_provider == 'auto'
        message('Trying to find an sd-bus provider...')
        providers = ['libsystemd', 'libelogind', 'basu']
        foreach provider: providers
            if dependency(provider, required: false).found()
                message('Using sd-bus provider "@0@"'.format(provider))
                sd_bus_provider = provider
                break
            endif
        endforeach
        if sd_bus_provider  == 'auto'
            error('Failed to find an sd-bus provider, tried @0@'.format(', '.join(providers)))
        endif
        summary({'sd-bus-provider': sd_bus_provider}, section: 'Conditional Features')
    endif
    dep_sdbus = dependency(sd_bus_provider, required: get_option('liboeffis'))
else
    dep_sdbus = dependency('', required: false)
endif

build_oeffis = dep_sdbus.found()
build_libeis = not get_option('libeis').disabled()
build_libei = not get_option('libei').disabled()

config_h.set10('HAVE_LIBSYSTEMD', dep_sdbus.found() and dep_sdbus.name() == 'libsystemd')
config_h.set10('HAVE_LIBELOGIND', dep_sdbus.found() and dep_sdbus.name() == 'libelogind')
config_h.set10('HAVE_BASU', dep_sdbus.found() and dep_sdbus.name() == 'basu')

configure_file(output: 'config.h', configuration: config_h)

subdir('proto')
subdir('src')
subdir('tools')
subdir('test')
subdir('doc')

ruff = find_program('ruff', required: false)
if ruff.found()
    test('python-ruff', ruff,
         args: ['check', '--ignore=E741,E501', meson.project_source_root(), meson.project_source_root() / 'proto' / 'ei-scanner'],
         suite: 'python',
    )
    test('python-ruff-format', ruff,
         args: ['format', meson.project_source_root(), meson.project_source_root() / 'proto' / 'ei-scanner'],
         suite: 'python',
    )
endif