Files
ModemManager/plugins/meson.build
Iñigo Martínez 0bc0831b22 build,meson: Fix udev rules and keyfiles tests
The port to the meson build system a set of defines were lost, that
made the udev rules and the keyfiles tests to not run properly.

This has been changed so defines are now in their proper place and
tests are run properly.

Fixes #537
2022-03-27 00:02:23 +01:00

1014 lines
32 KiB
Meson

# 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 = [
libhelpers_dep,
libmm_test_generated_dep,
]
libmm_test_common = shared_library(
'mm-test-common',
sources: sources,
include_directories: top_inc,
dependencies: deps + [gio_unix_dep],
c_args: '-DTEST_SERVICES="@0@"'.format(build_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 = []
plugins_test_udev_rules_dir_c_args = []
plugins_test_keyfile_c_args = []
# never include static libs as deps when building
# plugins or shared utils modules
plugins_incs = [
top_inc,
src_inc,
kerneldevice_inc,
]
plugins_deps = [libmm_glib_dep]
if enable_mbim
plugins_deps += mbim_glib_dep
endif
if enable_qmi
plugins_deps += qmi_glib_dep
endif
# common Fibocom support library (MBIM only)
if plugins_shared['fibocom']
fibocom_inc = include_directories('fibocom')
c_args = '-DMM_MODULE_NAME="shared-fibocom"'
sources = files(
'fibocom/mm-shared.c',
'fibocom/mm-shared-fibocom.c',
)
plugins += {'shared-fibocom': {
'plugin': false,
'module': {'sources': sources, 'include_directories': plugins_incs, 'c_args': c_args},
}}
endif
# Common Foxconn modem support library (MBIM only)
if plugins_shared['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': plugins_incs, 'c_args': c_args},
}}
endif
# common icera support
if plugins_shared['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'), 'include_directories': plugins_incs, 'c_args': common_c_args},
'module': {'sources': sources + daemon_enums_sources, 'include_directories': plugins_incs, 'c_args': common_c_args},
'test': {'sources': files('icera/tests/test-modem-helpers-icera.c'), 'include_directories': plugins_incs + [icera_inc], 'dependencies': libhelpers_dep},
}}
endif
# common novatel support
if plugins_shared['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': plugins_incs, 'c_args': '-DMM_MODULE_NAME="shared-novatel"'},
}}
endif
# common option support
if plugins_shared['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': plugins_incs},
}}
endif
# common sierra support
if plugins_shared['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'), 'include_directories': plugins_incs, 'c_args': common_c_args},
'module': {'sources': sources, 'include_directories': plugins_incs, '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 plugins_shared['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': plugins_incs, 'c_args': common_c_args},
'module': {'sources': sources + daemon_enums_sources, 'include_directories': plugins_incs + [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 plugins_shared['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': plugins_incs, 'c_args': common_c_args},
'module': {'sources': sources, 'include_directories': plugins_incs, '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 plugins_options['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'), 'include_directories': plugins_incs, 'c_args': common_c_args},
'module': {'sources': sources, 'include_directories': plugins_incs, '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 plugins_options['anydata']
sources = files(
'anydata/mm-broadband-modem-anydata.c',
'anydata/mm-plugin-anydata.c',
)
plugins += {'plugin-anydata': {
'plugin': true,
'module': {'sources': sources, 'include_directories': plugins_incs, 'c_args': '-DMM_MODULE_NAME="anydata"'},
}}
endif
# plugin: broadmobi
if plugins_options['broadmobi']
test_udev_rules_dir_c_args = ['-DTESTUDEVRULESDIR_BROADMOBI="@0@"'.format(plugins_dir / 'broadmobi')]
plugins_test_udev_rules_dir_c_args += test_udev_rules_dir_c_args
plugins += {'plugin-broadmobi': {
'plugin': true,
'module': {'sources': files('broadmobi/mm-plugin-broadmobi.c'), 'include_directories': plugins_incs, 'c_args': test_udev_rules_dir_c_args + ['-DMM_MODULE_NAME="broadmobi"']},
}}
plugins_udev_rules += files('broadmobi/77-mm-broadmobi-port-types.rules')
endif
# plugin: cinterion (previously siemens)
if plugins_options['cinterion']
test_udev_rules_dir_c_args = ['-DTESTUDEVRULESDIR_CINTERION="@0@"'.format(plugins_dir / 'cinterion')]
plugins_test_udev_rules_dir_c_args += test_udev_rules_dir_c_args
common_c_args = test_udev_rules_dir_c_args + ['-DMM_MODULE_NAME="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': plugins_incs, 'c_args': common_c_args},
'module': {'sources': sources + daemon_enums_sources, 'include_directories': plugins_incs, 'c_args': common_c_args},
'test': {'sources': files('cinterion/tests/test-modem-helpers-cinterion.c'), 'include_directories': plugins_incs + [include_directories('cinterion')], 'dependencies': libport_dep},
}}
plugins_udev_rules += files('cinterion/77-mm-cinterion-port-types.rules')
endif
# plugin: dell
if plugins_options['dell']
test_udev_rules_dir_c_args = ['-DTESTUDEVRULESDIR_DELL="@0@"'.format(plugins_dir / 'dell')]
plugins_test_udev_rules_dir_c_args += test_udev_rules_dir_c_args
incs = plugins_incs + [
foxconn_inc,
novatel_inc,
sierra_inc,
telit_inc,
xmm_inc,
]
plugins += {'plugin-dell': {
'plugin': true,
'module': {'sources': files('dell/mm-plugin-dell.c'), 'include_directories': incs, 'c_args': test_udev_rules_dir_c_args + ['-DMM_MODULE_NAME="dell"']},
}}
plugins_udev_rules += files('dell/77-mm-dell-port-types.rules')
endif
# plugin: dlink
if plugins_options['dlink']
test_udev_rules_dir_c_args = ['-DTESTUDEVRULESDIR_DLINK="@0@"'.format(plugins_dir / 'dlink')]
plugins_test_udev_rules_dir_c_args += test_udev_rules_dir_c_args
plugins += {'plugin-dlink': {
'plugin': true,
'module': {'sources': files('dlink/mm-plugin-dlink.c'), 'include_directories': plugins_incs, 'c_args': test_udev_rules_dir_c_args + ['-DMM_MODULE_NAME="d-link"']},
}}
plugins_udev_rules += files('dlink/77-mm-dlink-port-types.rules')
endif
# plugin: fibocom
if plugins_options['fibocom']
test_udev_rules_dir_c_args = ['-DTESTUDEVRULESDIR_FIBOCOM="@0@"'.format(plugins_dir / 'fibocom')]
plugins_test_udev_rules_dir_c_args += test_udev_rules_dir_c_args
sources = files(
'fibocom/mm-broadband-bearer-fibocom-ecm.c',
'fibocom/mm-broadband-modem-fibocom.c',
'fibocom/mm-plugin-fibocom.c',
)
if enable_mbim
sources += files(
'fibocom/mm-broadband-modem-mbim-xmm-fibocom.c',
'fibocom/mm-broadband-modem-mbim-fibocom.c',
)
endif
plugins += {'plugin-fibocom': {
'plugin': true,
'module': {'sources': sources, 'include_directories': plugins_incs + [xmm_inc] + [fibocom_inc], 'c_args': test_udev_rules_dir_c_args + ['-DMM_MODULE_NAME="fibocom"']},
}}
plugins_udev_rules += files('fibocom/77-mm-fibocom-port-types.rules')
endif
# plugin: foxconn
if plugins_options['foxconn']
foxconn_dir = plugins_dir / 'foxconn'
test_udev_rules_dir_c_args = ['-DTESTUDEVRULESDIR_FOXCONN="@0@"'.format(foxconn_dir)]
plugins_test_udev_rules_dir_c_args += test_udev_rules_dir_c_args
test_keyfile_c_args = ['-DTESTKEYFILE_FOXCONN_T77W968="@0@"'.format(foxconn_dir / 'mm-foxconn-t77w968-carrier-mapping.conf')]
plugins_test_keyfile_c_args += test_keyfile_c_args
plugins += {'plugin-foxconn': {
'plugin': true,
'module': {'sources': files('foxconn/mm-plugin-foxconn.c'), 'include_directories': plugins_incs, 'c_args': test_udev_rules_dir_c_args + test_keyfile_c_args + ['-DMM_MODULE_NAME="foxconn"']},
}}
plugins_data += files(
'foxconn/mm-foxconn-t77w968-carrier-mapping.conf',
)
plugins_udev_rules += files('foxconn/77-mm-foxconn-port-types.rules')
endif
# plugin: generic
if plugins_options['generic']
plugins += {'plugin-generic': {
'plugin': true,
'module': {'sources': files('generic/mm-plugin-generic.c'), 'include_directories': plugins_incs, '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 plugins_options['gosuncn']
test_udev_rules_dir_c_args = ['-DTESTUDEVRULESDIR_GOSUNCN="@0@"'.format(plugins_dir / 'gosuncn')]
plugins_test_udev_rules_dir_c_args += test_udev_rules_dir_c_args
plugins += {'plugin-gosuncn': {
'plugin': true,
'module': {'sources': files('gosuncn/mm-plugin-gosuncn.c'), 'include_directories': plugins_incs, 'c_args': test_udev_rules_dir_c_args + ['-DMM_MODULE_NAME="gosuncn"']},
}}
plugins_udev_rules += files('gosuncn/77-mm-gosuncn-port-types.rules')
endif
# plugin: haier
if plugins_options['haier']
test_udev_rules_dir_c_args = ['-DTESTUDEVRULESDIR_HAIER="@0@"'.format(plugins_dir / 'haier')]
plugins_test_udev_rules_dir_c_args += test_udev_rules_dir_c_args
plugins += {'plugin-haier': {
'plugin': true,
'module': {'sources': files('haier/mm-plugin-haier.c'), 'include_directories': plugins_incs, 'c_args': test_udev_rules_dir_c_args + ['-DMM_MODULE_NAME="haier"']},
}}
plugins_udev_rules += files('haier/77-mm-haier-port-types.rules')
endif
# plugin: huawei
if plugins_options['huawei']
huawei_inc = include_directories('huawei')
test_udev_rules_dir_c_args = ['-DTESTUDEVRULESDIR_HUAWEI="@0@"'.format(plugins_dir / 'huawei')]
plugins_test_udev_rules_dir_c_args += test_udev_rules_dir_c_args
common_c_args = test_udev_rules_dir_c_args + ['-DMM_MODULE_NAME="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') + daemon_enums_sources, 'include_directories': plugins_incs + [huawei_inc], 'c_args': common_c_args},
'module': {'sources': sources + enums_sources + port_enums_sources + daemon_enums_sources, 'include_directories': plugins_incs + [huawei_inc], 'c_args': common_c_args},
'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: intel
if plugins_options['intel']
sources = files(
'intel/mm-plugin-intel.c',
)
if enable_mbim
sources += files('intel/mm-broadband-modem-mbim-intel.c')
endif
common_c_args = '-DMM_MODULE_NAME="intel"'
plugins += {'plugin-intel': {
'plugin': true,
'module': {'sources': sources, 'include_directories': plugins_incs + [xmm_inc], 'c_args': common_c_args},
}}
endif
# plugin: iridium
if plugins_options['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': plugins_incs, 'c_args': '-DMM_MODULE_NAME="iridium"'},
}}
endif
# plugin: linktop
if plugins_options['linktop']
test_udev_rules_dir_c_args = ['-DTESTUDEVRULESDIR_LINKTOP="@0@"'.format(plugins_dir / 'linktop')]
plugins_test_udev_rules_dir_c_args += test_udev_rules_dir_c_args
common_c_args = test_udev_rules_dir_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'), 'include_directories': plugins_incs, 'c_args': common_c_args},
'module': {'sources': sources, 'include_directories': plugins_incs, 'c_args': common_c_args},
'test': {'sources': files('linktop/tests/test-modem-helpers-linktop.c'), 'include_directories': include_directories('linktop'), 'dependencies': libhelpers_dep},
}}
plugins_udev_rules += files('linktop/77-mm-linktop-port-types.rules')
endif
# plugin: longcheer (and rebranded dongles)
if plugins_options['longcheer']
test_udev_rules_dir_c_args = ['-DTESTUDEVRULESDIR_LONGCHEER="@0@"'.format(plugins_dir / 'longcheer')]
plugins_test_udev_rules_dir_c_args += test_udev_rules_dir_c_args
sources = files(
'longcheer/mm-broadband-modem-longcheer.c',
'longcheer/mm-plugin-longcheer.c',
)
plugins += {'plugin-longcheer': {
'plugin': true,
'module': {'sources': sources, 'include_directories': plugins_incs, 'c_args': test_udev_rules_dir_c_args + ['-DMM_MODULE_NAME="longcheer"']},
}}
plugins_udev_rules += files('longcheer/77-mm-longcheer-port-types.rules')
endif
# plugin: ericsson mbm
if plugins_options['mbm']
test_udev_rules_dir_c_args = ['-DTESTUDEVRULESDIR_MBM="@0@"'.format(plugins_dir / 'mbm')]
plugins_test_udev_rules_dir_c_args += test_udev_rules_dir_c_args
common_c_args = test_udev_rules_dir_c_args + ['-DMM_MODULE_NAME="ericsson-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'), 'include_directories': plugins_incs, 'c_args': common_c_args},
'module': {'sources': sources + daemon_enums_sources, 'include_directories': plugins_incs, 'c_args': common_c_args},
'test': {'sources': files('mbm/tests/test-modem-helpers-mbm.c'), 'include_directories': plugins_incs + [include_directories('mbm')], 'dependencies': libhelpers_dep},
}}
plugins_udev_rules += files('mbm/77-mm-ericsson-mbm.rules')
endif
# plugin: motorola
if plugins_options['motorola']
sources = files(
'motorola/mm-broadband-modem-motorola.c',
'motorola/mm-plugin-motorola.c',
)
plugins += {'plugin-motorola': {
'plugin': true,
'module': {'sources': sources, 'include_directories': plugins_incs, 'c_args': '-DMM_MODULE_NAME="motorola"'},
}}
endif
# plugin: mtk
if plugins_options['mtk']
test_udev_rules_dir_c_args = ['-DTESTUDEVRULESDIR_MTK="@0@"'.format(plugins_dir / 'mtk')]
plugins_test_udev_rules_dir_c_args += test_udev_rules_dir_c_args
sources = files(
'mtk/mm-broadband-modem-mtk.c',
'mtk/mm-plugin-mtk.c',
)
plugins += {'plugin-mtk': {
'plugin': true,
'module': {'sources': sources, 'include_directories': plugins_incs, 'c_args': test_udev_rules_dir_c_args + ['-DMM_MODULE_NAME="motorola"']},
}}
plugins_udev_rules += files('mtk/77-mm-mtk-port-types.rules')
endif
# plugin: nokia
if plugins_options['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': plugins_incs, 'c_args': '-DMM_MODULE_NAME="nokia"'},
}}
endif
# plugin: nokia (icera)
if plugins_options['nokia-icera']
test_udev_rules_dir_c_args = ['-DTESTUDEVRULESDIR_NOKIA_ICERA="@0@"'.format(plugins_dir / 'nokia')]
plugins_test_udev_rules_dir_c_args += test_udev_rules_dir_c_args
plugins += {'plugin-nokia-icera': {
'plugin': true,
'module': {'sources': files('nokia/mm-plugin-nokia-icera.c'), 'include_directories': plugins_incs + [icera_inc], 'c_args': test_udev_rules_dir_c_args + ['-DMM_MODULE_NAME="nokia-icera"']},
}}
plugins_udev_rules += files('nokia/77-mm-nokia-port-types.rules')
endif
# plugin: novatel non-lte
if plugins_options['novatel']
plugins += {'plugin-novatel': {
'plugin': true,
'module': {'sources': files('novatel/mm-plugin-novatel.c'), 'include_directories': plugins_incs, 'c_args': '-DMM_MODULE_NAME="novatel"'},
}}
endif
# plugin: novatel lte
if plugins_options['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': plugins_incs, 'c_args': '-DMM_MODULE_NAME="novatel-lte"'},
}}
endif
# plugin: option
if plugins_options['option']
plugins += {'plugin-option': {
'plugin': true,
'module': {'sources': files('option/mm-plugin-option.c'), 'include_directories': plugins_incs, 'c_args': '-DMM_MODULE_NAME="option"'},
}}
endif
# plugin: option hso
if plugins_options['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': plugins_incs, 'c_args': '-DMM_MODULE_NAME="option-hso"'},
}}
endif
# plugin: pantech
if plugins_options['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': plugins_incs, 'c_args': '-DMM_MODULE_NAME="pantech"'},
}}
endif
# plugin: qcom-soc
if plugins_options['qcom-soc']
test_udev_rules_dir_c_args = ['-DTESTUDEVRULESDIR_QCOM_SOC="@0@"'.format(plugins_dir / 'qcom-soc')]
plugins_test_udev_rules_dir_c_args += test_udev_rules_dir_c_args
sources = files(
'qcom-soc/mm-broadband-modem-qmi-qcom-soc.c',
'qcom-soc/mm-plugin-qcom-soc.c',
)
plugins += {'plugin-qcom-soc': {
'plugin': true,
'module': {'sources': sources, 'include_directories': plugins_incs, 'c_args': test_udev_rules_dir_c_args + ['-DMM_MODULE_NAME="qcom-soc"']},
}}
plugins_udev_rules += files('qcom-soc/77-mm-qcom-soc.rules')
endif
# plugin: quectel
if plugins_options['quectel']
test_udev_rules_dir_c_args = ['-DTESTUDEVRULESDIR_QUECTEL="@0@"'.format(plugins_dir / 'quectel')]
plugins_test_udev_rules_dir_c_args += test_udev_rules_dir_c_args
common_c_args = test_udev_rules_dir_c_args + ['-DMM_MODULE_NAME="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'), 'include_directories': plugins_incs, 'c_args': common_c_args},
'module': {'sources': sources, 'include_directories': plugins_incs, 'c_args': common_c_args},
'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 plugins_options['samsung']
sources = files(
'samsung/mm-broadband-modem-samsung.c',
'samsung/mm-plugin-samsung.c',
)
plugins += {'plugin-samsung': {
'plugin': true,
'module': {'sources': sources, 'include_directories': plugins_incs + [icera_inc], 'c_args': '-DMM_MODULE_NAME="samsung"'},
}}
endif
# plugin: sierra (legacy)
if plugins_options['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': plugins_incs + [icera_inc], 'c_args': '-DMM_MODULE_NAME="sierra-legacy"'},
}}
endif
# plugin: sierra (new QMI or MBIM modems)
if plugins_options['sierra']
plugins += {'plugin-sierra': {
'plugin': true,
'module': {'sources': files('sierra/mm-plugin-sierra.c'), 'include_directories': plugins_incs + [xmm_inc], 'c_args': '-DMM_MODULE_NAME="sierra"'},
}}
plugins_udev_rules += files('sierra/77-mm-sierra.rules')
endif
# plugin: simtech
if plugins_options['simtech']
test_udev_rules_dir_c_args = ['-DTESTUDEVRULESDIR_SIMTECH="@0@"'.format(plugins_dir / 'simtech')]
plugins_test_udev_rules_dir_c_args += test_udev_rules_dir_c_args
common_c_args = test_udev_rules_dir_c_args + ['-DMM_MODULE_NAME="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': plugins_incs, 'c_args': common_c_args},
'module': {'sources': sources, 'include_directories': plugins_incs, 'c_args': common_c_args},
'test': {'sources': files('simtech/tests/test-modem-helpers-simtech.c'), 'include_directories': plugins_incs + [include_directories('simtech')], 'dependencies': libport_dep},
}}
plugins_udev_rules += files('simtech/77-mm-simtech-port-types.rules')
endif
# plugin: telit
if plugins_options['telit']
test_udev_rules_dir_c_args = ['-DTESTUDEVRULESDIR_TELIT="@0@"'.format(plugins_dir / 'telit')]
plugins_test_udev_rules_dir_c_args += test_udev_rules_dir_c_args
plugins += {'plugin-telit': {
'plugin': true,
'module': {'sources': files('telit/mm-plugin-telit.c'), 'include_directories': plugins_incs, 'c_args': test_udev_rules_dir_c_args + ['-DMM_MODULE_NAME="telit"']},
}}
plugins_udev_rules += files('telit/77-mm-telit-port-types.rules')
endif
# plugin: thuraya xt
if plugins_options['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'), 'include_directories': plugins_incs, 'c_args': common_c_args},
'module': {'sources': sources, 'include_directories': plugins_incs, 'c_args': common_c_args},
'test': {'sources': files('thuraya/tests/test-mm-modem-helpers-thuraya.c'), 'include_directories': include_directories('thuraya'), 'dependencies': libhelpers_dep},
}}
endif
# plugin: tplink
if plugins_options['tplink']
test_udev_rules_dir_c_args = ['-DTESTUDEVRULESDIR_TPLINK="@0@"'.format(plugins_dir / 'tplink')]
plugins_test_udev_rules_dir_c_args += test_udev_rules_dir_c_args
plugins += {'plugin-tplink': {
'plugin': true,
'module': {'sources': files('tplink/mm-plugin-tplink.c'), 'include_directories': plugins_incs, 'c_args': test_udev_rules_dir_c_args + ['-DMM_MODULE_NAME="tp-link"']},
}}
plugins_udev_rules += files('tplink/77-mm-tplink-port-types.rules')
endif
# plugin: u-blox
if plugins_options['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'), 'include_directories': plugins_incs, 'c_args': common_c_args},
'module': {'sources': sources + daemon_enums_sources, 'include_directories': plugins_incs + [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 plugins_options['via']
sources = files(
'via/mm-broadband-modem-via.c',
'via/mm-plugin-via.c',
)
plugins += {'plugin-via': {
'plugin': true,
'module': {'sources': sources, 'include_directories': plugins_incs, 'c_args': '-DMM_MODULE_NAME="via"'},
}}
endif
# plugin: wavecom (now sierra airlink)
if plugins_options['wavecom']
sources = files(
'wavecom/mm-broadband-modem-wavecom.c',
'wavecom/mm-plugin-wavecom.c',
)
plugins += {'plugin-wavecom': {
'plugin': true,
'module': {'sources': sources, 'include_directories': plugins_incs, 'c_args': '-DMM_MODULE_NAME="wavecom"'},
}}
endif
# plugin: alcatel/TCT/JRD x220D and possibly others
if plugins_options['x22x']
test_udev_rules_dir_c_args = ['-DTESTUDEVRULESDIR_X22X="@0@"'.format(plugins_dir / 'x22x')]
plugins_test_udev_rules_dir_c_args += test_udev_rules_dir_c_args
sources = files(
'x22x/mm-broadband-modem-x22x.c',
'x22x/mm-plugin-x22x.c',
)
plugins += {'plugin-x22x': {
'plugin': true,
'module': {'sources': sources, 'include_directories': plugins_incs, 'c_args': test_udev_rules_dir_c_args + ['-DMM_MODULE_NAME="x22x"']},
}}
plugins_udev_rules += files('x22x/77-mm-x22x-port-types.rules')
endif
# plugin: zte
if plugins_options['zte']
test_udev_rules_dir_c_args = ['-DTESTUDEVRULESDIR_ZTE="@0@"'.format(plugins_dir / 'zte')]
plugins_test_udev_rules_dir_c_args += test_udev_rules_dir_c_args
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',
)
plugins += {'plugin-zte': {
'plugin': true,
'module': {'sources': sources, 'include_directories': plugins_incs + [icera_inc], 'c_args': test_udev_rules_dir_c_args + ['-DMM_MODULE_NAME="zte"']},
}}
plugins_udev_rules += files('zte/77-mm-zte-port-types.rules')
endif
foreach plugin_name, plugin_data: plugins
libpluginhelpers = []
if plugin_data.has_key('helper')
libpluginhelpers = static_library(
'helpers-' + plugin_name,
dependencies: plugins_deps,
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: plugins_deps,
link_with: libpluginhelpers,
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: libpluginhelpers,
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, 'c_args': plugins_test_udev_rules_dir_c_args},
'keyfiles': {'include_directories': [top_inc, src_inc], 'dependencies': libmm_glib_dep, 'c_args': plugins_test_keyfile_c_args},
}
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