From 77d1c243614d385027ca11f75aa5d688b01c2969 Mon Sep 17 00:00:00 2001 From: Iñigo Martínez Date: Thu, 29 Jul 2021 23:27:11 +0200 Subject: build: Port to meson meson is a build system focused on speed an ease of use, which helps speeding up the software development. This patch adds meson support along autotools. --- src/meson.build | 319 ++++++++++++++++++++++++++++++++++++++++++++++++++ src/tests/meson.build | 38 ++++++ 2 files changed, 357 insertions(+) create mode 100644 src/meson.build create mode 100644 src/tests/meson.build (limited to 'src') diff --git a/src/meson.build b/src/meson.build new file mode 100644 index 00000000..7e9ab900 --- /dev/null +++ b/src/meson.build @@ -0,0 +1,319 @@ +# SPDX-License-Identifier: GPL-2.0-or-later +# Copyright (C) 2021 Iñigo Martinez + +# helpers library +src_inc = include_directories('.') +kerneldevice_inc = include_directories('kerneldevice') + +headers = files( + 'mm-modem-helpers.h', + 'mm-sms-part.h', +) + +enums_types = 'mm-helper-enums-types' + +enums_sources = [] +enums_sources += gnome.mkenums( + enums_types + '.c', + sources: headers, + c_template: build_aux_dir / enums_types + '.c.template', + fhead: '#include "mm-helper-enums-types.h"', +) + +enums_sources += gnome.mkenums( + enums_types + '.h', + sources: headers, + h_template: build_aux_dir / enums_types + '.h.template', + fhead: '#include "mm-sms-part.h"\n#include "mm-modem-helpers.h"\n#ifndef __MM_HELPER_ENUMS_TYPES_H__\n#define __MM_HELPER_ENUMS_TYPES_H__\n', + ftail: '#endif /* __MM_HELPER_ENUMS_TYPES_H__ */\n', +) + +sources = files( + 'mm-charsets.c', + 'mm-error-helpers.c', + 'mm-log.c', + 'mm-log-object.c', + 'mm-modem-helpers.c', + 'mm-sms-part-3gpp.c', + 'mm-sms-part.c', + 'mm-sms-part-cdma.c', +) + +incs = [ + top_inc, + # FIXME: only necessary if qmi is enabled? + kerneldevice_inc, +] + +deps = [ + libmm_glib_dep, + mbim_glib_dep, + qmi_glib_dep, +] + +private_deps = [] + +if enable_qmi + sources += files('mm-modem-helpers-qmi.c') +endif + +if enable_mbim + sources += files('mm-modem-helpers-mbim.c') +endif + +if enable_systemd_journal + private_deps += libsystemd_dep +endif + +libhelpers = static_library( + 'helpers', + sources: sources + enums_sources, + include_directories: incs, + dependencies: deps + private_deps, +) + +libhelpers_dep = declare_dependency( + sources: enums_sources[1], + include_directories: ['.', kerneldevice_inc], + dependencies: deps, + link_with: libhelpers, +) + +# kerneldevice library +sources = files( + 'kerneldevice/mm-kernel-device.c', + 'kerneldevice/mm-kernel-device-generic.c', + 'kerneldevice/mm-kernel-device-generic-rules.c', + 'kerneldevice/mm-kernel-device-helpers.c', +) + +deps = [ + gudev_dep, + libhelpers_dep, + qrtr_glib_dep, +] + +if enable_qrtr + sources += files('kerneldevice/mm-kernel-device-qrtr.c') +endif + +if enable_udev + sources += files('kerneldevice/mm-kernel-device-udev.c') +endif + +libkerneldevice = static_library( + 'kerneldevice', + sources: sources, + include_directories: top_inc, + dependencies: deps, + c_args: '-DUDEVRULESDIR="@0@"'.format(udev_rulesdir), +) + +libkerneldevice_dep = declare_dependency( + dependencies: deps, + link_with: libkerneldevice, +) + +# ports library +headers = files( + 'mm-port.h', + 'mm-port-serial-at.h', +) + +sources = files( + 'mm-netlink.c', + 'mm-port.c', + 'mm-port-net.c', + 'mm-port-serial-at.c', + 'mm-port-serial.c', + 'mm-port-serial-gps.c', + 'mm-port-serial-qcdm.c', + 'mm-serial-parsers.c', +) + +deps = [libkerneldevice_dep] + +private_deps = [gio_unix_dep] + +if enable_qmi + headers += files('mm-port-qmi.h') + + sources += files('mm-port-qmi.c') +endif + +if enable_mbim + sources += files('mm-port-mbim.c') +endif + +enums_types = 'mm-port-enums-types' + +enums_sources = [] +enums_sources += gnome.mkenums( + enums_types + '.c', + sources: headers, + c_template: build_aux_dir / enums_types + '.c.template', + fhead: '#include "mm-port-enums-types.h"', +) + +enums_sources += gnome.mkenums( + enums_types + '.h', + sources: headers, + h_template: build_aux_dir / enums_types + '.h.template', + fhead: '#include "config.h"\n#include "mm-port.h"\n#include "mm-port-serial-at.h"\n#if defined WITH_QMI\n#include "mm-port-qmi.h"\n#endif\n#ifndef __MM_PORT_ENUMS_TYPES_H__\n#define __MM_PORT_ENUMS_TYPES_H__\n', + ftail: '#endif /* __MM_PORT_ENUMS_TYPES_H__ */\n', +) + +libport = static_library( + 'port', + sources: sources + enums_sources, + include_directories: top_inc, + dependencies: deps + private_deps, +) + +libport_dep = declare_dependency( + sources: enums_sources[1], + include_directories: '.', + dependencies: deps, + link_with: libport, +) + +# ModemManager daemon +headers = files( + 'mm-base-bearer.h', + 'mm-filter.h', + 'mm-port-probe.h', +) + +enums_types = 'mm-daemon-enums-types' + +daemon_enums_sources = [] +daemon_enums_sources += gnome.mkenums( + enums_types + '.c', + sources: headers, + c_template: build_aux_dir / enums_types + '.c.template', + fhead: '#include "mm-daemon-enums-types.h"', +) + +daemon_enums_sources += gnome.mkenums( + enums_types + '.h', + sources: headers, + h_template: build_aux_dir / enums_types + '.h.template', + fhead: '#include "mm-filter.h"\n#include "mm-base-bearer.h"\n#include "mm-port-probe.h"\n#ifndef __MM_DAEMON_ENUMS_TYPES_H__\n#define __MM_DAEMON_ENUMS_TYPES_H__\n', + ftail: '#endif /* __MM_DAEMON_ENUMS_TYPES_H__ */\n', +) + +sources = files( + 'main.c', + 'mm-auth-provider.c', + 'mm-base-bearer.c', + 'mm-base-call.c', + 'mm-base-manager.c', + 'mm-base-modem-at.c', + 'mm-base-modem.c', + 'mm-base-sim.c', + 'mm-base-sms.c', + 'mm-bearer-list.c', + 'mm-broadband-bearer.c', + 'mm-broadband-modem.c', + 'mm-call-list.c', + 'mm-context.c', + 'mm-device.c', + 'mm-filter.c', + 'mm-iface-modem-3gpp.c', + 'mm-iface-modem-3gpp-profile-manager.c', + 'mm-iface-modem-3gpp-ussd.c', + 'mm-iface-modem.c', + 'mm-iface-modem-cdma.c', + 'mm-iface-modem-firmware.c', + 'mm-iface-modem-location.c', + 'mm-iface-modem-messaging.c', + 'mm-iface-modem-oma.c', + 'mm-iface-modem-signal.c', + 'mm-iface-modem-simple.c', + 'mm-iface-modem-time.c', + 'mm-iface-modem-voice.c', + 'mm-plugin.c', + 'mm-plugin-manager.c', + 'mm-port-probe.c', + 'mm-port-probe-at.c', + 'mm-private-boxed-types.c', + 'mm-sms-list.c', +) + +deps = [ + gmodule_dep, + libmm_test_generated_dep, + libport_dep, + libqcdm_dep, +] + +c_args = [ + '-DMM_COMPILATION', + '-DPLUGINDIR="@0@"'.format(mm_pkglibdir), +] + +if enable_qrtr + sources += files('mm-qrtr-bus-watcher.c') +endif + +# Additional suspend/resume support via systemd +if enable_systemd_journal + sources += files('mm-sleep-monitor.c') + + deps += [ + gio_unix_dep, + libsystemd_dep, + ] +endif + +if enable_polkit + deps += polkit_gobject_dep +endif + +# Additional QMI support in ModemManager +if enable_qmi + sources += files( + 'mm-bearer-qmi.c', + 'mm-broadband-modem-qmi.c', + 'mm-call-qmi.c', + 'mm-shared-qmi.c', + 'mm-sim-qmi.c', + 'mm-sms-qmi.c', + ) +endif + +# Additional MBIM support in ModemManager +if enable_mbim + sources += files( + 'mm-bearer-mbim.c', + 'mm-broadband-modem-mbim.c', + 'mm-sim-mbim.c', + 'mm-sms-mbim.c', + ) +endif + +executable( + 'ModemManager', + sources: sources + daemon_enums_sources, + include_directories: top_inc, + dependencies: deps, + c_args: c_args, + install: true, + install_dir: mm_sbindir, +) + +pkg.generate( + version: mm_version, + name: mm_name, + description: 'Common headers provided by ModemManager', + subdirs: mm_name, + variables: 'exec_prefix=${prefix}', +) + +# generic udev rules +install_data( + '80-mm-candidate.rules', + install_dir: udev_rulesdir, +) + +subdir('tests') diff --git a/src/tests/meson.build b/src/tests/meson.build new file mode 100644 index 00000000..c059ae2d --- /dev/null +++ b/src/tests/meson.build @@ -0,0 +1,38 @@ +# SPDX-License-Identifier: GPL-2.0-or-later +# Copyright (C) 2021 Iñigo Martinez + +test_units = { + 'at-serial-port': libport_dep, + 'charsets': libhelpers_dep, + 'error-helpers': libhelpers_dep, + 'modem-helpers': libhelpers_dep, + 'sms-part-3gpp': libhelpers_dep, + 'sms-part-cdma': libhelpers_dep, + 'udev-rules': libkerneldevice_dep, +} + +deps = [ + libport_dep, + libqcdm_dep, + util_dep, +] + +test_units += {'qcdm-serial-port': deps} + +if enable_qmi + test_units += {'modem-helpers-qmi': libkerneldevice_dep} +endif + +foreach test_unit, test_deps: test_units + test_name = 'test-' + test_unit + + exe = executable( + test_name, + sources: test_name + '.c', + include_directories: top_inc, + dependencies: test_deps, + c_args: '-DTESTUDEVRULESDIR="@0@"'.format(src_dir) + ) + + test(test_name, exe) +endforeach -- cgit v1.2.3-70-g09d2