2020-07-14 14:41:32 +10:00
|
|
|
project('libei', 'c',
|
2022-12-09 20:08:01 +10:00
|
|
|
version: '0.4.1',
|
2022-03-01 14:02:36 +10:00
|
|
|
license: 'MIT',
|
2020-07-14 14:41:32 +10:00
|
|
|
default_options: [ 'c_std=gnu99', 'warning_level=2' ],
|
2022-12-02 12:08:40 +10:00
|
|
|
meson_version: '>= 0.57.0')
|
2020-07-14 14:41:32 +10:00
|
|
|
|
|
|
|
|
pkgconfig = import('pkgconfig')
|
|
|
|
|
|
|
|
|
|
cc = meson.get_compiler('c')
|
2022-03-01 14:04:57 +10:00
|
|
|
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',
|
|
|
|
|
]
|
2022-03-01 15:09:15 +10:00
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
2022-03-01 14:04:57 +10:00
|
|
|
add_project_arguments(cc.get_supported_arguments(cflags), language: 'c')
|
2020-07-14 14:41:32 +10:00
|
|
|
|
2023-02-09 11:24:02 +10:00
|
|
|
inc_builddir = include_directories('.')
|
2023-02-09 11:20:16 +10:00
|
|
|
inc_src = include_directories('src')
|
2023-02-09 11:34:59 +10:00
|
|
|
inc_proto = include_directories('proto')
|
2023-02-09 11:20:16 +10:00
|
|
|
|
2022-07-26 10:39:02 +10:00
|
|
|
protocol_version = 1
|
|
|
|
|
|
2020-07-28 14:19:28 +10:00
|
|
|
config_h = configuration_data()
|
|
|
|
|
config_h.set('_GNU_SOURCE', '1')
|
2022-04-07 14:35:14 +10:00
|
|
|
config_h.set_quoted('EI_VERSION', meson.project_version())
|
|
|
|
|
config_h.set_quoted('EIS_VERSION', meson.project_version())
|
2022-07-26 10:39:02 +10:00
|
|
|
config_h.set('EI_PROTOCOL_VERSION', protocol_version)
|
|
|
|
|
config_h.set('EIS_PROTOCOL_VERSION', protocol_version)
|
2020-07-28 14:19:28 +10:00
|
|
|
|
2020-07-31 12:24:44 +10:00
|
|
|
subdir('proto')
|
|
|
|
|
|
2023-02-09 11:18:32 +10:00
|
|
|
src_libutil = files(
|
2022-07-29 15:09:32 +10:00
|
|
|
'src/util-bits.c',
|
2020-08-25 10:48:35 +10:00
|
|
|
'src/util-io.c',
|
2020-07-28 14:19:28 +10:00
|
|
|
'src/util-list.c',
|
|
|
|
|
'src/util-logger.c',
|
2020-08-21 16:03:34 +10:00
|
|
|
'src/util-memfile.c',
|
2020-07-28 14:19:28 +10:00
|
|
|
'src/util-sources.c',
|
|
|
|
|
'src/util-strings.c',
|
2023-02-09 11:18:32 +10:00
|
|
|
)
|
2020-08-25 10:16:28 +10:00
|
|
|
|
|
|
|
|
lib_util = static_library('util', src_libutil)
|
2020-07-28 14:19:28 +10:00
|
|
|
|
|
|
|
|
dep_libutil = declare_dependency(link_with: lib_util)
|
|
|
|
|
|
2023-02-09 11:18:32 +10:00
|
|
|
src_libei = files(
|
2020-08-18 19:29:19 +10:00
|
|
|
'src/brei-shared.c',
|
2020-07-14 14:41:32 +10:00
|
|
|
'src/libei.c',
|
2020-07-29 11:53:03 +10:00
|
|
|
'src/libei-device.c',
|
2021-08-23 09:17:33 +10:00
|
|
|
'src/libei-event.c',
|
2020-08-05 16:47:26 +10:00
|
|
|
'src/libei-fd.c',
|
2023-02-05 14:15:44 +10:00
|
|
|
'src/libei-log.c',
|
2020-08-18 16:36:36 +10:00
|
|
|
'src/libei-proto.c',
|
2021-07-21 14:52:04 +10:00
|
|
|
'src/libei-region.c',
|
2023-02-05 14:15:44 +10:00
|
|
|
'src/libei-seat.c',
|
|
|
|
|
'src/libei-socket.c',
|
2023-02-09 11:18:32 +10:00
|
|
|
) + [proto_headers]
|
2020-08-04 14:40:13 +10:00
|
|
|
|
2020-08-11 20:54:01 +10:00
|
|
|
deps_libei = [
|
|
|
|
|
dep_libutil,
|
|
|
|
|
dep_protobuf,
|
|
|
|
|
]
|
|
|
|
|
|
2020-08-04 14:40:13 +10:00
|
|
|
lib_libei = shared_library('ei',
|
|
|
|
|
src_libei,
|
2020-08-11 20:54:01 +10:00
|
|
|
dependencies: deps_libei,
|
2023-02-09 11:34:59 +10:00
|
|
|
include_directories: [inc_proto],
|
2022-02-21 10:56:47 +10:00
|
|
|
gnu_symbol_visibility: 'hidden',
|
2020-07-14 14:41:32 +10:00
|
|
|
install: true
|
|
|
|
|
)
|
2020-07-29 14:08:59 +10:00
|
|
|
install_headers('src/libei.h')
|
2020-07-14 14:41:32 +10:00
|
|
|
|
2020-07-29 11:53:03 +10:00
|
|
|
dep_libei = declare_dependency(link_with: lib_libei,
|
2023-02-09 11:20:16 +10:00
|
|
|
include_directories: [inc_src])
|
2022-12-12 09:01:04 +10:00
|
|
|
meson.override_dependency('libei', dep_libei)
|
2020-07-29 11:53:03 +10:00
|
|
|
|
2020-07-14 14:41:32 +10:00
|
|
|
pkgconfig.generate(lib_libei,
|
|
|
|
|
filebase: 'libei',
|
2020-07-31 09:41:29 +10:00
|
|
|
name: 'libEI',
|
|
|
|
|
description: 'Emulated Input client library',
|
|
|
|
|
version: meson.project_version(),
|
|
|
|
|
libraries: lib_libei,
|
2022-07-26 10:39:02 +10:00
|
|
|
variables: [
|
|
|
|
|
'protocol_version=' + protocol_version.to_string(),
|
|
|
|
|
],
|
2020-07-14 14:41:32 +10:00
|
|
|
)
|
|
|
|
|
|
2023-02-09 11:18:32 +10:00
|
|
|
src_libeis = files(
|
2020-08-18 19:29:19 +10:00
|
|
|
'src/brei-shared.c',
|
2020-07-14 14:41:32 +10:00
|
|
|
'src/libeis.c',
|
2020-07-28 14:19:28 +10:00
|
|
|
'src/libeis-client.c',
|
|
|
|
|
'src/libeis-device.c',
|
2020-08-18 15:45:01 +10:00
|
|
|
'src/libeis-event.c',
|
2023-02-05 14:15:44 +10:00
|
|
|
'src/libeis-fd.c',
|
2020-08-20 11:51:41 +10:00
|
|
|
'src/libeis-log.c',
|
2023-02-05 14:15:44 +10:00
|
|
|
'src/libeis-proto.c',
|
2021-07-21 14:52:04 +10:00
|
|
|
'src/libeis-region.c',
|
2020-09-14 17:16:50 +10:00
|
|
|
'src/libeis-seat.c',
|
2020-07-28 14:19:28 +10:00
|
|
|
'src/libeis-socket.c',
|
2023-02-09 11:18:32 +10:00
|
|
|
) + [proto_headers]
|
2020-08-20 14:37:28 +10:00
|
|
|
|
|
|
|
|
lib_libeis = shared_library('eis',
|
|
|
|
|
src_libeis,
|
2020-07-31 12:24:44 +10:00
|
|
|
dependencies: [dep_libutil, dep_protobuf],
|
2023-02-09 11:34:59 +10:00
|
|
|
include_directories: [inc_proto],
|
2022-02-21 10:56:47 +10:00
|
|
|
gnu_symbol_visibility: 'hidden',
|
2020-07-14 14:41:32 +10:00
|
|
|
install: true
|
|
|
|
|
)
|
2020-07-29 14:08:59 +10:00
|
|
|
install_headers('src/libeis.h')
|
2020-07-28 14:19:28 +10:00
|
|
|
|
|
|
|
|
dep_libeis = declare_dependency(link_with: lib_libeis,
|
2023-02-09 11:20:16 +10:00
|
|
|
include_directories: [inc_src])
|
2022-12-12 09:01:04 +10:00
|
|
|
meson.override_dependency('libeis', dep_libeis)
|
2020-07-28 14:19:28 +10:00
|
|
|
|
2020-07-14 14:41:32 +10:00
|
|
|
pkgconfig.generate(lib_libeis,
|
|
|
|
|
filebase: 'libeis',
|
2020-07-31 09:41:29 +10:00
|
|
|
name: 'libEIS',
|
|
|
|
|
description: 'Emulated Input server library',
|
|
|
|
|
version: meson.project_version(),
|
|
|
|
|
libraries: lib_libeis,
|
2022-07-26 10:39:02 +10:00
|
|
|
variables: [
|
|
|
|
|
'protocol_version=' + protocol_version.to_string(),
|
|
|
|
|
],
|
2020-07-14 14:41:32 +10:00
|
|
|
)
|
2020-07-28 14:19:28 +10:00
|
|
|
|
2020-08-21 16:57:41 +10:00
|
|
|
dep_libxkbcommon = dependency('xkbcommon', required: false)
|
|
|
|
|
config_h.set10('HAVE_LIBXKBCOMMON', dep_libxkbcommon.found())
|
2020-08-27 11:45:15 +10:00
|
|
|
dep_libevdev = dependency('libevdev', required: false)
|
|
|
|
|
config_h.set10('HAVE_LIBEVDEV', dep_libevdev.found())
|
2020-08-27 10:20:36 +10:00
|
|
|
|
2023-02-09 11:18:32 +10:00
|
|
|
src_eis_demo_server = files(
|
2020-08-27 10:20:36 +10:00
|
|
|
'tools/eis-demo-server.c',
|
2023-02-09 11:18:32 +10:00
|
|
|
)
|
2020-08-27 11:45:15 +10:00
|
|
|
if dep_libevdev.found()
|
2023-02-09 11:18:32 +10:00
|
|
|
src_eis_demo_server += files(
|
2020-08-27 11:45:15 +10:00
|
|
|
'tools/eis-demo-server-uinput.c',
|
2023-02-09 11:18:32 +10:00
|
|
|
)
|
2020-08-27 11:45:15 +10:00
|
|
|
endif
|
|
|
|
|
|
2020-08-27 10:20:36 +10:00
|
|
|
|
2020-08-25 09:01:25 +10:00
|
|
|
executable('eis-demo-server',
|
2020-08-27 10:20:36 +10:00
|
|
|
src_eis_demo_server,
|
2020-08-27 11:45:15 +10:00
|
|
|
dependencies: [
|
|
|
|
|
dep_libutil,
|
|
|
|
|
dep_libeis,
|
|
|
|
|
dep_libxkbcommon,
|
|
|
|
|
dep_libevdev
|
|
|
|
|
])
|
2020-07-28 14:19:28 +10:00
|
|
|
|
2020-08-24 19:59:10 +10:00
|
|
|
executable('ei-demo-client',
|
|
|
|
|
'tools/ei-demo-client.c',
|
2020-08-21 16:57:41 +10:00
|
|
|
dependencies: [dep_libutil, dep_libei, dep_libxkbcommon])
|
2020-07-28 14:19:28 +10:00
|
|
|
|
2022-04-07 14:35:14 +10:00
|
|
|
executable('ei-debug-events',
|
|
|
|
|
'tools/ei-debug-events.c',
|
|
|
|
|
dependencies: [dep_libutil, dep_libei, dep_libevdev],
|
|
|
|
|
install: true)
|
|
|
|
|
|
2022-12-02 12:08:40 +10:00
|
|
|
dep_systemd = dependency('libsystemd', required: get_option('liboeffis'))
|
|
|
|
|
build_oeffis = dep_systemd.found()
|
|
|
|
|
if build_oeffis
|
2023-02-09 11:18:32 +10:00
|
|
|
src_liboeffis = files('src/liboeffis.c')
|
2022-12-02 12:08:40 +10:00
|
|
|
deps_liboeffis = [dep_libutil, dep_systemd]
|
|
|
|
|
|
|
|
|
|
lib_liboeffis = shared_library('oeffis',
|
|
|
|
|
src_liboeffis,
|
|
|
|
|
dependencies: deps_liboeffis,
|
|
|
|
|
gnu_symbol_visibility: 'hidden',
|
|
|
|
|
install: true
|
|
|
|
|
)
|
|
|
|
|
install_headers('src/liboeffis.h')
|
|
|
|
|
|
|
|
|
|
dep_liboeffis = declare_dependency(link_with: lib_liboeffis,
|
2023-02-09 11:20:16 +10:00
|
|
|
include_directories: [inc_src])
|
2022-12-12 09:01:04 +10:00
|
|
|
meson.override_dependency('liboeffis', dep_liboeffis)
|
2022-12-02 12:08:40 +10:00
|
|
|
|
|
|
|
|
pkgconfig.generate(lib_liboeffis,
|
|
|
|
|
filebase: 'liboeffis',
|
|
|
|
|
name: 'libOeffis',
|
|
|
|
|
description: 'RemoteDesktop portal DBus helper library',
|
|
|
|
|
version: meson.project_version(),
|
|
|
|
|
libraries: lib_liboeffis,
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
executable('oeffis-demo-tool',
|
|
|
|
|
'tools/oeffis-demo-tool.c',
|
|
|
|
|
dependencies: [dep_libutil, dep_liboeffis])
|
|
|
|
|
endif
|
|
|
|
|
|
2020-07-31 09:56:07 +10:00
|
|
|
# tests
|
2021-07-16 18:17:15 +10:00
|
|
|
if get_option('tests')
|
2023-02-09 11:24:02 +10:00
|
|
|
subdir('test')
|
|
|
|
|
endif
|
2020-09-29 16:53:14 +10:00
|
|
|
|
2020-07-31 09:41:29 +10:00
|
|
|
configure_file(output: 'config.h', configuration: config_h)
|
2020-09-25 11:42:28 +10:00
|
|
|
|
|
|
|
|
if get_option('documentation')
|
|
|
|
|
subdir('doc')
|
|
|
|
|
endif
|