From 39d00e1d20717e56285795335fe3172fc24f3577 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Thu, 9 Jul 2026 04:30:10 +0900 Subject: [PATCH] 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`. --- meson.build | 35 ++++++++++++++++++++ src/cryptsetup/cryptsetup-tokens/meson.build | 1 - 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/meson.build b/meson.build index 6850298a31..f9c84767de 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 078062d073..db08b264cc 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(