From: Yu Watanabe Date: Wed, 8 Jul 2026 19:30:10 +0000 (+0900) Subject: meson: support building .standalone variants for shared modules X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=39d00e1d20717e56285795335fe3172fc24f3577;p=thirdparty%2Fsystemd.git meson: support building .standalone variants for shared modules Extend the module building logic to automatically generate '.standalone' variants for non-NSS/PAM shared modules (such as cryptsetup tokens). Like standalone executables, these are not built by default to keep the base build time unaffected, but can be built explicitly on demand via `ninja .standalone`. --- diff --git a/meson.build b/meson.build index 6850298a316..f9c84767dee 100644 --- a/meson.build +++ b/meson.build @@ -2525,6 +2525,7 @@ test_dlopen = executables_by_name.get('test-dlopen') nss_targets = [] pam_targets = [] module_targets = [] +modules_by_name = {} foreach dict : modules name = dict.get('name') is_nss = name.startswith('nss_') @@ -2570,6 +2571,40 @@ foreach dict : modules ) module_targets += lib + modules_by_name += { name : lib } + + if not is_nss and not is_pam + # Typically for cryptsetup token modules. + + name_static = name + '.standalone' + kwargs_static = kwargs + + link_with_static = [] + foreach obj : kwargs_static.get('link_with', []) + if obj.full_path() == libshared.full_path() + link_with_static += [ + libshared_static, + libsystemd_static, + ] + else + link_with_static += obj + endif + endforeach + + kwargs_static += { + 'link_with' : link_with_static, + 'install' : false, + 'build_by_default' : false, + } + + lib_static = shared_library( + name_static, + kwargs : kwargs_static, + implicit_include_directories : false, + ) + + modules_by_name += { name_static : lib_static } + endif if is_nss # We cannot use shared_module because it does not support version suffix. diff --git a/src/cryptsetup/cryptsetup-tokens/meson.build b/src/cryptsetup/cryptsetup-tokens/meson.build index 078062d073f..db08b264cc8 100644 --- a/src/cryptsetup/cryptsetup-tokens/meson.build +++ b/src/cryptsetup/cryptsetup-tokens/meson.build @@ -9,7 +9,6 @@ lib_cryptsetup_token_common = static_library( libcryptsetup_cflags, userspace, ], - link_with : libshared, build_by_default : false) cryptsetup_token_systemd_tpm2_sources = files(