diff options
author | Aleksander Morgado <aleksandermj@chromium.org> | 2022-12-08 14:37:56 +0000 |
---|---|---|
committer | Aleksander Morgado <aleksander@aleksander.es> | 2023-01-03 13:56:25 +0000 |
commit | 1c4da332ee6e0d948f85a63f74cb27e89075c011 (patch) | |
tree | 03a01bf796b4d435cd233c89ed3d05c562ed3fd1 /src/plugins/meson.build | |
parent | 1dd70be4c834ba025ff16b343aa4032a8c64fb71 (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.build | 52 |
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') |