aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/meson.build
diff options
context:
space:
mode:
authorAleksander Morgado <aleksandermj@chromium.org>2022-12-08 14:37:56 +0000
committerAleksander Morgado <aleksander@aleksander.es>2023-01-03 13:56:25 +0000
commit1c4da332ee6e0d948f85a63f74cb27e89075c011 (patch)
tree03a01bf796b4d435cd233c89ed3d05c562ed3fd1 /src/plugins/meson.build
parent1dd70be4c834ba025ff16b343aa4032a8c64fb71 (diff)
build: new option to build plugins within the daemon binary
Instead of creating libmm-plugin* and libmm-shared* libraries that are dlopen()-ed on runtime, allow incorporating all plugins into the daemon binary itself. This makes the startup of the daemon much faster and also avoids issues with builds that require linker namespace isolation. Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/674
Diffstat (limited to 'src/plugins/meson.build')
-rw-r--r--src/plugins/meson.build52
1 files changed, 35 insertions, 17 deletions
diff --git a/src/plugins/meson.build b/src/plugins/meson.build
index bf670864..78adb873 100644
--- a/src/plugins/meson.build
+++ b/src/plugins/meson.build
@@ -1,8 +1,10 @@
# 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))
+if not enable_builtin_plugins
+ symbol_map = plugins_dir / 'symbol.map'
+ ldflags = cc.get_supported_link_arguments('-Wl,--version-script,@0@'.format(symbol_map))
+endif
# common service test support
plugins_common_test_dep = []
@@ -36,7 +38,6 @@ if enable_tests
endif
# plugins
-plugins_inc = include_directories('.')
plugins = {}
plugins_data = []
plugins_udev_rules = []
@@ -958,6 +959,13 @@ if plugins_options['zte']
plugins_udev_rules += files('zte/77-mm-zte-port-types.rules')
endif
+builtin_sources = []
+builtin_plugins = []
+
+if enable_builtin_plugins
+ builtin_sources += files('mm-builtin-plugins.c')
+endif
+
foreach plugin_name, plugin_data: plugins
libpluginhelpers = []
if plugin_data.has_key('helper')
@@ -969,21 +977,31 @@ foreach plugin_name, plugin_data: plugins
endif
module_args = plugin_data['module']
- if plugin_data['plugin']
- module_args += {
- 'link_args': ldflags,
- 'link_depends': symbol_map,
- }
- endif
+ if not enable_builtin_plugins
+ 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,
- )
+ shared_module(
+ 'mm-' + plugin_name,
+ dependencies: plugins_deps,
+ link_with: libpluginhelpers,
+ kwargs: module_args,
+ install: true,
+ install_dir: mm_pkglibdir,
+ )
+ else
+ libplugin = static_library(
+ 'mm-' + plugin_name,
+ dependencies: plugins_deps,
+ link_with: libpluginhelpers,
+ kwargs: module_args,
+ )
+ builtin_plugins += libplugin
+ endif
if enable_tests
if plugin_data.has_key('test')