aboutsummaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'plugins')
-rw-r--r--plugins/meson.build989
-rw-r--r--plugins/symbol.map8
2 files changed, 997 insertions, 0 deletions
diff --git a/plugins/meson.build b/plugins/meson.build
new file mode 100644
index 00000000..b8350da3
--- /dev/null
+++ b/plugins/meson.build
@@ -0,0 +1,989 @@
+# SPDX-License-Identifier: GPL-2.0-or-later
+# Copyright (C) 2021 Iñigo Martinez <inigomartinez@gmail.com>
+
+symbol_map = plugins_dir / 'symbol.map'
+ldflags = cc.get_supported_link_arguments('-Wl,--version-script,@0@'.format(symbol_map))
+
+# common service test support
+sources = files(
+ 'tests/test-fixture.c',
+ 'tests/test-helpers.c',
+ 'tests/test-port-context.c',
+)
+
+deps = [
+ gio_unix_dep,
+ libhelpers_dep,
+ libmm_test_generated_dep,
+]
+
+libmm_test_common = shared_library(
+ 'mm_test_common',
+ sources: sources,
+ include_directories: top_inc,
+ dependencies: deps,
+ c_args: '-DTEST_SERVICES="@0@"'.format(source_root / 'data/tests'),
+)
+
+libmm_test_common_dep = declare_dependency(
+ include_directories: 'tests',
+ dependencies: deps,
+ link_with: libmm_test_common,
+)
+
+# plugins
+plugins = {}
+plugins_data = []
+plugins_udev_rules = []
+
+# Common Foxconn modem support library (MBIM only)
+if enable_plugins_shared.contains('foxconn')
+ foxconn_inc = include_directories('foxconn')
+
+ sources = files(
+ 'foxconn/mm-broadband-modem-mbim-foxconn.c',
+ 'foxconn/mm-shared.c',
+ )
+
+ c_args = [
+ '-DMM_MODULE_NAME="shared-foxconn"',
+ '-DPKGDATADIR="@0@"'.format(mm_pkgdatadir),
+ ]
+
+ plugins += {'shared-foxconn': {
+ 'plugin': false,
+ 'module': {'sources': sources, 'include_directories': top_inc, 'c_args': c_args}
+ }}
+endif
+
+# common icera support
+if enable_plugins_shared.contains('icera')
+ icera_inc = include_directories('icera')
+
+ common_c_args = '-DMM_MODULE_NAME="shared-icera"'
+
+ sources = files(
+ 'icera/mm-broadband-bearer-icera.c',
+ 'icera/mm-broadband-modem-icera.c',
+ 'icera/mm-shared.c',
+ )
+
+ plugins += {'shared-icera': {
+ 'plugin': false,
+ 'helper': {'sources': files('icera/mm-modem-helpers-icera.c'), 'c_args': common_c_args},
+ 'module': {'sources': sources + daemon_enums_sources, 'include_directories': top_inc, 'c_args': common_c_args},
+ 'test': {'sources': files('icera/tests/test-modem-helpers-icera.c'), 'include_directories': icera_inc, 'dependencies': libhelpers_dep},
+ }}
+endif
+
+# common novatel support
+if enable_plugins_shared.contains('novatel')
+ novatel_inc = include_directories('novatel')
+
+ sources = files(
+ 'novatel/mm-broadband-modem-novatel.c',
+ 'novatel/mm-common-novatel.c',
+ 'novatel/mm-shared.c',
+ )
+
+ plugins += {'shared-novatel': {
+ 'plugin': false,
+ 'module': {'sources': sources, 'include_directories': top_inc, 'c_args': '-DMM_MODULE_NAME="shared-novatel"'}
+ }}
+endif
+
+# common option support
+if enable_plugins_shared.contains('option')
+ sources = files(
+ 'option/mm-broadband-modem-option.c',
+ 'option/mm-shared.c',
+ 'option/mm-shared-option.c',
+ 'option/mm-sim-option.c',
+ )
+
+ plugins += {'shared-option': {
+ 'plugin': false,
+ 'module': {'sources': sources, 'include_directories': top_inc}
+ }}
+endif
+
+# common sierra support
+if enable_plugins_shared.contains('sierra')
+ sierra_inc = include_directories('sierra')
+
+ common_c_args = '-DMM_MODULE_NAME="shared-sierra"'
+
+ sources = files(
+ 'sierra/mm-broadband-bearer-sierra.c',
+ 'sierra/mm-broadband-modem-sierra.c',
+ 'sierra/mm-common-sierra.c',
+ 'sierra/mm-shared.c',
+ 'sierra/mm-sim-sierra.c',
+ )
+
+ plugins += {'shared-sierra': {
+ 'plugin': false,
+ 'helper': {'sources': files('sierra/mm-modem-helpers-sierra.c'), 'c_args': common_c_args},
+ 'module': {'sources': sources, 'include_directories': top_inc, 'c_args': common_c_args},
+ 'test': {'sources': files('sierra/tests/test-modem-helpers-sierra.c'), 'include_directories': sierra_inc, 'dependencies': libhelpers_dep},
+ }}
+endif
+
+# common telit support
+if enable_plugins_shared.contains('telit')
+ telit_inc = include_directories('telit')
+
+ common_c_args = '-DMM_MODULE_NAME="shared-telit"'
+
+ headers = files('telit/mm-modem-helpers-telit.h')
+
+ sources = files(
+ 'telit/mm-broadband-modem-telit.c',
+ 'telit/mm-common-telit.c',
+ 'telit/mm-shared.c',
+ 'telit/mm-shared-telit.c',
+ )
+
+ enums_types = 'mm-telit-enums-types'
+
+ sources += gnome.mkenums(
+ enums_types + '.c',
+ sources: headers,
+ c_template: build_aux_dir / enums_types + '.c.template',
+ fhead: '#include "mm-telit-enums-types.h"',
+ )
+
+ sources += gnome.mkenums(
+ enums_types + '.h',
+ sources: headers,
+ h_template: build_aux_dir / enums_types + '.h.template',
+ fhead: '#include "mm-modem-helpers-telit.h"\n#ifndef __MM_TELIT_ENUMS_TYPES_H__\n#define __MM_TELIT_ENUMS_TYPES_H__\n',
+ ftail: '#endif /* __MM_TELIT_ENUMS_TYPES_H__ */\n',
+ )
+
+ if enable_mbim
+ sources += files('telit/mm-broadband-modem-mbim-telit.c')
+ endif
+
+ plugins += {'shared-telit': {
+ 'plugin': false,
+ 'helper': {'sources': files('telit/mm-modem-helpers-telit.c'), 'include_directories': top_inc, 'c_args': common_c_args},
+ 'module': {'sources': sources, 'include_directories': [top_inc, telit_inc], 'c_args': common_c_args},
+ 'test': {'sources': files('telit/tests/test-mm-modem-helpers-telit.c'), 'include_directories': telit_inc, 'dependencies': libmm_test_common_dep},
+ }}
+endif
+
+# common xmm support
+if enable_plugins_shared.contains('xmm')
+ xmm_inc = include_directories('xmm')
+
+ common_c_args = '-DMM_MODULE_NAME="shared-xmm"'
+
+ sources = files(
+ 'xmm/mm-broadband-modem-xmm.c',
+ 'xmm/mm-shared.c',
+ 'xmm/mm-shared-xmm.c',
+ )
+
+ if enable_mbim
+ sources += files('xmm/mm-broadband-modem-mbim-xmm.c')
+ endif
+
+ plugins += {'shared-xmm': {
+ 'plugin': false,
+ 'helper': {'sources': files('xmm/mm-modem-helpers-xmm.c'), 'include_directories': top_inc, 'c_args': common_c_args},
+ 'module': {'sources': sources, 'include_directories': top_inc, 'c_args': common_c_args},
+ 'test': {'sources': files('xmm/tests/test-modem-helpers-xmm.c'), 'include_directories': xmm_inc, 'dependencies': libhelpers_dep},
+ }}
+endif
+
+# plugin: altair lte
+if enable_plugins.contains('altair-lte')
+ common_c_args = '-DMM_MODULE_NAME="altair-lte"'
+
+ sources = files(
+ 'altair/mm-broadband-bearer-altair-lte.c',
+ 'altair/mm-broadband-modem-altair-lte.c',
+ 'altair/mm-plugin-altair-lte.c',
+ )
+
+ plugins += {'plugin-altair-lte': {
+ 'plugin': true,
+ 'helper': {'sources': files('altair/mm-modem-helpers-altair-lte.c'), 'c_args': common_c_args},
+ 'module': {'sources': sources, 'include_directories': top_inc, 'c_args': common_c_args},
+ 'test': {'sources': files('altair/tests/test-modem-helpers-altair-lte.c'), 'include_directories': include_directories('altair'), 'dependencies': libhelpers_dep},
+ }}
+endif
+
+# plugin: anydata
+if enable_plugins.contains('anydata')
+ sources = files(
+ 'anydata/mm-broadband-modem-anydata.c',
+ 'anydata/mm-plugin-anydata.c',
+ )
+
+ plugins += {'plugin-anydata': {
+ 'plugin': true,
+ 'module': {'sources': sources, 'include_directories': top_inc, 'c_args': '-DMM_MODULE_NAME="anydata"'}
+ }}
+endif
+
+# plugin: broadmobi
+if enable_plugins.contains('broadmobi')
+ c_args = [
+ '-DMM_MODULE_NAME="broadmobi"',
+ '-DTESTUDEVRULESDIR_BROADMOBI="@0@"'.format(plugins_dir / 'broadmobi'),
+ ]
+
+ plugins += {'plugin-broadmobi': {
+ 'plugin': true,
+ 'module': {'sources': files('broadmobi/mm-plugin-broadmobi.c'), 'include_directories': top_inc, 'c_args': c_args}
+ }}
+
+ plugins_udev_rules += files('broadmobi/77-mm-broadmobi-port-types.rules')
+endif
+
+# plugin: cinterion (previously siemens)
+if enable_plugins.contains('cinterion')
+ common_c_args = [
+ '-DMM_MODULE_NAME="cinterion"',
+ '-DTESTUDEVRULESDIR_CINTERION="@0@"'.format(plugins_dir / 'cinterion'),
+ ]
+
+ sources = files(
+ 'cinterion/mm-broadband-bearer-cinterion.c',
+ 'cinterion/mm-broadband-modem-cinterion.c',
+ 'cinterion/mm-plugin-cinterion.c',
+ 'cinterion/mm-shared-cinterion.c',
+ )
+
+ if enable_qmi
+ sources += files('cinterion/mm-broadband-modem-qmi-cinterion.c')
+ endif
+
+ if enable_mbim
+ sources += files('cinterion/mm-broadband-modem-mbim-cinterion.c')
+ endif
+
+ plugins += {'plugin-cinterion': {
+ 'plugin': true,
+ 'helper': {'sources': files('cinterion/mm-modem-helpers-cinterion.c'), 'include_directories': top_inc, 'c_args': common_c_args},
+ 'module': {'sources': sources + daemon_enums_sources, 'include_directories': top_inc, 'c_args': common_c_args},
+ 'test': {'sources': files('cinterion/tests/test-modem-helpers-cinterion.c'), 'include_directories': [top_inc, include_directories('cinterion')], 'dependencies': libport_dep},
+ }}
+
+ plugins_udev_rules += files('cinterion/77-mm-cinterion-port-types.rules')
+endif
+
+# plugin: dell
+if enable_plugins.contains('dell')
+ incs = [
+ top_inc,
+ foxconn_inc,
+ novatel_inc,
+ sierra_inc,
+ telit_inc,
+ xmm_inc,
+ ]
+
+ c_args = [
+ '-DMM_MODULE_NAME="dell"',
+ '-DTESTUDEVRULESDIR_DELL="@0@"'.format(plugins_dir / 'dell'),
+ ]
+
+ plugins += {'plugin-dell': {
+ 'plugin': true,
+ 'module': {'sources': files('dell/mm-plugin-dell.c'), 'include_directories': incs, 'c_args': c_args}
+ }}
+
+ plugins_udev_rules += files('dell/77-mm-dell-port-types.rules')
+endif
+
+# plugin: dlink
+if enable_plugins.contains('dlink')
+ c_args = [
+ '-DMM_MODULE_NAME="d-link"',
+ '-DTESTUDEVRULESDIR_DLINK="@0@"'.format(plugins_dir / 'dlink'),
+ ]
+
+ plugins += {'plugin-dlink': {
+ 'plugin': true,
+ 'module': {'sources': files('dlink/mm-plugin-dlink.c'), 'include_directories': top_inc, 'c_args': c_args}
+ }}
+
+ plugins_udev_rules += files('dlink/77-mm-dlink-port-types.rules')
+endif
+
+# plugin: fibocom
+if enable_plugins.contains('fibocom')
+ incs = [
+ top_inc,
+ xmm_inc,
+ ]
+
+ c_args = [
+ '-DMM_MODULE_NAME="fibocom"',
+ '-DTESTUDEVRULESDIR_FIBOCOM="@0@"'.format(plugins_dir / 'fibocom'),
+ ]
+
+ plugins += {'plugin-fibocom': {
+ 'plugin': true,
+ 'module': {'sources': files('fibocom/mm-plugin-fibocom.c'), 'include_directories': incs, 'c_args': c_args}
+ }}
+
+ plugins_udev_rules += files('fibocom/77-mm-fibocom-port-types.rules')
+endif
+
+# plugin: foxconn
+if enable_plugins.contains('foxconn')
+ foxconn_dir = plugins_dir / 'foxconn'
+
+ c_args = [
+ '-DMM_MODULE_NAME="foxconn"',
+ '-DTESTUDEVRULESDIR_FOXCONN="@0@"'.format(foxconn_dir),
+ '-DTESTKEYFILE_FOXCONN_T77W968="@0@"'.format(foxconn_dir / 'mm-foxconn-t77w968-carrier-mapping.conf'),
+ '-DTESTKEYFILE_FOXCONN_T99W175="@0@"'.format(foxconn_dir / 'mm-foxconn-t99w175-carrier-mapping.conf'),
+ ]
+
+ plugins += {'plugin-foxconn': {
+ 'plugin': true,
+ 'module': {'sources': files('foxconn/mm-plugin-foxconn.c'), 'include_directories': top_inc, 'c_args': c_args}
+ }}
+
+ plugins_data += files(
+ 'foxconn/mm-foxconn-t77w968-carrier-mapping.conf',
+ 'foxconn/mm-foxconn-t99w175-carrier-mapping.conf',
+ )
+ plugins_udev_rules += files('foxconn/77-mm-foxconn-port-types.rules')
+endif
+
+# plugin: generic
+if enable_plugins.contains('generic')
+ # FIXME
+ '''
+ 15/16 test-service-generic FAIL 0.02s killed by signal 5 SIGTRAP
+ >>> MALLOC_PERTURB_=124 /ModemManager/_build/plugins/test-service-generic
+ ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― ✀ ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
+ stdout:
+ # random seed: R02S5d0d577043f61f2806f319a6510e83a4
+ 1..1
+ # Start of MM tests
+ # Start of Service tests
+ # Start of Generic tests
+ Bail out! FATAL-ERROR: Error starting ModemManager in test bus: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name org.freedesktop.ModemManager1 was not provided by any .service files
+ stderr:
+
+ ** (/ModemManager/_build/plugins/test-service-generic:36444): ERROR **: 21:06:16.248: Error starting ModemManager in test bus: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name org.freedesktop.ModemManager1 was not provided by any .service files
+ cleaning up pid 36446
+ '''
+
+ plugins += {'plugin-generic': {
+ 'plugin': true,
+ 'module': {'sources': files('generic/mm-plugin-generic.c'), 'include_directories': top_inc, 'c_args': '-DMM_MODULE_NAME="generic"'},
+ 'test': {'sources': files('generic/tests/test-service-generic.c'), 'include_directories': include_directories('generic'), 'dependencies': libmm_test_common_dep, 'c_args': '-DCOMMON_GSM_PORT_CONF="@0@"'.format(plugins_dir / 'tests/gsm-port.conf')},
+ }}
+endif
+
+# plugin: gosuncn
+if enable_plugins.contains('gosuncn')
+ c_args = [
+ '-DMM_MODULE_NAME="gosuncn"',
+ '-DTESTUDEVRULESDIR_GOSUNCN="@0@"'.format(plugins_dir / 'gosuncn'),
+ ]
+
+ plugins += {'plugin-gosuncn': {
+ 'plugin': true,
+ 'module': {'sources': files('gosuncn/mm-plugin-gosuncn.c'), 'include_directories': top_inc, 'c_args': c_args}
+ }}
+
+ plugins_udev_rules += files('gosuncn/77-mm-gosuncn-port-types.rules')
+endif
+
+# plugin: haier
+if enable_plugins.contains('haier')
+ c_args = [
+ '-DMM_MODULE_NAME="haier"',
+ '-DTESTUDEVRULESDIR_HAIER="@0@"'.format(plugins_dir / 'haier'),
+ ]
+
+ plugins += {'plugin-haier': {
+ 'plugin': true,
+ 'module': {'sources': files('haier/mm-plugin-haier.c'), 'include_directories': top_inc, 'c_args': c_args}
+ }}
+
+ plugins_udev_rules += files('haier/77-mm-haier-port-types.rules')
+endif
+
+# plugin: huawei
+if enable_plugins.contains('huawei')
+ huawei_inc = include_directories('huawei')
+
+ common_c_args = ['-DTESTUDEVRULESDIR_HUAWEI="@0@"'.format(plugins_dir / 'huawei')]
+
+ headers = files('huawei/mm-modem-helpers-huawei.h')
+
+ sources = files(
+ 'huawei/mm-broadband-bearer-huawei.c',
+ 'huawei/mm-broadband-modem-huawei.c',
+ 'huawei/mm-plugin-huawei.c',
+ 'huawei/mm-sim-huawei.c',
+ )
+
+ enums_types = 'mm-huawei-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-huawei-enums-types.h"',
+ )
+
+ enums_sources += gnome.mkenums(
+ enums_types + '.h',
+ sources: headers,
+ h_template: build_aux_dir / enums_types + '.h.template',
+ fhead: '#include "mm-modem-helpers-huawei.h"\n#ifndef __MM_HUAWEI_ENUMS_TYPES_H__\n#define __MM_HUAWEI_ENUMS_TYPES_H__\n',
+ ftail: '#endif /* __MM_HUAWEI_ENUMS_TYPES_H__ */\n',
+ )
+
+ plugins += {'plugin-huawei': {
+ 'plugin': true,
+ 'helper': {'sources': files('huawei/mm-modem-helpers-huawei.c'), 'include_directories': huawei_inc, 'c_args': common_c_args + ['-DMM_MODULE_NAME="huawei"']},
+ 'module': {'sources': sources + enums_sources + daemon_enums_sources, 'include_directories': [top_inc, huawei_inc], 'c_args': common_c_args + ['-DMM_MODULE_NAME="huawei"']},
+ 'test': {'sources': files('huawei/tests/test-modem-helpers-huawei.c') + enums_sources, 'include_directories': huawei_inc, 'dependencies': libhelpers_dep},
+ }}
+
+ plugins_udev_rules += files('huawei/77-mm-huawei-net-port-types.rules')
+endif
+
+# plugin: iridium
+if enable_plugins.contains('iridium')
+ sources = files(
+ 'iridium/mm-bearer-iridium.c',
+ 'iridium/mm-broadband-modem-iridium.c',
+ 'iridium/mm-plugin-iridium.c',
+ 'iridium/mm-sim-iridium.c',
+ )
+
+ plugins += {'plugin-iridium': {
+ 'plugin': true,
+ 'module': {'sources': sources, 'include_directories': top_inc, 'c_args': '-DMM_MODULE_NAME="iridium"'}
+ }}
+endif
+
+# plugin: linktop
+if enable_plugins.contains('linktop')
+ common_c_args = '-DMM_MODULE_NAME="linktop"'
+
+ sources = files(
+ 'linktop/mm-plugin-linktop.c',
+ 'linktop/mm-broadband-modem-linktop.c',
+ )
+
+ plugins += {'plugin-linktop': {
+ 'plugin': true,
+ 'helper': {'sources': files('linktop/mm-modem-helpers-linktop.c'), 'c_args': common_c_args},
+ 'module': {'sources': sources, 'include_directories': top_inc, 'c_args': common_c_args},
+ 'test': {'sources': files('linktop/tests/test-modem-helpers-linktop.c'), 'include_directories': include_directories('linktop'), 'dependencies': libhelpers_dep},
+ }}
+endif
+
+# plugin: longcheer (and rebranded dongles)
+if enable_plugins.contains('longcheer')
+ sources = files(
+ 'longcheer/mm-broadband-modem-longcheer.c',
+ 'longcheer/mm-plugin-longcheer.c',
+ )
+
+ c_args = [
+ '-DMM_MODULE_NAME="longcheer"',
+ '-DTESTUDEVRULESDIR_LONGCHEER="@0@"'.format(plugins_dir / 'longcheer'),
+ ]
+
+ plugins += {'plugin-longcheer': {
+ 'plugin': true,
+ 'module': {'sources': sources, 'include_directories': top_inc, 'c_args': c_args}
+ }}
+
+ plugins_udev_rules += files('longcheer/77-mm-longcheer-port-types.rules')
+endif
+
+# plugin: ericsson mbm
+if enable_plugins.contains('mbm')
+ common_c_args = ['-DTESTUDEVRULESDIR_MBM="@0@"'.format(plugins_dir / 'mbm')]
+
+ sources = files(
+ 'mbm/mm-broadband-bearer-mbm.c',
+ 'mbm/mm-broadband-modem-mbm.c',
+ 'mbm/mm-plugin-mbm.c',
+ 'mbm/mm-sim-mbm.c',
+ )
+
+ plugins += {'plugin-ericsson-mbm': {
+ 'plugin': true,
+ 'helper': {'sources': files('mbm/mm-modem-helpers-mbm.c'), 'c_args': common_c_args + ['-DMM_MODULE_NAME="ericsson-mbm"']},
+ 'module': {'sources': sources + daemon_enums_sources, 'include_directories': top_inc, 'c_args': common_c_args + ['-DMM_MODULE_NAME="ericsson-mbm"']},
+ 'test': {'sources': files('mbm/tests/test-modem-helpers-mbm.c'), 'include_directories': include_directories('mbm'), 'dependencies': libhelpers_dep},
+ }}
+
+ plugins_udev_rules += files('mbm/77-mm-ericsson-mbm.rules')
+endif
+
+# plugin: motorola
+if enable_plugins.contains('motorola')
+ sources = files(
+ 'motorola/mm-broadband-modem-motorola.c',
+ 'motorola/mm-plugin-motorola.c',
+ )
+
+ plugins += {'plugin-motorola': {
+ 'plugin': true,
+ 'module': {'sources': sources, 'include_directories': top_inc, 'c_args': '-DMM_MODULE_NAME="motorola"'}
+ }}
+endif
+
+# plugin: mtk
+if enable_plugins.contains('mtk')
+ sources = files(
+ 'mtk/mm-broadband-modem-mtk.c',
+ 'mtk/mm-plugin-mtk.c',
+ )
+
+ c_args = [
+ '-DMM_MODULE_NAME="motorola"',
+ '-DTESTUDEVRULESDIR_MTK="@0@"'.format(plugins_dir / 'mtk'),
+ ]
+
+ plugins += {'plugin-mtk': {
+ 'plugin': true,
+ 'module': {'sources': sources, 'include_directories': top_inc, 'c_args': c_args}
+ }}
+
+ plugins_udev_rules += files('mtk/77-mm-mtk-port-types.rules')
+endif
+
+# plugin: nokia
+if enable_plugins.contains('nokia')
+ sources = files(
+ 'nokia/mm-broadband-modem-nokia.c',
+ 'nokia/mm-plugin-nokia.c',
+ 'nokia/mm-sim-nokia.c',
+ )
+
+ plugins += {'plugin-nokia': {
+ 'plugin': true,
+ 'module': {'sources': sources, 'include_directories': top_inc, 'c_args': '-DMM_MODULE_NAME="nokia"'}
+ }}
+endif
+
+# plugin: nokia (icera)
+if enable_plugins.contains('nokia-icera')
+ c_args = [
+ '-DMM_MODULE_NAME="nokia-icera"',
+ '-DTESTUDEVRULESDIR_NOKIA_ICERA="@0@"'.format(plugins_dir / 'nokia'),
+ ]
+
+ plugins += {'plugin-nokia-icera': {
+ 'plugin': true,
+ 'module': {'sources': files('nokia/mm-plugin-nokia-icera.c'), 'include_directories': [top_inc, icera_inc], 'c_args': c_args}
+ }}
+
+ plugins_udev_rules += files('nokia/77-mm-nokia-port-types.rules')
+endif
+
+# plugin: novatel non-lte
+if enable_plugins.contains('novatel')
+ plugins += {'plugin-novatel': {
+ 'plugin': true,
+ 'module': {'sources': files('novatel/mm-plugin-novatel.c'), 'include_directories': top_inc, 'c_args': '-DMM_MODULE_NAME="novatel"'}
+ }}
+endif
+
+# plugin: novatel lte
+if enable_plugins.contains('novatel-lte')
+ sources = files(
+ 'novatel/mm-plugin-novatel-lte.c',
+ 'novatel/mm-broadband-modem-novatel-lte.c',
+ 'novatel/mm-broadband-bearer-novatel-lte.c',
+ 'novatel/mm-sim-novatel-lte.c',
+ )
+
+ plugins += {'plugin-novatel-lte': {
+ 'plugin': true,
+ 'module': {'sources': sources, 'include_directories': top_inc, 'c_args': '-DMM_MODULE_NAME="novatel-lte"'}
+ }}
+endif
+
+# plugin: option
+if enable_plugins.contains('option')
+ plugins += {'plugin-option': {
+ 'plugin': true,
+ 'module': {'sources': files('option/mm-plugin-option.c'), 'include_directories': top_inc, 'c_args': '-DMM_MODULE_NAME="option"'}
+ }}
+endif
+
+# plugin: option hso
+if enable_plugins.contains('option-hso')
+ sources = files(
+ 'option/mm-plugin-hso.c',
+ 'option/mm-broadband-bearer-hso.c',
+ 'option/mm-broadband-modem-hso.c',
+ )
+
+ plugins += {'plugin-option-hso': {
+ 'plugin': true,
+ 'module': {'sources': sources + daemon_enums_sources, 'include_directories': top_inc, 'c_args': '-DMM_MODULE_NAME="option-hso"'}
+ }}
+endif
+
+# plugin: pantech
+if enable_plugins.contains('pantech')
+ sources = files(
+ 'pantech/mm-broadband-modem-pantech.c',
+ 'pantech/mm-plugin-pantech.c',
+ 'pantech/mm-sim-pantech.c',
+ )
+
+ plugins += {'plugin-pantech': {
+ 'plugin': true,
+ 'module': {'sources': sources, 'include_directories': top_inc, 'c_args': '-DMM_MODULE_NAME="pantech"'}
+ }}
+endif
+
+# plugin: qcom-soc
+if enable_plugins.contains('qcom-soc')
+ sources = files(
+ 'qcom-soc/mm-broadband-modem-qmi-qcom-soc.c',
+ 'qcom-soc/mm-plugin-qcom-soc.c',
+ )
+
+ c_args = [
+ '-DMM_MODULE_NAME="qcom-soc"',
+ '-DTESTUDEVRULESDIR_QCOM_SOC="@0@"'.format(plugins_dir / 'qcom-soc'),
+ ]
+
+ plugins += {'plugin-qcom-soc': {
+ 'plugin': true,
+ 'module': {'sources': sources, 'include_directories': top_inc, 'c_args': c_args}
+ }}
+
+ plugins_udev_rules += files('qcom-soc/77-mm-qcom-soc.rules')
+endif
+
+# plugin: quectel
+if enable_plugins.contains('quectel')
+ common_c_args = ['-DTESTUDEVRULESDIR_QUECTEL="@0@"'.format(plugins_dir / 'quectel')]
+
+ sources = files(
+ 'quectel/mm-broadband-modem-quectel.c',
+ 'quectel/mm-plugin-quectel.c',
+ 'quectel/mm-shared-quectel.c',
+ )
+
+ if enable_qmi
+ sources += files('quectel/mm-broadband-modem-qmi-quectel.c')
+ endif
+
+ if enable_mbim
+ sources += files('quectel/mm-broadband-modem-mbim-quectel.c')
+ endif
+
+ plugins += {'plugin-quectel': {
+ 'plugin': true,
+ 'helper': {'sources': files('quectel/mm-modem-helpers-quectel.c'), 'c_args': common_c_args + ['-DMM_MODULE_NAME="quectel"']},
+ 'module': {'sources': sources, 'include_directories': top_inc, 'c_args': common_c_args + ['-DMM_MODULE_NAME="quectel"']},
+ 'test': {'sources': files('quectel/tests/test-modem-helpers-quectel.c'), 'include_directories': include_directories('quectel'), 'dependencies': libhelpers_dep},
+ }}
+
+ plugins_udev_rules += files('quectel/77-mm-quectel-port-types.rules')
+endif
+
+# plugin: samsung
+if enable_plugins.contains('samsung')
+ sources = files(
+ 'samsung/mm-broadband-modem-samsung.c',
+ 'samsung/mm-plugin-samsung.c',
+ )
+
+ plugins += {'plugin-samsung': {
+ 'plugin': true,
+ 'module': {'sources': sources, 'include_directories': [top_inc, icera_inc], 'c_args': '-DMM_MODULE_NAME="samsung"'}
+ }}
+endif
+
+# plugin: sierra (legacy)
+if enable_plugins.contains('sierra-legacy')
+ sources = files(
+ 'sierra/mm-broadband-modem-sierra-icera.c',
+ 'sierra/mm-plugin-sierra-legacy.c',
+ )
+
+ plugins += {'plugin-sierra-legacy': {
+ 'plugin': true,
+ 'module': {'sources': sources, 'include_directories': [top_inc, icera_inc], 'c_args': '-DMM_MODULE_NAME="sierra-legacy"'}
+ }}
+endif
+
+# plugin: sierra (new QMI or MBIM modems)
+if enable_plugins.contains('sierra')
+ plugins += {'plugin-sierra': {
+ 'plugin': true,
+ 'module': {'sources': files('sierra/mm-plugin-sierra.c'), 'include_directories': [top_inc, xmm_inc], 'c_args': '-DMM_MODULE_NAME="sierra"'}
+ }}
+
+ plugins_udev_rules += files('sierra/77-mm-sierra.rules')
+endif
+
+# plugin: simtech
+if enable_plugins.contains('simtech')
+ common_c_args = ['-DTESTUDEVRULESDIR_SIMTECH="@0@"'.format(plugins_dir / 'simtech')]
+
+ sources = files(
+ 'simtech/mm-broadband-modem-simtech.c',
+ 'simtech/mm-plugin-simtech.c',
+ 'simtech/mm-shared-simtech.c',
+ )
+
+ if enable_qmi
+ sources += files('simtech/mm-broadband-modem-qmi-simtech.c')
+ endif
+
+ plugins += {'plugin-simtech': {
+ 'plugin': true,
+ 'helper': {'sources': files('simtech/mm-modem-helpers-simtech.c'), 'include_directories': top_inc, 'c_args': common_c_args + ['-DMM_MODULE_NAME="simtech"']},
+ 'module': {'sources': sources, 'include_directories': top_inc, 'c_args': common_c_args + ['-DMM_MODULE_NAME="quectel"']},
+ 'test': {'sources': files('simtech/tests/test-modem-helpers-simtech.c'), 'include_directories': [top_inc, include_directories('simtech')], 'dependencies': libport_dep},
+ }}
+
+ plugins_udev_rules += files('simtech/77-mm-simtech-port-types.rules')
+endif
+
+# plugin: telit
+if enable_plugins.contains('telit')
+ c_args = [
+ '-DMM_MODULE_NAME="telit"',
+ '-DTESTUDEVRULESDIR_TELIT="@0@"'.format(plugins_dir / 'telit'),
+ ]
+
+ plugins += {'plugin-telit': {
+ 'plugin': true,
+ 'module': {'sources': files('telit/mm-plugin-telit.c'), 'include_directories': top_inc, 'c_args': c_args}
+ }}
+
+ plugins_udev_rules += files('telit/77-mm-telit-port-types.rules')
+endif
+
+# plugin: thuraya xt
+if enable_plugins.contains('thuraya')
+ common_c_args = ['-DMM_MODULE_NAME="thuraya"']
+
+ sources = files(
+ 'thuraya/mm-broadband-modem-thuraya.c',
+ 'thuraya/mm-plugin-thuraya.c',
+ )
+
+ plugins += {'plugin-thuraya': {
+ 'plugin': true,
+ 'helper': {'sources': files('thuraya/mm-modem-helpers-thuraya.c'), 'c_args': common_c_args},
+ 'module': {'sources': sources, 'include_directories': top_inc, 'c_args': common_c_args},
+ 'test': {'sources': files('thuraya/tests/test-mm-modem-helpers-thuraya.c'), 'include_directories': include_directories('thuraya'), 'dependencies': libhelpers_dep},
+ }}
+
+ plugins_udev_rules += files('simtech/77-mm-simtech-port-types.rules')
+endif
+
+# plugin: tplink
+if enable_plugins.contains('tplink')
+ c_args = [
+ '-DMM_MODULE_NAME="tp-link"',
+ '-DTESTUDEVRULESDIR_TPLINK="@0@"'.format(plugins_dir / 'tplink'),
+ ]
+
+ plugins += {'plugin-tplink': {
+ 'plugin': true,
+ 'module': {'sources': files('tplink/mm-plugin-tplink.c'), 'include_directories': top_inc, 'c_args': c_args}
+ }}
+
+ plugins_udev_rules += files('tplink/77-mm-tplink-port-types.rules')
+endif
+
+# plugin: u-blox
+if enable_plugins.contains('ublox')
+ ublox_inc = include_directories('ublox')
+
+ common_c_args = '-DMM_MODULE_NAME="u-blox"'
+
+ headers = files('ublox/mm-modem-helpers-ublox.h')
+
+ sources = files(
+ 'ublox/mm-broadband-bearer-ublox.c',
+ 'ublox/mm-broadband-modem-ublox.c',
+ 'ublox/mm-plugin-ublox.c',
+ 'ublox/mm-sim-ublox.c',
+ )
+
+ enums_types = 'mm-ublox-enums-types'
+
+ sources += gnome.mkenums(
+ enums_types + '.c',
+ sources: headers,
+ c_template: build_aux_dir / enums_types + '.c.template',
+ fhead: '#include "mm-ublox-enums-types.h"',
+ )
+
+ sources += gnome.mkenums(
+ enums_types + '.h',
+ sources: headers,
+ h_template: build_aux_dir / enums_types + '.h.template',
+ fhead: '#include "mm-modem-helpers-ublox.h"\n#ifndef __MM_UBLOX_ENUMS_TYPES_H__\n#define __MM_UBLOX_ENUMS_TYPES_H__\n',
+ ftail: '#endif /* __MM_UBLOX_ENUMS_TYPES_H__ */\n',
+ )
+
+ plugins += {'plugin-ublox': {
+ 'plugin': true,
+ 'helper': {'sources': files('ublox/mm-modem-helpers-ublox.c'), 'c_args': common_c_args},
+ 'module': {'sources': sources, 'include_directories': [top_inc, ublox_inc], 'c_args': common_c_args},
+ 'test': {'sources': files('ublox/tests/test-modem-helpers-ublox.c'), 'include_directories': ublox_inc, 'dependencies': libmm_test_common_dep},
+ }}
+
+ plugins_udev_rules += files('ublox/77-mm-ublox-port-types.rules')
+endif
+
+# plugin: via
+if enable_plugins.contains('via')
+ sources = files(
+ 'via/mm-broadband-modem-via.c',
+ 'via/mm-plugin-via.c',
+ )
+
+ plugins += {'plugin-via': {
+ 'plugin': true,
+ 'module': {'sources': sources, 'include_directories': top_inc, 'c_args': '-DMM_MODULE_NAME="via"'}
+ }}
+endif
+
+# plugin: wavecom (now sierra airlink)
+if enable_plugins.contains('wavecom')
+ sources = files(
+ 'wavecom/mm-broadband-modem-wavecom.c',
+ 'wavecom/mm-plugin-wavecom.c',
+ )
+
+ plugins += {'plugin-wavecom': {
+ 'plugin': true,
+ 'module': {'sources': sources, 'include_directories': top_inc, 'c_args': '-DMM_MODULE_NAME="wavecom"'}
+ }}
+endif
+
+# plugin: alcatel/TCT/JRD x220D and possibly others
+if enable_plugins.contains('x22x')
+ sources = files(
+ 'x22x/mm-broadband-modem-x22x.c',
+ 'x22x/mm-plugin-x22x.c',
+ )
+
+ c_args = [
+ '-DMM_MODULE_NAME="x22x"',
+ '-DTESTUDEVRULESDIR_X22X="@0@"'.format(plugins_dir / 'x22x'),
+ ]
+
+ plugins += {'plugin-x22x': {
+ 'plugin': true,
+ 'module': {'sources': sources, 'include_directories': top_inc, 'c_args': c_args}
+ }}
+
+ plugins_udev_rules += files('x22x/77-mm-x22x-port-types.rules')
+endif
+
+# plugin: zte
+if enable_plugins.contains('zte')
+ sources = files(
+ 'zte/mm-broadband-modem-zte.c',
+ 'zte/mm-broadband-modem-zte-icera.c',
+ 'zte/mm-common-zte.c',
+ 'zte/mm-plugin-zte.c',
+ )
+
+ c_args = [
+ '-DMM_MODULE_NAME="zte"',
+ '-DTESTUDEVRULESDIR_ZTE="@0@"'.format(plugins_dir / 'zte'),
+ ]
+
+ plugins += {'plugin-zte': {
+ 'plugin': true,
+ 'module': {'sources': sources, 'include_directories': [top_inc, icera_inc], 'c_args': c_args}
+ }}
+
+ plugins_udev_rules += files('zte/77-mm-zte-port-types.rules')
+endif
+
+foreach plugin_name, plugin_data: plugins
+ libhelpers = []
+ if plugin_data.has_key('helper')
+ libhelpers += [
+ static_library(
+ 'helpers-' + plugin_name,
+ dependencies: libport_dep,
+ kwargs: plugin_data['helper'],
+ )
+ ]
+ endif
+
+ module_args = plugin_data['module']
+ if plugin_data['plugin']
+ module_args += {
+ 'link_args': ldflags,
+ 'link_depends': symbol_map,
+ }
+ endif
+
+ shared_module(
+ 'mm-' + plugin_name,
+ dependencies: libhelpers_dep,
+ link_with: libhelpers,
+ kwargs: module_args,
+ install: true,
+ install_dir: mm_pkglibdir,
+ )
+
+ if plugin_data.has_key('test')
+ test_unit = 'test-' + plugin_name
+
+ exe = executable(
+ test_unit,
+ link_with: libhelpers,
+ kwargs: plugin_data['test'],
+ )
+
+ test(test_unit, exe)
+ endif
+endforeach
+
+install_data(
+ plugins_data,
+ install_dir: mm_pkgdatadir,
+)
+
+install_data(
+ plugins_udev_rules,
+ install_dir: udev_rulesdir,
+)
+
+# udev-rules and keyfiles tests
+test_units = {
+ 'udev-rules': {'include_directories': top_inc, 'dependencies': libkerneldevice_dep},
+ 'keyfiles': {'include_directories': [top_inc, src_inc], 'dependencies': libmm_glib_dep},
+}
+
+foreach name, data: test_units
+ test_name = 'test-' + name
+
+ exe = executable(
+ test_name,
+ sources: 'tests/@0@.c'.format(test_name),
+ kwargs: data,
+ )
+
+ test(test_name, exe)
+endforeach
diff --git a/plugins/symbol.map b/plugins/symbol.map
new file mode 100644
index 00000000..b2c9f9cf
--- /dev/null
+++ b/plugins/symbol.map
@@ -0,0 +1,8 @@
+{
+global:
+ mm_plugin_major_version*;
+ mm_plugin_minor_version*;
+ mm_plugin_create*;
+local:
+ *;
+};